From 8d4eeb9f6d7b1bce62887c29889ffc8dbadd26b4 Mon Sep 17 00:00:00 2001 From: Umberto Pepato Date: Fri, 13 Oct 2023 13:34:15 +0200 Subject: [PATCH 01/80] [RAM][Security Solution] Fix time range filter operator in security alerts (#167605) Closes #163540 ## Summary The upper bound time filtering operator used in security solution's alert table didn't include the equality (was `lt`, unlike the lower bound `gte`). Due to this, filtering by a single point in time (`from == to`) always yielded empty results. --------- Co-authored-by: Xavier Mouligneau --- .../public/detections/components/alerts_table/helpers.test.ts | 4 ++-- .../public/detections/components/alerts_table/helpers.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts b/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts index 09c54ba2057f1..79c93d0d32ba3 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.test.ts @@ -545,7 +545,7 @@ describe('helpers', () => { range: { '@timestamp': { gte: '2020-10-29T21:06:10.192Z', - lt: '2020-10-29T21:07:38.774Z', + lte: '2020-10-29T21:07:38.774Z', format: 'strict_date_optional_time', }, }, @@ -557,7 +557,7 @@ describe('helpers', () => { key: '@timestamp', params: { gte: from, - lt: to, + lte: to, format: 'strict_date_optional_time', }, }, diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts b/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts index 19fcd17cd3c93..7221a9ede2785 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/helpers.ts @@ -224,7 +224,7 @@ export const buildTimeRangeFilter = (from: string, to: string): Filter[] => [ range: { '@timestamp': { gte: from, - lt: to, + lte: to, format: 'strict_date_optional_time', }, }, @@ -236,7 +236,7 @@ export const buildTimeRangeFilter = (from: string, to: string): Filter[] => [ key: '@timestamp', params: { gte: from, - lt: to, + lte: to, format: 'strict_date_optional_time', }, }, From 2ffb2caf0eba95590a9267664c89e3c9282c66cb Mon Sep 17 00:00:00 2001 From: Shahzad Date: Fri, 13 Oct 2023 13:34:50 +0200 Subject: [PATCH 02/80] [Synthetics] Handle project monitors disabling public locations (#168140) Co-authored-by: Justin Kambic --- .../common/constants/synthetics/rest_api.ts | 2 +- .../e2e/synthetics/journeys/index.ts | 2 +- .../journeys/project_api_keys.journey.ts | 2 +- .../project_api_keys/project_api_keys.tsx | 41 +++++++++-- .../state/monitor_management/api.ts | 11 +-- .../monitor_cruds/add_monitor_project.ts | 35 +++++++++- .../routes/monitor_cruds/edit_monitor.ts | 3 +- .../routes/monitor_cruds/get_api_key.ts | 44 ++++++++++-- .../server/synthetics_service/get_api_key.ts | 68 +++++++++++-------- .../apis/synthetics/add_monitor_project.ts | 17 ++++- .../add_monitor_project_private_location.ts | 21 ++++-- .../api_integration/apis/synthetics/index.ts | 2 +- .../synthetics_monitor_test_service.ts | 45 ++++++++++-- 13 files changed, 234 insertions(+), 59 deletions(-) diff --git a/x-pack/plugins/synthetics/common/constants/synthetics/rest_api.ts b/x-pack/plugins/synthetics/common/constants/synthetics/rest_api.ts index 7be0a61dd6733..02df09faae126 100644 --- a/x-pack/plugins/synthetics/common/constants/synthetics/rest_api.ts +++ b/x-pack/plugins/synthetics/common/constants/synthetics/rest_api.ts @@ -16,7 +16,7 @@ export enum SYNTHETICS_API_URLS { RUN_ONCE_MONITOR = '/internal/synthetics/service/monitors/run_once', TRIGGER_MONITOR = '/internal/synthetics/service/monitors/trigger', SERVICE_ALLOWED = '/internal/synthetics/service/allowed', - SYNTHETICS_APIKEY = '/internal/synthetics/service/api_key', + SYNTHETICS_PROJECT_APIKEY = '/internal/synthetics/service/api_key', SYNTHETICS_HAS_INTEGRATION_MONITORS = '/internal/synthetics/fleet/has_integration_monitors', SYNTHETICS_OVERVIEW = '/internal/synthetics/overview', diff --git a/x-pack/plugins/synthetics/e2e/synthetics/journeys/index.ts b/x-pack/plugins/synthetics/e2e/synthetics/journeys/index.ts index a33e2ab7343c0..63f460ec56771 100644 --- a/x-pack/plugins/synthetics/e2e/synthetics/journeys/index.ts +++ b/x-pack/plugins/synthetics/e2e/synthetics/journeys/index.ts @@ -11,7 +11,7 @@ export * from './add_monitor.journey'; export * from './monitor_selector.journey'; export * from './management_list.journey'; export * from './overview_sorting.journey'; -export * from './overview_scrolling.journey'; +// export * from './overview_scrolling.journey'; // export * from './overview_search.journey'; export * from './private_locations.journey'; export * from './alerting_default.journey'; diff --git a/x-pack/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts b/x-pack/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts index aa003949ed3dd..0605f9a51a92a 100644 --- a/x-pack/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts +++ b/x-pack/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts @@ -20,7 +20,7 @@ journey('ProjectAPIKeys', async ({ page }) => { page.on('request', (evt) => { if ( evt.resourceType() === 'fetch' && - evt.url().includes(SYNTHETICS_API_URLS.SYNTHETICS_APIKEY) + evt.url().includes(SYNTHETICS_API_URLS.SYNTHETICS_PROJECT_APIKEY) ) { evt .response() diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx index 2a772283c3aff..e03ce1879199e 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx @@ -6,9 +6,10 @@ */ import React, { useEffect, useState } from 'react'; import { useKibana } from '@kbn/kibana-react-plugin/public'; -import { EuiText, EuiLink, EuiEmptyPrompt } from '@elastic/eui'; +import { EuiText, EuiLink, EuiEmptyPrompt, EuiSwitch, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { useFetcher } from '@kbn/observability-shared-plugin/public'; +import { IHttpFetchError, ResponseErrorBody } from '@kbn/core-http-browser'; import { HelpCommands } from './help_commands'; import { LoadingState } from '../../monitors_page/overview/overview/monitor_detail_flyout'; import { fetchProjectAPIKey } from '../../../state/monitor_management/api'; @@ -26,22 +27,41 @@ export const ProjectAPIKeys = () => { } = useEnablement(); const [apiKey, setApiKey] = useState(undefined); const [loadAPIKey, setLoadAPIKey] = useState(false); + const [accessToElasticManagedLocations, setAccessToElasticManagedLocations] = useState(true); const kServices = useKibana().services; const canSaveIntegrations: boolean = !!kServices?.fleet?.authz.integrations.writeIntegrationPolicies; - const { data, loading } = useFetcher(async () => { + const canUsePublicLocations = + useKibana().services?.application?.capabilities.uptime.elasticManagedLocationsEnabled ?? true; + + const { data, loading, error } = useFetcher(async () => { if (loadAPIKey) { - return fetchProjectAPIKey(); + return fetchProjectAPIKey(accessToElasticManagedLocations && Boolean(canUsePublicLocations)); } return null; - }, [loadAPIKey]); + }, [loadAPIKey, canUsePublicLocations]); useEffect(() => { - setApiKey(data?.apiKey.encoded); + if (data?.apiKey) { + setApiKey(data?.apiKey.encoded); + } + setLoadAPIKey(false); }, [data]); + useEffect(() => { + if (error) { + const requestError = error as IHttpFetchError; + kServices?.notifications?.toasts.addError(error, { + title: i18n.translate('xpack.synthetics.createApiKey.error', { + defaultMessage: 'Error', + }), + toastMessage: requestError?.body?.message, + }); + } + }, [error, kServices?.notifications?.toasts]); + const canSave: boolean = !!useKibana().services?.application?.capabilities.uptime.save; if (enablementLoading) { @@ -68,6 +88,17 @@ export const ProjectAPIKeys = () => { {LEARN_MORE_LABEL} + + { + setAccessToElasticManagedLocations(!accessToElasticManagedLocations); + }} + disabled={!canUsePublicLocations} + /> ) : ( <> diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts index e67e0b4905a00..251714d8b0642 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts @@ -6,6 +6,7 @@ */ import { PackagePolicy } from '@kbn/fleet-plugin/common'; +import type { ProjectAPIKeyResponse } from '../../../../../server/routes/monitor_cruds/get_api_key'; import { apiService } from '../../../../utils/api_service'; import { EncryptedSyntheticsMonitor, @@ -61,10 +62,12 @@ export const getDecryptedMonitorAPI = async ({ id }: { id: string }): Promise => { - return await apiService.get(SYNTHETICS_API_URLS.SYNTHETICS_APIKEY); +export const fetchProjectAPIKey = async ( + accessToElasticManagedLocations: boolean +): Promise => { + return await apiService.get(SYNTHETICS_API_URLS.SYNTHETICS_PROJECT_APIKEY, { + accessToElasticManagedLocations, + }); }; export const deletePackagePolicy = async ( diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts index 0fb8cba181933..e3ca890d1712e 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts @@ -7,7 +7,7 @@ import { schema } from '@kbn/config-schema'; import { i18n } from '@kbn/i18n'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; -import { SyntheticsRestApiRouteFactory } from '../types'; +import { RouteContext, SyntheticsRestApiRouteFactory } from '../types'; import { ProjectMonitor } from '../../../common/runtime_types'; import { SYNTHETICS_API_URLS } from '../../../common/constants'; @@ -51,6 +51,12 @@ export const addSyntheticsProjectMonitorRoute: SyntheticsRestApiRouteFactory = ( id: DEFAULT_SPACE_ID, }; + const permissionError = await validatePermissions(routeContext, monitors); + + if (permissionError) { + return response.forbidden({ body: { message: permissionError } }); + } + const encryptedSavedObjectsClient = server.encryptedSavedObjects.getClient(); const pushMonitorFormatter = new ProjectMonitorFormatter({ @@ -84,3 +90,30 @@ export const REQUEST_TOO_LARGE = i18n.translate('xpack.synthetics.server.project defaultMessage: 'Delete request payload is too large. Please send a max of 250 monitors to delete per request', }); + +export const validatePermissions = async ( + { server, response, request }: RouteContext, + projectMonitors: ProjectMonitor[] +) => { + const hasPublicLocations = projectMonitors.some(({ locations }) => (locations ?? []).length > 0); + if (!hasPublicLocations) { + return; + } + + const elasticManagedLocationsEnabled = + Boolean( + (await server.coreStart?.capabilities.resolveCapabilities(request)).uptime + .elasticManagedLocationsEnabled + ) ?? true; + if (!elasticManagedLocationsEnabled) { + return ELASTIC_MANAGED_LOCATIONS_DISABLED; + } +}; + +export const ELASTIC_MANAGED_LOCATIONS_DISABLED = i18n.translate( + 'xpack.synthetics.noAccess.publicLocations', + { + defaultMessage: + "You don't have permission to use Elastic managed global locations. Please contact your Kibana administrator.", + } +); diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts index 69960d458c684..c6ff9852b6777 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts @@ -8,6 +8,7 @@ import { schema } from '@kbn/config-schema'; import { SavedObjectsUpdateResponse, SavedObject } from '@kbn/core/server'; import { SavedObjectsErrorHelpers } from '@kbn/core/server'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; +import { ELASTIC_MANAGED_LOCATIONS_DISABLED } from './add_monitor_project'; import { getDecryptedMonitor } from '../../saved_objects/synthetics_monitor'; import { getPrivateLocations } from '../../synthetics_service/get_private_locations'; import { mergeSourceMonitor } from './helper'; @@ -254,6 +255,6 @@ export const validatePermissions = async ( .elasticManagedLocationsEnabled ) ?? true; if (!elasticManagedLocationsEnabled) { - return "You don't have permission to use public locations"; + return ELASTIC_MANAGED_LOCATIONS_DISABLED; } }; diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts index 481bf6b1b542c..0dab70565aeea 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts @@ -4,19 +4,51 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { schema } from '@kbn/config-schema'; +import { SecurityCreateApiKeyResponse } from '@elastic/elasticsearch/lib/api/types'; +import { IKibanaResponse } from '@kbn/core-http-server'; +import { ELASTIC_MANAGED_LOCATIONS_DISABLED } from './add_monitor_project'; import { SyntheticsRestApiRouteFactory } from '../types'; -import { generateAPIKey } from '../../synthetics_service/get_api_key'; +import { generateProjectAPIKey } from '../../synthetics_service/get_api_key'; import { SYNTHETICS_API_URLS } from '../../../common/constants'; +export interface ProjectAPIKeyResponse { + apiKey: SecurityCreateApiKeyResponse | null; +} + export const getAPIKeySyntheticsRoute: SyntheticsRestApiRouteFactory = () => ({ method: 'GET', - path: SYNTHETICS_API_URLS.SYNTHETICS_APIKEY, - validate: {}, - handler: async ({ request, server }): Promise => { - const apiKey = await generateAPIKey({ + path: SYNTHETICS_API_URLS.SYNTHETICS_PROJECT_APIKEY, + validate: { + query: schema.object({ + accessToElasticManagedLocations: schema.maybe(schema.boolean()), + }), + }, + handler: async ({ + request, + server, + response, + }): Promise => { + const { accessToElasticManagedLocations } = request.query; + + if (accessToElasticManagedLocations) { + const elasticManagedLocationsEnabled = + Boolean( + (await server.coreStart?.capabilities.resolveCapabilities(request)).uptime + .elasticManagedLocationsEnabled + ) ?? true; + if (!elasticManagedLocationsEnabled) { + return response.customError({ + body: { message: ELASTIC_MANAGED_LOCATIONS_DISABLED }, + statusCode: 403, + }); + } + } + + const apiKey = await generateProjectAPIKey({ request, server, - projectAPIKey: true, + accessToElasticManagedLocations, }); return { apiKey }; diff --git a/x-pack/plugins/synthetics/server/synthetics_service/get_api_key.ts b/x-pack/plugins/synthetics/server/synthetics_service/get_api_key.ts index b4b424f018267..ec62eb2c80555 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/get_api_key.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/get_api_key.ts @@ -6,6 +6,7 @@ */ import type { SecurityClusterPrivilege, + SecurityCreateApiKeyResponse, SecurityIndexPrivilege, } from '@elastic/elasticsearch/lib/api/types'; import { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server'; @@ -79,11 +80,9 @@ export const getAPIKeyForSyntheticsService = async ({ export const generateAPIKey = async ({ server, request, - projectAPIKey = false, }: { server: SyntheticsServerSetup; request: KibanaRequest; - projectAPIKey?: boolean; }) => { const { security } = server; const isApiKeysEnabled = await security.authc.apiKeys?.areAPIKeysEnabled(); @@ -92,31 +91,6 @@ export const generateAPIKey = async ({ throw new Error('Please enable API keys in kibana to use synthetics service.'); } - if (projectAPIKey) { - /* Exposed to the user. Must create directly with the user */ - return security.authc.apiKeys?.create(request, { - name: 'synthetics-api-key (required for project monitors)', - kibana_role_descriptors: { - uptime_save: { - elasticsearch: {}, - kibana: [ - { - base: [], - spaces: [ALL_SPACES_ID], - feature: { - uptime: ['all'], - }, - }, - ], - }, - }, - metadata: { - description: - 'Created for the Synthetics Agent to be able to communicate with Kibana for generating monitors for projects', - }, - }); - } - const { canEnable } = await hasEnablePermissions(server); if (!canEnable) { throw new SyntheticsForbiddenError(); @@ -135,6 +109,46 @@ export const generateAPIKey = async ({ }); }; +export const generateProjectAPIKey = async ({ + server, + request, + accessToElasticManagedLocations = true, +}: { + server: SyntheticsServerSetup; + request: KibanaRequest; + accessToElasticManagedLocations?: boolean; +}): Promise => { + const { security } = server; + const isApiKeysEnabled = await security.authc.apiKeys?.areAPIKeysEnabled(); + + if (!isApiKeysEnabled) { + throw new Error('Please enable API keys in kibana to use synthetics service.'); + } + + /* Exposed to the user. Must create directly with the user */ + return security.authc.apiKeys?.create(request, { + name: 'synthetics-api-key (required for project monitors)', + kibana_role_descriptors: { + uptime_save: { + elasticsearch: {}, + kibana: [ + { + base: [], + spaces: [ALL_SPACES_ID], + feature: { + uptime: [accessToElasticManagedLocations ? 'all' : 'minimal_all'], + }, + }, + ], + }, + }, + metadata: { + description: + 'Created for the Synthetics Agent to be able to communicate with Kibana for generating monitors for projects', + }, + }); +}; + export const generateAndSaveServiceAPIKey = async ({ server, request, diff --git a/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts b/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts index 8745be165a586..303706c930401 100644 --- a/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts +++ b/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts @@ -9,7 +9,10 @@ import expect from '@kbn/expect'; import { ConfigKey, ProjectMonitorsRequest } from '@kbn/synthetics-plugin/common/runtime_types'; import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; import { formatKibanaNamespace } from '@kbn/synthetics-plugin/common/formatters'; -import { REQUEST_TOO_LARGE } from '@kbn/synthetics-plugin/server/routes/monitor_cruds/add_monitor_project'; +import { + ELASTIC_MANAGED_LOCATIONS_DISABLED, + REQUEST_TOO_LARGE, +} from '@kbn/synthetics-plugin/server/routes/monitor_cruds/add_monitor_project'; import { PackagePolicy } from '@kbn/fleet-plugin/common'; import { PROFILE_VALUES_ENUM, @@ -132,6 +135,18 @@ export default function ({ getService }: FtrProviderContext) { .expect(404); }); + it('project monitors - returns forbidden if no access to public locations', async () => { + const project = `test-project-${uuidv4()}`; + + await monitorTestService.generateProjectAPIKey(false); + const response = await monitorTestService.addProjectMonitors( + project, + projectMonitors.monitors + ); + expect(response.status).to.eql(403); + expect(response.body.message).to.eql(ELASTIC_MANAGED_LOCATIONS_DISABLED); + }); + it('project monitors - handles browser monitors', async () => { const successfulMonitors = [projectMonitors.monitors[0]]; const project = `test-project-${uuidv4()}`; diff --git a/x-pack/test/api_integration/apis/synthetics/add_monitor_project_private_location.ts b/x-pack/test/api_integration/apis/synthetics/add_monitor_project_private_location.ts index 29b1d6878b2c8..29549684aa44e 100644 --- a/x-pack/test/api_integration/apis/synthetics/add_monitor_project_private_location.ts +++ b/x-pack/test/api_integration/apis/synthetics/add_monitor_project_private_location.ts @@ -73,7 +73,8 @@ export default function ({ getService }: FtrProviderContext) { }, ]; try { - const body = await monitorTestService.addProjectMonitors(project, testMonitors); + const { body, status } = await monitorTestService.addProjectMonitors(project, testMonitors); + expect(status).eql(200); expect(body.createdMonitors.length).eql(1); expect(body.failedMonitors[0].reason).eql( "Couldn't save or update monitor because of an invalid configuration." @@ -96,16 +97,28 @@ export default function ({ getService }: FtrProviderContext) { privateLocations: ['Test private location 0'], }; const testMonitors = [projectMonitors.monitors[0], secondMonitor]; - const body = await monitorTestService.addProjectMonitors(project, testMonitors); + const { body, status: status0 } = await monitorTestService.addProjectMonitors( + project, + testMonitors + ); + expect(status0).eql(200); + expect(body.createdMonitors.length).eql(2); - const editedBody = await monitorTestService.addProjectMonitors(project, testMonitors); + const { body: editedBody, status: editedStatus } = + await monitorTestService.addProjectMonitors(project, testMonitors); + expect(editedStatus).eql(200); + expect(editedBody.createdMonitors.length).eql(0); expect(editedBody.updatedMonitors.length).eql(2); testMonitors[1].name = '!@#$%^&*()_++[\\-\\]- wow name'; testMonitors[1].privateLocations = ['Test private location 8']; - const editedBodyError = await monitorTestService.addProjectMonitors(project, testMonitors); + const { body: editedBodyError, status } = await monitorTestService.addProjectMonitors( + project, + testMonitors + ); + expect(status).eql(200); expect(editedBodyError.createdMonitors.length).eql(0); expect(editedBodyError.updatedMonitors.length).eql(1); expect(editedBodyError.failedMonitors.length).eql(1); diff --git a/x-pack/test/api_integration/apis/synthetics/index.ts b/x-pack/test/api_integration/apis/synthetics/index.ts index b00ff699ca1b6..959014c0362cc 100644 --- a/x-pack/test/api_integration/apis/synthetics/index.ts +++ b/x-pack/test/api_integration/apis/synthetics/index.ts @@ -16,6 +16,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { await esDeleteAllIndices('synthetics*'); }); + loadTestFile(require.resolve('./synthetics_enablement')); loadTestFile(require.resolve('./get_filters')); loadTestFile(require.resolve('./enable_default_alerting')); loadTestFile(require.resolve('./get_monitor')); @@ -27,7 +28,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./edit_monitor')); loadTestFile(require.resolve('./delete_monitor')); loadTestFile(require.resolve('./delete_monitor_project')); - loadTestFile(require.resolve('./synthetics_enablement')); loadTestFile(require.resolve('./sync_global_params')); loadTestFile(require.resolve('./add_edit_params')); loadTestFile(require.resolve('./add_monitor_project_private_location')); diff --git a/x-pack/test/api_integration/apis/synthetics/services/synthetics_monitor_test_service.ts b/x-pack/test/api_integration/apis/synthetics/services/synthetics_monitor_test_service.ts index 637044df1fc69..ad88b1d1c2aa4 100644 --- a/x-pack/test/api_integration/apis/synthetics/services/synthetics_monitor_test_service.ts +++ b/x-pack/test/api_integration/apis/synthetics/services/synthetics_monitor_test_service.ts @@ -10,18 +10,41 @@ import { syntheticsMonitorType } from '@kbn/synthetics-plugin/common/types/saved import { EncryptedSyntheticsSavedMonitor } from '@kbn/synthetics-plugin/common/runtime_types'; import { MonitorInspectResponse } from '@kbn/synthetics-plugin/public/apps/synthetics/state/monitor_management/api'; import { v4 as uuidv4 } from 'uuid'; +import expect from '@kbn/expect'; +import { ProjectAPIKeyResponse } from '@kbn/synthetics-plugin/server/routes/monitor_cruds/get_api_key'; import { FtrProviderContext } from '../../../ftr_provider_context'; import { KibanaSupertestProvider } from '../../../../../../test/api_integration/services/supertest'; export class SyntheticsMonitorTestService { private supertest: ReturnType; private getService: FtrProviderContext['getService']; + private supertestWithoutAuth: ReturnType; + public apiKey: string | undefined = ''; constructor(getService: FtrProviderContext['getService']) { + this.supertest = getService('supertest'); this.supertest = getService('supertest'); this.getService = getService; + this.supertestWithoutAuth = getService('supertestWithoutAuth'); } + generateProjectAPIKey = async (accessToPublicLocations = true) => { + const res = await this.supertest + .get( + SYNTHETICS_API_URLS.SYNTHETICS_PROJECT_APIKEY + + '?accessToElasticManagedLocations=' + + accessToPublicLocations + ) + .set('kbn-xsrf', 'true') + .expect(200); + const result = res.body as ProjectAPIKeyResponse; + expect(result).to.have.property('apiKey'); + const apiKey = result.apiKey?.encoded; + expect(apiKey).to.not.be.empty(); + this.apiKey = apiKey; + return apiKey; + }; + async getMonitor(monitorId: string, decrypted: boolean = true, space?: string) { let url = SYNTHETICS_API_URLS.GET_SYNTHETICS_MONITOR.replace('{monitorId}', monitorId) + @@ -62,12 +85,22 @@ export class SyntheticsMonitorTestService { } async addProjectMonitors(project: string, monitors: any) { - const { body } = await this.supertest - .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project)) - .set('kbn-xsrf', 'true') - .send({ monitors }) - .expect(200); - return body; + if (this.apiKey) { + return this.supertestWithoutAuth + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set('kbn-xsrf', 'true') + .set('authorization', `ApiKey ${this.apiKey}`) + .send({ monitors }); + } else { + return this.supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set('kbn-xsrf', 'true') + .send({ monitors }); + } } async deleteMonitorByJourney( From eee0d4d6ab4d7e42509168f05065aa0aa7ba7a66 Mon Sep 17 00:00:00 2001 From: Robert Oskamp Date: Fri, 13 Oct 2023 14:39:36 +0200 Subject: [PATCH 03/80] [FTR] Skip failing serverless tests for MKI runs (#168810) ## Summary This PR adds another round of `failsOnMKI` tags to serverless test suites together with comments about the failure. --- .../test_suites/common/reporting/management.ts | 3 +++ .../api_integration/test_suites/observability/infra/index.ts | 4 ++++ .../test_suites/security/cloud_security_posture/benchmark.ts | 5 ++++- .../security/cloud_security_posture/get_csp_rule_template.ts | 5 ++++- .../security/cloud_security_posture/status/status_indexed.ts | 5 ++++- .../cloud_security_posture/status/status_indexing.ts | 5 ++++- .../status/status_not_deployed_not_installed.ts | 5 ++++- .../test_suites/security/cloud_security_posture/telemetry.ts | 5 ++++- 8 files changed, 31 insertions(+), 6 deletions(-) diff --git a/x-pack/test_serverless/api_integration/test_suites/common/reporting/management.ts b/x-pack/test_serverless/api_integration/test_suites/common/reporting/management.ts index ca9bdd44aadfb..309a56b2296e7 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/reporting/management.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/reporting/management.ts @@ -23,6 +23,9 @@ export default ({ getService }: FtrProviderContext) => { const supertest = getService('supertestWithoutAuth'); describe('Reporting Management', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.reporting-2020.04.19], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + const dataArchive = 'x-pack/test/functional/es_archives/reporting/archived_reports'; beforeEach(async () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts b/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts index 7769ffa652e6f..a5354f650b2b9 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts @@ -9,6 +9,10 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Infra UI', function () { + // all these tests are failing on MKI: + // Error: expected 200 "OK", got 404 "Not Found" + this.tags(['failsOnMKI']); + loadTestFile(require.resolve('./metadata')); loadTestFile(require.resolve('./snapshot')); loadTestFile(require.resolve('./processes')); diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark.ts b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark.ts index a0fd49e24e34a..53802db8caf3d 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/benchmark.ts @@ -18,7 +18,10 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('GET /internal/cloud_security_posture/benchmark', () => { + describe('GET /internal/cloud_security_posture/benchmark', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.fleet-actions-7], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + let agentPolicyId: string; let agentPolicyId2: string; let agentPolicyId3: string; diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/get_csp_rule_template.ts b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/get_csp_rule_template.ts index 0e8734b7b0cd6..19208865deb5c 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/get_csp_rule_template.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/get_csp_rule_template.ts @@ -19,7 +19,10 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('GET internal/cloud_security_posture/rules/_find', () => { + describe('GET internal/cloud_security_posture/rules/_find', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.fleet-actions-7], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + let agentPolicyId: string; beforeEach(async () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts index f31d295db631d..ace5eef6a5499 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexed.ts @@ -41,7 +41,10 @@ export default function (providerContext: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('GET /internal/cloud_security_posture/status', () => { + describe('GET /internal/cloud_security_posture/status', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.fleet-actions-7], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + let agentPolicyId: string; describe('STATUS = INDEXED TEST', () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts index 7c7f342170c4c..316fb54f829c6 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_indexing.ts @@ -41,7 +41,10 @@ export default function (providerContext: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('GET /internal/cloud_security_posture/status', () => { + describe('GET /internal/cloud_security_posture/status', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.fleet-actions-7], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + let agentPolicyId: string; describe('STATUS = INDEXING TEST', () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts index a797f47eef787..ac516bc68434c 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/status/status_not_deployed_not_installed.ts @@ -19,7 +19,10 @@ export default function (providerContext: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('GET /internal/cloud_security_posture/status', () => { + describe('GET /internal/cloud_security_posture/status', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.fleet-actions-7], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + let agentPolicyId: string; describe('STATUS = NOT-DEPLOYED and STATUS = NOT-INSTALLED TEST', () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts index aa189472eebcc..155d85dc0f06c 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/cloud_security_posture/telemetry.ts @@ -61,7 +61,10 @@ export default function ({ getService }: FtrProviderContext) { }, }; - describe('Verify cloud_security_posture telemetry payloads', async () => { + describe('Verify cloud_security_posture telemetry payloads', function () { + // security_exception: action [indices:admin/create] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.fleet-actions-7], this action is granted by the index privileges [create_index,manage,all] + this.tags(['failsOnMKI']); + let agentPolicyId: string; before(async () => { From a8a8349d7e16f48bce4894aa3a6ed6995ab6522c Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Fri, 13 Oct 2023 15:17:01 +0200 Subject: [PATCH 04/80] [Security Solution] Unskipping `x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/` working tests on serverless (#168384) --- .../timelines/data_providers.cy.ts | 98 +++++++++---------- .../e2e/investigations/timelines/export.cy.ts | 2 +- .../timelines/fields_browser.cy.ts | 2 +- .../timelines/flyout_button.cy.ts | 75 ++++++++------ .../timelines/full_screen.cy.ts | 2 +- .../investigations/timelines/inspect.cy.ts | 2 +- .../timelines/local_storage.cy.ts | 5 +- .../timelines/open_timeline.cy.ts | 2 +- .../investigations/timelines/pagination.cy.ts | 2 +- .../timelines/search_or_filter.cy.ts | 2 +- .../timelines/toggle_column.cy.ts | 58 +++++------ .../investigations/timelines/url_state.cy.ts | 2 +- 12 files changed, 129 insertions(+), 123 deletions(-) diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/data_providers.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/data_providers.cy.ts index dd96c92d355a6..7d68d156802c2 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/data_providers.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/data_providers.cy.ts @@ -31,65 +31,61 @@ import { hostsUrl } from '../../../urls/navigation'; import { cleanKibana, scrollToBottom } from '../../../tasks/common'; // Failing in serverless -describe( - 'timeline data providers', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, - () => { - before(() => { - cleanKibana(); - }); +describe('timeline data providers', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cleanKibana(); + }); - beforeEach(() => { - login(); - visitWithTimeRange(hostsUrl('allHosts')); - waitForAllHostsToBeLoaded(); - scrollToBottom(); - createNewTimeline(); - addNameAndDescriptionToTimeline(getTimeline()); - populateTimeline(); - }); + beforeEach(() => { + login(); + visitWithTimeRange(hostsUrl('allHosts')); + waitForAllHostsToBeLoaded(); + scrollToBottom(); + createNewTimeline(); + addNameAndDescriptionToTimeline(getTimeline()); + populateTimeline(); + }); - it('displays the data provider action menu when Enter is pressed', () => { - addDataProvider({ field: 'host.name', operator: 'exists' }); + it('displays the data provider action menu when Enter is pressed', () => { + addDataProvider({ field: 'host.name', operator: 'exists' }); - cy.get(TIMELINE_DATA_PROVIDERS_ACTION_MENU).should('not.exist'); - cy.get(`${TIMELINE_FLYOUT_HEADER} ${TIMELINE_DROPPED_DATA_PROVIDERS}`).focus(); - cy.get(`${TIMELINE_FLYOUT_HEADER} ${TIMELINE_DROPPED_DATA_PROVIDERS}`) - .first() - .parent() - .type('{enter}'); - - cy.get(TIMELINE_DATA_PROVIDERS_ACTION_MENU).should('exist'); - }); + cy.get(TIMELINE_DATA_PROVIDERS_ACTION_MENU).should('not.exist'); + cy.get(`${TIMELINE_FLYOUT_HEADER} ${TIMELINE_DROPPED_DATA_PROVIDERS}`).focus(); + cy.get(`${TIMELINE_FLYOUT_HEADER} ${TIMELINE_DROPPED_DATA_PROVIDERS}`) + .first() + .parent() + .type('{enter}'); - it.skip( - 'persists timeline when data provider is updated by dragging a field from data grid', - { tags: ['@brokenInServerless'] }, - () => { - updateDataProviderbyDraggingField('host.name', 0); - waitForTimelineChanges(); - cy.reload(); - cy.get(`${GET_TIMELINE_GRID_CELL('host.name')}`) - .first() - .then((hostname) => { - cy.get(TIMELINE_DATA_PROVIDERS_CONTAINER).contains(`host.name: "${hostname.text()}"`); - }); - } - ); + cy.get(TIMELINE_DATA_PROVIDERS_ACTION_MENU).should('exist'); + }); - it('persists timeline when a field is added by hover action "Add To Timeline" in data provider ', () => { - addDataProvider({ field: 'host.name', operator: 'exists' }); - waitForTimelineChanges(); - updateDataProviderByFieldHoverAction('host.name', 0); + it.skip( + 'persists timeline when data provider is updated by dragging a field from data grid', + { tags: ['@brokenInServerless'] }, + () => { + updateDataProviderbyDraggingField('host.name', 0); waitForTimelineChanges(); cy.reload(); cy.get(`${GET_TIMELINE_GRID_CELL('host.name')}`) .first() .then((hostname) => { - cy.get(TIMELINE_DATA_PROVIDERS_CONTAINER).should((dataProviderContainer) => { - expect(dataProviderContainer).to.contain(`host.name: "${hostname.text()}"`); - }); + cy.get(TIMELINE_DATA_PROVIDERS_CONTAINER).contains(`host.name: "${hostname.text()}"`); + }); + } + ); + + it('persists timeline when a field is added by hover action "Add To Timeline" in data provider ', () => { + addDataProvider({ field: 'host.name', operator: 'exists' }); + waitForTimelineChanges(); + updateDataProviderByFieldHoverAction('host.name', 0); + waitForTimelineChanges(); + cy.reload(); + cy.get(`${GET_TIMELINE_GRID_CELL('host.name')}`) + .first() + .then((hostname) => { + cy.get(TIMELINE_DATA_PROVIDERS_CONTAINER).should((dataProviderContainer) => { + expect(dataProviderContainer).to.contain(`host.name: "${hostname.text()}"`); }); - }); - } -); + }); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/export.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/export.cy.ts index 48143184249d2..ca80b427f9c16 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/export.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/export.cy.ts @@ -22,7 +22,7 @@ import { expectedExportedTimeline, getTimeline } from '../../../objects/timeline import { cleanKibana } from '../../../tasks/common'; // FLAKY: https://github.com/elastic/kibana/issues/165744 -describe('Export timelines', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Export timelines', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); login(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/fields_browser.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/fields_browser.cy.ts index a85966d590852..d4301853029a6 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/fields_browser.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/fields_browser.cy.ts @@ -51,7 +51,7 @@ const defaultHeaders = [ ]; // Flaky in serverless tests -describe('Fields Browser', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Fields Browser', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/flyout_button.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/flyout_button.cy.ts index 8e85d82fecafd..a6896de020a5a 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/flyout_button.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/flyout_button.cy.ts @@ -24,7 +24,7 @@ import { import { hostsUrl } from '../../../urls/navigation'; -describe('timeline flyout button', { tags: ['@ess', '@brokenInServerless'] }, () => { +describe('timeline flyout button', () => { before(() => { cleanKibana(); }); @@ -35,22 +35,26 @@ describe('timeline flyout button', { tags: ['@ess', '@brokenInServerless'] }, () waitForAllHostsToBeLoaded(); }); - it('toggles open the timeline', () => { + it('toggles open the timeline', { tags: ['@ess', '@serverless'] }, () => { openTimelineUsingToggle(); cy.get(TIMELINE_FLYOUT_HEADER).should('have.css', 'visibility', 'visible'); closeTimelineUsingToggle(); }); - it('re-focuses the toggle button when timeline is closed by clicking the active timeline toggle button', () => { - openTimelineUsingToggle(); - closeTimelineUsingToggle(); + it( + 're-focuses the toggle button when timeline is closed by clicking the active timeline toggle button', + { tags: ['@ess', '@serverless'] }, + () => { + openTimelineUsingToggle(); + closeTimelineUsingToggle(); - cy.get(TIMELINE_BOTTOM_BAR_TOGGLE_BUTTON).should('have.focus'); - }); + cy.get(TIMELINE_BOTTOM_BAR_TOGGLE_BUTTON).should('have.focus'); + } + ); it( 're-focuses the toggle button when timeline is closed by clicking the [X] close button', - { tags: '@brokenInServerless' }, + { tags: ['@ess', '@serverless'] }, () => { openTimelineUsingToggle(); closeTimelineUsingCloseButton(); @@ -59,29 +63,40 @@ describe('timeline flyout button', { tags: ['@ess', '@brokenInServerless'] }, () } ); - it('re-focuses the toggle button when timeline is closed by pressing the Esc key', () => { - openTimelineUsingToggle(); - cy.get('body').type('{esc}'); + it( + 're-focuses the toggle button when timeline is closed by pressing the Esc key', + { tags: ['@ess', '@serverless'] }, + () => { + openTimelineUsingToggle(); + cy.get('body').type('{esc}'); - cy.get(TIMELINE_BOTTOM_BAR_TOGGLE_BUTTON).should('have.focus'); - }); + cy.get(TIMELINE_BOTTOM_BAR_TOGGLE_BUTTON).should('have.focus'); + } + ); - it('the `(+)` button popover menu owns focus when open', () => { - openCreateTimelineOptionsPopover(); - cy.get(CREATE_NEW_TIMELINE).focus(); - cy.get(CREATE_NEW_TIMELINE).should('have.focus'); - closeCreateTimelineOptionsPopover(); - cy.get(CREATE_NEW_TIMELINE).should('not.exist'); - }); + it( + 'the `(+)` button popover menu owns focus when open', + { tags: ['@ess', '@serverless'] }, + () => { + openCreateTimelineOptionsPopover(); + cy.get(CREATE_NEW_TIMELINE).focus(); + cy.get(CREATE_NEW_TIMELINE).should('have.focus'); + closeCreateTimelineOptionsPopover(); + cy.get(CREATE_NEW_TIMELINE).should('not.exist'); + } + ); - it('should render the global search dropdown when the input is focused', () => { - openTimelineUsingToggle(); - cy.get('[data-test-subj="nav-search-input"]').focus(); - cy.get('[data-test-subj="nav-search-input"]').should('be.focused'); - cy.get('[data-test-subj="nav-search-option"]').should('be.visible'); - cy.get('[data-test-subj="nav-search-option"]').first().realHover(); - // check that at least one item is visible in the search bar after mousing over, i.e. it's still usable. - cy.get('[data-test-subj="nav-search-option"]').its('length').should('be.gte', 1); - closeTimelineUsingCloseButton(); - }); + it( + 'should render the global search dropdown when the input is focused', + { tags: ['@ess'] }, + () => { + openTimelineUsingToggle(); + cy.get('[data-test-subj="nav-search-input"]').focus(); + cy.get('[data-test-subj="nav-search-input"]').should('be.focused'); + cy.get('[data-test-subj="nav-search-option"]').should('be.visible'); + cy.get('[data-test-subj="nav-search-option"]').first().realHover(); + // check that at least one item is visible in the search bar after mousing over, i.e. it's still usable. + cy.get('[data-test-subj="nav-search-option"]').its('length').should('be.gte', 1); + } + ); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/full_screen.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/full_screen.cy.ts index 61226d987dedf..72f5aa576449c 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/full_screen.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/full_screen.cy.ts @@ -20,7 +20,7 @@ import { populateTimeline } from '../../../tasks/timeline'; import { hostsUrl } from '../../../urls/navigation'; // FLAKY: https://github.com/elastic/kibana/issues/165638 -describe('Toggle full screen', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Toggle full screen', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/inspect.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/inspect.cy.ts index 8d529b60d0e03..235c8c248b33d 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/inspect.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/inspect.cy.ts @@ -15,7 +15,7 @@ import { executeTimelineKQL, openTimelineInspectButton } from '../../../tasks/ti import { hostsUrl } from '../../../urls/navigation'; // FLAKY: https://github.com/elastic/kibana/issues/165688 -describe('Inspect', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Inspect', { tags: ['@ess', '@serverless'] }, () => { context('Timeline', () => { it('inspects the timeline', () => { const hostExistsQuery = 'host.name: *'; diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/local_storage.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/local_storage.cy.ts index b2ecdb5e2c137..44061ffdf3ee0 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/local_storage.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/local_storage.cy.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { reload } from '../../../tasks/common'; import { login } from '../../../tasks/login'; import { visitWithTimeRange } from '../../../tasks/navigation'; import { hostsUrl } from '../../../urls/navigation'; @@ -14,7 +13,7 @@ import { DATAGRID_HEADERS, DATAGRID_HEADER } from '../../../screens/timeline'; import { waitsForEventsToBeLoaded } from '../../../tasks/hosts/events'; import { removeColumn } from '../../../tasks/timeline'; -describe('persistent timeline', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('persistent timeline', { tags: ['@ess', '@serverless'] }, () => { before(() => { login(); visitWithTimeRange(hostsUrl('allHosts')); @@ -34,7 +33,7 @@ describe('persistent timeline', { tags: ['@ess', '@serverless', '@brokenInServer cy.get(DATAGRID_HEADER(COLUMN)).should('exist'); removeColumn(COLUMN); - reload(); + cy.reload(); waitsForEventsToBeLoaded(); /* After the deletion of the message column and the reload of the page, we make sure diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/open_timeline.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/open_timeline.cy.ts index afa000478e8fb..7f9083acb0b9f 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/open_timeline.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/open_timeline.cy.ts @@ -36,7 +36,7 @@ import { import { TIMELINES_URL } from '../../../urls/navigation'; -describe('Open timeline', { tags: ['@brokenInServerless', '@ess'] }, () => { +describe('Open timeline', { tags: ['@serverless', '@ess'] }, () => { describe('Open timeline modal', () => { before(function () { cleanKibana(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/pagination.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/pagination.cy.ts index 310efb66807e0..0037ae179c633 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/pagination.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/pagination.cy.ts @@ -25,7 +25,7 @@ import { hostsUrl } from '../../../urls/navigation'; // Flaky on serverless const defaultPageSize = 25; -describe('Pagination', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Pagination', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); cy.task('esArchiverLoad', { archiveName: 'timeline' }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/search_or_filter.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/search_or_filter.cy.ts index a695597a48709..a6f5ae49f5d8a 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/search_or_filter.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/search_or_filter.cy.ts @@ -27,7 +27,7 @@ import { waitForTimelinesPanelToBeLoaded } from '../../../tasks/timelines'; import { hostsUrl, TIMELINES_URL } from '../../../urls/navigation'; -describe('Timeline search and filters', { tags: ['@ess', '@brokenInServerless'] }, () => { +describe('Timeline search and filters', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/toggle_column.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/toggle_column.cy.ts index 625642da5c5fa..6845d402d21f1 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/toggle_column.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/toggle_column.cy.ts @@ -20,34 +20,30 @@ import { import { hostsUrl } from '../../../urls/navigation'; -describe( - 'toggle column in timeline', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, - () => { - before(() => { - cleanKibana(); - cy.intercept('POST', '/api/timeline/_export?file_name=timelines_export.ndjson').as('export'); - }); - - beforeEach(() => { - login(); - visitWithTimeRange(hostsUrl('allHosts')); - openTimelineUsingToggle(); - populateTimeline(); - }); - - it('removes the @timestamp field from the timeline when the user un-checks the toggle', () => { - expandFirstTimelineEventDetails(); - clickTimestampToggleField(); - - cy.get(TIMESTAMP_HEADER_FIELD).should('not.exist'); - }); - - it('adds the _id field to the timeline when the user checks the field', () => { - expandFirstTimelineEventDetails(); - clickIdToggleField(); - - cy.get(ID_HEADER_FIELD).should('exist'); - }); - } -); +describe('toggle column in timeline', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cleanKibana(); + cy.intercept('POST', '/api/timeline/_export?file_name=timelines_export.ndjson').as('export'); + }); + + beforeEach(() => { + login(); + visitWithTimeRange(hostsUrl('allHosts')); + openTimelineUsingToggle(); + populateTimeline(); + }); + + it('removes the @timestamp field from the timeline when the user un-checks the toggle', () => { + expandFirstTimelineEventDetails(); + clickTimestampToggleField(); + + cy.get(TIMESTAMP_HEADER_FIELD).should('not.exist'); + }); + + it('adds the _id field to the timeline when the user checks the field', () => { + expandFirstTimelineEventDetails(); + clickIdToggleField(); + + cy.get(ID_HEADER_FIELD).should('exist'); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/url_state.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/url_state.cy.ts index 5028f54146e85..c49f1d51d9617 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/url_state.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/url_state.cy.ts @@ -23,7 +23,7 @@ import { visit, visitWithTimeRange } from '../../../tasks/navigation'; import { TIMELINES_URL } from '../../../urls/navigation'; -describe('Open timeline', { tags: ['@brokenInServerless', '@ess'] }, () => { +describe('Open timeline', { tags: ['@serverless', '@ess'] }, () => { let timelineSavedObjectId: string | null = null; before(function () { cleanKibana(); From 51c6ce265107dfb5794f4d19550db409856cdc5c Mon Sep 17 00:00:00 2001 From: jennypavlova Date: Fri, 13 Oct 2023 15:18:48 +0200 Subject: [PATCH 05/80] [Infra UI] Fix: Move infra tests to feature flags (#168818) ## Summary This PR moves infra tests to use the feature flag config. This way they won't fail on MKI --- .../test_suites/observability/config.feature_flags.ts | 5 ++++- .../api_integration/test_suites/observability/config.ts | 1 - .../test_suites/observability/index.feature_flags.ts | 1 + .../api_integration/test_suites/observability/index.ts | 1 - .../api_integration/test_suites/observability/infra/index.ts | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts b/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts index bedcfb3889b00..06fb7e5682ea3 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts @@ -20,7 +20,10 @@ export default createTestConfig({ suiteTags: { exclude: ['skipSvlOblt'] }, services, // add feature flags - kbnServerArgs: ['--xpack.observability.unsafe.thresholdRule.enabled=true'], + kbnServerArgs: [ + '--xpack.observability.unsafe.thresholdRule.enabled=true', + '--xpack.infra.enabled=true', + ], // load tests in the index file testFiles: [require.resolve('./index.feature_flags.ts')], diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/config.ts b/x-pack/test_serverless/api_integration/test_suites/observability/config.ts index a9484f1aee7bf..9901c9736b9aa 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/config.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/config.ts @@ -20,5 +20,4 @@ export default createTestConfig({ // include settings from project controller // https://github.com/elastic/project-controller/blob/main/internal/project/observability/config/elasticsearch.yml esServerArgs: ['xpack.ml.dfa.enabled=false', 'xpack.ml.nlp.enabled=false'], - kbnServerArgs: ['--xpack.infra.enabled=true'], }); diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts b/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts index a3a5ab552ee3f..aaaf1b706fb9d 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/index.feature_flags.ts @@ -10,5 +10,6 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Serverless observability API - feature flags', function () { loadTestFile(require.resolve('./custom_threshold_rule')); + loadTestFile(require.resolve('./infra')); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/index.ts b/x-pack/test_serverless/api_integration/test_suites/observability/index.ts index f7d428387370a..72cb01c03fd2f 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/index.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/index.ts @@ -16,6 +16,5 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./telemetry/telemetry_config')); loadTestFile(require.resolve('./apm_api_integration/feature_flags.ts')); loadTestFile(require.resolve('./cases')); - loadTestFile(require.resolve('./infra')); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts b/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts index a5354f650b2b9..9ab20b80205d7 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/infra/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../../ftr_provider_context'; +import type { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('Infra UI', function () { From 8a98763f588d77bb956fb9579f9543c38ded5b9c Mon Sep 17 00:00:00 2001 From: Abdon Pijpelink Date: Fri, 13 Oct 2023 15:22:57 +0200 Subject: [PATCH 06/80] Temporary link change for ES|QL STATS-BY (#168820) Temporarily changes the deep link to the documentation for ES|QL STATS...BY to unblock https://github.com/elastic/elasticsearch/pull/100806 . I'll change the link to the new STATS...BY link after https://github.com/elastic/elasticsearch/pull/100806 merges. --- 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 c389fe02f06d8..6f2800a8d6348 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -856,7 +856,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { featureRoles: `${ELASTIC_WEBSITE_URL}guide/en/observability/${DOC_LINK_VERSION}/synthetics-feature-roles.html`, }, esql: { - statsBy: `${ELASTICSEARCH_DOCS}esql-stats-by.html`, + statsBy: `${ELASTICSEARCH_DOCS}esql.html`, }, telemetry: { settings: `${KIBANA_DOCS}telemetry-settings-kbn.html`, From ae4ebd48085c0de5f00f9a0a93563470f8c5d599 Mon Sep 17 00:00:00 2001 From: Tomasz Ciecierski Date: Fri, 13 Oct 2023 15:27:43 +0200 Subject: [PATCH 07/80] [EDR Workflows] Unskip osquery tests (#168785) --- .../cypress/e2e/all/alerts_automated_action_results.cy.ts | 3 +-- x-pack/plugins/osquery/cypress/e2e/all/custom_space.cy.ts | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_automated_action_results.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/alerts_automated_action_results.cy.ts index 802671cfb8fc0..4505af882da94 100644 --- a/x-pack/plugins/osquery/cypress/e2e/all/alerts_automated_action_results.cy.ts +++ b/x-pack/plugins/osquery/cypress/e2e/all/alerts_automated_action_results.cy.ts @@ -10,8 +10,7 @@ import { checkActionItemsInResults, loadRuleAlerts } from '../../tasks/live_quer const UUID_REGEX = '[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}'; -// FLAKY: https://github.com/elastic/kibana/issues/168743 -describe.skip( +describe( 'Alert Flyout Automated Action Results', { tags: ['@ess', '@serverless'], diff --git a/x-pack/plugins/osquery/cypress/e2e/all/custom_space.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/custom_space.cy.ts index bdcacf9cf4615..0c46fbf074966 100644 --- a/x-pack/plugins/osquery/cypress/e2e/all/custom_space.cy.ts +++ b/x-pack/plugins/osquery/cypress/e2e/all/custom_space.cy.ts @@ -20,8 +20,7 @@ const testSpaces = [ { name: 'default', tags: ['@ess', '@serverless'] }, { name: 'custom-spaces', tags: ['@ess'] }, ]; -// FLAKY: https://github.com/elastic/kibana/issues/168742 -describe.skip('ALL - Custom space', () => { +describe('ALL - Custom space', () => { testSpaces.forEach((testSpace) => { describe(`[${testSpace.name}]`, { tags: testSpace.tags }, () => { let packName: string; From 7cb153d4d7344212c437553655d980b02b4b355b Mon Sep 17 00:00:00 2001 From: Devon Thomson Date: Fri, 13 Oct 2023 09:28:57 -0400 Subject: [PATCH 08/80] Fix ML swimlane embeddable titles (#168647) Stops the ML Embeddables from setting the default title and default description on their outputs during initialization. --- .../public/embeddable/embeddable_change_point_chart.tsx | 2 +- .../embeddables/common/anomaly_detection_embeddable.ts | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx b/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx index b040069a235f4..af5942024ec99 100644 --- a/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx +++ b/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx @@ -66,7 +66,7 @@ export class EmbeddableChangePointChart extends AbstractEmbeddable< initialInput: EmbeddableChangePointChartInput, parent?: IContainer ) { - super(initialInput, { defaultTitle: initialInput.title }, parent); + super(initialInput, {}, parent); this.initOutput().finally(() => this.setInitializationFinished()); } diff --git a/x-pack/plugins/ml/public/embeddables/common/anomaly_detection_embeddable.ts b/x-pack/plugins/ml/public/embeddables/common/anomaly_detection_embeddable.ts index 7722238cdbb38..0b24a5b47b18c 100644 --- a/x-pack/plugins/ml/public/embeddables/common/anomaly_detection_embeddable.ts +++ b/x-pack/plugins/ml/public/embeddables/common/anomaly_detection_embeddable.ts @@ -33,14 +33,7 @@ export abstract class AnomalyDetectionEmbeddable< private dataViewsService: DataViewsContract, parent?: IContainer ) { - super( - initialInput, - { - defaultTitle: initialInput.title, - defaultDescription: initialInput.description, - } as Output, - parent - ); + super(initialInput, {} as Output, parent); this.initializeOutput(initialInput).finally(() => { this.setInitializationFinished(); From 56c5ac95a3189d3e94923a12bed98f9fc3523951 Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Fri, 13 Oct 2023 08:32:37 -0500 Subject: [PATCH 09/80] [data views] REST API - get scripted field, fix response schema (#168776) ## Summary Response schema fixed. from field formatter response to scripted field. I suspect this slipped through since its not enforced aside from dev environment. Discovered and broken out from https://github.com/elastic/kibana/pull/161611 --- .../public/scripted_fields/get_scripted_field.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/data_views/server/rest_api_routes/public/scripted_fields/get_scripted_field.ts b/src/plugins/data_views/server/rest_api_routes/public/scripted_fields/get_scripted_field.ts index 4f1a9d2a781f7..0bda9a21b10d7 100644 --- a/src/plugins/data_views/server/rest_api_routes/public/scripted_fields/get_scripted_field.ts +++ b/src/plugins/data_views/server/rest_api_routes/public/scripted_fields/get_scripted_field.ts @@ -15,7 +15,7 @@ import type { DataViewsServerPluginStartDependencies, } from '../../../types'; import { INITIAL_REST_VERSION } from '../../../constants'; -import { serializedFieldFormatSchema } from '../../../../common/schemas'; +import { fieldSpecSchemaFields } from '../../../../common/schemas'; import { FieldSpecRestResponse } from '../../route_types'; export const registerGetScriptedFieldRoute = ( @@ -49,7 +49,7 @@ export const registerGetScriptedFieldRoute = ( response: { 200: { body: schema.object({ - field: serializedFieldFormatSchema, + field: schema.object(fieldSpecSchemaFields), }), }, }, From 6220ee2dcc7ddd0ceea9c1aef7229fff46077e34 Mon Sep 17 00:00:00 2001 From: Thomas Watson Date: Fri, 13 Oct 2023 15:36:56 +0200 Subject: [PATCH 10/80] [serverless] Don't run e2e tests before promoting to QA (#168596) --- .buildkite/pipelines/pipeline.kibana-serverless-release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/pipelines/pipeline.kibana-serverless-release.yaml b/.buildkite/pipelines/pipeline.kibana-serverless-release.yaml index 9c3e235c5564a..84dae4c24db48 100644 --- a/.buildkite/pipelines/pipeline.kibana-serverless-release.yaml +++ b/.buildkite/pipelines/pipeline.kibana-serverless-release.yaml @@ -2,7 +2,7 @@ steps: - label: ":releasethekraken: Release kibana" # https://regex101.com/r/tY52jo/1 if: build.tag =~ /^deploy@\d+\$/ - trigger: gpctl-promote-with-e2e-tests + trigger: gpctl-promote build: env: SERVICE_COMMIT_HASH: "${BUILDKITE_COMMIT:0:12}" From 594705aef156675628e629a7e3eefc89740a6c47 Mon Sep 17 00:00:00 2001 From: Thomas Watson Date: Fri, 13 Oct 2023 15:39:15 +0200 Subject: [PATCH 11/80] [serverless] move SLO quality gate check to Prod (#168471) --- .../pipeline.tests-production-canary.yaml | 10 ++++++++++ .../pipeline.tests-production-noncanary.yaml | 10 ++++++++++ .../quality-gates/pipeline.tests-production.yaml | 10 ++++++++++ .../pipelines/quality-gates/pipeline.tests-qa.yaml | 12 ------------ .../quality-gates/pipeline.tests-staging.yaml | 10 ---------- 5 files changed, 30 insertions(+), 22 deletions(-) diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-production-canary.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-production-canary.yaml index 9b68ac2e99acf..8b30d4e141b08 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-production-canary.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-production-canary.yaml @@ -3,6 +3,16 @@ # A failure in this pipeline build will prevent further progression to the subsequent stage. steps: + - label: ":pipeline::kibana::seedling: Trigger SLO check" + trigger: "serverless-quality-gates" # https://buildkite.com/elastic/serverless-quality-gates + build: + message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-production-canary.yaml)" + env: + TARGET_ENV: production-canary + CHECK_SLO: true + CHECK_SLO_TAG: kibana + soft_fail: true + - label: ":pipeline::rocket::seedling: Trigger control-plane e2e tests" trigger: "ess-k8s-production-e2e-tests" # https://buildkite.com/elastic/ess-k8s-production-e2e-tests build: diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-production-noncanary.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-production-noncanary.yaml index 13d9f2322e806..13c974a344f98 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-production-noncanary.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-production-noncanary.yaml @@ -3,6 +3,16 @@ # A failure in this pipeline build will prevent further progression to the subsequent stage. steps: + - label: ":pipeline::kibana::seedling: Trigger SLO check" + trigger: "serverless-quality-gates" # https://buildkite.com/elastic/serverless-quality-gates + build: + message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-production-noncanary.yaml)" + env: + TARGET_ENV: production-noncanary + CHECK_SLO: true + CHECK_SLO_TAG: kibana + soft_fail: true + - label: ":pipeline::rocket::seedling: Trigger control-plane e2e tests" trigger: "ess-k8s-production-e2e-tests" # https://buildkite.com/elastic/ess-k8s-production-e2e-tests build: diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml index 2176589d14aae..799848c54e6b1 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml @@ -7,6 +7,16 @@ # ENSURE ANY CHANGE MADE TO THIS FILE IS REFLECTED IN THOSE FILES AS WELL. steps: + - label: ":pipeline::kibana::seedling: Trigger SLO check" + trigger: "serverless-quality-gates" # https://buildkite.com/elastic/serverless-quality-gates + build: + message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-production.yaml)" + env: + TARGET_ENV: production + CHECK_SLO: true + CHECK_SLO_TAG: kibana + soft_fail: true + - label: ":pipeline::rocket::seedling: Trigger control-plane e2e tests" trigger: "ess-k8s-production-e2e-tests" # https://buildkite.com/elastic/ess-k8s-production-e2e-tests build: diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml index 962da8da4d86e..979862596ae5b 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml @@ -3,18 +3,6 @@ # A failure in this pipeline build will prevent further progression to the subsequent stage. steps: - - label: ":pipeline::kibana::seedling: Trigger SLO check" - trigger: "serverless-quality-gates" # https://buildkite.com/elastic/serverless-quality-gates - build: - message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-qa.yaml)" - env: - TARGET_ENV: qa - CHECK_SLO: true - CHECK_SLO_TAG: kibana - CHECK_SLO_WAITING_PERIOD: 10m - CHECK_SLO_BURN_RATE_THRESHOLD: 0.1 - soft_fail: true - - label: ":pipeline::kibana::seedling: Trigger Kibana Serverless Tests for ${ENVIRONMENT}" trigger: appex-qa-serverless-kibana-ftr-tests # https://buildkite.com/elastic/appex-qa-serverless-kibana-ftr-tests soft_fail: true # Remove this before release or when tests stabilize diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml index 42fa2b34ea84f..d5cce621002b3 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml @@ -3,16 +3,6 @@ # A failure in this pipeline build will prevent further progression to the subsequent stage. steps: - - label: ":pipeline::kibana::seedling: Trigger SLO check" - trigger: "serverless-quality-gates" # https://buildkite.com/elastic/serverless-quality-gates - build: - message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-staging.yaml)" - env: - TARGET_ENV: staging - CHECK_SLO: true - CHECK_SLO_TAG: kibana - soft_fail: true - - label: ":pipeline::rocket::seedling: Trigger control-plane e2e tests" trigger: "ess-k8s-staging-e2e-tests" # https://buildkite.com/elastic/ess-k8s-staging-e2e-tests build: From 5fc8429065874a6506047744b3e79211c32ba62b Mon Sep 17 00:00:00 2001 From: Thomas Watson Date: Fri, 13 Oct 2023 15:39:56 +0200 Subject: [PATCH 12/80] [serverless] Remove manual gate in Prod quality gate (#168474) --- .../quality-gates/pipeline.tests-production.yaml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml index 799848c54e6b1..4b0bb30d3084c 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml @@ -24,11 +24,3 @@ steps: REGION_ID: aws-us-east-1 NAME_PREFIX: ci_test_kibana-promotion_ message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-production.yaml)" - - - wait: ~ - - - label: ":judge::seedling: Trigger Manual Tests Phase" - command: "make -C /agent trigger-manual-verification-phase" - if: build.branch == "main" - agents: - image: "docker.elastic.co/ci-agent-images/manual-verification-agent:0.0.2" From a48b58fed2e3cb8ae27b43aa68ac4bfd5b2933b0 Mon Sep 17 00:00:00 2001 From: Rodney Norris Date: Fri, 13 Oct 2023 08:42:06 -0500 Subject: [PATCH 13/80] [Serverless Search] add api integration tests (#168752) ## Summary Adding API integration tests for exists routes (most of them). This is missing some of the connector routes for now. --- .../test_suites/search/index.ts | 1 + .../search/serverless_search/api_key.ts | 103 ++++++++++++++++++ .../search/serverless_search/connectors.ts | 42 +++++++ .../search/serverless_search/index.ts | 16 +++ .../search/serverless_search/indices.ts | 43 ++++++++ 5 files changed, 205 insertions(+) create mode 100644 x-pack/test_serverless/api_integration/test_suites/search/serverless_search/api_key.ts create mode 100644 x-pack/test_serverless/api_integration/test_suites/search/serverless_search/connectors.ts create mode 100644 x-pack/test_serverless/api_integration/test_suites/search/serverless_search/index.ts create mode 100644 x-pack/test_serverless/api_integration/test_suites/search/serverless_search/indices.ts diff --git a/x-pack/test_serverless/api_integration/test_suites/search/index.ts b/x-pack/test_serverless/api_integration/test_suites/search/index.ts index 7b5f69bc5da8b..c81c324ea15bd 100644 --- a/x-pack/test_serverless/api_integration/test_suites/search/index.ts +++ b/x-pack/test_serverless/api_integration/test_suites/search/index.ts @@ -15,5 +15,6 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./telemetry/telemetry_config')); loadTestFile(require.resolve('./cases/find_cases')); loadTestFile(require.resolve('./cases/post_case')); + loadTestFile(require.resolve('./serverless_search')); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/api_key.ts b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/api_key.ts new file mode 100644 index 0000000000000..d22d6fc8360ce --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/api_key.ts @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from 'expect'; +import { kibanaTestUser } from '@kbn/test'; +import { SecurityApiKey } from '@elastic/elasticsearch/lib/api/types'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +const API_BASE_PATH = '/internal/serverless_search'; + +export default function ({ getService }: FtrProviderContext) { + const svlCommonApi = getService('svlCommonApi'); + const supertest = getService('supertest'); + const es = getService('es'); + const log = getService('log'); + + describe('API Key routes', function () { + describe('GET api_keys', function () { + it('return apiKeys', async () => { + const { body } = await supertest + .get(`${API_BASE_PATH}/api_keys`) + .set(svlCommonApi.getInternalRequestHeader()) + .expect(200); + + expect(body).toBeDefined(); + expect(body.apiKeys).toBeDefined(); + expect(Array.isArray(body.apiKeys)).toBe(true); + }); + }); + + describe('POST api_key', function () { + const deleteAllApiKeys = async () => { + let apiKeys: SecurityApiKey[]; + // Delete existing API keys + try { + const apiKeysResult = await es.security.getApiKey({ username: kibanaTestUser.username }); + apiKeys = apiKeysResult.api_keys; + } catch (err) { + log.debug('[Setup error] error listing API keys'); + throw err; + } + + expect(Array.isArray(apiKeys)).toBe(true); + if (apiKeys.length === 0) { + return; + } + + const apiKeysToDelete = apiKeys.map(({ id }) => id); + await es.security.invalidateApiKey({ ids: apiKeysToDelete }); + }; + before(async () => { + await deleteAllApiKeys(); + }); + after(async () => { + await deleteAllApiKeys(); + }); + it('can create a key that expires', async () => { + const createBody = { + name: 'test-api-key-001', + expiration: '60d', + }; + const { body } = await supertest + .post(`${API_BASE_PATH}/api_key`) + .set(svlCommonApi.getInternalRequestHeader()) + .send(createBody) + .expect(200); + + expect(body).toMatchObject({ name: 'test-api-key-001', expiration: expect.anything() }); + }); + it('can create a key that never expires', async () => { + const createBody = { + name: 'test-api-key-002', + }; + const { body } = await supertest + .post(`${API_BASE_PATH}/api_key`) + .set(svlCommonApi.getInternalRequestHeader()) + .send(createBody) + .expect(200); + + expect(body).toMatchObject({ name: 'test-api-key-002' }); + }); + it('has beats_logstash_format in result', async () => { + const createBody = { + name: 'test-api-key-003', + }; + const { body } = await supertest + .post(`${API_BASE_PATH}/api_key`) + .set(svlCommonApi.getInternalRequestHeader()) + .send(createBody) + .expect(200); + + expect(body).toMatchObject({ + name: 'test-api-key-003', + beats_logstash_format: expect.stringContaining(':'), + }); + }); + }); + }); +} diff --git a/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/connectors.ts b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/connectors.ts new file mode 100644 index 0000000000000..ac7ddcf5372f5 --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/connectors.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from 'expect'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +const API_BASE_PATH = '/internal/serverless_search'; + +export default function ({ getService }: FtrProviderContext) { + const svlCommonApi = getService('svlCommonApi'); + const supertest = getService('supertest'); + + describe('Connectors routes', function () { + describe('GET connectors', function () { + it('returns list of connectors', async () => { + const { body } = await supertest + .get(`${API_BASE_PATH}/connectors`) + .set(svlCommonApi.getInternalRequestHeader()) + .expect(200); + + expect(body.connectors).toBeDefined(); + expect(Array.isArray(body.connectors)).toBe(true); + }); + }); + describe('GET connectors', function () { + it('returns list of connector_types', async () => { + const { body } = await supertest + .get(`${API_BASE_PATH}/connector_types`) + .set(svlCommonApi.getInternalRequestHeader()) + .expect(200); + + expect(body.connectors).toBeDefined(); + expect(Array.isArray(body.connectors)).toBe(true); + expect(body.connectors.length).toBeGreaterThan(0); + }); + }); + }); +} diff --git a/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/index.ts b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/index.ts new file mode 100644 index 0000000000000..dd80cb7f5342d --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('Serverless Search - Server', function () { + loadTestFile(require.resolve('./api_key')); + loadTestFile(require.resolve('./connectors')); + loadTestFile(require.resolve('./indices')); + }); +} diff --git a/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/indices.ts b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/indices.ts new file mode 100644 index 0000000000000..a387f6e7e320e --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/search/serverless_search/indices.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from 'expect'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +const API_BASE_PATH = '/internal/serverless_search'; + +export default function ({ getService }: FtrProviderContext) { + const svlCommonApi = getService('svlCommonApi'); + const supertest = getService('supertest'); + + describe('Indices routes', function () { + describe('GET indices', function () { + it('has route', async () => { + const { body } = await supertest + .get(`${API_BASE_PATH}/indices`) + .set(svlCommonApi.getInternalRequestHeader()) + .expect(200); + + expect(body).toBeDefined(); + }); + it('accepts search_query', async () => { + await supertest + .get(`${API_BASE_PATH}/indices`) + .set(svlCommonApi.getInternalRequestHeader()) + .query({ search_query: 'foo' }) + .expect(200); + }); + it('accepts from & size', async () => { + await supertest + .get(`${API_BASE_PATH}/indices`) + .set(svlCommonApi.getInternalRequestHeader()) + .query({ from: 0, size: 10 }) + .expect(200); + }); + }); + }); +} From 326ef31677a6df2fe3cfaebd4e3fe251d8b26c12 Mon Sep 17 00:00:00 2001 From: Anton Dosov Date: Fri, 13 Oct 2023 16:11:31 +0200 Subject: [PATCH 14/80] [Serverless Nav] Fix issues with sticky app menu subheader (#168372) ## Summary - Fixes sticky kql bar in serverless security project https://github.com/elastic/kibana/issues/167908 - Fixes double scroll in serverless discover caused by incorrect app container height cc @elastic/kibana-data-discovery ![Screenshot 2023-10-10 at 17 23 58](https://github.com/elastic/kibana/assets/7784120/3bf50299-7d9f-4c38-953a-33a6a75815c6) - Fixes empty app header for top_nav component, for example, discover doc page: ![Screenshot 2023-10-10 at 17 24 45](https://github.com/elastic/kibana/assets/7784120/4965deac-9472-402f-8e8e-66ede83ce1bb) --------- Co-authored-by: Cee Chen --- .../src/chrome_service.tsx | 12 ++++++--- .../src/ui/project/app_menu.tsx | 4 ++- .../kibana_mount/mount_point_portal.test.tsx | 19 +++++++++++++- .../react/kibana_mount/mount_point_portal.tsx | 3 ++- src/core/public/_css_variables.scss | 2 ++ src/core/public/_mixins.scss | 10 +++++--- src/core/public/styles/rendering/_base.scss | 25 +++++++++++++++---- src/plugins/kibana_react/public/index.ts | 2 +- .../kibana_react/public/util/index.tsx | 16 +----------- src/plugins/navigation/kibana.jsonc | 8 ++---- .../public/top_nav_menu/top_nav_menu.tsx | 19 ++++++++------ src/plugins/navigation/tsconfig.json | 2 +- .../global_kql_header/index.tsx | 2 +- 13 files changed, 79 insertions(+), 45 deletions(-) diff --git a/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx b/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx index 47abc6c5646fe..bf44390d13294 100644 --- a/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx +++ b/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx @@ -203,14 +203,20 @@ export class ChromeService { }; const headerBanner$ = new BehaviorSubject(undefined); - const bodyClasses$ = combineLatest([headerBanner$, this.isVisible$!, chromeStyle$]).pipe( - map(([headerBanner, isVisible, chromeStyle]) => { + const bodyClasses$ = combineLatest([ + headerBanner$, + this.isVisible$!, + chromeStyle$, + application.currentActionMenu$, + ]).pipe( + map(([headerBanner, isVisible, chromeStyle, actionMenu]) => { return [ 'kbnBody', headerBanner ? 'kbnBody--hasHeaderBanner' : 'kbnBody--noHeaderBanner', isVisible ? 'kbnBody--chromeVisible' : 'kbnBody--chromeHidden', + chromeStyle === 'project' && actionMenu ? 'kbnBody--hasProjectActionMenu' : '', getKbnVersionClass(), - ]; + ].filter((className) => !!className); }) ); diff --git a/packages/core/chrome/core-chrome-browser-internal/src/ui/project/app_menu.tsx b/packages/core/chrome/core-chrome-browser-internal/src/ui/project/app_menu.tsx index 22ff7c9415ba8..0c0e4dbdf9167 100644 --- a/packages/core/chrome/core-chrome-browser-internal/src/ui/project/app_menu.tsx +++ b/packages/core/chrome/core-chrome-browser-internal/src/ui/project/app_menu.tsx @@ -17,6 +17,7 @@ interface AppMenuBarProps { } export const AppMenuBar = ({ headerActionMenuMounter }: AppMenuBarProps) => { const { euiTheme } = useEuiTheme(); + return (
{ display: flex; justify-content: end; align-items: center; - padding: ${euiTheme.size.s}; + padding: 0 ${euiTheme.size.s}; + height: var(--kbnProjectHeaderAppActionMenuHeight, ${euiTheme.size.xxxl}); margin-bottom: -${euiTheme.border.width.thin}; /* fixates the elements position in the viewport, removes the element from the flow of the page */ position: sticky; diff --git a/packages/react/kibana_mount/mount_point_portal.test.tsx b/packages/react/kibana_mount/mount_point_portal.test.tsx index c7200a934f5a6..04fbf12ecdde5 100644 --- a/packages/react/kibana_mount/mount_point_portal.test.tsx +++ b/packages/react/kibana_mount/mount_point_portal.test.tsx @@ -58,6 +58,23 @@ describe('MountPointPortal', () => { expect(setMountPoint).toHaveBeenCalledTimes(1); }); + it('calls the provided `setMountPoint` with undefined during unmount', async () => { + dom = mount( + + portal content + + ); + + await refresh(); + + dom.unmount(); + + await refresh(); + + expect(setMountPoint).toHaveBeenCalledTimes(2); + expect(setMountPoint).toHaveBeenLastCalledWith(undefined); + }); + it('renders the portal content when calling the mountPoint ', async () => { dom = mount( @@ -127,7 +144,7 @@ describe('MountPointPortal', () => { it('updates the content of the portal element when the content of MountPointPortal changes', async () => { const Wrapper: FC<{ - setMount: (mountPoint: MountPoint) => void; + setMount: (mountPoint: MountPoint | undefined) => void; portalContent: string; }> = ({ setMount, portalContent }) => { return ( diff --git a/packages/react/kibana_mount/mount_point_portal.tsx b/packages/react/kibana_mount/mount_point_portal.tsx index c5bc994279c41..dcfeddc428d09 100644 --- a/packages/react/kibana_mount/mount_point_portal.tsx +++ b/packages/react/kibana_mount/mount_point_portal.tsx @@ -13,7 +13,7 @@ import { MountPoint } from '@kbn/core/public'; import { useIfMounted } from './utils'; export interface MountPointPortalProps { - setMountPoint: (mountPoint: MountPoint) => void; + setMountPoint: (mountPoint: MountPoint | undefined) => void; } /** @@ -47,6 +47,7 @@ export const MountPointPortal: React.FC = ({ children, se setShouldRender(false); el.current = undefined; }); + setMountPoint(undefined); }; }, [setMountPoint, ifMounted]); diff --git a/src/core/public/_css_variables.scss b/src/core/public/_css_variables.scss index cef1be40d1239..5fc2c4dbfc2d3 100644 --- a/src/core/public/_css_variables.scss +++ b/src/core/public/_css_variables.scss @@ -5,6 +5,8 @@ --kbnHeaderOffset: var(--euiFixedHeadersOffset, 0); // total height of everything when the banner is present --kbnHeaderOffsetWithBanner: calc(var(--kbnHeaderBannerHeight) + var(--kbnHeaderOffset)); + // height of the action menu in the header in serverless projects + --kbnProjectHeaderAppActionMenuHeight: #{$euiSize * 3}; } // Quick note: This shouldn't be mixed with Sass variable declarations, diff --git a/src/core/public/_mixins.scss b/src/core/public/_mixins.scss index 9d533a87d1843..0c6a8571f9e75 100644 --- a/src/core/public/_mixins.scss +++ b/src/core/public/_mixins.scss @@ -1,6 +1,10 @@ @mixin kibanaFullBodyHeight($additionalOffset: 0) { - // The `--euiFixedHeadersOffset` CSS variable is automatically updated by + // The `--kbnAppHeadersOffset` CSS variable is automatically updated by // styles/rendering/_base.scss, based on whether the Kibana chrome has a - // header banner, and is visible or hidden - height: calc(100vh - var(--euiFixedHeadersOffset, 0) - #{$additionalOffset}); + // header banner, app menu, and is visible or hidden + height: calc( + 100vh + - var(--kbnAppHeadersOffset, var(--euiFixedHeadersOffset, 0)) + - #{$additionalOffset} + ); } diff --git a/src/core/public/styles/rendering/_base.scss b/src/core/public/styles/rendering/_base.scss index 8a7b14242f8bf..1bcfaab71ea17 100644 --- a/src/core/public/styles/rendering/_base.scss +++ b/src/core/public/styles/rendering/_base.scss @@ -19,7 +19,7 @@ pointer-events: none; visibility: hidden; position: fixed; - top: var(--euiFixedHeadersOffset, 0); + top: var(--kbnAppHeadersOffset, var(--euiFixedHeadersOffset, 0)); right: 0; bottom: 0; left: 0; @@ -41,7 +41,6 @@ // Conditionally override :root CSS fixed header variable. Updating `--euiFixedHeadersOffset` // on the body will cause all child EUI components to automatically update their offsets - .kbnBody--hasHeaderBanner { --euiFixedHeadersOffset: var(--kbnHeaderOffsetWithBanner); @@ -56,9 +55,25 @@ top: var(--kbnHeaderBannerHeight); } } + +// Set a body CSS variable for the app container to use - calculates the total +// height of all fixed headers + the sticky action menu toolbar +.kbnBody--hasProjectActionMenu { + --kbnAppHeadersOffset: calc(var(--kbnHeaderOffset) + var(--kbnProjectHeaderAppActionMenuHeight)); + + &.kbnBody--hasHeaderBanner { + --kbnAppHeadersOffset: calc(var(--kbnHeaderOffsetWithBanner) + var(--kbnProjectHeaderAppActionMenuHeight)); + } +} + .kbnBody--chromeHidden { --euiFixedHeadersOffset: 0; -} -.kbnBody--chromeHidden.kbnBody--hasHeaderBanner { - --euiFixedHeadersOffset: var(--kbnHeaderBannerHeight); + + &.kbnBody--hasHeaderBanner { + --euiFixedHeadersOffset: var(--kbnHeaderBannerHeight); + } + + &.kbnBody--hasProjectActionMenu { + --kbnAppHeadersOffset: var(--euiFixedHeadersOffset, 0); + } } diff --git a/src/plugins/kibana_react/public/index.ts b/src/plugins/kibana_react/public/index.ts index 7954559206bb7..2803c266da0f4 100644 --- a/src/plugins/kibana_react/public/index.ts +++ b/src/plugins/kibana_react/public/index.ts @@ -76,7 +76,7 @@ export { createNotifications } from './notifications'; /** @deprecated use `Markdown` from `@kbn/shared-ux-markdown` */ export { Markdown, MarkdownSimple } from './markdown'; -export { toMountPoint, MountPointPortal } from './util'; +export { toMountPoint } from './util'; export type { ToMountPointOptions } from './util'; /** @deprecated Use `RedirectAppLinks` from `@kbn/shared-ux-link-redirect-app` */ diff --git a/src/plugins/kibana_react/public/util/index.tsx b/src/plugins/kibana_react/public/util/index.tsx index ab2ce5a5a81c8..d709f06837c0c 100644 --- a/src/plugins/kibana_react/public/util/index.tsx +++ b/src/plugins/kibana_react/public/util/index.tsx @@ -15,11 +15,7 @@ import type { I18nStart } from '@kbn/core-i18n-browser'; import type { CoreTheme, ThemeServiceStart } from '@kbn/core-theme-browser'; import { defaultTheme } from '@kbn/react-kibana-context-common'; -import { - toMountPoint as _toMountPoint, - MountPointPortal as _MountPointPortal, - useIfMounted as _useIfMounted, -} from '@kbn/react-kibana-mount'; +import { toMountPoint as _toMountPoint } from '@kbn/react-kibana-mount'; // The `theme` start contract should always be included to ensure // dark mode is applied correctly. This code is for compatibility purposes, @@ -52,13 +48,3 @@ export const toMountPoint = ( const theme = theme$ ? { theme$ } : themeStart; return _toMountPoint(node, { theme, i18n }); }; - -/** - * @deprecated use `MountPointPortal` from `@kbn/react-kibana-mount` - */ -export const MountPointPortal = _MountPointPortal; - -/** - * @deprecated use `useIfMounted` from `@kbn/react-kibana-mount` - */ -export const useIfMounted = _useIfMounted; diff --git a/src/plugins/navigation/kibana.jsonc b/src/plugins/navigation/kibana.jsonc index 90ced649980a5..26edb0999699d 100644 --- a/src/plugins/navigation/kibana.jsonc +++ b/src/plugins/navigation/kibana.jsonc @@ -6,11 +6,7 @@ "id": "navigation", "server": false, "browser": true, - "requiredPlugins": [ - "unifiedSearch" - ], - "requiredBundles": [ - "kibanaReact" - ] + "requiredPlugins": ["unifiedSearch"], + "requiredBundles": [] } } diff --git a/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx b/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx index 3b3cac7921813..de060db9b6e3b 100644 --- a/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx +++ b/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx @@ -18,7 +18,7 @@ import { import classNames from 'classnames'; import { MountPoint } from '@kbn/core/public'; -import { MountPointPortal } from '@kbn/kibana-react-plugin/public'; +import { MountPointPortal } from '@kbn/react-kibana-mount'; import { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; import { StatefulSearchBarProps } from '@kbn/unified-search-plugin/public'; import { AggregateQuery, Query } from '@kbn/es-query'; @@ -138,14 +138,19 @@ export function TopNavMenu( 'kbnTopNavMenu__wrapper--hidden': visible === false, }); if (setMenuMountPoint) { + const badgesEl = renderBadges(); + const menuEl = renderMenu(menuClassName); return ( <> - - - {renderBadges()} - {renderMenu(menuClassName)} - - + {(badgesEl || menuEl) && ( + + + {badgesEl} + {menuEl} + + + )} + {renderSearchBar()} ); diff --git a/src/plugins/navigation/tsconfig.json b/src/plugins/navigation/tsconfig.json index b23ee2de840eb..d10df84c43f8b 100644 --- a/src/plugins/navigation/tsconfig.json +++ b/src/plugins/navigation/tsconfig.json @@ -6,11 +6,11 @@ "include": ["public/**/*"], "kbn_references": [ "@kbn/core", - "@kbn/kibana-react-plugin", "@kbn/unified-search-plugin", "@kbn/es-query", "@kbn/i18n-react", "@kbn/test-jest-helpers", + "@kbn/react-kibana-mount", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/security_solution/public/app/home/template_wrapper/global_kql_header/index.tsx b/x-pack/plugins/security_solution/public/app/home/template_wrapper/global_kql_header/index.tsx index f5f9b55e59e7c..80ddc7769e91e 100644 --- a/x-pack/plugins/security_solution/public/app/home/template_wrapper/global_kql_header/index.tsx +++ b/x-pack/plugins/security_solution/public/app/home/template_wrapper/global_kql_header/index.tsx @@ -12,7 +12,7 @@ import { useGlobalHeaderPortal } from '../../../../common/hooks/use_global_heade const StyledStickyWrapper = styled.div` position: sticky; z-index: ${(props) => props.theme.eui.euiZHeaderBelowDataGrid}; - top: var(--euiFixedHeadersOffset, 0); + top: var(--kbnAppHeadersOffset, var(--euiFixedHeadersOffset, 0)); `; export const GlobalKQLHeader = React.memo(() => { From 07c223616c7c11d5780b284b5cfc810e3d845c42 Mon Sep 17 00:00:00 2001 From: Ryland Herrick Date: Fri, 13 Oct 2023 09:39:39 -0500 Subject: [PATCH 15/80] [Security Solution][Entity Analytics] Mark Risk Score Calculation route as internal (#168720) ## Summary We don't have a specific need to release this publicly for now, so we're going to keep it internal until we have need for it. This is a followup to https://github.com/elastic/kibana/pull/167365, which made this route public in the first place. --- .../lib/risk_engine/routes/risk_score_calculation_route.ts | 4 ++-- .../group10/risk_engine/risk_score_calculation.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts index 75c88678fd070..1b02c4a10fd25 100644 --- a/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts +++ b/x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts @@ -23,14 +23,14 @@ export const riskScoreCalculationRoute = (router: SecuritySolutionPluginRouter, router.versioned .post({ path: RISK_SCORE_CALCULATION_URL, - access: 'public', + access: 'internal', options: { tags: ['access:securitySolution', `access:${APP_ID}-entity-analytics`], }, }) .addVersion( { - version: '2023-10-31', + version: '1', validate: { request: { body: buildRouteValidation(riskScoreCalculationRequestSchema) } }, }, async (context, request, response) => { diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_calculation.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_calculation.ts index 31a00c92593df..f03214e301dd1 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_calculation.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/risk_engine/risk_score_calculation.ts @@ -38,7 +38,7 @@ export default ({ getService }: FtrProviderContext): void => { const { body: result } = await supertest .post(RISK_SCORE_CALCULATION_URL) .set('kbn-xsrf', 'true') - .set('elastic-api-version', '2023-10-31') + .set('elastic-api-version', '1') .send(body) .expect(200); return result; From 194f130b6090ad795edcc282a11e5f40ec0a8624 Mon Sep 17 00:00:00 2001 From: Kevin Delemme Date: Fri, 13 Oct 2023 10:41:29 -0400 Subject: [PATCH 16/80] chore(slo): remove composite slo code (#168481) --- .buildkite/ftr_configs.yml | 1 - .../resources/base/bin/kibana-docker | 1 - .../src/rest_specs/composite_slo.ts | 141 ----------- .../kbn-slo-schema/src/rest_specs/index.ts | 1 - .../src/schema/composite_slo.ts | 41 ---- .../kbn-slo-schema/src/schema/index.ts | 1 - .../observability/dev_docs/composite_slo.md | 65 ------ .../docs/openapi/slo/bundled.json | 4 - .../docs/openapi/slo/bundled.yaml | 2 - .../parameters/composite_slo_id.yaml | 7 - .../schemas/base_composite_slo_response.yaml | 29 --- .../components/schemas/composite_method.yaml | 6 - .../schemas/composite_objective.yaml | 10 - .../schemas/composite_slo_response.yaml | 31 --- .../schemas/create_composite_slo_request.yaml | 29 --- .../create_composite_slo_response.yaml | 8 - .../schemas/find_composite_slo_response.yaml | 17 -- .../schemas/update_composite_slo_request.yaml | 22 -- .../schemas/weighted_composite_sources.yaml | 22 -- .../docs/openapi/slo/entrypoint.yaml | 6 - .../paths/s@{spaceid}@api@composite_slos.yaml | 121 ---------- ...}@api@composite_slos@{compositesloid}.yaml | 133 ----------- .../public/hooks/slo/query_key_factory.ts | 24 +- .../hooks/slo/use_fetch_composite_slo_list.ts | 123 ---------- .../public/pages/alerts/alerts.test.tsx | 3 - .../pages/overview/overview.stories.tsx | 1 - .../public/pages/rules/rules.test.tsx | 3 - x-pack/plugins/observability/public/plugin.ts | 1 - .../kibana_react.storybook_decorator.tsx | 1 - .../public/utils/test_helper.tsx | 1 - .../server/domain/models/composite_slo.ts | 22 -- .../server/domain/models/index.ts | 1 - .../domain/services/composite_slo/index.ts | 8 - .../validate_composite_slo.test.ts | 218 ------------------ .../composite_slo/validate_composite_slo.ts | 89 ------- .../domain/services/compute_summary_status.ts | 8 +- .../observability/server/errors/errors.ts | 3 - .../observability/server/errors/handler.ts | 13 +- x-pack/plugins/observability/server/index.ts | 3 - x-pack/plugins/observability/server/plugin.ts | 9 +- .../server/routes/composite_slo/route.ts | 143 ------------ ...l_observability_server_route_repository.ts | 4 - .../server/saved_objects/composite_slo.ts | 42 ---- .../server/saved_objects/index.ts | 1 - .../__snapshots__/summary_client.test.ts.snap | 185 --------------- .../composite_slo_repository.test.ts | 169 -------------- .../composite_slo/composite_slo_repository.ts | 205 ---------------- .../composite_slo/create_composite_slo.ts | 54 ----- .../composite_slo/delete_composite_slo.ts | 17 -- .../composite_slo/find_composite_slo.ts | 71 ------ .../composite_slo/fixtures/composite_slo.ts | 60 ----- .../composite_slo/get_composite_slo.ts | 32 --- .../server/services/composite_slo/index.ts | 13 -- .../composite_slo/summary_client.test.ts | 102 -------- .../services/composite_slo/summary_client.ts | 192 --------------- .../composite_slo/update_composite_slo.ts | 46 ---- .../apis/composite_slo/create.ts | 181 --------------- .../apis/composite_slo/delete.ts | 52 ----- .../apis/composite_slo/index.ts | 16 -- .../apis/composite_slo/update.ts | 71 ------ .../apis/config.ts | 14 -- .../fixtures/composite_slo.ts | 34 --- .../saved_objects/simple_composite_slo.json | 25 -- x-pack/test/tsconfig.json | 1 - 64 files changed, 8 insertions(+), 2951 deletions(-) delete mode 100644 x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts delete mode 100644 x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts delete mode 100644 x-pack/plugins/observability/dev_docs/composite_slo.md delete mode 100644 x-pack/plugins/observability/docs/openapi/slo/components/parameters/composite_slo_id.yaml delete mode 100644 x-pack/plugins/observability/docs/openapi/slo/components/schemas/base_composite_slo_response.yaml delete mode 100644 x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_method.yaml delete mode 100644 x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_objective.yaml delete mode 100644 x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_slo_response.yaml delete mode 100644 x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_request.yaml delete mode 100644 x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_response.yaml delete mode 100644 x-pack/plugins/observability/docs/openapi/slo/components/schemas/find_composite_slo_response.yaml delete mode 100644 x-pack/plugins/observability/docs/openapi/slo/components/schemas/update_composite_slo_request.yaml delete mode 100644 x-pack/plugins/observability/docs/openapi/slo/components/schemas/weighted_composite_sources.yaml delete mode 100644 x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos.yaml delete mode 100644 x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos@{compositesloid}.yaml delete mode 100644 x-pack/plugins/observability/public/hooks/slo/use_fetch_composite_slo_list.ts delete mode 100644 x-pack/plugins/observability/server/domain/models/composite_slo.ts delete mode 100644 x-pack/plugins/observability/server/domain/services/composite_slo/index.ts delete mode 100644 x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.test.ts delete mode 100644 x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.ts delete mode 100644 x-pack/plugins/observability/server/routes/composite_slo/route.ts delete mode 100644 x-pack/plugins/observability/server/saved_objects/composite_slo.ts delete mode 100644 x-pack/plugins/observability/server/services/composite_slo/__snapshots__/summary_client.test.ts.snap delete mode 100644 x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.test.ts delete mode 100644 x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.ts delete mode 100644 x-pack/plugins/observability/server/services/composite_slo/create_composite_slo.ts delete mode 100644 x-pack/plugins/observability/server/services/composite_slo/delete_composite_slo.ts delete mode 100644 x-pack/plugins/observability/server/services/composite_slo/find_composite_slo.ts delete mode 100644 x-pack/plugins/observability/server/services/composite_slo/fixtures/composite_slo.ts delete mode 100644 x-pack/plugins/observability/server/services/composite_slo/get_composite_slo.ts delete mode 100644 x-pack/plugins/observability/server/services/composite_slo/index.ts delete mode 100644 x-pack/plugins/observability/server/services/composite_slo/summary_client.test.ts delete mode 100644 x-pack/plugins/observability/server/services/composite_slo/summary_client.ts delete mode 100644 x-pack/plugins/observability/server/services/composite_slo/update_composite_slo.ts delete mode 100644 x-pack/test/observability_api_integration/apis/composite_slo/create.ts delete mode 100644 x-pack/test/observability_api_integration/apis/composite_slo/delete.ts delete mode 100644 x-pack/test/observability_api_integration/apis/composite_slo/index.ts delete mode 100644 x-pack/test/observability_api_integration/apis/composite_slo/update.ts delete mode 100644 x-pack/test/observability_api_integration/apis/config.ts delete mode 100644 x-pack/test/observability_api_integration/fixtures/composite_slo.ts delete mode 100644 x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/simple_composite_slo.json diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index b8c70aa567697..c74c3d0cfcddf 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -341,7 +341,6 @@ enabled: - x-pack/test/monitoring_api_integration/config.ts - x-pack/test/observability_api_integration/basic/config.ts - x-pack/test/observability_api_integration/trial/config.ts - - x-pack/test/observability_api_integration/apis/config.ts - x-pack/test/observability_functional/with_rac_write.config.ts - x-pack/test/observability_onboarding_api_integration/basic/config.ts - x-pack/test/observability_onboarding_api_integration/cloud/config.ts diff --git a/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker b/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker index 97ca84061d78d..05b7133519a81 100755 --- a/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker +++ b/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker @@ -310,7 +310,6 @@ kibana_vars=( xpack.observability.unsafe.alertDetails.uptime.enabled xpack.observability.unsafe.alertDetails.observability.enabled xpack.observability.unsafe.thresholdRule.enabled - xpack.observability.compositeSlo.enabled xpack.reporting.capture.browser.autoDownload xpack.reporting.capture.browser.chromium.disableSandbox xpack.reporting.capture.browser.chromium.inspect diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts b/x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts deleted file mode 100644 index 80fc421c82883..0000000000000 --- a/x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; -import { - budgetingMethodSchema, - compositeSloIdSchema, - dateType, - objectiveSchema, - summarySchema, - tagsSchema, - timeWindowSchema, - weightedAverageCompositeMethodSchema, - weightedAverageSourceSchema, -} from '../schema'; - -const createCompositeSLOParamsSchema = t.type({ - body: t.intersection([ - t.type({ - name: t.string, - timeWindow: timeWindowSchema, - budgetingMethod: budgetingMethodSchema, - objective: objectiveSchema, - compositeMethod: weightedAverageCompositeMethodSchema, - sources: t.array(weightedAverageSourceSchema), - }), - t.partial({ id: compositeSloIdSchema, tags: tagsSchema }), - ]), -}); - -const createCompositeSLOResponseSchema = t.type({ - id: compositeSloIdSchema, -}); - -const compositeSLOResponseSchema = t.type({ - id: compositeSloIdSchema, - name: t.string, - timeWindow: timeWindowSchema, - budgetingMethod: budgetingMethodSchema, - objective: objectiveSchema, - compositeMethod: weightedAverageCompositeMethodSchema, - sources: t.array(weightedAverageSourceSchema), - tags: tagsSchema, - createdAt: dateType, - updatedAt: dateType, -}); - -const compositeSLOWithSummaryResponseSchema = t.intersection([ - compositeSLOResponseSchema, - t.type({ summary: summarySchema }), -]); - -const updateCompositeSLOParamsSchema = t.type({ - path: t.type({ - id: compositeSloIdSchema, - }), - body: t.partial({ - name: t.string, - compositeMethod: weightedAverageCompositeMethodSchema, - sources: t.array(weightedAverageSourceSchema), - timeWindow: timeWindowSchema, - budgetingMethod: budgetingMethodSchema, - objective: objectiveSchema, - tags: tagsSchema, - }), -}); - -const updateCompositeSLOResponseSchema = compositeSLOResponseSchema; - -const deleteCompositeSLOParamsSchema = t.type({ - path: t.type({ - id: compositeSloIdSchema, - }), -}); - -const getCompositeSLOParamsSchema = t.type({ - path: t.type({ - id: compositeSloIdSchema, - }), -}); - -const getCompositeSLOResponseSchema = compositeSLOWithSummaryResponseSchema; - -const sortDirectionSchema = t.union([t.literal('asc'), t.literal('desc')]); -const sortBySchema = t.literal('creationTime'); -const findCompositeSLOParamsSchema = t.partial({ - query: t.partial({ - name: t.string, - page: t.string, - perPage: t.string, - sortBy: sortBySchema, - sortDirection: sortDirectionSchema, - }), -}); - -const findCompositeSLOResponseSchema = t.type({ - page: t.number, - perPage: t.number, - total: t.number, - results: t.array(compositeSLOWithSummaryResponseSchema), -}); - -type CreateCompositeSLOInput = t.OutputOf; // Raw payload sent by the frontend -type CreateCompositeSLOParams = t.TypeOf; // Parsed payload used by the backend -type CreateCompositeSLOResponse = t.OutputOf; // Raw response sent to the frontend - -type GetCompositeSLOResponse = t.OutputOf; - -type FindCompositeSLOParams = t.TypeOf; -type FindCompositeSLOResponse = t.OutputOf; - -type UpdateCompositeSLOInput = t.OutputOf; -type UpdateCompositeSLOParams = t.TypeOf; -type UpdateCompositeSLOResponse = t.OutputOf; - -export { - compositeSLOResponseSchema, - createCompositeSLOParamsSchema, - deleteCompositeSLOParamsSchema, - findCompositeSLOParamsSchema, - findCompositeSLOResponseSchema, - getCompositeSLOParamsSchema, - updateCompositeSLOParamsSchema, - updateCompositeSLOResponseSchema, -}; - -export type { - CreateCompositeSLOInput, - CreateCompositeSLOParams, - CreateCompositeSLOResponse, - FindCompositeSLOParams, - FindCompositeSLOResponse, - GetCompositeSLOResponse, - UpdateCompositeSLOInput, - UpdateCompositeSLOParams, - UpdateCompositeSLOResponse, -}; diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/index.ts b/x-pack/packages/kbn-slo-schema/src/rest_specs/index.ts index 777e009ca2ef0..78f557bdcbc7d 100644 --- a/x-pack/packages/kbn-slo-schema/src/rest_specs/index.ts +++ b/x-pack/packages/kbn-slo-schema/src/rest_specs/index.ts @@ -5,5 +5,4 @@ * 2.0. */ -export * from './composite_slo'; export * from './slo'; diff --git a/x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts b/x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts deleted file mode 100644 index ebfc31d5e111b..0000000000000 --- a/x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; - -import { dateType } from './common'; -import { budgetingMethodSchema, objectiveSchema, sloIdSchema, tagsSchema } from './slo'; -import { timeWindowSchema } from './time_window'; - -const compositeSloIdSchema = t.string; - -const weightedAverageCompositeMethodSchema = t.literal('weightedAverage'); -const weightedAverageSourceSchema = t.type({ - id: sloIdSchema, - revision: t.number, - weight: t.number, -}); - -const compositeSloSchema = t.type({ - id: compositeSloIdSchema, - name: t.string, - timeWindow: timeWindowSchema, - budgetingMethod: budgetingMethodSchema, - compositeMethod: weightedAverageCompositeMethodSchema, - objective: objectiveSchema, - sources: t.array(weightedAverageSourceSchema), - tags: tagsSchema, - createdAt: dateType, - updatedAt: dateType, -}); - -export { - weightedAverageSourceSchema, - weightedAverageCompositeMethodSchema, - compositeSloIdSchema, - compositeSloSchema, -}; diff --git a/x-pack/packages/kbn-slo-schema/src/schema/index.ts b/x-pack/packages/kbn-slo-schema/src/schema/index.ts index a710b4b946fd2..2fbddc7ce8537 100644 --- a/x-pack/packages/kbn-slo-schema/src/schema/index.ts +++ b/x-pack/packages/kbn-slo-schema/src/schema/index.ts @@ -6,7 +6,6 @@ */ export * from './common'; -export * from './composite_slo'; export * from './duration'; export * from './indicators'; export * from './time_window'; diff --git a/x-pack/plugins/observability/dev_docs/composite_slo.md b/x-pack/plugins/observability/dev_docs/composite_slo.md deleted file mode 100644 index 4e34933c8560e..0000000000000 --- a/x-pack/plugins/observability/dev_docs/composite_slo.md +++ /dev/null @@ -1,65 +0,0 @@ -# Composite SLO - -Composite SLO is available from 8.9. - -A composite SLO is an SLO that aggregates up to 30 other SLOs, so we can get a higher view of the performance of a service. -A composite SLO uses the rollup data of the source SLOs with the applied weight to compute its SLI and error budget consumption & remaining. - -We currently support only weighted average composite method. This means every source SLO is given a weight (1 to +Infinity) that we use to compute the composite SLI. - -When creating a composite SLO, we validate that every source SLOs are of the same time window and budgeting method. - -## Examples - -Create a composite SLO: - -``` -curl --request POST \ - --url http://localhost:5601/kibana/api/observability/composite_slos \ - --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ - --header 'Content-Type: application/json' \ - --header 'kbn-xsrf: oui' \ - --data '{ - "name": "composite slo test", - "compositeMethod": "weightedAverage", - "sources": [ - { "id": "f6694b30-f97c-11ed-895c-170d13e61076", "revision": 1, "weight": 2 }, - { "id": "f9072790-f97c-11ed-895c-170d13e61076", "revision": 2, "weight": 1 } - ], - "timeWindow": { - "duration": "7d", - "type": "rolling" - }, - "budgetingMethod": "occurrences", - "objective": { - "target": 0.95 - } -}' -``` - - -Delete a composite SLO: - -``` -curl --request DELETE \ - --url http://localhost:5601/kibana/api/observability/composite_slos/7ba92850-fbd6-11ed-8eb2-037af7d0dfa6 \ - --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ - --header 'Content-Type: application/json' \ - --header 'kbn-xsrf: oui' -``` - -Update an existing composite SLO: - -``` -curl --request PUT \ - --url http://localhost:5601/kibana/api/observability/composite_slos/01af9e10-fbf1-11ed-83f3-01ffee47b374 \ - --header 'Authorization: Basic ZWxhc3RpYzpjaGFuZ2VtZQ==' \ - --header 'Content-Type: application/json' \ - --header 'kbn-xsrf: oui' \ - --data '{ - "name": "new composite slo name", - "objective": { - "target": 0.90 - } -}' -``` \ No newline at end of file diff --git a/x-pack/plugins/observability/docs/openapi/slo/bundled.json b/x-pack/plugins/observability/docs/openapi/slo/bundled.json index e51f3828886cf..3ba6ab7762e93 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/bundled.json +++ b/x-pack/plugins/observability/docs/openapi/slo/bundled.json @@ -30,10 +30,6 @@ { "name": "slo", "description": "SLO APIs enable you to define, manage and track service-level objectives" - }, - { - "name": "composite slo", - "description": "Composite SLO APIs enable you to define, manage and track a group of SLOs." } ], "paths": { diff --git a/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml b/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml index 4b0ca84bc7c52..c50403e5096f8 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml +++ b/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml @@ -17,8 +17,6 @@ security: tags: - name: slo description: SLO APIs enable you to define, manage and track service-level objectives - - name: composite slo - description: Composite SLO APIs enable you to define, manage and track a group of SLOs. paths: /s/{spaceId}/api/observability/slos: post: diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/parameters/composite_slo_id.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/parameters/composite_slo_id.yaml deleted file mode 100644 index d8f698b99b214..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/parameters/composite_slo_id.yaml +++ /dev/null @@ -1,7 +0,0 @@ -in: path -name: compositeSloId -description: An identifier for the composite slo. -required: true -schema: - type: string - example: 9c235211-6834-11ea-a78c-6feb38a34414 diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/base_composite_slo_response.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/base_composite_slo_response.yaml deleted file mode 100644 index 07dd47d1707fd..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/base_composite_slo_response.yaml +++ /dev/null @@ -1,29 +0,0 @@ -title: Composite SLO response -type: object -properties: - id: - description: The identifier of the composite SLO. - type: string - example: 8853df00-ae2e-11ed-90af-09bb6422b258 - name: - description: The name of the composite SLO. - type: string - example: My Service SLO - timeWindow: - $ref: "time_window.yaml" - budgetingMethod: - $ref: "budgeting_method.yaml" - compositeMethod: - $ref: "composite_method.yaml" - objective: - $ref: "objective.yaml" - sources: - - $ref: "weighted_composite_sources.yaml" - createdAt: - description: The creation date - type: string - example: "2023-01-12T10:03:19.000Z" - updatedAt: - description: The last update date - type: string - example: "2023-01-12T10:03:19.000Z" diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_method.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_method.yaml deleted file mode 100644 index 0414a68a48742..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_method.yaml +++ /dev/null @@ -1,6 +0,0 @@ -title: Composite method -type: string -description: The composite method to use for the composite SLO. -enum: - - weightedAverage -example: weightedAverage \ No newline at end of file diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_objective.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_objective.yaml deleted file mode 100644 index a8946e9e2fca2..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_objective.yaml +++ /dev/null @@ -1,10 +0,0 @@ -title: Objective -required: - - target -description: Defines properties for objective -type: object -properties: - target: - description: the target objective between 0 and 1 excluded - type: number - example: 0.95 \ No newline at end of file diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_slo_response.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_slo_response.yaml deleted file mode 100644 index 00a9c3426756e..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/composite_slo_response.yaml +++ /dev/null @@ -1,31 +0,0 @@ -title: Composite SLO with summary response -type: object -properties: - id: - description: The identifier of the composite SLO. - type: string - example: 8853df00-ae2e-11ed-90af-09bb6422b258 - name: - description: The name of the composite SLO. - type: string - example: My Service SLO - timeWindow: - $ref: "time_window.yaml" - budgetingMethod: - $ref: "budgeting_method.yaml" - compositeMethod: - $ref: "composite_method.yaml" - objective: - $ref: "objective.yaml" - sources: - - $ref: "weighted_composite_sources.yaml" - summary: - $ref: "summary.yaml" - createdAt: - description: The creation date - type: string - example: "2023-01-12T10:03:19.000Z" - updatedAt: - description: The last update date - type: string - example: "2023-01-12T10:03:19.000Z" diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_request.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_request.yaml deleted file mode 100644 index 97536626c1287..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_request.yaml +++ /dev/null @@ -1,29 +0,0 @@ -title: Create composite SLO request -description: > - The create Composite SLO API request body. The provided source SLOs must exists and their budgeting method and time window must match the one from the composite SLO. -type: object -required: - - name - - timeWindow - - budgetingMethod - - compositeMethod - - objective - - sources -properties: - id: - description: A unique identifier for the composite SLO. Must be between 8 and 36 chars - type: string - example: my-super-composite-slo-id - name: - description: A name for the composite SLO. - type: string - timeWindow: - $ref: "time_window.yaml" - budgetingMethod: - $ref: "budgeting_method.yaml" - compositeMethod: - $ref: "composite_method.yaml" - objective: - $ref: "objective.yaml" - sources: - - $ref: "weighted_composite_sources.yaml" diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_response.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_response.yaml deleted file mode 100644 index 7a1b6286e2310..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/create_composite_slo_response.yaml +++ /dev/null @@ -1,8 +0,0 @@ -title: Create composite SLO response -type: object -required: - - id -properties: - id: - type: string - example: 8853df00-ae2e-11ed-90af-09bb6422b258 diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/find_composite_slo_response.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/find_composite_slo_response.yaml deleted file mode 100644 index 0c6ae26e1ec7c..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/find_composite_slo_response.yaml +++ /dev/null @@ -1,17 +0,0 @@ -title: Find composite SLO response -description: A paginated response of composite SLOs matching the query. -type: object -properties: - page: - type: number - example: 1 - perPage: - type: number - example: 25 - total: - type: number - example: 34 - results: - type: array - items: - $ref: 'composite_slo_response.yaml' \ No newline at end of file diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/update_composite_slo_request.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/update_composite_slo_request.yaml deleted file mode 100644 index c93578f4404c0..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/update_composite_slo_request.yaml +++ /dev/null @@ -1,22 +0,0 @@ -title: Update composite SLO request -description: > - The update composite SLO API request body. The provided source SLOs must exists and their budgeting method and time window must match the one from the composite SLO. -type: object -properties: - id: - description: A unique identifier for the composite SLO. Must be between 8 and 36 chars - type: string - example: my-super-composite-slo-id - name: - description: A name for the composite SLO. - type: string - timeWindow: - $ref: "time_window.yaml" - budgetingMethod: - $ref: "budgeting_method.yaml" - compositeMethod: - $ref: "composite_method.yaml" - objective: - $ref: "objective.yaml" - sources: - - $ref: "weighted_composite_sources.yaml" diff --git a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/weighted_composite_sources.yaml b/x-pack/plugins/observability/docs/openapi/slo/components/schemas/weighted_composite_sources.yaml deleted file mode 100644 index 1caca49407386..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/components/schemas/weighted_composite_sources.yaml +++ /dev/null @@ -1,22 +0,0 @@ -title: Weighted sources -description: An array of source SLO to use for the weighted average composite. -type: "array" -items: - type: object - required: - - id - - revision - - weight - properties: - id: - description: The id of the SLO. - type: string - example: 8853df00-ae2e-11ed-90af-09bb6422b258 - revision: - description: The revision number of the SLO. - type: number - example: 2 - weight: - description: The weight to apply to this SLO. - type: number - example: 3 \ No newline at end of file diff --git a/x-pack/plugins/observability/docs/openapi/slo/entrypoint.yaml b/x-pack/plugins/observability/docs/openapi/slo/entrypoint.yaml index ee722573efa91..687fd94f006a4 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/entrypoint.yaml +++ b/x-pack/plugins/observability/docs/openapi/slo/entrypoint.yaml @@ -11,16 +11,10 @@ info: tags: - name: slo description: SLO APIs enable you to define, manage and track service-level objectives - - name: composite slo - description: Composite SLO APIs enable you to define, manage and track a group of SLOs. servers: - url: "http://localhost:5601" description: local paths: - #'/s/{spaceId}/api/observability/composite_slos': - # $ref: 'paths/s@{spaceid}@api@composite_slos.yaml' - #'/s/{spaceId}/api/observability/composite_slos/{compositeSloId}': - # $ref: 'paths/s@{spaceid}@api@composite_slos@{compositesloid}.yaml' "/s/{spaceId}/api/observability/slos": $ref: "paths/s@{spaceid}@api@slos.yaml" "/s/{spaceId}/api/observability/slos/{sloId}": diff --git a/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos.yaml b/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos.yaml deleted file mode 100644 index 94230cde86002..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos.yaml +++ /dev/null @@ -1,121 +0,0 @@ -post: - summary: Creates a Composite SLO - operationId: createCompositeSloOp - description: > - You must have `all` privileges for the **SLOs** feature in the - **Observability** section of the Kibana feature privileges. - tags: - - composite slo - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - $ref: ../components/parameters/space_id.yaml - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/create_composite_slo_request.yaml' - responses: - '200': - description: Successful request - content: - application/json: - schema: - $ref: '../components/schemas/create_composite_slo_response.yaml' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '../components/schemas/400_response.yaml' - '401': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - '403': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/403_response.yaml' - '409': - description: Conflict - The Composite SLO id already exists - content: - application/json: - schema: - $ref: '../components/schemas/409_response.yaml' - -get: - summary: Retrieves a paginated list of composite SLOs with summary - operationId: findCompositeSloOp - description: > - You must have the `read` privileges for the **SLOs** feature in the - **Observability** section of the Kibana feature privileges. - tags: - - composite slo - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - $ref: ../components/parameters/space_id.yaml - - name: page - in: query - description: The page number to return - schema: - type: integer - default: 1 - example: 1 - - name: perPage - in: query - description: The number of SLOs to return per page - schema: - type: integer - default: 25 - example: 20 - - name: sortBy - in: query - description: Sort by field - schema: - type: string - enum: [creationTime] - default: creationTime - example: creationTime - - name: sortDirection - in: query - description: Sort order - schema: - type: string - enum: [asc, desc] - default: asc - example: asc - responses: - '200': - description: Successful request - content: - application/json: - schema: - $ref: '../components/schemas/find_composite_slo_response.yaml' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '../components/schemas/400_response.yaml' - '401': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - '403': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/403_response.yaml' - '404': - description: Not found response - content: - application/json: - schema: - $ref: '../components/schemas/404_response.yaml' diff --git a/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos@{compositesloid}.yaml b/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos@{compositesloid}.yaml deleted file mode 100644 index 826ed87a27cd8..0000000000000 --- a/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@composite_slos@{compositesloid}.yaml +++ /dev/null @@ -1,133 +0,0 @@ -get: - summary: Retrieves a composite SLO - operationId: getCompositeSloOp - description: > - You must have the `read` privileges for the **SLOs** feature in the - **Observability** section of the Kibana feature privileges. - tags: - - composite slo - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - $ref: ../components/parameters/space_id.yaml - - $ref: ../components/parameters/composite_slo_id.yaml - responses: - '200': - description: Successful request - content: - application/json: - schema: - $ref: '../components/schemas/composite_slo_response.yaml' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '../components/schemas/400_response.yaml' - '401': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - '403': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/403_response.yaml' - '404': - description: Not found response - content: - application/json: - schema: - $ref: '../components/schemas/404_response.yaml' - -put: - summary: Updates a composite SLO - operationId: updateCompositeSloOp - description: > - You must have the `write` privileges for the **SLOs** feature in the - **Observability** section of the Kibana feature privileges. - tags: - - composite slo - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - $ref: ../components/parameters/space_id.yaml - - $ref: ../components/parameters/composite_slo_id.yaml - requestBody: - required: true - content: - application/json: - schema: - $ref: '../components/schemas/update_composite_slo_request.yaml' - responses: - '200': - description: Successful request - content: - application/json: - schema: - $ref: '../components/schemas/base_composite_slo_response.yaml' - '400': - description: Bad request - content: - application/json: - schema: - $ref: '../components/schemas/400_response.yaml' - '401': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - '403': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/403_response.yaml' - '404': - description: Not found response - content: - application/json: - schema: - $ref: '../components/schemas/404_response.yaml' - -delete: - summary: Deletes a composite SLO - operationId: deleteCompositeSloOp - description: > - You must have the `write` privileges for the **SLOs** feature in the - **Observability** section of the Kibana feature privileges. - tags: - - composite slo - parameters: - - $ref: ../components/headers/kbn_xsrf.yaml - - $ref: ../components/parameters/space_id.yaml - - $ref: ../components/parameters/composite_slo_id.yaml - responses: - '204': - description: Successful request - '400': - description: Bad request - content: - application/json: - schema: - $ref: '../components/schemas/400_response.yaml' - '401': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/401_response.yaml' - '403': - description: Unauthorized response - content: - application/json: - schema: - $ref: '../components/schemas/403_response.yaml' - '404': - description: Not found response - content: - application/json: - schema: - $ref: '../components/schemas/404_response.yaml' 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 2175f67e807fb..feec4d475e3a8 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 @@ -14,12 +14,6 @@ interface SloListFilter { sortDirection: string; } -interface CompositeSloKeyFilter { - name: string; - page: number; - sortBy: string; -} - export const sloKeys = { all: ['slo'] as const, lists: () => [...sloKeys.all, 'list'] as const, @@ -41,20 +35,4 @@ export const sloKeys = { preview: (indicator?: Indicator) => [...sloKeys.all, 'preview', indicator] as const, }; -export const compositeSloKeys = { - all: ['compositeSlo'] as const, - lists: () => [...compositeSloKeys.all, 'list'] as const, - list: (filters: CompositeSloKeyFilter) => [...compositeSloKeys.lists(), filters] as const, - details: () => [...compositeSloKeys.all, 'details'] as const, - detail: (sloId?: string) => [...compositeSloKeys.details(), sloId] as const, - rules: () => [...compositeSloKeys.all, 'rules'] as const, - rule: (sloIds: string[]) => [...compositeSloKeys.rules(), sloIds] as const, - activeAlerts: () => [...compositeSloKeys.all, 'activeAlerts'] as const, - activeAlert: (sloIds: string[]) => [...compositeSloKeys.activeAlerts(), sloIds] as const, - historicalSummaries: () => [...compositeSloKeys.all, 'historicalSummary'] as const, - historicalSummary: (sloIds: string[]) => - [...compositeSloKeys.historicalSummaries(), sloIds] as const, - globalDiagnosis: () => [...compositeSloKeys.all, 'globalDiagnosis'] as const, -}; - -export type SloKeys = typeof compositeSloKeys | typeof sloKeys; +export type SloKeys = typeof sloKeys; diff --git a/x-pack/plugins/observability/public/hooks/slo/use_fetch_composite_slo_list.ts b/x-pack/plugins/observability/public/hooks/slo/use_fetch_composite_slo_list.ts deleted file mode 100644 index 55ac51648e55d..0000000000000 --- a/x-pack/plugins/observability/public/hooks/slo/use_fetch_composite_slo_list.ts +++ /dev/null @@ -1,123 +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 { useState } from 'react'; -import { - QueryObserverResult, - RefetchOptions, - RefetchQueryFilters, - useQuery, - useQueryClient, -} from '@tanstack/react-query'; -import { i18n } from '@kbn/i18n'; -import { FindCompositeSLOResponse } from '@kbn/slo-schema'; - -import { useKibana } from '../../utils/kibana_react'; -import { compositeSloKeys } from './query_key_factory'; - -interface SLOListParams { - name?: string; - page?: number; - sortBy?: string; - shouldRefetch?: boolean; -} - -export interface UseFetchCompositeSloListResponse { - isInitialLoading: boolean; - isLoading: boolean; - isRefetching: boolean; - isSuccess: boolean; - isError: boolean; - sloList: FindCompositeSLOResponse | undefined; - refetch: ( - options?: (RefetchOptions & RefetchQueryFilters) | undefined - ) => Promise>; -} - -const SHORT_REFETCH_INTERVAL = 1000 * 5; // 5 seconds -const LONG_REFETCH_INTERVAL = 1000 * 60; // 1 minute - -export function useFetchCompositeSloList({ - name = '', - page = 1, - sortBy = 'creationTime', - shouldRefetch, -}: SLOListParams | undefined = {}): UseFetchCompositeSloListResponse { - const { - http, - notifications: { toasts }, - } = useKibana().services; - const queryClient = useQueryClient(); - - const [stateRefetchInterval, setStateRefetchInterval] = useState( - SHORT_REFETCH_INTERVAL - ); - - const { isInitialLoading, isLoading, isError, isSuccess, isRefetching, data, refetch } = useQuery( - { - queryKey: compositeSloKeys.list({ name, page, sortBy }), - queryFn: async ({ signal }) => { - try { - const response = await http.get(`/api/observability/slos`, { - query: { - ...(page && { page }), - ...(name && { name }), - ...(sortBy && { sortBy }), - }, - signal, - }); - - return response; - } catch (error) { - throw error; - } - }, - keepPreviousData: true, - refetchOnWindowFocus: false, - refetchInterval: shouldRefetch ? stateRefetchInterval : undefined, - staleTime: 1000, - retry: (failureCount, error) => { - if (String(error) === 'Error: Forbidden') { - return false; - } - return failureCount < 4; - }, - onSuccess: ({ results }: FindCompositeSLOResponse) => { - if (!shouldRefetch) { - return; - } - - if (results.find((slo) => slo.summary.status === 'NO_DATA' || !slo.summary)) { - setStateRefetchInterval(SHORT_REFETCH_INTERVAL); - } else { - setStateRefetchInterval(LONG_REFETCH_INTERVAL); - } - - queryClient.invalidateQueries(compositeSloKeys.historicalSummaries()); - queryClient.invalidateQueries(compositeSloKeys.activeAlerts()); - queryClient.invalidateQueries(compositeSloKeys.rules()); - }, - onError: (error: Error) => { - toasts.addError(error, { - title: i18n.translate('xpack.observability.slo.list.errorNotification', { - defaultMessage: 'Something went wrong while fetching SLOs', - }), - }); - }, - } - ); - - return { - sloList: data, - isInitialLoading, - isLoading, - isRefetching, - isSuccess, - isError, - refetch, - }; -} diff --git a/x-pack/plugins/observability/public/pages/alerts/alerts.test.tsx b/x-pack/plugins/observability/public/pages/alerts/alerts.test.tsx index b307c0d858f12..247a700acfa6c 100644 --- a/x-pack/plugins/observability/public/pages/alerts/alerts.test.tsx +++ b/x-pack/plugins/observability/public/pages/alerts/alerts.test.tsx @@ -60,9 +60,6 @@ jest.spyOn(pluginContext, 'usePluginContext').mockImplementation(() => ({ }, thresholdRule: { enabled: false }, }, - compositeSlo: { - enabled: false, - }, aiAssistant: { enabled: false, feedback: { diff --git a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx index df869f41c6735..d0937d1f2c72b 100644 --- a/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx +++ b/x-pack/plugins/observability/public/pages/overview/overview.stories.tsx @@ -88,7 +88,6 @@ const withCore = makeDecorator({ }, thresholdRule: { enabled: false }, }, - compositeSlo: { enabled: false }, }; return ( diff --git a/x-pack/plugins/observability/public/pages/rules/rules.test.tsx b/x-pack/plugins/observability/public/pages/rules/rules.test.tsx index 7a5fa20afa741..4239cdeee811e 100644 --- a/x-pack/plugins/observability/public/pages/rules/rules.test.tsx +++ b/x-pack/plugins/observability/public/pages/rules/rules.test.tsx @@ -47,9 +47,6 @@ jest.spyOn(pluginContext, 'usePluginContext').mockImplementation(() => ({ }, thresholdRule: { enabled: false }, }, - compositeSlo: { - enabled: false, - }, }, observabilityRuleTypeRegistry: createObservabilityRuleTypeRegistryMock(), ObservabilityPageTemplate: KibanaPageTemplate, diff --git a/x-pack/plugins/observability/public/plugin.ts b/x-pack/plugins/observability/public/plugin.ts index d864a09fe6fdc..88191351f5444 100644 --- a/x-pack/plugins/observability/public/plugin.ts +++ b/x-pack/plugins/observability/public/plugin.ts @@ -99,7 +99,6 @@ export interface ConfigSchema { enabled: boolean; }; }; - compositeSlo: { enabled: boolean }; } export type ObservabilityPublicSetup = ReturnType; diff --git a/x-pack/plugins/observability/public/utils/kibana_react.storybook_decorator.tsx b/x-pack/plugins/observability/public/utils/kibana_react.storybook_decorator.tsx index 3cebd71109ba6..d5714924bdc97 100644 --- a/x-pack/plugins/observability/public/utils/kibana_react.storybook_decorator.tsx +++ b/x-pack/plugins/observability/public/utils/kibana_react.storybook_decorator.tsx @@ -35,7 +35,6 @@ export function KibanaReactStorybookDecorator(Story: ComponentType) { }, thresholdRule: { enabled: false }, }, - compositeSlo: { enabled: false }, }; const mockTheme: CoreTheme = { diff --git a/x-pack/plugins/observability/public/utils/test_helper.tsx b/x-pack/plugins/observability/public/utils/test_helper.tsx index 2f8035ae7be54..6c1610ac059c9 100644 --- a/x-pack/plugins/observability/public/utils/test_helper.tsx +++ b/x-pack/plugins/observability/public/utils/test_helper.tsx @@ -39,7 +39,6 @@ const defaultConfig: ConfigSchema = { }, thresholdRule: { enabled: false }, }, - compositeSlo: { enabled: false }, }; const queryClient = new QueryClient({ diff --git a/x-pack/plugins/observability/server/domain/models/composite_slo.ts b/x-pack/plugins/observability/server/domain/models/composite_slo.ts deleted file mode 100644 index aa70d5a9a0b2b..0000000000000 --- a/x-pack/plugins/observability/server/domain/models/composite_slo.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; - -import { - compositeSloSchema, - compositeSloIdSchema, - weightedAverageSourceSchema, -} from '@kbn/slo-schema'; - -type CompositeSLO = t.TypeOf; -type CompositeSLOId = t.TypeOf; -type StoredCompositeSLO = t.OutputOf; - -type WeightedAverageSource = t.TypeOf; - -export type { CompositeSLO, CompositeSLOId, StoredCompositeSLO, WeightedAverageSource }; diff --git a/x-pack/plugins/observability/server/domain/models/index.ts b/x-pack/plugins/observability/server/domain/models/index.ts index a22e0cbdd95ac..16336c40928f8 100644 --- a/x-pack/plugins/observability/server/domain/models/index.ts +++ b/x-pack/plugins/observability/server/domain/models/index.ts @@ -11,4 +11,3 @@ export * from './error_budget'; export * from './indicators'; export * from './slo'; export * from './time_window'; -export * from './composite_slo'; diff --git a/x-pack/plugins/observability/server/domain/services/composite_slo/index.ts b/x-pack/plugins/observability/server/domain/services/composite_slo/index.ts deleted file mode 100644 index cae963f894602..0000000000000 --- a/x-pack/plugins/observability/server/domain/services/composite_slo/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export * from './validate_composite_slo'; diff --git a/x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.test.ts b/x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.test.ts deleted file mode 100644 index 1bf5772b2a6b9..0000000000000 --- a/x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.test.ts +++ /dev/null @@ -1,218 +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 { validateCompositeSLO } from '.'; -import { - createCompositeSLO, - createWeightedAverageSource, -} from '../../../services/composite_slo/fixtures/composite_slo'; -import { fiveMinute, twoMinute } from '../../../services/slo/fixtures/duration'; -import { - createSLO, - createSLOWithTimeslicesBudgetingMethod, -} from '../../../services/slo/fixtures/slo'; -import { - sevenDaysRolling, - thirtyDaysRolling, - weeklyCalendarAligned, -} from '../../../services/slo/fixtures/time_window'; - -describe('validateCompositeSLO', () => { - it('throws when the number of source SLOs is less than 2', () => { - const compositeSlo = createCompositeSLO({ - sources: [createWeightedAverageSource()], - }); - expect(() => validateCompositeSLO(compositeSlo, [])).toThrowError( - 'A composite SLO must contain between 2 and 30 source SLOs.' - ); - }); - - it('throws when the number of source SLOs is more than 30', () => { - const compositeSlo = createCompositeSLO({ - sources: Array(31) - .fill(0) - .map((i) => createWeightedAverageSource()), - }); - expect(() => validateCompositeSLO(compositeSlo, [])).toThrowError( - 'A composite SLO must contain between 2 and 30 source SLOs.' - ); - }); - - it("throws when specified source SLOs don't match the actual SLO revision", () => { - const sloOne = createSLO({ revision: 3 }); - const sloTwo = createSLO({ revision: 2 }); - const compositeSlo = createCompositeSLO({ - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: 1 }), - ], - }); - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).toThrowError( - 'One or many source SLOs are not matching the specified id and revision.' - ); - }); - - it('throws when specified source SLOs refers to a non-existant SLO', () => { - const sloOne = createSLO({ revision: 3 }); - const compositeSlo = createCompositeSLO({ - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: 'non-existant' }), - ], - }); - expect(() => validateCompositeSLO(compositeSlo, [sloOne])).toThrowError( - 'One or many source SLOs are not matching the specified id and revision.' - ); - }); - - it('throws when the time window is not the same accros all source SLOs', () => { - const sloOne = createSLO({ timeWindow: sevenDaysRolling() }); - const sloTwo = createSLO({ timeWindow: weeklyCalendarAligned() }); - const compositeSlo = createCompositeSLO({ - timeWindow: sevenDaysRolling(), - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).toThrowError( - 'Invalid time window. Every source SLO must use the same time window as the composite.' - ); - }); - - it('throws when the time window duration is not the same accros all source SLOs', () => { - const sloOne = createSLO({ timeWindow: sevenDaysRolling() }); - const sloTwo = createSLO({ timeWindow: thirtyDaysRolling() }); - const compositeSlo = createCompositeSLO({ - timeWindow: sevenDaysRolling(), - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).toThrowError( - 'Invalid time window. Every source SLO must use the same time window as the composite.' - ); - }); - - it('throws when the budgeting method is not the same accros all source SLOs', () => { - const sloOne = createSLO({ budgetingMethod: 'occurrences' }); - const sloTwo = createSLO({ budgetingMethod: 'timeslices' }); - const compositeSlo = createCompositeSLO({ - budgetingMethod: 'occurrences', - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).toThrowError( - 'Invalid budgeting method. Every source SLO must use the same budgeting method as the composite.' - ); - }); - - it('throws when the timeslices window is not defined on the composite SLO', () => { - const sloOne = createSLO({ - budgetingMethod: 'timeslices', - objective: { target: 0.98, timesliceTarget: 0.95, timesliceWindow: fiveMinute() }, - }); - const sloTwo = createSLO({ - budgetingMethod: 'timeslices', - objective: { target: 0.98, timesliceTarget: 0.95, timesliceWindow: fiveMinute() }, - }); - - const compositeSlo = createCompositeSLO({ - budgetingMethod: 'timeslices', - objective: { - target: 0.9, - }, - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).toThrowError( - 'Invalid timeslices objective. A timeslice window must be set and equal to all source SLO.' - ); - }); - - it('throws when the timeslices window is not the same accros all source SLOs', () => { - const sloOne = createSLO({ - budgetingMethod: 'timeslices', - objective: { target: 0.98, timesliceTarget: 0.95, timesliceWindow: twoMinute() }, - }); - const sloTwo = createSLO({ - budgetingMethod: 'timeslices', - objective: { target: 0.98, timesliceTarget: 0.95, timesliceWindow: fiveMinute() }, - }); - - const compositeSlo = createCompositeSLO({ - budgetingMethod: 'timeslices', - objective: { - target: 0.9, - timesliceTarget: 0.95, - timesliceWindow: fiveMinute(), - }, - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).toThrowError( - 'Invalid budgeting method. Every source SLO must use the same timeslice window.' - ); - }); - - describe('happy flow', () => { - it('throws nothing', () => { - const sloOne = createSLO({ - budgetingMethod: 'occurrences', - timeWindow: sevenDaysRolling(), - revision: 2, - }); - const sloTwo = createSLO({ - budgetingMethod: 'occurrences', - timeWindow: sevenDaysRolling(), - revision: 3, - }); - const compositeSlo = createCompositeSLO({ - budgetingMethod: 'occurrences', - timeWindow: sevenDaysRolling(), - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).not.toThrow(); - }); - - it('throws nothing in case of timeslices source SLOs', () => { - const sloOne = createSLOWithTimeslicesBudgetingMethod(); - const sloTwo = createSLOWithTimeslicesBudgetingMethod(); - const compositeSlo = createCompositeSLO({ - budgetingMethod: 'timeslices', - objective: { - target: 0.98, - timesliceTarget: 0.95, - timesliceWindow: twoMinute(), - }, - timeWindow: sevenDaysRolling(), - sources: [ - createWeightedAverageSource({ id: sloOne.id, revision: sloOne.revision }), - createWeightedAverageSource({ id: sloTwo.id, revision: sloTwo.revision }), - ], - }); - - expect(() => validateCompositeSLO(compositeSlo, [sloOne, sloTwo])).not.toThrow(); - }); - }); -}); diff --git a/x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.ts b/x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.ts deleted file mode 100644 index dd6edaf746c73..0000000000000 --- a/x-pack/plugins/observability/server/domain/services/composite_slo/validate_composite_slo.ts +++ /dev/null @@ -1,89 +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 { calendarAlignedTimeWindowSchema, rollingTimeWindowSchema } from '@kbn/slo-schema'; -import { IllegalArgumentError } from '../../../errors'; -import { SLO } from '../../models'; -import { CompositeSLO } from '../../models/composite_slo'; - -export function validateCompositeSLO(compositeSlo: CompositeSLO, sloList: SLO[]) { - assertNumberOfSourceSlo(compositeSlo); - assertMatchingSloList(compositeSlo, sloList); - assertSameBudgetingMethod(compositeSlo, sloList); - assertSameTimeWindow(compositeSlo, sloList); -} - -function assertNumberOfSourceSlo(compositeSlo: CompositeSLO) { - if (compositeSlo.sources.length < 2 || compositeSlo.sources.length > 30) { - throw new IllegalArgumentError('A composite SLO must contain between 2 and 30 source SLOs.'); - } -} - -function assertMatchingSloList(compositeSlo: CompositeSLO, sloList: SLO[]) { - const everySourceSloMatches = compositeSlo.sources.every((sourceSlo) => - sloList.find((slo) => sourceSlo.id === slo.id && sourceSlo.revision === slo.revision) - ); - - if (!everySourceSloMatches) { - throw new IllegalArgumentError( - 'One or many source SLOs are not matching the specified id and revision.' - ); - } -} - -function assertSameBudgetingMethod(compositeSlo: CompositeSLO, sloList: SLO[]) { - const haveSameBudgetingMethod = sloList.every( - (slo) => slo.budgetingMethod === compositeSlo.budgetingMethod - ); - - if (compositeSlo.budgetingMethod === 'timeslices') { - if (compositeSlo.objective.timesliceWindow === undefined) { - throw new IllegalArgumentError( - 'Invalid timeslices objective. A timeslice window must be set and equal to all source SLO.' - ); - } - const haveSameTimesliceWindow = sloList.every((slo) => - slo.objective.timesliceWindow?.isEqual(compositeSlo.objective.timesliceWindow!) - ); - if (!haveSameTimesliceWindow) { - throw new IllegalArgumentError( - 'Invalid budgeting method. Every source SLO must use the same timeslice window.' - ); - } - } - - if (!haveSameBudgetingMethod) { - throw new IllegalArgumentError( - 'Invalid budgeting method. Every source SLO must use the same budgeting method as the composite.' - ); - } -} - -function assertSameTimeWindow(compositeSlo: CompositeSLO, sloList: SLO[]) { - let haveSameTimeWindow = false; - if (rollingTimeWindowSchema.is(compositeSlo.timeWindow)) { - haveSameTimeWindow = sloList.every( - (slo) => - slo.timeWindow.duration.isEqual(compositeSlo.timeWindow.duration) && - rollingTimeWindowSchema.is(slo.timeWindow) - ); - } - - if (calendarAlignedTimeWindowSchema.is(compositeSlo.timeWindow)) { - haveSameTimeWindow = sloList.every( - (slo) => - slo.timeWindow.duration.isEqual(compositeSlo.timeWindow.duration) && - calendarAlignedTimeWindowSchema.is(slo.timeWindow) - ); - } - - if (!haveSameTimeWindow) { - throw new IllegalArgumentError( - 'Invalid time window. Every source SLO must use the same time window as the composite.' - ); - } -} diff --git a/x-pack/plugins/observability/server/domain/services/compute_summary_status.ts b/x-pack/plugins/observability/server/domain/services/compute_summary_status.ts index 77ada8cd9c233..3aaaffe180b6a 100644 --- a/x-pack/plugins/observability/server/domain/services/compute_summary_status.ts +++ b/x-pack/plugins/observability/server/domain/services/compute_summary_status.ts @@ -5,13 +5,9 @@ * 2.0. */ -import { CompositeSLO, ErrorBudget, SLO, Status } from '../models'; +import { ErrorBudget, SLO, Status } from '../models'; -export function computeSummaryStatus( - slo: SLO | CompositeSLO, - sliValue: number, - errorBudget: ErrorBudget -): Status { +export function computeSummaryStatus(slo: SLO, sliValue: number, errorBudget: ErrorBudget): Status { if (sliValue === -1) { return 'NO_DATA'; } diff --git a/x-pack/plugins/observability/server/errors/errors.ts b/x-pack/plugins/observability/server/errors/errors.ts index cbecb88d9ce05..eaec36e66d08b 100644 --- a/x-pack/plugins/observability/server/errors/errors.ts +++ b/x-pack/plugins/observability/server/errors/errors.ts @@ -17,9 +17,6 @@ export class ObservabilityError extends Error { export class SLONotFound extends ObservabilityError {} export class SLOIdConflict extends ObservabilityError {} -export class CompositeSLONotFound extends ObservabilityError {} -export class CompositeSLOIdConflict extends ObservabilityError {} - export class InvalidQueryError extends ObservabilityError {} export class InternalQueryError extends ObservabilityError {} export class NotSupportedError extends ObservabilityError {} diff --git a/x-pack/plugins/observability/server/errors/handler.ts b/x-pack/plugins/observability/server/errors/handler.ts index 2898e53624832..c10f1d98c083e 100644 --- a/x-pack/plugins/observability/server/errors/handler.ts +++ b/x-pack/plugins/observability/server/errors/handler.ts @@ -5,21 +5,14 @@ * 2.0. */ -import { - CompositeSLOIdConflict, - CompositeSLONotFound, - ObservabilityError, - SecurityException, - SLOIdConflict, - SLONotFound, -} from './errors'; +import { ObservabilityError, SecurityException, SLOIdConflict, SLONotFound } from './errors'; export function getHTTPResponseCode(error: ObservabilityError): number { - if (error instanceof SLONotFound || error instanceof CompositeSLONotFound) { + if (error instanceof SLONotFound) { return 404; } - if (error instanceof SLOIdConflict || error instanceof CompositeSLOIdConflict) { + if (error instanceof SLOIdConflict) { return 409; } diff --git a/x-pack/plugins/observability/server/index.ts b/x-pack/plugins/observability/server/index.ts index e2e6bc768918d..e05740ea9785c 100644 --- a/x-pack/plugins/observability/server/index.ts +++ b/x-pack/plugins/observability/server/index.ts @@ -57,9 +57,6 @@ const configSchema = schema.object({ groupByPageSize: schema.number({ defaultValue: 10_000 }), }), enabled: schema.boolean({ defaultValue: true }), - compositeSlo: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - }), }); export const config: PluginConfigDescriptor = { diff --git a/x-pack/plugins/observability/server/plugin.ts b/x-pack/plugins/observability/server/plugin.ts index 9d35ced6cb648..b4a81fb11e850 100644 --- a/x-pack/plugins/observability/server/plugin.ts +++ b/x-pack/plugins/observability/server/plugin.ts @@ -43,7 +43,7 @@ import { registerSloUsageCollector } from './lib/collectors/register'; import { registerRuleTypes } from './lib/rules/register_rule_types'; import { getObservabilityServerRouteRepository } from './routes/get_global_observability_server_route_repository'; import { registerRoutes } from './routes/register_routes'; -import { compositeSlo, slo, SO_COMPOSITE_SLO_TYPE, SO_SLO_TYPE } from './saved_objects'; +import { slo, SO_SLO_TYPE } from './saved_objects'; import { threshold } from './saved_objects/threshold'; import { DefaultResourceInstaller, @@ -182,9 +182,7 @@ export class ObservabilityPlugin implements Plugin { const { ruleDataService } = plugins.ruleRegistry; - const savedObjectTypes = config.compositeSlo.enabled - ? [SO_SLO_TYPE, SO_COMPOSITE_SLO_TYPE] - : [SO_SLO_TYPE]; + const savedObjectTypes = [SO_SLO_TYPE]; plugins.features.registerKibanaFeature({ id: sloFeatureId, name: i18n.translate('xpack.observability.featureRegistry.linkSloTitle', { @@ -236,9 +234,6 @@ export class ObservabilityPlugin implements Plugin { }); core.savedObjects.registerType(slo); - if (config.compositeSlo.enabled) { - core.savedObjects.registerType(compositeSlo); - } core.savedObjects.registerType(threshold); registerRuleTypes( diff --git a/x-pack/plugins/observability/server/routes/composite_slo/route.ts b/x-pack/plugins/observability/server/routes/composite_slo/route.ts deleted file mode 100644 index e1259e3f64ce2..0000000000000 --- a/x-pack/plugins/observability/server/routes/composite_slo/route.ts +++ /dev/null @@ -1,143 +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 { badRequest } from '@hapi/boom'; -import { - createCompositeSLOParamsSchema, - deleteCompositeSLOParamsSchema, - findCompositeSLOParamsSchema, - getCompositeSLOParamsSchema, - updateCompositeSLOParamsSchema, -} from '@kbn/slo-schema'; - -import { - CreateCompositeSLO, - DefaultSummaryClient, - DeleteCompositeSLO, - FindCompositeSLO, - KibanaSavedObjectsCompositeSLORepository, - UpdateCompositeSLO, -} from '../../services/composite_slo'; -import { GetCompositeSLO } from '../../services/composite_slo/get_composite_slo'; -import { KibanaSavedObjectsSLORepository } from '../../services/slo'; -import { ObservabilityRequestHandlerContext } from '../../types'; -import { createObservabilityServerRoute } from '../create_observability_server_route'; - -const assertLicenseAtLeastPlatinum = async (context: ObservabilityRequestHandlerContext) => { - const { license } = await context.licensing; - if (!license.hasAtLeast('platinum')) { - throw badRequest('Platinum license or higher is needed to make use of this feature.'); - } -}; - -const createCompositeSLORoute = createObservabilityServerRoute({ - endpoint: 'POST /api/observability/composite_slos 2023-05-24', - options: { - tags: ['access:slo_write'], - }, - params: createCompositeSLOParamsSchema, - handler: async ({ context, params }) => { - await assertLicenseAtLeastPlatinum(context); - - const soClient = (await context.core).savedObjects.client; - const compositeSloRepository = new KibanaSavedObjectsCompositeSLORepository(soClient); - const sloRepository = new KibanaSavedObjectsSLORepository(soClient); - const createCompositeSLO = new CreateCompositeSLO(compositeSloRepository, sloRepository); - - const response = await createCompositeSLO.execute(params.body); - - return response; - }, -}); - -const updateCompositeSLORoute = createObservabilityServerRoute({ - endpoint: 'PUT /api/observability/composite_slos/{id} 2023-05-24', - options: { - tags: ['access:slo_write'], - }, - params: updateCompositeSLOParamsSchema, - handler: async ({ context, params }) => { - await assertLicenseAtLeastPlatinum(context); - - const soClient = (await context.core).savedObjects.client; - const compositeSloRepository = new KibanaSavedObjectsCompositeSLORepository(soClient); - const sloRepository = new KibanaSavedObjectsSLORepository(soClient); - const updateCompositeSLO = new UpdateCompositeSLO(compositeSloRepository, sloRepository); - - const response = await updateCompositeSLO.execute(params.path.id, params.body); - - return response; - }, -}); - -const deleteCompositeSLORoute = createObservabilityServerRoute({ - endpoint: 'DELETE /api/observability/composite_slos/{id} 2023-05-24', - options: { - tags: ['access:slo_write'], - }, - params: deleteCompositeSLOParamsSchema, - handler: async ({ context, params }) => { - await assertLicenseAtLeastPlatinum(context); - - const soClient = (await context.core).savedObjects.client; - const compositeSloRepository = new KibanaSavedObjectsCompositeSLORepository(soClient); - const deleteCompositeSLO = new DeleteCompositeSLO(compositeSloRepository); - - await deleteCompositeSLO.execute(params.path.id); - }, -}); - -const getCompositeSLORoute = createObservabilityServerRoute({ - endpoint: 'GET /api/observability/composite_slos/{id} 2023-05-24', - options: { - tags: ['access:slo_read'], - }, - params: getCompositeSLOParamsSchema, - handler: async ({ context, params }) => { - await assertLicenseAtLeastPlatinum(context); - - const soClient = (await context.core).savedObjects.client; - const esClient = (await context.core).elasticsearch.client.asCurrentUser; - - const compositeSloRepository = new KibanaSavedObjectsCompositeSLORepository(soClient); - const summaryClient = new DefaultSummaryClient(esClient); - const getCompositeSlo = new GetCompositeSLO(compositeSloRepository, summaryClient); - - const response = await getCompositeSlo.execute(params.path.id); - - return response; - }, -}); - -const findCompositeSLORoute = createObservabilityServerRoute({ - endpoint: 'GET /api/observability/composite_slos 2023-05-24', - options: { - tags: ['access:slo_read'], - }, - params: findCompositeSLOParamsSchema, - handler: async ({ context, params }) => { - await assertLicenseAtLeastPlatinum(context); - - const soClient = (await context.core).savedObjects.client; - const esClient = (await context.core).elasticsearch.client.asCurrentUser; - const repository = new KibanaSavedObjectsCompositeSLORepository(soClient); - const summaryClient = new DefaultSummaryClient(esClient); - const findCompositeSlo = new FindCompositeSLO(repository, summaryClient); - - const response = await findCompositeSlo.execute(params?.query ?? {}); - - return response; - }, -}); - -export const compositeSloRouteRepository = { - ...createCompositeSLORoute, - ...updateCompositeSLORoute, - ...deleteCompositeSLORoute, - ...getCompositeSLORoute, - ...findCompositeSLORoute, -}; diff --git a/x-pack/plugins/observability/server/routes/get_global_observability_server_route_repository.ts b/x-pack/plugins/observability/server/routes/get_global_observability_server_route_repository.ts index 53f9ffcb750db..d6a71120bb37b 100644 --- a/x-pack/plugins/observability/server/routes/get_global_observability_server_route_repository.ts +++ b/x-pack/plugins/observability/server/routes/get_global_observability_server_route_repository.ts @@ -6,17 +6,13 @@ */ import { ObservabilityConfig } from '..'; -import { compositeSloRouteRepository } from './composite_slo/route'; import { rulesRouteRepository } from './rules/route'; import { sloRouteRepository } from './slo/route'; export function getObservabilityServerRouteRepository(config: ObservabilityConfig) { - const isCompositeSloFeatureEnabled = config.compositeSlo.enabled; - const repository = { ...rulesRouteRepository, ...sloRouteRepository, - ...(isCompositeSloFeatureEnabled ? compositeSloRouteRepository : {}), }; return repository; } diff --git a/x-pack/plugins/observability/server/saved_objects/composite_slo.ts b/x-pack/plugins/observability/server/saved_objects/composite_slo.ts deleted file mode 100644 index 3261cb4b64dc4..0000000000000 --- a/x-pack/plugins/observability/server/saved_objects/composite_slo.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { SavedObjectsType } from '@kbn/core-saved-objects-server'; -import { SavedObject } from '@kbn/core/server'; - -import { StoredCompositeSLO } from '../domain/models/composite_slo'; - -export const SO_COMPOSITE_SLO_TYPE = 'composite-slo'; - -export const compositeSlo: SavedObjectsType = { - name: SO_COMPOSITE_SLO_TYPE, - hidden: false, - namespaceType: 'multiple-isolated', - mappings: { - dynamic: false, - properties: { - id: { type: 'keyword' }, - name: { type: 'text' }, - budgetingMethod: { type: 'keyword' }, - compositeMethod: { type: 'keyword' }, - sources: { - properties: { - id: { type: 'keyword' }, - revision: { type: 'integer' }, - }, - }, - tags: { type: 'keyword' }, - }, - }, - management: { - displayName: 'Composite SLO', - importableAndExportable: true, - getTitle(compositeSloSavedObject: SavedObject) { - return `Composite SLO: [${compositeSloSavedObject.attributes.name}]`; - }, - }, -}; diff --git a/x-pack/plugins/observability/server/saved_objects/index.ts b/x-pack/plugins/observability/server/saved_objects/index.ts index 2e2a36f68e30d..6e4c8b66f7521 100644 --- a/x-pack/plugins/observability/server/saved_objects/index.ts +++ b/x-pack/plugins/observability/server/saved_objects/index.ts @@ -6,4 +6,3 @@ */ export { slo, SO_SLO_TYPE } from './slo'; -export { compositeSlo, SO_COMPOSITE_SLO_TYPE } from './composite_slo'; diff --git a/x-pack/plugins/observability/server/services/composite_slo/__snapshots__/summary_client.test.ts.snap b/x-pack/plugins/observability/server/services/composite_slo/__snapshots__/summary_client.test.ts.snap deleted file mode 100644 index ec4d29cba2f10..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/__snapshots__/summary_client.test.ts.snap +++ /dev/null @@ -1,185 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`SummaryClient fetchSummary with a rolling and occurrences composite SLO returns the summary 1`] = ` -Object { - "errorBudget": Object { - "consumed": 1.666667, - "initial": 0.03, - "isEstimated": false, - "remaining": -0.666667, - }, - "sliValue": 0.95, - "status": "VIOLATED", -} -`; - -exports[`SummaryClient fetchSummary with a rolling and occurrences composite SLO returns the summary 2`] = ` -Array [ - Object { - "index": ".slo-observability.sli-v2*", - }, - Object { - "aggs": Object { - "bySloId": Object { - "aggs": Object { - "good": Object { - "sum": Object { - "field": "slo.numerator", - }, - }, - "total": Object { - "sum": Object { - "field": "slo.denominator", - }, - }, - }, - "terms": Object { - "field": "slo.id", - }, - }, - }, - "query": Object { - "bool": Object { - "filter": Array [ - Object { - "range": Object { - "@timestamp": Object { - "gte": "2023-05-22T10:15:00.000Z", - "lt": "2023-05-29T10:15:00.000Z", - }, - }, - }, - ], - "minimum_should_match": 1, - "should": Array [ - Object { - "bool": Object { - "must": Array [ - Object { - "term": Object { - "slo.id": "slo-1", - }, - }, - Object { - "term": Object { - "slo.revision": 1, - }, - }, - ], - }, - }, - Object { - "bool": Object { - "must": Array [ - Object { - "term": Object { - "slo.id": "slo-2", - }, - }, - Object { - "term": Object { - "slo.revision": 2, - }, - }, - ], - }, - }, - ], - }, - }, - "size": 0, - }, -] -`; - -exports[`SummaryClient with rolling and timeslices SLO returns the summary 1`] = ` -Object { - "errorBudget": Object { - "consumed": 1.666667, - "initial": 0.03, - "isEstimated": false, - "remaining": -0.666667, - }, - "sliValue": 0.95, - "status": "VIOLATED", -} -`; - -exports[`SummaryClient with rolling and timeslices SLO returns the summary 2`] = ` -Array [ - Object { - "index": ".slo-observability.sli-v2*", - }, - Object { - "aggs": Object { - "bySloId": Object { - "aggs": Object { - "good": Object { - "sum": Object { - "field": "slo.isGoodSlice", - }, - }, - "total": Object { - "value_count": Object { - "field": "slo.isGoodSlice", - }, - }, - }, - "terms": Object { - "field": "slo.id", - }, - }, - }, - "query": Object { - "bool": Object { - "filter": Array [ - Object { - "range": Object { - "@timestamp": Object { - "gte": "2023-05-22T10:15:00.000Z", - "lt": "2023-05-29T10:15:00.000Z", - }, - }, - }, - ], - "minimum_should_match": 1, - "should": Array [ - Object { - "bool": Object { - "must": Array [ - Object { - "term": Object { - "slo.id": "slo-1", - }, - }, - Object { - "term": Object { - "slo.revision": 1, - }, - }, - ], - }, - }, - Object { - "bool": Object { - "must": Array [ - Object { - "term": Object { - "slo.id": "slo-2", - }, - }, - Object { - "term": Object { - "slo.revision": 2, - }, - }, - ], - }, - }, - ], - }, - }, - "size": 0, - }, -] -`; diff --git a/x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.test.ts b/x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.test.ts deleted file mode 100644 index e1d234018c547..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.test.ts +++ /dev/null @@ -1,169 +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 { SavedObjectsClientContract, SavedObjectsFindResponse } from '@kbn/core/server'; -import { savedObjectsClientMock } from '@kbn/core/server/mocks'; -import { compositeSloSchema } from '@kbn/slo-schema'; - -import { CompositeSLO, StoredCompositeSLO } from '../../domain/models'; -import { CompositeSLOIdConflict, CompositeSLONotFound } from '../../errors'; -import { SO_COMPOSITE_SLO_TYPE } from '../../saved_objects'; -import { KibanaSavedObjectsCompositeSLORepository } from './composite_slo_repository'; -import { aStoredCompositeSLO, createCompositeSLO } from './fixtures/composite_slo'; - -function createFindResponse( - compositeSloList: CompositeSLO[] -): SavedObjectsFindResponse { - return { - page: 1, - per_page: 25, - total: compositeSloList.length, - saved_objects: compositeSloList.map((compositeSlo) => ({ - id: compositeSlo.id, - attributes: compositeSloSchema.encode(compositeSlo), - type: SO_COMPOSITE_SLO_TYPE, - references: [], - score: 1, - })), - }; -} - -describe('KibanaSavedObjectsCompositeSLORepository', () => { - let soClientMock: jest.Mocked; - - beforeEach(() => { - soClientMock = savedObjectsClientMock.create(); - }); - - describe('saving a composite SLO', () => { - it('saves the new composite SLO', async () => { - const compositeSlo = createCompositeSLO({ id: 'my-composite-id' }); - soClientMock.find.mockResolvedValueOnce(createFindResponse([])); - soClientMock.create.mockResolvedValueOnce(aStoredCompositeSLO(compositeSlo)); - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - - const savedCompositeSlo = await repository.save(compositeSlo); - - expect(savedCompositeSlo).toEqual(compositeSlo); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `composite-slo.attributes.id:(${compositeSlo.id})`, - }); - expect(soClientMock.create).toHaveBeenCalledWith( - SO_COMPOSITE_SLO_TYPE, - compositeSloSchema.encode(compositeSlo), - { - id: undefined, - overwrite: true, - } - ); - }); - - it('throws when the Composite SLO id already exists and "throwOnConflict" is true', async () => { - const compositeSlo = createCompositeSLO({ id: 'my-composite-id' }); - soClientMock.find.mockResolvedValueOnce(createFindResponse([compositeSlo])); - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - - await expect(repository.save(compositeSlo, { throwOnConflict: true })).rejects.toThrowError( - new CompositeSLOIdConflict(`Composite SLO [${compositeSlo.id}] already exists`) - ); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `composite-slo.attributes.id:(${compositeSlo.id})`, - }); - }); - - it('updates the existing composite SLO', async () => { - const compositeSlo = createCompositeSLO({ id: 'my-composite-id' }); - soClientMock.find.mockResolvedValueOnce(createFindResponse([compositeSlo])); - soClientMock.create.mockResolvedValueOnce(aStoredCompositeSLO(compositeSlo)); - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - - const savedCompositeSLO = await repository.save(compositeSlo); - - expect(savedCompositeSLO).toEqual(compositeSlo); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `composite-slo.attributes.id:(${compositeSlo.id})`, - }); - expect(soClientMock.create).toHaveBeenCalledWith( - SO_COMPOSITE_SLO_TYPE, - compositeSloSchema.encode(compositeSlo), - { - id: 'my-composite-id', - overwrite: true, - } - ); - }); - }); - - describe('deleting a composite SLO', () => { - it('throws when not found', async () => { - soClientMock.find.mockResolvedValueOnce(createFindResponse([])); - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - - await expect(repository.deleteById('inexistant-slo-id')).rejects.toThrowError( - new CompositeSLONotFound('Composite SLO [inexistant-slo-id] not found') - ); - }); - - it('deletes a composite SLO', async () => { - const compositeSlo = createCompositeSLO({ id: 'my-composite-id' }); - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([compositeSlo])); - - await repository.deleteById(compositeSlo.id); - - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `composite-slo.attributes.id:(${compositeSlo.id})`, - }); - expect(soClientMock.delete).toHaveBeenCalledWith(SO_COMPOSITE_SLO_TYPE, compositeSlo.id); - }); - }); - - describe('finding a composite SLO', () => { - it('finds an existing composite SLO', async () => { - const compositeSlo = createCompositeSLO(); - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([compositeSlo])); - - const foundSLO = await repository.findById(compositeSlo.id); - expect(foundSLO).toEqual(compositeSlo); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `composite-slo.attributes.id:(${compositeSlo.id})`, - }); - }); - - it('throws when the composite SLO does not exist', async () => { - const repository = new KibanaSavedObjectsCompositeSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([])); - - await expect(repository.findById('inexistant-id')).rejects.toThrowError( - new CompositeSLONotFound('Composite SLO [inexistant-id] not found') - ); - - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: 'composite-slo.attributes.id:(inexistant-id)', - }); - }); - }); -}); diff --git a/x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.ts b/x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.ts deleted file mode 100644 index e11e0ecd8f071..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/composite_slo_repository.ts +++ /dev/null @@ -1,205 +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 { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; -import { compositeSloSchema } from '@kbn/slo-schema'; -import { fold } from 'fp-ts/lib/Either'; -import { pipe } from 'fp-ts/lib/pipeable'; -import * as t from 'io-ts'; - -import { CompositeSLO, StoredCompositeSLO } from '../../domain/models/composite_slo'; -import { CompositeSLOIdConflict, CompositeSLONotFound } from '../../errors'; -import { SO_COMPOSITE_SLO_TYPE } from '../../saved_objects'; - -export interface CompositeSLORepository { - save(compositeSlo: CompositeSLO, options?: { throwOnConflict: boolean }): Promise; - deleteById(id: string): Promise; - findById(id: string): Promise; - find(criteria: Criteria, sort: Sort, pagination: Pagination): Promise>; -} - -export interface Criteria { - name?: string; -} - -export interface Pagination { - page: number; - perPage: number; -} - -export const SortDirection = { - Asc: 'Asc', - Desc: 'Desc', -} as const; - -type ObjectValues = T[keyof T]; -type SortDirection = ObjectValues; - -export const SortField = { - CreationTime: 'CreationTime', - IndicatorType: 'IndicatorType', -}; - -type SortField = ObjectValues; - -export interface Sort { - field: SortField; - direction: SortDirection; -} - -export interface Paginated { - page: number; - perPage: number; - total: number; - results: T[]; -} - -const SAVED_OBJECT_ATTRIBUTES_PATH = 'composite-slo.attributes'; - -export class KibanaSavedObjectsCompositeSLORepository implements CompositeSLORepository { - constructor(private soClient: SavedObjectsClientContract) {} - - async save( - compositeSlo: CompositeSLO, - options = { throwOnConflict: false } - ): Promise { - let existingSavedObjectId; - const findResponse = await this.soClient.find({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `${SAVED_OBJECT_ATTRIBUTES_PATH}.id:(${compositeSlo.id})`, - }); - - if (findResponse.total === 1) { - if (options.throwOnConflict) { - throw new CompositeSLOIdConflict(`Composite SLO [${compositeSlo.id}] already exists`); - } - - existingSavedObjectId = findResponse.saved_objects[0].id; - } - - const createResponse = await this.soClient.create( - SO_COMPOSITE_SLO_TYPE, - toStoredCompositeSLO(compositeSlo), - { - id: existingSavedObjectId, - overwrite: true, - } - ); - - return toCompositeSLO(createResponse.attributes); - } - - async deleteById(id: string): Promise { - const response = await this.soClient.find({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `${SAVED_OBJECT_ATTRIBUTES_PATH}.id:(${id})`, - }); - - if (response.total === 0) { - throw new CompositeSLONotFound(`Composite SLO [${id}] not found`); - } - - await this.soClient.delete(SO_COMPOSITE_SLO_TYPE, response.saved_objects[0].id); - } - - async findById(id: string): Promise { - const response = await this.soClient.find({ - type: SO_COMPOSITE_SLO_TYPE, - page: 1, - perPage: 1, - filter: `${SAVED_OBJECT_ATTRIBUTES_PATH}.id:(${id})`, - }); - - if (response.total === 0) { - throw new CompositeSLONotFound(`Composite SLO [${id}] not found`); - } - - return toCompositeSLO(response.saved_objects[0].attributes); - } - - async find( - criteria: Criteria, - sort: Sort, - pagination: Pagination - ): Promise> { - const { search, searchFields } = buildSearch(criteria); - const { sortField, sortOrder } = buildSortQuery(sort); - const response = await this.soClient.find({ - type: SO_COMPOSITE_SLO_TYPE, - page: pagination.page, - perPage: pagination.perPage, - search, - searchFields, - sortField, - sortOrder, - }); - - return { - total: response.total, - page: response.page, - perPage: response.per_page, - results: response.saved_objects.map((so) => toCompositeSLO(so.attributes)), - }; - } -} - -function toStoredCompositeSLO(compositeSlo: CompositeSLO): StoredCompositeSLO { - return compositeSloSchema.encode(compositeSlo); -} - -function toCompositeSLO(storedCompositeSlo: StoredCompositeSLO): CompositeSLO { - return pipe( - compositeSloSchema.decode(storedCompositeSlo), - fold(() => { - throw new Error(`Invalid stored composite SLO [${storedCompositeSlo.id}]`); - }, t.identity) - ); -} - -function buildSearch(criteria: Criteria): { - search: string | undefined; - searchFields: string[] | undefined; -} { - if (!criteria.name) { - return { search: undefined, searchFields: undefined }; - } - - return { search: addWildcardsIfAbsent(criteria.name), searchFields: ['name'] }; -} - -function buildSortQuery(sort: Sort): { sortField: string; sortOrder: 'asc' | 'desc' } { - let sortField: string; - switch (sort.field) { - case SortField.CreationTime: - default: - sortField = 'created_at'; - break; - } - - return { - sortField, - sortOrder: sort.direction === SortDirection.Desc ? 'desc' : 'asc', - }; -} - -const WILDCARD_CHAR = '*'; -function addWildcardsIfAbsent(value: string): string { - let updatedValue = value; - if (updatedValue.substring(0, 1) !== WILDCARD_CHAR) { - updatedValue = `${WILDCARD_CHAR}${updatedValue}`; - } - - if (value.substring(value.length - 1) !== WILDCARD_CHAR) { - updatedValue = `${updatedValue}${WILDCARD_CHAR}`; - } - - return updatedValue; -} diff --git a/x-pack/plugins/observability/server/services/composite_slo/create_composite_slo.ts b/x-pack/plugins/observability/server/services/composite_slo/create_composite_slo.ts deleted file mode 100644 index 2e420a53798a6..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/create_composite_slo.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - CreateCompositeSLOParams, - CreateCompositeSLOResponse, - CreateSLOResponse, -} from '@kbn/slo-schema'; -import { v1 as uuidv1 } from 'uuid'; - -import { CompositeSLO } from '../../domain/models/composite_slo'; -import { validateCompositeSLO } from '../../domain/services/composite_slo'; -import { SLORepository } from '../slo/slo_repository'; -import { CompositeSLORepository } from './composite_slo_repository'; - -export class CreateCompositeSLO { - constructor( - private compositeSloRepository: CompositeSLORepository, - private sloRepository: SLORepository - ) {} - - public async execute(params: CreateCompositeSLOParams): Promise { - const compositeSlo = toCompositeSLO(params); - const sloList = await this.sloRepository.findAllByIds( - compositeSlo.sources.map((slo) => slo.id) - ); - validateCompositeSLO(compositeSlo, sloList); - - await this.compositeSloRepository.save(compositeSlo, { throwOnConflict: true }); - - return toResponse(compositeSlo); - } -} - -function toCompositeSLO(params: CreateCompositeSLOParams): CompositeSLO { - const now = new Date(); - return { - ...params, - id: params.id ?? uuidv1(), - tags: params.tags ?? [], - createdAt: now, - updatedAt: now, - }; -} - -function toResponse(compositeSlo: CompositeSLO): CreateCompositeSLOResponse { - return { - id: compositeSlo.id, - }; -} diff --git a/x-pack/plugins/observability/server/services/composite_slo/delete_composite_slo.ts b/x-pack/plugins/observability/server/services/composite_slo/delete_composite_slo.ts deleted file mode 100644 index c795db2391cfa..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/delete_composite_slo.ts +++ /dev/null @@ -1,17 +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 { CompositeSLOId } from '../../domain/models'; -import { CompositeSLORepository } from './composite_slo_repository'; - -export class DeleteCompositeSLO { - constructor(private compositeSloRepository: CompositeSLORepository) {} - - public async execute(compositeSloId: CompositeSLOId): Promise { - await this.compositeSloRepository.deleteById(compositeSloId); - } -} diff --git a/x-pack/plugins/observability/server/services/composite_slo/find_composite_slo.ts b/x-pack/plugins/observability/server/services/composite_slo/find_composite_slo.ts deleted file mode 100644 index 79bdb734614b1..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/find_composite_slo.ts +++ /dev/null @@ -1,71 +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 { - FindCompositeSLOParams, - FindCompositeSLOResponse, - findCompositeSLOResponseSchema, -} from '@kbn/slo-schema'; -import { CompositeSLO } from '../../domain/models'; -import { - CompositeSLORepository, - Paginated, - Pagination, - Sort, - SortDirection, - SortField, - Criteria, -} from './composite_slo_repository'; -import { SummaryClient } from './summary_client'; - -const DEFAULT_PAGE = 1; -const DEFAULT_PER_PAGE = 25; - -export class FindCompositeSLO { - constructor(private repository: CompositeSLORepository, private summaryClient: SummaryClient) {} - - public async execute(params: FindCompositeSLOParams): Promise { - const pagination: Pagination = toPagination(params); - const criteria: Criteria = toCriteria(params); - const sort: Sort = toSort(params); - - const { results: compositeSloList, ...resultMeta }: Paginated = - await this.repository.find(criteria, sort, pagination); - const summaryByCompositeSlo = await this.summaryClient.fetchSummary(compositeSloList); - - return findCompositeSLOResponseSchema.encode({ - page: resultMeta.page, - perPage: resultMeta.perPage, - total: resultMeta.total, - results: compositeSloList.map((compositeSlo) => ({ - ...compositeSlo, - summary: summaryByCompositeSlo[compositeSlo.id], - })), - }); - } -} - -function toCriteria(params: FindCompositeSLOParams): Criteria { - return { name: params.name }; -} - -function toPagination(params: FindCompositeSLOParams): Pagination { - const page = Number(params.page); - const perPage = Number(params.perPage); - - return { - page: !isNaN(page) && page >= 1 ? page : DEFAULT_PAGE, - perPage: !isNaN(perPage) && perPage >= 1 ? perPage : DEFAULT_PER_PAGE, - }; -} - -function toSort(params: FindCompositeSLOParams): Sort { - return { - field: SortField.CreationTime, - direction: params.sortDirection === 'desc' ? SortDirection.Desc : SortDirection.Asc, - }; -} diff --git a/x-pack/plugins/observability/server/services/composite_slo/fixtures/composite_slo.ts b/x-pack/plugins/observability/server/services/composite_slo/fixtures/composite_slo.ts deleted file mode 100644 index bba107e29d689..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/fixtures/composite_slo.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { cloneDeep } from 'lodash'; -import { v1 as uuidv1 } from 'uuid'; -import { SavedObject } from '@kbn/core-saved-objects-server'; - -import { compositeSloSchema } from '@kbn/slo-schema'; -import { SO_COMPOSITE_SLO_TYPE } from '../../../saved_objects'; -import { CompositeSLO, StoredCompositeSLO, WeightedAverageSource } from '../../../domain/models'; -import { sevenDaysRolling } from '../../slo/fixtures/time_window'; - -export const createWeightedAverageSource = ( - params: Partial = {} -): WeightedAverageSource => { - return cloneDeep({ - id: uuidv1(), - revision: 1, - weight: 1, - ...params, - }); -}; - -const defaultCompositeSLO: Omit = { - name: 'some composite slo', - timeWindow: sevenDaysRolling(), - budgetingMethod: 'occurrences', - objective: { - target: 0.95, - }, - compositeMethod: 'weightedAverage', - sources: [createWeightedAverageSource(), createWeightedAverageSource()], - tags: ['critical', 'k8s'], -}; - -export const createCompositeSLO = (params: Partial = {}): CompositeSLO => { - const now = new Date(); - return cloneDeep({ - ...defaultCompositeSLO, - id: uuidv1(), - createdAt: now, - updatedAt: now, - ...params, - }); -}; - -export const aStoredCompositeSLO = ( - compositeSlo: CompositeSLO -): SavedObject => { - return { - id: uuidv1(), - attributes: compositeSloSchema.encode(compositeSlo), - type: SO_COMPOSITE_SLO_TYPE, - references: [], - }; -}; diff --git a/x-pack/plugins/observability/server/services/composite_slo/get_composite_slo.ts b/x-pack/plugins/observability/server/services/composite_slo/get_composite_slo.ts deleted file mode 100644 index 8a0170cbfa080..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/get_composite_slo.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { compositeSLOResponseSchema, GetCompositeSLOResponse } from '@kbn/slo-schema'; -import { CompositeSLO, CompositeSLOId, Summary } from '../../domain/models'; -import { CompositeSLORepository } from './composite_slo_repository'; -import { SummaryClient } from './summary_client'; - -export class GetCompositeSLO { - constructor( - private compositeSloRepository: CompositeSLORepository, - private summaryClient: SummaryClient - ) {} - - public async execute(compositeSloId: CompositeSLOId): Promise { - const compositeSlo = await this.compositeSloRepository.findById(compositeSloId); - const summaryByCompositeSlo = await this.summaryClient.fetchSummary([compositeSlo]); - - return toResponse(compositeSlo, summaryByCompositeSlo[compositeSlo.id]); - } -} - -function toResponse(compositeSlo: CompositeSLO, summary: Summary): GetCompositeSLOResponse { - return { - ...compositeSLOResponseSchema.encode(compositeSlo), - summary, - }; -} diff --git a/x-pack/plugins/observability/server/services/composite_slo/index.ts b/x-pack/plugins/observability/server/services/composite_slo/index.ts deleted file mode 100644 index e9f8320ea833e..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export * from './composite_slo_repository'; -export * from './create_composite_slo'; -export * from './delete_composite_slo'; -export * from './find_composite_slo'; -export * from './summary_client'; -export * from './update_composite_slo'; diff --git a/x-pack/plugins/observability/server/services/composite_slo/summary_client.test.ts b/x-pack/plugins/observability/server/services/composite_slo/summary_client.test.ts deleted file mode 100644 index 813183c6576d6..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/summary_client.test.ts +++ /dev/null @@ -1,102 +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 { ElasticsearchClientMock, elasticsearchServiceMock } from '@kbn/core/server/mocks'; -import { CompositeSLO, Duration, DurationUnit } from '../../domain/models'; -import { sevenDaysRolling } from '../slo/fixtures/time_window'; -import { createCompositeSLO } from './fixtures/composite_slo'; -import { DefaultSummaryClient } from './summary_client'; - -const commonEsResponse = { - took: 100, - timed_out: false, - _shards: { - total: 0, - successful: 0, - skipped: 0, - failed: 0, - }, - hits: { - hits: [], - }, -}; - -const createEsResponse = (compositeSlo: CompositeSLO) => ({ - ...commonEsResponse, - responses: [ - { - ...commonEsResponse, - aggregations: { - bySloId: { - buckets: compositeSlo.sources.map((source) => ({ - key: source.id, - good: { value: 95 }, - total: { value: 100 }, - })), - }, - }, - }, - ], -}); - -describe('SummaryClient', () => { - let esClientMock: ElasticsearchClientMock; - - beforeEach(() => { - esClientMock = elasticsearchServiceMock.createElasticsearchClient(); - jest.useFakeTimers().setSystemTime(new Date('2023-05-29T10:15:00.000Z')); - }); - - describe('fetchSummary', () => { - describe('with a rolling and occurrences composite SLO', () => { - it('returns the summary', async () => { - const compositeSlo = createCompositeSLO({ - objective: { target: 0.97 }, - timeWindow: sevenDaysRolling(), - sources: [ - { id: 'slo-1', revision: 1, weight: 2 }, - { id: 'slo-2', revision: 2, weight: 1 }, - ], - }); - esClientMock.msearch.mockResolvedValueOnce(createEsResponse(compositeSlo)); - const summaryClient = new DefaultSummaryClient(esClientMock); - - const result = await summaryClient.fetchSummary([compositeSlo]); - - expect(result[compositeSlo.id]).toMatchSnapshot(); - // @ts-ignore - expect(esClientMock.msearch.mock.calls[0][0].searches).toMatchSnapshot(); - }); - }); - }); - - describe('with rolling and timeslices SLO', () => { - it('returns the summary', async () => { - const compositeSlo = createCompositeSLO({ - budgetingMethod: 'timeslices', - objective: { - target: 0.97, - timesliceTarget: 0.9, - timesliceWindow: new Duration(10, DurationUnit.Minute), - }, - sources: [ - { id: 'slo-1', revision: 1, weight: 2 }, - { id: 'slo-2', revision: 2, weight: 1 }, - ], - timeWindow: sevenDaysRolling(), - }); - esClientMock.msearch.mockResolvedValueOnce(createEsResponse(compositeSlo)); - const summaryClient = new DefaultSummaryClient(esClientMock); - - const result = await summaryClient.fetchSummary([compositeSlo]); - - expect(result[compositeSlo.id]).toMatchSnapshot(); - // @ts-ignore searches not typed properly - expect(esClientMock.msearch.mock.calls[0][0].searches).toMatchSnapshot(); - }); - }); -}); diff --git a/x-pack/plugins/observability/server/services/composite_slo/summary_client.ts b/x-pack/plugins/observability/server/services/composite_slo/summary_client.ts deleted file mode 100644 index 275e70b6db300..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/summary_client.ts +++ /dev/null @@ -1,192 +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 { MsearchMultisearchBody } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { ElasticsearchClient } from '@kbn/core/server'; -import { - calendarAlignedTimeWindowSchema, - Duration, - occurrencesBudgetingMethodSchema, - timeslicesBudgetingMethodSchema, - toMomentUnitOfTime, -} from '@kbn/slo-schema'; -import moment from 'moment'; -import { SLO_DESTINATION_INDEX_PATTERN } from '../../assets/constants'; -import { CompositeSLO, CompositeSLOId, DateRange, Summary } from '../../domain/models'; -import { computeSLI, computeSummaryStatus, toErrorBudget } from '../../domain/services'; -import { toDateRange } from '../../domain/services/date_range'; -import { toHighPrecision } from '../../utils/number'; - -export interface SummaryClient { - fetchSummary(compositeSloList: CompositeSLO[]): Promise>; -} - -export class DefaultSummaryClient implements SummaryClient { - constructor(private esClient: ElasticsearchClient) {} - - async fetchSummary(compositeSloList: CompositeSLO[]): Promise> { - const dateRangeByCompositeSlo = compositeSloList.reduce>( - (acc, compositeSlo) => { - acc[compositeSlo.id] = toDateRange(compositeSlo.timeWindow); - return acc; - }, - {} - ); - const searches = compositeSloList.flatMap((compositeSlo) => [ - { index: SLO_DESTINATION_INDEX_PATTERN }, - generateSearchQuery(compositeSlo, dateRangeByCompositeSlo[compositeSlo.id]), - ]); - - const summaryByCompositeSlo: Record = {}; - if (searches.length === 0) { - return summaryByCompositeSlo; - } - - const result = await this.esClient.msearch({ searches }); - - for (let i = 0; i < result.responses.length; i++) { - const compositeSlo = compositeSloList[i]; - - // @ts-ignore - const { aggregations = {} } = result.responses[i]; - const buckets = aggregations?.bySloId?.buckets ?? []; - - if ( - calendarAlignedTimeWindowSchema.is(compositeSlo.timeWindow) && - timeslicesBudgetingMethodSchema.is(compositeSlo.budgetingMethod) - ) { - let sliValue = 0; - let totalWeights = 0; - let maxSloTotalSlices = 0; - for (const bucket of buckets) { - const sourceSloId = bucket.key; - const sourceSloGoodSlices = bucket.good.value; - const sourceSloTotalSlices = bucket.total.value; - maxSloTotalSlices = - sourceSloTotalSlices > maxSloTotalSlices ? sourceSloTotalSlices : maxSloTotalSlices; - const sourceSloSliValue = computeSLI(sourceSloGoodSlices, sourceSloTotalSlices); - const sourceSloWeight = compositeSlo.sources.find( - (source) => source.id === sourceSloId - )!.weight; // used to build the query, therefore exists - - totalWeights += sourceSloWeight; - sliValue += sourceSloSliValue < 0 ? 0 : sourceSloWeight * sourceSloSliValue; - } - sliValue /= totalWeights === 0 ? 1 : totalWeights; - - const totalSlicesInCalendar = computeTotalSlicesFromDateRange( - dateRangeByCompositeSlo[compositeSlo.id], - compositeSlo.objective.timesliceWindow! - ); - const initialErrorBudget = 1 - compositeSlo.objective.target; - const errorBudgetConsumed = - ((1 - sliValue) / initialErrorBudget) * (maxSloTotalSlices / totalSlicesInCalendar); - - const errorBudget = toErrorBudget(initialErrorBudget, errorBudgetConsumed); - summaryByCompositeSlo[compositeSlo.id] = { - sliValue: toHighPrecision(sliValue), - errorBudget, - status: computeSummaryStatus(compositeSlo, sliValue, errorBudget), - }; - } else { - let sliValue = 0; - let totalWeights = 0; - for (const bucket of buckets) { - const sourceSloId = bucket.key; - const sourceSloGood = bucket.good.value; - const sourceSloTotal = bucket.total.value; - const sourceSloSliValue = computeSLI(sourceSloGood, sourceSloTotal); - const sourceSloWeight = compositeSlo.sources.find( - (source) => source.id === sourceSloId - )!.weight; // used to build the query, therefore exists - - totalWeights += sourceSloWeight; - sliValue += sourceSloSliValue < 0 ? 0 : sourceSloWeight * sourceSloSliValue; - } - sliValue /= totalWeights === 0 ? 1 : totalWeights; - - const initialErrorBudget = 1 - compositeSlo.objective.target; - const errorBudgetConsumed = (1 - sliValue) / initialErrorBudget; - const errorBudget = toErrorBudget( - initialErrorBudget, - errorBudgetConsumed, - calendarAlignedTimeWindowSchema.is(compositeSlo.timeWindow) - ); - summaryByCompositeSlo[compositeSlo.id] = { - sliValue: toHighPrecision(sliValue), - errorBudget, - status: computeSummaryStatus(compositeSlo, sliValue, errorBudget), - }; - } - } - - return summaryByCompositeSlo; - } -} - -function generateSearchQuery( - compositeSlo: CompositeSLO, - dateRange: DateRange -): MsearchMultisearchBody { - return { - size: 0, - query: { - bool: { - filter: [ - { - range: { - '@timestamp': { gte: dateRange.from.toISOString(), lt: dateRange.to.toISOString() }, - }, - }, - ], - should: compositeSlo.sources.map((source) => ({ - bool: { - must: [ - { term: { 'slo.id': source.id } }, - { term: { 'slo.revision': source.revision } }, - ], - }, - })), - minimum_should_match: 1, - }, - }, - ...(occurrencesBudgetingMethodSchema.is(compositeSlo.budgetingMethod) && { - aggs: { - bySloId: { - terms: { - field: 'slo.id', - }, - aggs: { - good: { sum: { field: 'slo.numerator' } }, - total: { sum: { field: 'slo.denominator' } }, - }, - }, - }, - }), - ...(timeslicesBudgetingMethodSchema.is(compositeSlo.budgetingMethod) && { - aggs: { - bySloId: { - terms: { - field: 'slo.id', - }, - aggs: { - good: { sum: { field: 'slo.isGoodSlice' } }, - total: { value_count: { field: 'slo.isGoodSlice' } }, - }, - }, - }, - }), - }; -} - -function computeTotalSlicesFromDateRange(dateRange: DateRange, timesliceWindow: Duration) { - const dateRangeDurationInUnit = moment(dateRange.to).diff( - dateRange.from, - toMomentUnitOfTime(timesliceWindow.unit) - ); - return Math.ceil(dateRangeDurationInUnit / timesliceWindow!.value); -} diff --git a/x-pack/plugins/observability/server/services/composite_slo/update_composite_slo.ts b/x-pack/plugins/observability/server/services/composite_slo/update_composite_slo.ts deleted file mode 100644 index 49725acdd927c..0000000000000 --- a/x-pack/plugins/observability/server/services/composite_slo/update_composite_slo.ts +++ /dev/null @@ -1,46 +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 { - UpdateCompositeSLOParams, - UpdateCompositeSLOResponse, - updateCompositeSLOResponseSchema, -} from '@kbn/slo-schema'; -import { CompositeSLO, CompositeSLOId } from '../../domain/models'; -import { validateCompositeSLO } from '../../domain/services/composite_slo'; -import { SLORepository } from '../slo'; -import { CompositeSLORepository } from './composite_slo_repository'; - -export class UpdateCompositeSLO { - constructor( - private compositeSloRepository: CompositeSLORepository, - private sloRepository: SLORepository - ) {} - - public async execute( - compositeSloId: CompositeSLOId, - params: UpdateCompositeSLOParams - ): Promise { - const originalCompositeSlo = await this.compositeSloRepository.findById(compositeSloId); - - const updatedCompositeSlo: CompositeSLO = Object.assign({}, originalCompositeSlo, params, { - updatedAt: new Date(), - }); - const sloList = await this.sloRepository.findAllByIds( - updatedCompositeSlo.sources.map((slo) => slo.id) - ); - validateCompositeSLO(updatedCompositeSlo, sloList); - - await this.compositeSloRepository.save(updatedCompositeSlo); - - return toResponse(updatedCompositeSlo); - } -} - -function toResponse(compositeSlo: CompositeSLO): UpdateCompositeSLOResponse { - return updateCompositeSLOResponseSchema.encode(compositeSlo); -} diff --git a/x-pack/test/observability_api_integration/apis/composite_slo/create.ts b/x-pack/test/observability_api_integration/apis/composite_slo/create.ts deleted file mode 100644 index 0da6c395e83ce..0000000000000 --- a/x-pack/test/observability_api_integration/apis/composite_slo/create.ts +++ /dev/null @@ -1,181 +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 expect from '@kbn/expect'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; -import { createCompositeSLOInput } from '../../fixtures/composite_slo'; - -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const kibanaServer = getService('kibanaServer'); - - describe.skip('create >', () => { - const security = getService('security'); - - before(async () => { - await security.testUser.setRoles(['slo_all']); - await kibanaServer.importExport.load( - 'x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/slo.json' - ); - }); - - after(async () => { - await security.testUser.restoreDefaults(); - await kibanaServer.importExport.unload( - 'x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/slo.json' - ); - }); - - it('returns a 400 with invalid payload', async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send({}) - .expect(400) - .then((resp) => { - expect(resp.body.error).to.eql('Bad Request'); - expect(resp.body.message).to.contain('Invalid value undefined supplied to'); - }); - }); - - it('returns a 400 when the number of source SLOs is less than 2', async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - sources: [{ id: 'f9072790-f97c-11ed-895c-170d13e61076', revision: 2, weight: 1 }], - }) - ) - .expect(400) - .then((resp) => { - expect(resp.body.error).to.eql('Bad Request'); - expect(resp.body.message).to.contain( - 'A composite SLO must contain between 2 and 30 source SLOs.' - ); - }); - }); - - it('returns a 400 when the source SLOs are not found', async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - sources: [ - { id: 'inexistant', revision: 1, weight: 1 }, - { id: 'inexistant2', revision: 1, weight: 1 }, - ], - }) - ) - .expect(400) - .then((resp) => { - expect(resp.body.error).to.eql('Bad Request'); - expect(resp.body.message).to.contain( - 'One or many source SLOs are not matching the specified id and revision.' - ); - }); - }); - - it("returns a 400 when the source SLOs' time window don't match", async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - timeWindow: { - duration: '30d', - type: 'rolling', - }, - sources: [ - { id: 'f9072790-f97c-11ed-895c-170d13e61076', revision: 2, weight: 1 }, - { id: 'f6694b30-f97c-11ed-895c-170d13e61076', revision: 1, weight: 2 }, - ], - }) - ) - .expect(400) - .then((resp) => { - expect(resp.body.error).to.eql('Bad Request'); - expect(resp.body.message).to.contain( - 'Invalid time window. Every source SLO must use the same time window as the composite.' - ); - }); - }); - - it('returns a 400 when timeslices window is not defined for a timeslices budgeting method', async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - budgetingMethod: 'timeslices', - objective: { - target: 0.9, - }, - sources: [ - { id: 'f9072790-f97c-11ed-895c-170d13e61076', revision: 2, weight: 1 }, - { id: 'f6694b30-f97c-11ed-895c-170d13e61076', revision: 1, weight: 2 }, - ], - }) - ) - .expect(400) - .then((resp) => { - expect(resp.body.error).to.eql('Bad Request'); - expect(resp.body.message).to.contain( - 'Invalid timeslices objective. A timeslice window must be set and equal to all source SLO.' - ); - }); - }); - - it("returns a 400 when the source SLOs' budgeting method don't match", async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - budgetingMethod: 'timeslices', - objective: { - target: 0.9, - timesliceTarget: 0.95, - timesliceWindow: '1m', - }, - sources: [ - { id: 'f9072790-f97c-11ed-895c-170d13e61076', revision: 2, weight: 1 }, - { id: 'f6694b30-f97c-11ed-895c-170d13e61076', revision: 1, weight: 2 }, - ], - }) - ) - .expect(400) - .then((resp) => { - expect(resp.body.error).to.eql('Bad Request'); - expect(resp.body.message).to.contain( - 'Invalid budgeting method. Every source SLO must use the same timeslice window.' - ); - }); - }); - - describe('happy path', () => { - it('returns a 200', async () => { - await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - sources: [ - { id: 'f9072790-f97c-11ed-895c-170d13e61076', revision: 2, weight: 1 }, - { id: 'f6694b30-f97c-11ed-895c-170d13e61076', revision: 1, weight: 2 }, - ], - }) - ) - .expect(200) - .then((resp) => { - expect(resp.body.id).to.be.ok(); - }); - }); - }); - }); -} diff --git a/x-pack/test/observability_api_integration/apis/composite_slo/delete.ts b/x-pack/test/observability_api_integration/apis/composite_slo/delete.ts deleted file mode 100644 index bd4f80f2ef550..0000000000000 --- a/x-pack/test/observability_api_integration/apis/composite_slo/delete.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; - -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const kibanaServer = getService('kibanaServer'); - - describe.skip('delete >', () => { - const security = getService('security'); - - before(async () => { - await security.testUser.setRoles(['slo_all']); - await kibanaServer.importExport.load( - 'x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/simple_composite_slo.json' - ); - }); - - after(async () => { - await security.testUser.restoreDefaults(); - await kibanaServer.importExport.unload( - 'x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/simple_composite_slo.json' - ); - }); - - it('returns a 404 when the composite SLO is not found', async () => { - await supertest - .delete(`/api/observability/composite_slos/inexistant-id`) - .set('kbn-xsrf', 'foo') - .expect(404) - .then((resp) => { - expect(resp.body.error).to.eql('Not Found'); - expect(resp.body.message).to.contain('Composite SLO [inexistant-id] not found'); - }); - }); - - describe('happy path', () => { - it('returns a 204', async () => { - await supertest - .delete(`/api/observability/composite_slos/b5e88480-fa77-11ed-8871-27f3f5ca40ce`) - .set('kbn-xsrf', 'foo') - .expect(204); - }); - }); - }); -} diff --git a/x-pack/test/observability_api_integration/apis/composite_slo/index.ts b/x-pack/test/observability_api_integration/apis/composite_slo/index.ts deleted file mode 100644 index bc7f0a5362cb8..0000000000000 --- a/x-pack/test/observability_api_integration/apis/composite_slo/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FtrProviderContext } from '../../common/ftr_provider_context'; - -export default function ({ loadTestFile }: FtrProviderContext) { - describe('composite_slo', () => { - loadTestFile(require.resolve('./create')); - loadTestFile(require.resolve('./delete')); - loadTestFile(require.resolve('./update')); - }); -} diff --git a/x-pack/test/observability_api_integration/apis/composite_slo/update.ts b/x-pack/test/observability_api_integration/apis/composite_slo/update.ts deleted file mode 100644 index 69f87da9c8a93..0000000000000 --- a/x-pack/test/observability_api_integration/apis/composite_slo/update.ts +++ /dev/null @@ -1,71 +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 expect from '@kbn/expect'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; -import { createCompositeSLOInput } from '../../fixtures/composite_slo'; - -export default function ({ getService }: FtrProviderContext) { - const supertest = getService('supertest'); - const kibanaServer = getService('kibanaServer'); - - describe.skip('update >', () => { - const security = getService('security'); - - before(async () => { - await security.testUser.setRoles(['slo_all']); - await kibanaServer.importExport.load( - 'x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/slo.json' - ); - }); - - after(async () => { - await security.testUser.restoreDefaults(); - await kibanaServer.importExport.unload( - 'x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/slo.json' - ); - }); - - it('returns a 404 when not found', async () => { - await supertest - .put(`/api/observability/composite_slos/inexistant-id`) - .set('kbn-xsrf', 'foo') - .send({ name: 'updated composite slo name' }) - .expect(404) - .then((resp) => { - expect(resp.body.error).to.eql('Not Found'); - expect(resp.body.message).to.contain('Composite SLO [inexistant-id] not found'); - }); - }); - - describe('happy path', () => { - it('returns a 200', async () => { - const { body } = await supertest - .post(`/api/observability/composite_slos`) - .set('kbn-xsrf', 'foo') - .send( - createCompositeSLOInput({ - sources: [ - { id: 'f9072790-f97c-11ed-895c-170d13e61076', revision: 2, weight: 1 }, - { id: 'f6694b30-f97c-11ed-895c-170d13e61076', revision: 1, weight: 2 }, - ], - }) - ) - .expect(200); - - await supertest - .put(`/api/observability/composite_slos/${body.id}`) - .set('kbn-xsrf', 'foo') - .send({ name: 'updated composite slo name 🚀' }) - .expect(200) - .then((resp) => { - expect(resp.body.name).to.eql('updated composite slo name 🚀'); - }); - }); - }); - }); -} diff --git a/x-pack/test/observability_api_integration/apis/config.ts b/x-pack/test/observability_api_integration/apis/config.ts deleted file mode 100644 index fac715a634cfa..0000000000000 --- a/x-pack/test/observability_api_integration/apis/config.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { createTestConfig } from '../common/config'; - -export default createTestConfig({ - license: 'trial', - name: 'X-Pack Observability API integration test', - testFiles: [require.resolve('./composite_slo')], -}); diff --git a/x-pack/test/observability_api_integration/fixtures/composite_slo.ts b/x-pack/test/observability_api_integration/fixtures/composite_slo.ts deleted file mode 100644 index ca206c130ffc7..0000000000000 --- a/x-pack/test/observability_api_integration/fixtures/composite_slo.ts +++ /dev/null @@ -1,34 +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 { cloneDeep } from 'lodash'; -import { v1 as uuidv1 } from 'uuid'; -import { CreateCompositeSLOInput } from '@kbn/slo-schema'; - -const defaultCompositeSLOInput: CreateCompositeSLOInput = { - name: 'some composite slo', - timeWindow: { - duration: '7d', - type: 'rolling', - }, - budgetingMethod: 'occurrences', - objective: { - target: 0.95, - }, - compositeMethod: 'weightedAverage', - sources: [ - { id: uuidv1(), revision: 1, weight: 1 }, - { id: uuidv1(), revision: 2, weight: 2 }, - ], - tags: ['critical', 'k8s'], -}; - -export function createCompositeSLOInput( - data: Partial = {} -): CreateCompositeSLOInput { - return cloneDeep({ ...defaultCompositeSLOInput, ...data }); -} diff --git a/x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/simple_composite_slo.json b/x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/simple_composite_slo.json deleted file mode 100644 index 528a4d0a45204..0000000000000 --- a/x-pack/test/observability_api_integration/fixtures/kbn_archiver/saved_objects/simple_composite_slo.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "attributes": { - "budgetingMethod": "occurrences", - "compositeMethod": "weightedAverage", - "createdAt": "2023-05-24T21:12:37.831Z", - "id": "b5e88480-fa77-11ed-8871-27f3f5ca40ce", - "name": "composite slo test", - "objective": { "target": 0.95 }, - "sources": [ - { "id": "f6694b30-f97c-11ed-895c-170d13e61076", "revision": 1, "weight": 2 }, - { "id": "f9072790-f97c-11ed-895c-170d13e61076", "revision": 2, "weight": 1 } - ], - "tags": [], - "timeWindow": { "duration": "7d", "type": "rolling" }, - "updatedAt": "2023-05-24T21:12:37.831Z" - }, - "coreMigrationVersion": "8.8.0", - "created_at": "2023-05-24T21:12:37.843Z", - "id": "b5ea3230-fa77-11ed-8871-27f3f5ca40ce", - "managed": false, - "references": [], - "type": "composite-slo", - "updated_at": "2023-05-24T21:12:37.843Z", - "version": "WzIwNTk2LDFd" -} diff --git a/x-pack/test/tsconfig.json b/x-pack/test/tsconfig.json index 5da72a7c99d5f..7d29b3794ac8a 100644 --- a/x-pack/test/tsconfig.json +++ b/x-pack/test/tsconfig.json @@ -126,7 +126,6 @@ "@kbn/maps-vector-tile-utils", "@kbn/server-route-repository", "@kbn/core-http-common", - "@kbn/slo-schema", "@kbn/lens-plugin", "@kbn/notifications-plugin", "@kbn/logs-shared-plugin", From 71c889e88be63cd1aa79a5a7a4dc462a3dd67f77 Mon Sep 17 00:00:00 2001 From: Luke G <11671118+lgestc@users.noreply.github.com> Date: Fri, 13 Oct 2023 16:46:43 +0200 Subject: [PATCH 17/80] [Security Solution] Update ecs package to latest ecs definitions (#168553) ## Summary Updates for autogenerated ECS definitions --- .../__snapshots__/logging_system.test.ts.snap | 10 +- .../src/schemas/generated/ecs_schema.ts | 203 + packages/kbn-ecs/generated/base.ts | 2 +- packages/kbn-ecs/generated/client.ts | 2 +- packages/kbn-ecs/generated/container.ts | 10 +- packages/kbn-ecs/generated/destination.ts | 2 +- packages/kbn-ecs/generated/device.ts | 2 +- packages/kbn-ecs/generated/dll.ts | 43 + packages/kbn-ecs/generated/dns.ts | 6 +- packages/kbn-ecs/generated/ecs.ts | 2 +- packages/kbn-ecs/generated/ecs_flat.ts | 2742 +- packages/kbn-ecs/generated/ecs_nested.ts | 3267 ++- packages/kbn-ecs/generated/elf.ts | 44 +- packages/kbn-ecs/generated/email.ts | 12 +- packages/kbn-ecs/generated/event.ts | 18 +- packages/kbn-ecs/generated/faas.ts | 15 +- packages/kbn-ecs/generated/file.ts | 166 +- packages/kbn-ecs/generated/host.ts | 6 +- packages/kbn-ecs/generated/index.ts | 4 +- packages/kbn-ecs/generated/macho.ts | 4 +- packages/kbn-ecs/generated/observer.ts | 4 +- packages/kbn-ecs/generated/orchestrator.ts | 10 +- packages/kbn-ecs/generated/pe.ts | 43 + packages/kbn-ecs/generated/process.ts | 362 +- packages/kbn-ecs/generated/registry.ts | 2 +- packages/kbn-ecs/generated/related.ts | 8 +- packages/kbn-ecs/generated/rule.ts | 2 +- packages/kbn-ecs/generated/schema.ts | 22185 ---------------- packages/kbn-ecs/generated/server.ts | 2 +- packages/kbn-ecs/generated/service.ts | 6 +- packages/kbn-ecs/generated/source.ts | 2 +- packages/kbn-ecs/generated/threat.ts | 173 +- packages/kbn-ecs/generated/tls.ts | 58 +- packages/kbn-ecs/generated/user.ts | 8 +- packages/kbn-ecs/generated/vulnerability.ts | 2 +- packages/kbn-ecs/generated/x509.ts | 26 +- .../allowed_values/helpers.test.tsx | 121 +- .../index_properties/helpers.test.ts | 612 +- .../impl/data_quality/helpers.test.ts | 134 +- .../use_results_rollup/helpers.test.ts | 7 +- .../security/server/audit/audit_service.ts | 5 +- 41 files changed, 7006 insertions(+), 23326 deletions(-) delete mode 100644 packages/kbn-ecs/generated/schema.ts diff --git a/packages/core/logging/core-logging-server-internal/src/__snapshots__/logging_system.test.ts.snap b/packages/core/logging/core-logging-server-internal/src/__snapshots__/logging_system.test.ts.snap index 01ffd79b0b87f..a26abbd591f04 100644 --- a/packages/core/logging/core-logging-server-internal/src/__snapshots__/logging_system.test.ts.snap +++ b/packages/core/logging/core-logging-server-internal/src/__snapshots__/logging_system.test.ts.snap @@ -16,7 +16,7 @@ exports[`asLoggerFactory() only allows to create new loggers. 1`] = ` Object { "@timestamp": "2012-01-30T22:33:22.011-05:00", "ecs": Object { - "version": "8.6.1", + "version": "8.10.0", }, "log": Object { "level": "TRACE", @@ -33,7 +33,7 @@ exports[`asLoggerFactory() only allows to create new loggers. 2`] = ` Object { "@timestamp": "2012-01-30T17:33:22.011-05:00", "ecs": Object { - "version": "8.6.1", + "version": "8.10.0", }, "log": Object { "level": "INFO", @@ -51,7 +51,7 @@ exports[`asLoggerFactory() only allows to create new loggers. 3`] = ` Object { "@timestamp": "2012-01-30T12:33:22.011-05:00", "ecs": Object { - "version": "8.6.1", + "version": "8.10.0", }, "log": Object { "level": "FATAL", @@ -68,7 +68,7 @@ exports[`flushes memory buffer logger and switches to real logger once config is Object { "@timestamp": "2012-02-01T09:33:22.011-05:00", "ecs": Object { - "version": "8.6.1", + "version": "8.10.0", }, "log": Object { "level": "INFO", @@ -86,7 +86,7 @@ exports[`flushes memory buffer logger and switches to real logger once config is Object { "@timestamp": "2012-01-31T23:33:22.011-05:00", "ecs": Object { - "version": "8.6.1", + "version": "8.10.0", }, "log": Object { "level": "INFO", diff --git a/packages/kbn-alerts-as-data-utils/src/schemas/generated/ecs_schema.ts b/packages/kbn-alerts-as-data-utils/src/schemas/generated/ecs_schema.ts index 840fc2187321c..6cc98d884c393 100644 --- a/packages/kbn-alerts-as-data-utils/src/schemas/generated/ecs_schema.ts +++ b/packages/kbn-alerts-as-data-utils/src/schemas/generated/ecs_schema.ts @@ -157,6 +157,7 @@ const EcsOptional = rt.partial({ 'container.network.egress.bytes': schemaStringOrNumber, 'container.network.ingress.bytes': schemaStringOrNumber, 'container.runtime': schemaString, + 'container.security_context.privileged': schemaBoolean, 'destination.address': schemaString, 'destination.as.number': schemaStringOrNumber, 'destination.as.organization.name': schemaString, @@ -218,10 +219,28 @@ const EcsOptional = rt.partial({ 'dll.pe.company': schemaString, 'dll.pe.description': schemaString, 'dll.pe.file_version': schemaString, + 'dll.pe.go_import_hash': schemaString, + 'dll.pe.go_imports': schemaUnknown, + 'dll.pe.go_imports_names_entropy': schemaStringOrNumber, + 'dll.pe.go_imports_names_var_entropy': schemaStringOrNumber, + 'dll.pe.go_stripped': schemaBoolean, 'dll.pe.imphash': schemaString, + 'dll.pe.import_hash': schemaString, + 'dll.pe.imports': schemaUnknownArray, + 'dll.pe.imports_names_entropy': schemaStringOrNumber, + 'dll.pe.imports_names_var_entropy': schemaStringOrNumber, 'dll.pe.original_file_name': schemaString, 'dll.pe.pehash': schemaString, 'dll.pe.product': schemaString, + 'dll.pe.sections': rt.array( + rt.partial({ + entropy: schemaStringOrNumber, + name: schemaString, + physical_size: schemaStringOrNumber, + var_entropy: schemaStringOrNumber, + virtual_size: schemaStringOrNumber, + }) + ), 'dns.answers': rt.array( rt.partial({ class: schemaString, @@ -307,6 +326,8 @@ const EcsOptional = rt.partial({ 'faas.execution': schemaString, 'faas.id': schemaString, 'faas.name': schemaString, + 'faas.trigger.request_id': schemaString, + 'faas.trigger.type': schemaString, 'faas.version': schemaString, 'file.accessed': schemaDate, 'file.attributes': schemaStringArray, @@ -329,6 +350,11 @@ const EcsOptional = rt.partial({ 'file.elf.cpu_type': schemaString, 'file.elf.creation_date': schemaDate, 'file.elf.exports': schemaUnknownArray, + 'file.elf.go_import_hash': schemaString, + 'file.elf.go_imports': schemaUnknown, + 'file.elf.go_imports_names_entropy': schemaStringOrNumber, + 'file.elf.go_imports_names_var_entropy': schemaStringOrNumber, + 'file.elf.go_stripped': schemaBoolean, 'file.elf.header.abi_version': schemaString, 'file.elf.header.class': schemaString, 'file.elf.header.data': schemaString, @@ -337,7 +363,10 @@ const EcsOptional = rt.partial({ 'file.elf.header.os_abi': schemaString, 'file.elf.header.type': schemaString, 'file.elf.header.version': schemaString, + 'file.elf.import_hash': schemaString, 'file.elf.imports': schemaUnknownArray, + 'file.elf.imports_names_entropy': schemaStringOrNumber, + 'file.elf.imports_names_var_entropy': schemaStringOrNumber, 'file.elf.sections': rt.array( rt.partial({ chi2: schemaStringOrNumber, @@ -347,6 +376,7 @@ const EcsOptional = rt.partial({ physical_offset: schemaString, physical_size: schemaStringOrNumber, type: schemaString, + var_entropy: schemaStringOrNumber, virtual_address: schemaStringOrNumber, virtual_size: schemaStringOrNumber, }) @@ -371,6 +401,25 @@ const EcsOptional = rt.partial({ 'file.hash.ssdeep': schemaString, 'file.hash.tlsh': schemaString, 'file.inode': schemaString, + 'file.macho.go_import_hash': schemaString, + 'file.macho.go_imports': schemaUnknown, + 'file.macho.go_imports_names_entropy': schemaStringOrNumber, + 'file.macho.go_imports_names_var_entropy': schemaStringOrNumber, + 'file.macho.go_stripped': schemaBoolean, + 'file.macho.import_hash': schemaString, + 'file.macho.imports': schemaUnknownArray, + 'file.macho.imports_names_entropy': schemaStringOrNumber, + 'file.macho.imports_names_var_entropy': schemaStringOrNumber, + 'file.macho.sections': rt.array( + rt.partial({ + entropy: schemaStringOrNumber, + name: schemaString, + physical_size: schemaStringOrNumber, + var_entropy: schemaStringOrNumber, + virtual_size: schemaStringOrNumber, + }) + ), + 'file.macho.symhash': schemaString, 'file.mime_type': schemaString, 'file.mode': schemaString, 'file.mtime': schemaDate, @@ -381,10 +430,28 @@ const EcsOptional = rt.partial({ 'file.pe.company': schemaString, 'file.pe.description': schemaString, 'file.pe.file_version': schemaString, + 'file.pe.go_import_hash': schemaString, + 'file.pe.go_imports': schemaUnknown, + 'file.pe.go_imports_names_entropy': schemaStringOrNumber, + 'file.pe.go_imports_names_var_entropy': schemaStringOrNumber, + 'file.pe.go_stripped': schemaBoolean, 'file.pe.imphash': schemaString, + 'file.pe.import_hash': schemaString, + 'file.pe.imports': schemaUnknownArray, + 'file.pe.imports_names_entropy': schemaStringOrNumber, + 'file.pe.imports_names_var_entropy': schemaStringOrNumber, 'file.pe.original_file_name': schemaString, 'file.pe.pehash': schemaString, 'file.pe.product': schemaString, + 'file.pe.sections': rt.array( + rt.partial({ + entropy: schemaStringOrNumber, + name: schemaString, + physical_size: schemaStringOrNumber, + var_entropy: schemaStringOrNumber, + virtual_size: schemaStringOrNumber, + }) + ), 'file.size': schemaStringOrNumber, 'file.target_path': schemaString, 'file.type': schemaString, @@ -525,8 +592,10 @@ const EcsOptional = rt.partial({ 'orchestrator.cluster.version': schemaString, 'orchestrator.namespace': schemaString, 'orchestrator.organization': schemaString, + 'orchestrator.resource.annotation': schemaStringArray, 'orchestrator.resource.id': schemaString, 'orchestrator.resource.ip': schemaStringArray, + 'orchestrator.resource.label': schemaStringArray, 'orchestrator.resource.name': schemaString, 'orchestrator.resource.parent.type': schemaString, 'orchestrator.resource.type': schemaString, @@ -563,6 +632,11 @@ const EcsOptional = rt.partial({ 'process.elf.cpu_type': schemaString, 'process.elf.creation_date': schemaDate, 'process.elf.exports': schemaUnknownArray, + 'process.elf.go_import_hash': schemaString, + 'process.elf.go_imports': schemaUnknown, + 'process.elf.go_imports_names_entropy': schemaStringOrNumber, + 'process.elf.go_imports_names_var_entropy': schemaStringOrNumber, + 'process.elf.go_stripped': schemaBoolean, 'process.elf.header.abi_version': schemaString, 'process.elf.header.class': schemaString, 'process.elf.header.data': schemaString, @@ -571,7 +645,10 @@ const EcsOptional = rt.partial({ 'process.elf.header.os_abi': schemaString, 'process.elf.header.type': schemaString, 'process.elf.header.version': schemaString, + 'process.elf.import_hash': schemaString, 'process.elf.imports': schemaUnknownArray, + 'process.elf.imports_names_entropy': schemaStringOrNumber, + 'process.elf.imports_names_var_entropy': schemaStringOrNumber, 'process.elf.sections': rt.array( rt.partial({ chi2: schemaStringOrNumber, @@ -581,6 +658,7 @@ const EcsOptional = rt.partial({ physical_offset: schemaString, physical_size: schemaStringOrNumber, type: schemaString, + var_entropy: schemaStringOrNumber, virtual_address: schemaStringOrNumber, virtual_size: schemaStringOrNumber, }) @@ -614,7 +692,9 @@ const EcsOptional = rt.partial({ 'process.entry_leader.parent.session_leader.entity_id': schemaString, 'process.entry_leader.parent.session_leader.pid': schemaStringOrNumber, 'process.entry_leader.parent.session_leader.start': schemaDate, + 'process.entry_leader.parent.session_leader.vpid': schemaStringOrNumber, 'process.entry_leader.parent.start': schemaDate, + 'process.entry_leader.parent.vpid': schemaStringOrNumber, 'process.entry_leader.pid': schemaStringOrNumber, 'process.entry_leader.real_group.id': schemaString, 'process.entry_leader.real_group.name': schemaString, @@ -630,6 +710,7 @@ const EcsOptional = rt.partial({ 'process.entry_leader.supplemental_groups.name': schemaString, 'process.entry_leader.user.id': schemaString, 'process.entry_leader.user.name': schemaString, + 'process.entry_leader.vpid': schemaStringOrNumber, 'process.entry_leader.working_directory': schemaString, 'process.env_vars': schemaStringArray, 'process.executable': schemaString, @@ -658,6 +739,7 @@ const EcsOptional = rt.partial({ 'process.group_leader.supplemental_groups.name': schemaString, 'process.group_leader.user.id': schemaString, 'process.group_leader.user.name': schemaString, + 'process.group_leader.vpid': schemaStringOrNumber, 'process.group_leader.working_directory': schemaString, 'process.hash.md5': schemaString, 'process.hash.sha1': schemaString, @@ -667,6 +749,25 @@ const EcsOptional = rt.partial({ 'process.hash.ssdeep': schemaString, 'process.hash.tlsh': schemaString, 'process.interactive': schemaBoolean, + 'process.macho.go_import_hash': schemaString, + 'process.macho.go_imports': schemaUnknown, + 'process.macho.go_imports_names_entropy': schemaStringOrNumber, + 'process.macho.go_imports_names_var_entropy': schemaStringOrNumber, + 'process.macho.go_stripped': schemaBoolean, + 'process.macho.import_hash': schemaString, + 'process.macho.imports': schemaUnknownArray, + 'process.macho.imports_names_entropy': schemaStringOrNumber, + 'process.macho.imports_names_var_entropy': schemaStringOrNumber, + 'process.macho.sections': rt.array( + rt.partial({ + entropy: schemaStringOrNumber, + name: schemaString, + physical_size: schemaStringOrNumber, + var_entropy: schemaStringOrNumber, + virtual_size: schemaStringOrNumber, + }) + ), + 'process.macho.symhash': schemaString, 'process.name': schemaString, 'process.parent.args': schemaStringArray, 'process.parent.args_count': schemaStringOrNumber, @@ -685,6 +786,11 @@ const EcsOptional = rt.partial({ 'process.parent.elf.cpu_type': schemaString, 'process.parent.elf.creation_date': schemaDate, 'process.parent.elf.exports': schemaUnknownArray, + 'process.parent.elf.go_import_hash': schemaString, + 'process.parent.elf.go_imports': schemaUnknown, + 'process.parent.elf.go_imports_names_entropy': schemaStringOrNumber, + 'process.parent.elf.go_imports_names_var_entropy': schemaStringOrNumber, + 'process.parent.elf.go_stripped': schemaBoolean, 'process.parent.elf.header.abi_version': schemaString, 'process.parent.elf.header.class': schemaString, 'process.parent.elf.header.data': schemaString, @@ -693,7 +799,10 @@ const EcsOptional = rt.partial({ 'process.parent.elf.header.os_abi': schemaString, 'process.parent.elf.header.type': schemaString, 'process.parent.elf.header.version': schemaString, + 'process.parent.elf.import_hash': schemaString, 'process.parent.elf.imports': schemaUnknownArray, + 'process.parent.elf.imports_names_entropy': schemaStringOrNumber, + 'process.parent.elf.imports_names_var_entropy': schemaStringOrNumber, 'process.parent.elf.sections': rt.array( rt.partial({ chi2: schemaStringOrNumber, @@ -703,6 +812,7 @@ const EcsOptional = rt.partial({ physical_offset: schemaString, physical_size: schemaStringOrNumber, type: schemaString, + var_entropy: schemaStringOrNumber, virtual_address: schemaStringOrNumber, virtual_size: schemaStringOrNumber, }) @@ -724,6 +834,7 @@ const EcsOptional = rt.partial({ 'process.parent.group_leader.entity_id': schemaString, 'process.parent.group_leader.pid': schemaStringOrNumber, 'process.parent.group_leader.start': schemaDate, + 'process.parent.group_leader.vpid': schemaStringOrNumber, 'process.parent.hash.md5': schemaString, 'process.parent.hash.sha1': schemaString, 'process.parent.hash.sha256': schemaString, @@ -732,15 +843,52 @@ const EcsOptional = rt.partial({ 'process.parent.hash.ssdeep': schemaString, 'process.parent.hash.tlsh': schemaString, 'process.parent.interactive': schemaBoolean, + 'process.parent.macho.go_import_hash': schemaString, + 'process.parent.macho.go_imports': schemaUnknown, + 'process.parent.macho.go_imports_names_entropy': schemaStringOrNumber, + 'process.parent.macho.go_imports_names_var_entropy': schemaStringOrNumber, + 'process.parent.macho.go_stripped': schemaBoolean, + 'process.parent.macho.import_hash': schemaString, + 'process.parent.macho.imports': schemaUnknownArray, + 'process.parent.macho.imports_names_entropy': schemaStringOrNumber, + 'process.parent.macho.imports_names_var_entropy': schemaStringOrNumber, + 'process.parent.macho.sections': rt.array( + rt.partial({ + entropy: schemaStringOrNumber, + name: schemaString, + physical_size: schemaStringOrNumber, + var_entropy: schemaStringOrNumber, + virtual_size: schemaStringOrNumber, + }) + ), + 'process.parent.macho.symhash': schemaString, 'process.parent.name': schemaString, 'process.parent.pe.architecture': schemaString, 'process.parent.pe.company': schemaString, 'process.parent.pe.description': schemaString, 'process.parent.pe.file_version': schemaString, + 'process.parent.pe.go_import_hash': schemaString, + 'process.parent.pe.go_imports': schemaUnknown, + 'process.parent.pe.go_imports_names_entropy': schemaStringOrNumber, + 'process.parent.pe.go_imports_names_var_entropy': schemaStringOrNumber, + 'process.parent.pe.go_stripped': schemaBoolean, 'process.parent.pe.imphash': schemaString, + 'process.parent.pe.import_hash': schemaString, + 'process.parent.pe.imports': schemaUnknownArray, + 'process.parent.pe.imports_names_entropy': schemaStringOrNumber, + 'process.parent.pe.imports_names_var_entropy': schemaStringOrNumber, 'process.parent.pe.original_file_name': schemaString, 'process.parent.pe.pehash': schemaString, 'process.parent.pe.product': schemaString, + 'process.parent.pe.sections': rt.array( + rt.partial({ + entropy: schemaStringOrNumber, + name: schemaString, + physical_size: schemaStringOrNumber, + var_entropy: schemaStringOrNumber, + virtual_size: schemaStringOrNumber, + }) + ), 'process.parent.pgid': schemaStringOrNumber, 'process.parent.pid': schemaStringOrNumber, 'process.parent.real_group.id': schemaString, @@ -754,21 +902,42 @@ const EcsOptional = rt.partial({ 'process.parent.start': schemaDate, 'process.parent.supplemental_groups.id': schemaString, 'process.parent.supplemental_groups.name': schemaString, + 'process.parent.thread.capabilities.effective': schemaStringArray, + 'process.parent.thread.capabilities.permitted': schemaStringArray, 'process.parent.thread.id': schemaStringOrNumber, 'process.parent.thread.name': schemaString, 'process.parent.title': schemaString, 'process.parent.uptime': schemaStringOrNumber, 'process.parent.user.id': schemaString, 'process.parent.user.name': schemaString, + 'process.parent.vpid': schemaStringOrNumber, 'process.parent.working_directory': schemaString, 'process.pe.architecture': schemaString, 'process.pe.company': schemaString, 'process.pe.description': schemaString, 'process.pe.file_version': schemaString, + 'process.pe.go_import_hash': schemaString, + 'process.pe.go_imports': schemaUnknown, + 'process.pe.go_imports_names_entropy': schemaStringOrNumber, + 'process.pe.go_imports_names_var_entropy': schemaStringOrNumber, + 'process.pe.go_stripped': schemaBoolean, 'process.pe.imphash': schemaString, + 'process.pe.import_hash': schemaString, + 'process.pe.imports': schemaUnknownArray, + 'process.pe.imports_names_entropy': schemaStringOrNumber, + 'process.pe.imports_names_var_entropy': schemaStringOrNumber, 'process.pe.original_file_name': schemaString, 'process.pe.pehash': schemaString, 'process.pe.product': schemaString, + 'process.pe.sections': rt.array( + rt.partial({ + entropy: schemaStringOrNumber, + name: schemaString, + physical_size: schemaStringOrNumber, + var_entropy: schemaStringOrNumber, + virtual_size: schemaStringOrNumber, + }) + ), 'process.pgid': schemaStringOrNumber, 'process.pid': schemaStringOrNumber, 'process.previous.args': schemaStringArray, @@ -796,7 +965,9 @@ const EcsOptional = rt.partial({ 'process.session_leader.parent.session_leader.entity_id': schemaString, 'process.session_leader.parent.session_leader.pid': schemaStringOrNumber, 'process.session_leader.parent.session_leader.start': schemaDate, + 'process.session_leader.parent.session_leader.vpid': schemaStringOrNumber, 'process.session_leader.parent.start': schemaDate, + 'process.session_leader.parent.vpid': schemaStringOrNumber, 'process.session_leader.pid': schemaStringOrNumber, 'process.session_leader.real_group.id': schemaString, 'process.session_leader.real_group.name': schemaString, @@ -812,16 +983,20 @@ const EcsOptional = rt.partial({ 'process.session_leader.supplemental_groups.name': schemaString, 'process.session_leader.user.id': schemaString, 'process.session_leader.user.name': schemaString, + 'process.session_leader.vpid': schemaStringOrNumber, 'process.session_leader.working_directory': schemaString, 'process.start': schemaDate, 'process.supplemental_groups.id': schemaString, 'process.supplemental_groups.name': schemaString, + 'process.thread.capabilities.effective': schemaStringArray, + 'process.thread.capabilities.permitted': schemaStringArray, 'process.thread.id': schemaStringOrNumber, 'process.thread.name': schemaString, 'process.title': schemaString, 'process.uptime': schemaStringOrNumber, 'process.user.id': schemaString, 'process.user.name': schemaString, + 'process.vpid': schemaStringOrNumber, 'process.working_directory': schemaString, 'registry.data.bytes': schemaString, 'registry.data.strings': schemaStringArray, @@ -994,6 +1169,11 @@ const EcsOptional = rt.partial({ 'threat.indicator.file.elf.cpu_type': schemaString, 'threat.indicator.file.elf.creation_date': schemaDate, 'threat.indicator.file.elf.exports': schemaUnknownArray, + 'threat.indicator.file.elf.go_import_hash': schemaString, + 'threat.indicator.file.elf.go_imports': schemaUnknown, + 'threat.indicator.file.elf.go_imports_names_entropy': schemaStringOrNumber, + 'threat.indicator.file.elf.go_imports_names_var_entropy': schemaStringOrNumber, + 'threat.indicator.file.elf.go_stripped': schemaBoolean, 'threat.indicator.file.elf.header.abi_version': schemaString, 'threat.indicator.file.elf.header.class': schemaString, 'threat.indicator.file.elf.header.data': schemaString, @@ -1002,7 +1182,10 @@ const EcsOptional = rt.partial({ 'threat.indicator.file.elf.header.os_abi': schemaString, 'threat.indicator.file.elf.header.type': schemaString, 'threat.indicator.file.elf.header.version': schemaString, + 'threat.indicator.file.elf.import_hash': schemaString, 'threat.indicator.file.elf.imports': schemaUnknownArray, + 'threat.indicator.file.elf.imports_names_entropy': schemaStringOrNumber, + 'threat.indicator.file.elf.imports_names_var_entropy': schemaStringOrNumber, 'threat.indicator.file.elf.sections': rt.array( rt.partial({ chi2: schemaStringOrNumber, @@ -1012,6 +1195,7 @@ const EcsOptional = rt.partial({ physical_offset: schemaString, physical_size: schemaStringOrNumber, type: schemaString, + var_entropy: schemaStringOrNumber, virtual_address: schemaStringOrNumber, virtual_size: schemaStringOrNumber, }) @@ -1046,10 +1230,28 @@ const EcsOptional = rt.partial({ 'threat.indicator.file.pe.company': schemaString, 'threat.indicator.file.pe.description': schemaString, 'threat.indicator.file.pe.file_version': schemaString, + 'threat.indicator.file.pe.go_import_hash': schemaString, + 'threat.indicator.file.pe.go_imports': schemaUnknown, + 'threat.indicator.file.pe.go_imports_names_entropy': schemaStringOrNumber, + 'threat.indicator.file.pe.go_imports_names_var_entropy': schemaStringOrNumber, + 'threat.indicator.file.pe.go_stripped': schemaBoolean, 'threat.indicator.file.pe.imphash': schemaString, + 'threat.indicator.file.pe.import_hash': schemaString, + 'threat.indicator.file.pe.imports': schemaUnknownArray, + 'threat.indicator.file.pe.imports_names_entropy': schemaStringOrNumber, + 'threat.indicator.file.pe.imports_names_var_entropy': schemaStringOrNumber, 'threat.indicator.file.pe.original_file_name': schemaString, 'threat.indicator.file.pe.pehash': schemaString, 'threat.indicator.file.pe.product': schemaString, + 'threat.indicator.file.pe.sections': rt.array( + rt.partial({ + entropy: schemaStringOrNumber, + name: schemaString, + physical_size: schemaStringOrNumber, + var_entropy: schemaStringOrNumber, + virtual_size: schemaStringOrNumber, + }) + ), 'threat.indicator.file.size': schemaStringOrNumber, 'threat.indicator.file.target_path': schemaString, 'threat.indicator.file.type': schemaString, @@ -1095,6 +1297,7 @@ const EcsOptional = rt.partial({ 'threat.indicator.marking.tlp': schemaString, 'threat.indicator.marking.tlp_version': schemaString, 'threat.indicator.modified_at': schemaDate, + 'threat.indicator.name': schemaString, 'threat.indicator.port': schemaStringOrNumber, 'threat.indicator.provider': schemaString, 'threat.indicator.reference': schemaString, diff --git a/packages/kbn-ecs/generated/base.ts b/packages/kbn-ecs/generated/base.ts index f9568a9f5b957..f1e8fc0dd02f4 100644 --- a/packages/kbn-ecs/generated/base.ts +++ b/packages/kbn-ecs/generated/base.ts @@ -32,5 +32,5 @@ export interface EcsBase { /** * List of keywords used to tag each event. */ - tags?: string[]; + tags?: string | string[]; } diff --git a/packages/kbn-ecs/generated/client.ts b/packages/kbn-ecs/generated/client.ts index 21fe4898e2c9e..bdd31f6179fc3 100644 --- a/packages/kbn-ecs/generated/client.ts +++ b/packages/kbn-ecs/generated/client.ts @@ -181,6 +181,6 @@ export interface EcsClient { /** * Array of user roles at the time of the event. */ - roles?: string[]; + roles?: string | string[]; }; } diff --git a/packages/kbn-ecs/generated/container.ts b/packages/kbn-ecs/generated/container.ts index d7c760d2ca803..3d1b5b2717955 100644 --- a/packages/kbn-ecs/generated/container.ts +++ b/packages/kbn-ecs/generated/container.ts @@ -43,7 +43,7 @@ export interface EcsContainer { /** * An array of digests of the image the container was built on. Each digest consists of the hash algorithm and value in this format: `algorithm:value`. Algorithm names should align with the field names in the ECS hash field set. */ - all?: string[]; + all?: string | string[]; }; /** @@ -53,7 +53,7 @@ export interface EcsContainer { /** * Container image tags. */ - tag?: string[]; + tag?: string | string[]; }; /** @@ -91,4 +91,10 @@ export interface EcsContainer { * Runtime managing this container. */ runtime?: string; + security_context?: { + /** + * Indicates whether the container is running in privileged mode. + */ + privileged?: boolean; + }; } diff --git a/packages/kbn-ecs/generated/destination.ts b/packages/kbn-ecs/generated/destination.ts index 351e14526b9d8..19f2321331aba 100644 --- a/packages/kbn-ecs/generated/destination.ts +++ b/packages/kbn-ecs/generated/destination.ts @@ -180,6 +180,6 @@ export interface EcsDestination { /** * Array of user roles at the time of the event. */ - roles?: string[]; + roles?: string | string[]; }; } diff --git a/packages/kbn-ecs/generated/device.ts b/packages/kbn-ecs/generated/device.ts index 83969cc6b4a56..1845cfc2d5e29 100644 --- a/packages/kbn-ecs/generated/device.ts +++ b/packages/kbn-ecs/generated/device.ts @@ -12,7 +12,7 @@ */ export interface EcsDevice { /** - * The unique identifier of a device. The identifier must not change across application sessions but stay fixex for an instance of a (mobile) device. + * The unique identifier of a device. The identifier must not change across application sessions but stay fixed for an instance of a (mobile) device. * On iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. * For GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user. */ diff --git a/packages/kbn-ecs/generated/dll.ts b/packages/kbn-ecs/generated/dll.ts index aec7584e5e937..7da468d175ffe 100644 --- a/packages/kbn-ecs/generated/dll.ts +++ b/packages/kbn-ecs/generated/dll.ts @@ -117,11 +117,49 @@ export interface EcsDll { * Internal version of the file, provided at compile-time. */ file_version?: string; + /** + * A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; /** * A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. */ imphash?: string; + /** + * A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is a synonym for imphash. + */ + import_hash?: string; + /** + * List of imported element names and types. + */ + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; /** * Internal name of the file, provided at compile-time. */ @@ -135,5 +173,10 @@ export interface EcsDll { * Internal product name of the file, provided at compile-time. */ product?: string; + /** + * An array containing an object for each section of the PE file. + * The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`. + */ + sections?: Record | Array>; }; } diff --git a/packages/kbn-ecs/generated/dns.ts b/packages/kbn-ecs/generated/dns.ts index e2a8b122d3308..56b32500c4d8d 100644 --- a/packages/kbn-ecs/generated/dns.ts +++ b/packages/kbn-ecs/generated/dns.ts @@ -16,11 +16,11 @@ export interface EcsDns { * The main keys that should be present in these objects are defined by ECS. Records that have more information may contain more keys than what ECS defines. * Not all DNS data sources give all details about DNS answers. At minimum, answer objects must contain the `data` key. If more information is available, map as much of it to ECS as possible, and add any additional fields to the answer objects as custom fields. */ - answers?: Array>; + answers?: Record | Array>; /** * Array of 2 letter DNS header flags. */ - header_flags?: string[]; + header_flags?: string | string[]; /** * The DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response. */ @@ -65,7 +65,7 @@ export interface EcsDns { * Array containing all IPs seen in `answers.data`. * The `answers` array can be difficult to use, because of the variety of data formats it can contain. Extracting all IP addresses seen in there to `dns.resolved_ip` makes it possible to index them as IP addresses, and makes them easier to visualize and query for. */ - resolved_ip?: string[]; + resolved_ip?: string | string[]; /** * The DNS response code. */ diff --git a/packages/kbn-ecs/generated/ecs.ts b/packages/kbn-ecs/generated/ecs.ts index be166fca73f6c..a53ea6b01baaa 100644 --- a/packages/kbn-ecs/generated/ecs.ts +++ b/packages/kbn-ecs/generated/ecs.ts @@ -14,5 +14,5 @@ export interface EcsEcs { * ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. * When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. */ - version: '8.6.1'; + version: '8.10.0'; } diff --git a/packages/kbn-ecs/generated/ecs_flat.ts b/packages/kbn-ecs/generated/ecs_flat.ts index 8c230c07e6460..40e1764342dd4 100644 --- a/packages/kbn-ecs/generated/ecs_flat.ts +++ b/packages/kbn-ecs/generated/ecs_flat.ts @@ -1138,6 +1138,16 @@ export const EcsFlat = { short: 'Runtime managing this container.', type: 'keyword', }, + 'container.security_context.privileged': { + dashed_name: 'container-security-context-privileged', + description: 'Indicates whether the container is running in privileged mode.', + flat_name: 'container.security_context.privileged', + level: 'extended', + name: 'security_context.privileged', + normalize: [], + short: 'Indicates whether the container is running in privileged mode.', + type: 'boolean', + }, 'data_stream.dataset': { dashed_name: 'data-stream-dataset', description: @@ -1640,7 +1650,7 @@ export const EcsFlat = { 'device.id': { dashed_name: 'device-id', description: - 'The unique identifier of a device. The identifier must not change across application sessions but stay fixex for an instance of a (mobile) device. \nOn iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application.\nFor GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user.', + 'The unique identifier of a device. The identifier must not change across application sessions but stay fixed for an instance of a (mobile) device. \nOn iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application.\nFor GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user.', example: '00000000-54b3-e7c7-0000-000046bffd97', flat_name: 'device.id', ignore_above: 1024, @@ -1965,6 +1975,67 @@ export const EcsFlat = { short: 'Process name.', type: 'keyword', }, + 'dll.pe.go_import_hash': { + dashed_name: 'dll-pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'dll.pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'dll.pe.go_imports': { + dashed_name: 'dll-pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'dll.pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'pe', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'dll.pe.go_imports_names_entropy': { + dashed_name: 'dll-pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'dll.pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'dll.pe.go_imports_names_var_entropy': { + dashed_name: 'dll-pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'dll.pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'dll.pe.go_stripped': { + dashed_name: 'dll-pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'dll.pe.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'pe', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'dll.pe.imphash': { dashed_name: 'dll-pe-imphash', description: @@ -1979,6 +2050,57 @@ export const EcsFlat = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'dll.pe.import_hash': { + dashed_name: 'dll-pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'dll.pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'dll.pe.imports': { + dashed_name: 'dll-pe-imports', + description: 'List of imported element names and types.', + flat_name: 'dll.pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'pe', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'dll.pe.imports_names_entropy': { + dashed_name: 'dll-pe-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'dll.pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'dll.pe.imports_names_var_entropy': { + dashed_name: 'dll-pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'dll.pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'dll.pe.original_file_name': { dashed_name: 'dll-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -2019,6 +2141,78 @@ export const EcsFlat = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, + 'dll.pe.sections': { + dashed_name: 'dll-pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'dll.pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'pe', + short: 'Section information of the PE file.', + type: 'nested', + }, + 'dll.pe.sections.entropy': { + dashed_name: 'dll-pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'dll.pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'dll.pe.sections.name': { + dashed_name: 'dll-pe-sections-name', + description: 'PE Section List name.', + flat_name: 'dll.pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List name.', + type: 'keyword', + }, + 'dll.pe.sections.physical_size': { + dashed_name: 'dll-pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'dll.pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List physical size.', + type: 'long', + }, + 'dll.pe.sections.var_entropy': { + dashed_name: 'dll-pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'dll.pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'dll.pe.sections.virtual_size': { + dashed_name: 'dll-pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'dll.pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, 'dns.answers': { dashed_name: 'dns-answers', description: @@ -2670,6 +2864,24 @@ export const EcsFlat = { }, 'event.category': { allowed_values: [ + { + description: + 'Events in this category annotate API calls that occured on a system. Typical sources for those events could be from the Operating System level through the native libraries (for example Windows Win32, Linux libc, etc.), or managed sources of events (such as ETW, syslog), but can also include network protocols (such as SOAP, RPC, Websocket, REST, etc.)', + expected_event_types: [ + 'access', + 'admin', + 'allowed', + 'change', + 'creation', + 'deletion', + 'denied', + 'end', + 'info', + 'start', + 'user', + ], + name: 'api', + }, { description: 'Events in this category are related to the challenge and response process in which credentials are supplied and verified to allow the creation of a session. Common sources for these logs are Windows event logs and ssh logs. Visualize and analyze events in this category to look for failed logins, and other authentication-related activity.', @@ -2703,7 +2915,7 @@ export const EcsFlat = { { description: 'Relating to a set of information that has been created on, or has existed on a filesystem. Use this category of events to visualize and analyze the creation, access, and deletions of files. Events in this category can come from both host-based and network-based sources. An example source of a network-based detection of a file transfer would be the Zeek file.log.', - expected_event_types: ['change', 'creation', 'deletion', 'info'], + expected_event_types: ['access', 'change', 'creation', 'deletion', 'info'], name: 'file', }, { @@ -2724,6 +2936,12 @@ export const EcsFlat = { expected_event_types: ['allowed', 'denied', 'info'], name: 'intrusion_detection', }, + { + description: + 'Events in this category refer to the loading of a library, such as (dll / so / dynlib), into a process. Use this category to visualize and analyze library loading related activity on hosts. Keep in mind that driver related activity will be captured under the "driver" category above.', + expected_event_types: ['start'], + name: 'library', + }, { description: 'Malware detection events and alerts. Use this category to visualize and analyze malware detections from EDR/EPP systems such as Elastic Endpoint Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems such as Suricata, or other sources of malware-related events such as Palo Alto Networks threat logs and Wildfire logs.', @@ -2816,7 +3034,7 @@ export const EcsFlat = { 'event.created': { dashed_name: 'event-created', description: - "event.created contains the date/time when the event was first read by an agent, or by your pipeline.\nThis field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event.\nIn most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source.\nIn case the two timestamps are identical, @timestamp should be used.", + "`event.created` contains the date/time when the event was first read by an agent, or by your pipeline.\nThis field is distinct from `@timestamp` in that `@timestamp` typically contain the time extracted from the original event.\nIn most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source.\nIn case the two timestamps are identical, `@timestamp` should be used.", example: '2016-05-23T08:05:34.857Z', flat_name: 'event.created', level: 'core', @@ -2841,7 +3059,7 @@ export const EcsFlat = { 'event.duration': { dashed_name: 'event-duration', description: - 'Duration of the event in nanoseconds.\nIf event.start and event.end are known this value should be the difference between the end and start time.', + 'Duration of the event in nanoseconds.\nIf `event.start` and `event.end` are known this value should be the difference between the end and start time.', flat_name: 'event.duration', format: 'duration', input_format: 'nanoseconds', @@ -2856,13 +3074,13 @@ export const EcsFlat = { 'event.end': { dashed_name: 'event-end', description: - 'event.end contains the date when the event ended or when the activity was last observed.', + '`event.end` contains the date when the event ended or when the activity was last observed.', flat_name: 'event.end', level: 'extended', name: 'end', normalize: [], short: - 'event.end contains the date when the event ended or when the activity was last observed.', + '`event.end` contains the date when the event ended or when the activity was last observed.', type: 'date', }, 'event.hash': { @@ -2910,6 +3128,12 @@ export const EcsFlat = { 'This value indicates an event such as an alert or notable event, triggered by a detection rule executing externally to the Elastic Stack.\n`event.kind:alert` is often populated for events coming from firewalls, intrusion detection systems, endpoint detection and response systems, and so on.\nThis value is not used by Elastic solutions for alert documents that are created by rules executing within the Kibana alerting framework.', name: 'alert', }, + { + beta: 'This event categorization value is beta and subject to change.', + description: + 'This value indicates events whose primary purpose is to store an inventory of assets/entities and their attributes. Assets/entities are objects (such as users and hosts) that are expected to be subjects of detailed analysis within the system.\nExamples include lists of user identities or accounts ingested from directory services such as Active Directory (AD), inventory of hosts pulled from configuration management databases (CMDB), and lists of cloud storage buckets pulled from cloud provider APIs.\nThis value is used by Elastic Security for asset management solutions. `event.kind: asset` is not used for normal system events or logs that are coming from an asset/entity, nor is it used for system events or logs coming from a directory or CMDB system.', + name: 'asset', + }, { description: 'The `enrichment` value indicates an event collected to provide additional context, often to other events.\nAn example is collecting indicators of compromise (IOCs) from a threat intelligence provider with the intent to use those values to enrich other events. The IOC events from the intelligence provider should be categorized as `event.kind:enrichment`.', @@ -2943,7 +3167,7 @@ export const EcsFlat = { ], dashed_name: 'event-kind', description: - 'This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy.\n`event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events.\nThe value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not.', + 'This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy.\n`event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events.\nThe value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data is coming in at a regular interval or not.', example: 'alert', flat_name: 'event.kind', ignore_above: 1024, @@ -3101,13 +3325,13 @@ export const EcsFlat = { 'event.start': { dashed_name: 'event-start', description: - 'event.start contains the date when the event started or when the activity was first observed.', + '`event.start` contains the date when the event started or when the activity was first observed.', flat_name: 'event.start', level: 'extended', name: 'start', normalize: [], short: - 'event.start contains the date when the event started or when the activity was first observed.', + '`event.start` contains the date when the event started or when the activity was first observed.', type: 'date', }, 'event.timezone': { @@ -3281,16 +3505,6 @@ export const EcsFlat = { short: 'The name of a serverless function.', type: 'keyword', }, - 'faas.trigger': { - dashed_name: 'faas-trigger', - description: 'Details about the function trigger.', - flat_name: 'faas.trigger', - level: 'extended', - name: 'trigger', - normalize: [], - short: 'Details about the function trigger.', - type: 'nested', - }, 'faas.trigger.request_id': { dashed_name: 'faas-trigger-request-id', description: 'The ID of the trigger request , message, event, etc.', @@ -3592,6 +3806,67 @@ export const EcsFlat = { short: 'List of exported element names and types.', type: 'flattened', }, + 'file.elf.go_import_hash': { + dashed_name: 'file-elf-go-import-hash', + description: + 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'file.elf.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the Go language imports in an ELF file.', + type: 'keyword', + }, + 'file.elf.go_imports': { + dashed_name: 'file-elf-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'file.elf.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'elf', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'file.elf.go_imports_names_entropy': { + dashed_name: 'file-elf-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'file.elf.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'file.elf.go_imports_names_var_entropy': { + dashed_name: 'file-elf-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'file.elf.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'file.elf.go_stripped': { + dashed_name: 'file-elf-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'file.elf.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'elf', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'file.elf.header.abi_version': { dashed_name: 'file-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -3688,6 +3963,20 @@ export const EcsFlat = { short: 'Version of the ELF header.', type: 'keyword', }, + 'file.elf.import_hash': { + dashed_name: 'file-elf-import-hash', + description: + 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'file.elf.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the imports in an ELF file.', + type: 'keyword', + }, 'file.elf.imports': { dashed_name: 'file-elf-imports', description: 'List of imported element names and types.', @@ -3699,6 +3988,32 @@ export const EcsFlat = { short: 'List of imported element names and types.', type: 'flattened', }, + 'file.elf.imports_names_entropy': { + dashed_name: 'file-elf-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'file.elf.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'file.elf.imports_names_var_entropy': { + dashed_name: 'file-elf-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'file.elf.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'file.elf.sections': { dashed_name: 'file-elf-sections', description: @@ -3795,6 +4110,18 @@ export const EcsFlat = { short: 'ELF Section List type.', type: 'keyword', }, + 'file.elf.sections.var_entropy': { + dashed_name: 'file-elf-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'file.elf.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, 'file.elf.sections.virtual_address': { dashed_name: 'file-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -4025,86 +4352,284 @@ export const EcsFlat = { short: 'Inode representing the file in the filesystem.', type: 'keyword', }, - 'file.mime_type': { - dashed_name: 'file-mime-type', + 'file.macho.go_import_hash': { + dashed_name: 'file-macho-go-import-hash', description: - 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', - flat_name: 'file.mime_type', + 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'file.macho.go_import_hash', ignore_above: 1024, level: 'extended', - name: 'mime_type', + name: 'go_import_hash', normalize: [], - short: 'Media type of file, document, or arrangement of bytes.', + original_fieldset: 'macho', + short: 'A hash of the Go language imports in a Mach-O file.', type: 'keyword', }, - 'file.mode': { - dashed_name: 'file-mode', - description: 'Mode of the file in octal representation.', - example: '0640', - flat_name: 'file.mode', - ignore_above: 1024, + 'file.macho.go_imports': { + dashed_name: 'file-macho-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'file.macho.go_imports', level: 'extended', - name: 'mode', + name: 'go_imports', normalize: [], - short: 'Mode of the file in octal representation.', - type: 'keyword', + original_fieldset: 'macho', + short: 'List of imported Go language element names and types.', + type: 'flattened', }, - 'file.mtime': { - dashed_name: 'file-mtime', - description: 'Last time the file content was modified.', - flat_name: 'file.mtime', + 'file.macho.go_imports_names_entropy': { + dashed_name: 'file-macho-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'file.macho.go_imports_names_entropy', + format: 'number', level: 'extended', - name: 'mtime', + name: 'go_imports_names_entropy', normalize: [], - short: 'Last time the file content was modified.', - type: 'date', + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', }, - 'file.name': { - dashed_name: 'file-name', - description: 'Name of the file including the extension, without the directory.', - example: 'example.png', - flat_name: 'file.name', - ignore_above: 1024, + 'file.macho.go_imports_names_var_entropy': { + dashed_name: 'file-macho-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'file.macho.go_imports_names_var_entropy', + format: 'number', level: 'extended', - name: 'name', + name: 'go_imports_names_var_entropy', normalize: [], - short: 'Name of the file including the extension, without the directory.', - type: 'keyword', + original_fieldset: 'macho', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', }, - 'file.owner': { - dashed_name: 'file-owner', - description: "File owner's username.", - example: 'alice', - flat_name: 'file.owner', - ignore_above: 1024, + 'file.macho.go_stripped': { + dashed_name: 'file-macho-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'file.macho.go_stripped', level: 'extended', - name: 'owner', + name: 'go_stripped', normalize: [], - short: "File owner's username.", - type: 'keyword', + original_fieldset: 'macho', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', }, - 'file.path': { - dashed_name: 'file-path', + 'file.macho.import_hash': { + dashed_name: 'file-macho-import-hash', description: - 'Full path to the file, including the file name. It should include the drive letter, when appropriate.', - example: '/home/alice/example.png', - flat_name: 'file.path', + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'file.macho.import_hash', ignore_above: 1024, level: 'extended', - multi_fields: [{ flat_name: 'file.path.text', name: 'text', type: 'match_only_text' }], - name: 'path', + name: 'import_hash', normalize: [], - short: 'Full path to the file, including the file name.', + original_fieldset: 'macho', + short: 'A hash of the imports in a Mach-O file.', type: 'keyword', }, - 'file.pe.architecture': { - dashed_name: 'file-pe-architecture', - description: 'CPU architecture target for the file.', - example: 'x64', - flat_name: 'file.pe.architecture', - ignore_above: 1024, + 'file.macho.imports': { + dashed_name: 'file-macho-imports', + description: 'List of imported element names and types.', + flat_name: 'file.macho.imports', level: 'extended', - name: 'architecture', + name: 'imports', + normalize: ['array'], + original_fieldset: 'macho', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'file.macho.imports_names_entropy': { + dashed_name: 'file-macho-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'file.macho.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'file.macho.imports_names_var_entropy': { + dashed_name: 'file-macho-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'file.macho.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'macho', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'file.macho.sections': { + dashed_name: 'file-macho-sections', + description: + 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', + flat_name: 'file.macho.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'macho', + short: 'Section information of the Mach-O file.', + type: 'nested', + }, + 'file.macho.sections.entropy': { + dashed_name: 'file-macho-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'file.macho.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'file.macho.sections.name': { + dashed_name: 'file-macho-sections-name', + description: 'Mach-O Section List name.', + flat_name: 'file.macho.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List name.', + type: 'keyword', + }, + 'file.macho.sections.physical_size': { + dashed_name: 'file-macho-sections-physical-size', + description: 'Mach-O Section List physical size.', + flat_name: 'file.macho.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List physical size.', + type: 'long', + }, + 'file.macho.sections.var_entropy': { + dashed_name: 'file-macho-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'file.macho.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'file.macho.sections.virtual_size': { + dashed_name: 'file-macho-sections-virtual-size', + description: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'file.macho.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, + 'file.macho.symhash': { + dashed_name: 'file-macho-symhash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', + example: 'd3ccf195b62a9279c3c19af1080497ec', + flat_name: 'file.macho.symhash', + ignore_above: 1024, + level: 'extended', + name: 'symhash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, + 'file.mime_type': { + dashed_name: 'file-mime-type', + description: + 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', + flat_name: 'file.mime_type', + ignore_above: 1024, + level: 'extended', + name: 'mime_type', + normalize: [], + short: 'Media type of file, document, or arrangement of bytes.', + type: 'keyword', + }, + 'file.mode': { + dashed_name: 'file-mode', + description: 'Mode of the file in octal representation.', + example: '0640', + flat_name: 'file.mode', + ignore_above: 1024, + level: 'extended', + name: 'mode', + normalize: [], + short: 'Mode of the file in octal representation.', + type: 'keyword', + }, + 'file.mtime': { + dashed_name: 'file-mtime', + description: 'Last time the file content was modified.', + flat_name: 'file.mtime', + level: 'extended', + name: 'mtime', + normalize: [], + short: 'Last time the file content was modified.', + type: 'date', + }, + 'file.name': { + dashed_name: 'file-name', + description: 'Name of the file including the extension, without the directory.', + example: 'example.png', + flat_name: 'file.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'Name of the file including the extension, without the directory.', + type: 'keyword', + }, + 'file.owner': { + dashed_name: 'file-owner', + description: "File owner's username.", + example: 'alice', + flat_name: 'file.owner', + ignore_above: 1024, + level: 'extended', + name: 'owner', + normalize: [], + short: "File owner's username.", + type: 'keyword', + }, + 'file.path': { + dashed_name: 'file-path', + description: + 'Full path to the file, including the file name. It should include the drive letter, when appropriate.', + example: '/home/alice/example.png', + flat_name: 'file.path', + ignore_above: 1024, + level: 'extended', + multi_fields: [{ flat_name: 'file.path.text', name: 'text', type: 'match_only_text' }], + name: 'path', + normalize: [], + short: 'Full path to the file, including the file name.', + type: 'keyword', + }, + 'file.pe.architecture': { + dashed_name: 'file-pe-architecture', + description: 'CPU architecture target for the file.', + example: 'x64', + flat_name: 'file.pe.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', normalize: [], original_fieldset: 'pe', short: 'CPU architecture target for the file.', @@ -4149,6 +4674,67 @@ export const EcsFlat = { short: 'Process name.', type: 'keyword', }, + 'file.pe.go_import_hash': { + dashed_name: 'file-pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'file.pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'file.pe.go_imports': { + dashed_name: 'file-pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'file.pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'pe', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'file.pe.go_imports_names_entropy': { + dashed_name: 'file-pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'file.pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'file.pe.go_imports_names_var_entropy': { + dashed_name: 'file-pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'file.pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'file.pe.go_stripped': { + dashed_name: 'file-pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'file.pe.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'pe', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'file.pe.imphash': { dashed_name: 'file-pe-imphash', description: @@ -4163,6 +4749,57 @@ export const EcsFlat = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'file.pe.import_hash': { + dashed_name: 'file-pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'file.pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'file.pe.imports': { + dashed_name: 'file-pe-imports', + description: 'List of imported element names and types.', + flat_name: 'file.pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'pe', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'file.pe.imports_names_entropy': { + dashed_name: 'file-pe-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'file.pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'file.pe.imports_names_var_entropy': { + dashed_name: 'file-pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'file.pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'file.pe.original_file_name': { dashed_name: 'file-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -4203,6 +4840,78 @@ export const EcsFlat = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, + 'file.pe.sections': { + dashed_name: 'file-pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'file.pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'pe', + short: 'Section information of the PE file.', + type: 'nested', + }, + 'file.pe.sections.entropy': { + dashed_name: 'file-pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'file.pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'file.pe.sections.name': { + dashed_name: 'file-pe-sections-name', + description: 'PE Section List name.', + flat_name: 'file.pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List name.', + type: 'keyword', + }, + 'file.pe.sections.physical_size': { + dashed_name: 'file-pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'file.pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List physical size.', + type: 'long', + }, + 'file.pe.sections.var_entropy': { + dashed_name: 'file-pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'file.pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'file.pe.sections.virtual_size': { + dashed_name: 'file-pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'file.pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, 'file.size': { dashed_name: 'file-size', description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', @@ -4871,7 +5580,7 @@ export const EcsFlat = { 'host.name': { dashed_name: 'host-name', description: - 'Name of the host.\nIt can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.', + 'Name of the host.\nIt can contain what hostname returns on Unix systems, the fully qualified domain name (FQDN), or a name specified by the user. The recommended value is the lowercase FQDN of the host.', flat_name: 'host.name', ignore_above: 1024, level: 'core', @@ -6390,6 +7099,18 @@ export const EcsFlat = { short: 'Organization affected by the event (for multi-tenant orchestrator setups).', type: 'keyword', }, + 'orchestrator.resource.annotation': { + dashed_name: 'orchestrator-resource-annotation', + description: 'The list of annotations added to the resource.', + example: "['key1:value1', 'key2:value2', 'key3:value3']", + flat_name: 'orchestrator.resource.annotation', + ignore_above: 1024, + level: 'extended', + name: 'resource.annotation', + normalize: ['array'], + short: 'The list of annotations added to the resource.', + type: 'keyword', + }, 'orchestrator.resource.id': { dashed_name: 'orchestrator-resource-id', description: 'Unique ID of the resource being acted upon.', @@ -6412,6 +7133,18 @@ export const EcsFlat = { short: 'IP address assigned to the resource associated with the event being observed.', type: 'ip', }, + 'orchestrator.resource.label': { + dashed_name: 'orchestrator-resource-label', + description: 'The list of labels added to the resource.', + example: "['key1:value1', 'key2:value2', 'key3:value3']", + flat_name: 'orchestrator.resource.label', + ignore_above: 1024, + level: 'extended', + name: 'resource.label', + normalize: ['array'], + short: 'The list of labels added to the resource.', + type: 'keyword', + }, 'orchestrator.resource.name': { dashed_name: 'orchestrator-resource-name', description: 'Name of the resource being acted upon.', @@ -6872,21 +7605,82 @@ export const EcsFlat = { short: 'List of exported element names and types.', type: 'flattened', }, - 'process.elf.header.abi_version': { - dashed_name: 'process-elf-header-abi-version', - description: 'Version of the ELF Application Binary Interface (ABI).', - flat_name: 'process.elf.header.abi_version', + 'process.elf.go_import_hash': { + dashed_name: 'process-elf-go-import-hash', + description: + 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'process.elf.go_import_hash', ignore_above: 1024, level: 'extended', - name: 'header.abi_version', + name: 'go_import_hash', normalize: [], original_fieldset: 'elf', - short: 'Version of the ELF Application Binary Interface (ABI).', + short: 'A hash of the Go language imports in an ELF file.', type: 'keyword', }, - 'process.elf.header.class': { - dashed_name: 'process-elf-header-class', - description: 'Header class of the ELF file.', + 'process.elf.go_imports': { + dashed_name: 'process-elf-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'process.elf.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'elf', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'process.elf.go_imports_names_entropy': { + dashed_name: 'process-elf-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.elf.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.elf.go_imports_names_var_entropy': { + dashed_name: 'process-elf-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.elf.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.elf.go_stripped': { + dashed_name: 'process-elf-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'process.elf.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'elf', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, + 'process.elf.header.abi_version': { + dashed_name: 'process-elf-header-abi-version', + description: 'Version of the ELF Application Binary Interface (ABI).', + flat_name: 'process.elf.header.abi_version', + ignore_above: 1024, + level: 'extended', + name: 'header.abi_version', + normalize: [], + original_fieldset: 'elf', + short: 'Version of the ELF Application Binary Interface (ABI).', + type: 'keyword', + }, + 'process.elf.header.class': { + dashed_name: 'process-elf-header-class', + description: 'Header class of the ELF file.', flat_name: 'process.elf.header.class', ignore_above: 1024, level: 'extended', @@ -6968,6 +7762,20 @@ export const EcsFlat = { short: 'Version of the ELF header.', type: 'keyword', }, + 'process.elf.import_hash': { + dashed_name: 'process-elf-import-hash', + description: + 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'process.elf.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the imports in an ELF file.', + type: 'keyword', + }, 'process.elf.imports': { dashed_name: 'process-elf-imports', description: 'List of imported element names and types.', @@ -6979,6 +7787,32 @@ export const EcsFlat = { short: 'List of imported element names and types.', type: 'flattened', }, + 'process.elf.imports_names_entropy': { + dashed_name: 'process-elf-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.elf.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.elf.imports_names_var_entropy': { + dashed_name: 'process-elf-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.elf.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'process.elf.sections': { dashed_name: 'process-elf-sections', description: @@ -7075,6 +7909,18 @@ export const EcsFlat = { short: 'ELF Section List type.', type: 'keyword', }, + 'process.elf.sections.var_entropy': { + dashed_name: 'process-elf-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'process.elf.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, 'process.elf.sections.virtual_address': { dashed_name: 'process-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -7456,6 +8302,20 @@ export const EcsFlat = { short: 'The time the process started.', type: 'date', }, + 'process.entry_leader.parent.session_leader.vpid': { + dashed_name: 'process-entry-leader-parent-session-leader-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.entry_leader.parent.session_leader.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.entry_leader.parent.start': { dashed_name: 'process-entry-leader-parent-start', description: 'The time the process started.', @@ -7468,6 +8328,20 @@ export const EcsFlat = { short: 'The time the process started.', type: 'date', }, + 'process.entry_leader.parent.vpid': { + dashed_name: 'process-entry-leader-parent-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.entry_leader.parent.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.entry_leader.pid': { dashed_name: 'process-entry-leader-pid', description: 'Process id.', @@ -7716,6 +8590,20 @@ export const EcsFlat = { short: 'Short name or login of the user.', type: 'keyword', }, + 'process.entry_leader.vpid': { + dashed_name: 'process-entry-leader-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.entry_leader.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.entry_leader.working_directory': { dashed_name: 'process-entry-leader-working-directory', description: 'The working directory of the process.', @@ -8167,6 +9055,20 @@ export const EcsFlat = { short: 'Short name or login of the user.', type: 'keyword', }, + 'process.group_leader.vpid': { + dashed_name: 'process-group-leader-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.group_leader.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.group_leader.working_directory': { dashed_name: 'process-group-leader-working-directory', description: 'The working directory of the process.', @@ -8392,6 +9294,204 @@ export const EcsFlat = { short: 'The type of object on which the IO action (read or write) was taken.', type: 'keyword', }, + 'process.macho.go_import_hash': { + dashed_name: 'process-macho-go-import-hash', + description: + 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'process.macho.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the Go language imports in a Mach-O file.', + type: 'keyword', + }, + 'process.macho.go_imports': { + dashed_name: 'process-macho-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'process.macho.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'macho', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'process.macho.go_imports_names_entropy': { + dashed_name: 'process-macho-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.macho.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.macho.go_imports_names_var_entropy': { + dashed_name: 'process-macho-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.macho.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.macho.go_stripped': { + dashed_name: 'process-macho-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'process.macho.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'macho', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, + 'process.macho.import_hash': { + dashed_name: 'process-macho-import-hash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'process.macho.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, + 'process.macho.imports': { + dashed_name: 'process-macho-imports', + description: 'List of imported element names and types.', + flat_name: 'process.macho.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'macho', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'process.macho.imports_names_entropy': { + dashed_name: 'process-macho-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.macho.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.macho.imports_names_var_entropy': { + dashed_name: 'process-macho-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.macho.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'macho', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.macho.sections': { + dashed_name: 'process-macho-sections', + description: + 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', + flat_name: 'process.macho.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'macho', + short: 'Section information of the Mach-O file.', + type: 'nested', + }, + 'process.macho.sections.entropy': { + dashed_name: 'process-macho-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'process.macho.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.macho.sections.name': { + dashed_name: 'process-macho-sections-name', + description: 'Mach-O Section List name.', + flat_name: 'process.macho.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List name.', + type: 'keyword', + }, + 'process.macho.sections.physical_size': { + dashed_name: 'process-macho-sections-physical-size', + description: 'Mach-O Section List physical size.', + flat_name: 'process.macho.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List physical size.', + type: 'long', + }, + 'process.macho.sections.var_entropy': { + dashed_name: 'process-macho-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'process.macho.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.macho.sections.virtual_size': { + dashed_name: 'process-macho-sections-virtual-size', + description: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'process.macho.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, + 'process.macho.symhash': { + dashed_name: 'process-macho-symhash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', + example: 'd3ccf195b62a9279c3c19af1080497ec', + flat_name: 'process.macho.symhash', + ignore_above: 1024, + level: 'extended', + name: 'symhash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, 'process.name': { dashed_name: 'process-name', description: 'Process name.\nSometimes called program name or similar.', @@ -8633,6 +9733,67 @@ export const EcsFlat = { short: 'List of exported element names and types.', type: 'flattened', }, + 'process.parent.elf.go_import_hash': { + dashed_name: 'process-parent-elf-go-import-hash', + description: + 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'process.parent.elf.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the Go language imports in an ELF file.', + type: 'keyword', + }, + 'process.parent.elf.go_imports': { + dashed_name: 'process-parent-elf-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'process.parent.elf.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'elf', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'process.parent.elf.go_imports_names_entropy': { + dashed_name: 'process-parent-elf-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.parent.elf.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.parent.elf.go_imports_names_var_entropy': { + dashed_name: 'process-parent-elf-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.parent.elf.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.parent.elf.go_stripped': { + dashed_name: 'process-parent-elf-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'process.parent.elf.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'elf', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'process.parent.elf.header.abi_version': { dashed_name: 'process-parent-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -8729,6 +9890,20 @@ export const EcsFlat = { short: 'Version of the ELF header.', type: 'keyword', }, + 'process.parent.elf.import_hash': { + dashed_name: 'process-parent-elf-import-hash', + description: + 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'process.parent.elf.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the imports in an ELF file.', + type: 'keyword', + }, 'process.parent.elf.imports': { dashed_name: 'process-parent-elf-imports', description: 'List of imported element names and types.', @@ -8740,6 +9915,32 @@ export const EcsFlat = { short: 'List of imported element names and types.', type: 'flattened', }, + 'process.parent.elf.imports_names_entropy': { + dashed_name: 'process-parent-elf-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.parent.elf.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.parent.elf.imports_names_var_entropy': { + dashed_name: 'process-parent-elf-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.parent.elf.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'process.parent.elf.sections': { dashed_name: 'process-parent-elf-sections', description: @@ -8836,6 +10037,18 @@ export const EcsFlat = { short: 'ELF Section List type.', type: 'keyword', }, + 'process.parent.elf.sections.var_entropy': { + dashed_name: 'process-parent-elf-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'process.parent.elf.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, 'process.parent.elf.sections.virtual_address': { dashed_name: 'process-parent-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -9042,6 +10255,20 @@ export const EcsFlat = { short: 'The time the process started.', type: 'date', }, + 'process.parent.group_leader.vpid': { + dashed_name: 'process-parent-group-leader-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.parent.group_leader.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.parent.hash.md5': { dashed_name: 'process-parent-hash-md5', description: 'MD5 hash.', @@ -9139,6 +10366,204 @@ export const EcsFlat = { short: 'Whether the process is connected to an interactive shell.', type: 'boolean', }, + 'process.parent.macho.go_import_hash': { + dashed_name: 'process-parent-macho-go-import-hash', + description: + 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'process.parent.macho.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the Go language imports in a Mach-O file.', + type: 'keyword', + }, + 'process.parent.macho.go_imports': { + dashed_name: 'process-parent-macho-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'process.parent.macho.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'macho', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'process.parent.macho.go_imports_names_entropy': { + dashed_name: 'process-parent-macho-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.parent.macho.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.parent.macho.go_imports_names_var_entropy': { + dashed_name: 'process-parent-macho-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.parent.macho.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.parent.macho.go_stripped': { + dashed_name: 'process-parent-macho-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'process.parent.macho.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'macho', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, + 'process.parent.macho.import_hash': { + dashed_name: 'process-parent-macho-import-hash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'process.parent.macho.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, + 'process.parent.macho.imports': { + dashed_name: 'process-parent-macho-imports', + description: 'List of imported element names and types.', + flat_name: 'process.parent.macho.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'macho', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'process.parent.macho.imports_names_entropy': { + dashed_name: 'process-parent-macho-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.parent.macho.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.parent.macho.imports_names_var_entropy': { + dashed_name: 'process-parent-macho-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.parent.macho.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'macho', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.parent.macho.sections': { + dashed_name: 'process-parent-macho-sections', + description: + 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', + flat_name: 'process.parent.macho.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'macho', + short: 'Section information of the Mach-O file.', + type: 'nested', + }, + 'process.parent.macho.sections.entropy': { + dashed_name: 'process-parent-macho-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'process.parent.macho.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.parent.macho.sections.name': { + dashed_name: 'process-parent-macho-sections-name', + description: 'Mach-O Section List name.', + flat_name: 'process.parent.macho.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List name.', + type: 'keyword', + }, + 'process.parent.macho.sections.physical_size': { + dashed_name: 'process-parent-macho-sections-physical-size', + description: 'Mach-O Section List physical size.', + flat_name: 'process.parent.macho.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List physical size.', + type: 'long', + }, + 'process.parent.macho.sections.var_entropy': { + dashed_name: 'process-parent-macho-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'process.parent.macho.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.parent.macho.sections.virtual_size': { + dashed_name: 'process-parent-macho-sections-virtual-size', + description: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'process.parent.macho.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, + 'process.parent.macho.symhash': { + dashed_name: 'process-parent-macho-symhash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', + example: 'd3ccf195b62a9279c3c19af1080497ec', + flat_name: 'process.parent.macho.symhash', + ignore_above: 1024, + level: 'extended', + name: 'symhash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, 'process.parent.name': { dashed_name: 'process-parent-name', description: 'Process name.\nSometimes called program name or similar.', @@ -9211,6 +10636,67 @@ export const EcsFlat = { short: 'Process name.', type: 'keyword', }, + 'process.parent.pe.go_import_hash': { + dashed_name: 'process-parent-pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'process.parent.pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'process.parent.pe.go_imports': { + dashed_name: 'process-parent-pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'process.parent.pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'pe', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'process.parent.pe.go_imports_names_entropy': { + dashed_name: 'process-parent-pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.parent.pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.parent.pe.go_imports_names_var_entropy': { + dashed_name: 'process-parent-pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.parent.pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.parent.pe.go_stripped': { + dashed_name: 'process-parent-pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'process.parent.pe.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'pe', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'process.parent.pe.imphash': { dashed_name: 'process-parent-pe-imphash', description: @@ -9225,6 +10711,57 @@ export const EcsFlat = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'process.parent.pe.import_hash': { + dashed_name: 'process-parent-pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'process.parent.pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'process.parent.pe.imports': { + dashed_name: 'process-parent-pe-imports', + description: 'List of imported element names and types.', + flat_name: 'process.parent.pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'pe', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'process.parent.pe.imports_names_entropy': { + dashed_name: 'process-parent-pe-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.parent.pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.parent.pe.imports_names_var_entropy': { + dashed_name: 'process-parent-pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.parent.pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'process.parent.pe.original_file_name': { dashed_name: 'process-parent-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -9262,8 +10799,80 @@ export const EcsFlat = { name: 'product', normalize: [], original_fieldset: 'pe', - short: 'Internal product name of the file, provided at compile-time.', - type: 'keyword', + short: 'Internal product name of the file, provided at compile-time.', + type: 'keyword', + }, + 'process.parent.pe.sections': { + dashed_name: 'process-parent-pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'process.parent.pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'pe', + short: 'Section information of the PE file.', + type: 'nested', + }, + 'process.parent.pe.sections.entropy': { + dashed_name: 'process-parent-pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'process.parent.pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.parent.pe.sections.name': { + dashed_name: 'process-parent-pe-sections-name', + description: 'PE Section List name.', + flat_name: 'process.parent.pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List name.', + type: 'keyword', + }, + 'process.parent.pe.sections.physical_size': { + dashed_name: 'process-parent-pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'process.parent.pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List physical size.', + type: 'long', + }, + 'process.parent.pe.sections.var_entropy': { + dashed_name: 'process-parent-pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'process.parent.pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.parent.pe.sections.virtual_size': { + dashed_name: 'process-parent-pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'process.parent.pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', }, 'process.parent.pgid': { dashed_name: 'process-parent-pgid', @@ -9441,6 +11050,36 @@ export const EcsFlat = { short: 'Name of the group.', type: 'keyword', }, + 'process.parent.thread.capabilities.effective': { + dashed_name: 'process-parent-thread-capabilities-effective', + description: + 'This is the set of capabilities used by the kernel to perform permission checks for the thread.', + example: '["CAP_BPF", "CAP_SYS_ADMIN"]', + flat_name: 'process.parent.thread.capabilities.effective', + ignore_above: 1024, + level: 'extended', + name: 'thread.capabilities.effective', + normalize: ['array'], + original_fieldset: 'process', + pattern: '^(CAP_[A-Z_]+|\\d+)$', + short: 'Array of capabilities used for permission checks.', + type: 'keyword', + }, + 'process.parent.thread.capabilities.permitted': { + dashed_name: 'process-parent-thread-capabilities-permitted', + description: + 'This is a limiting superset for the effective capabilities that the thread may assume.', + example: '["CAP_BPF", "CAP_SYS_ADMIN"]', + flat_name: 'process.parent.thread.capabilities.permitted', + ignore_above: 1024, + level: 'extended', + name: 'thread.capabilities.permitted', + normalize: ['array'], + original_fieldset: 'process', + pattern: '^(CAP_[A-Z_]+|\\d+)$', + short: 'Array of capabilities a thread could assume.', + type: 'keyword', + }, 'process.parent.thread.id': { dashed_name: 'process-parent-thread-id', description: 'Thread ID.', @@ -9570,6 +11209,20 @@ export const EcsFlat = { short: 'Short name or login of the user.', type: 'keyword', }, + 'process.parent.vpid': { + dashed_name: 'process-parent-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.parent.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.parent.working_directory': { dashed_name: 'process-parent-working-directory', description: 'The working directory of the process.', @@ -9642,6 +11295,67 @@ export const EcsFlat = { short: 'Process name.', type: 'keyword', }, + 'process.pe.go_import_hash': { + dashed_name: 'process-pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'process.pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'process.pe.go_imports': { + dashed_name: 'process-pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'process.pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'pe', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'process.pe.go_imports_names_entropy': { + dashed_name: 'process-pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.pe.go_imports_names_var_entropy': { + dashed_name: 'process-pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.pe.go_stripped': { + dashed_name: 'process-pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'process.pe.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'pe', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'process.pe.imphash': { dashed_name: 'process-pe-imphash', description: @@ -9656,6 +11370,57 @@ export const EcsFlat = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'process.pe.import_hash': { + dashed_name: 'process-pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'process.pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'process.pe.imports': { + dashed_name: 'process-pe-imports', + description: 'List of imported element names and types.', + flat_name: 'process.pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'pe', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'process.pe.imports_names_entropy': { + dashed_name: 'process-pe-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.pe.imports_names_var_entropy': { + dashed_name: 'process-pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'process.pe.original_file_name': { dashed_name: 'process-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -9696,6 +11461,78 @@ export const EcsFlat = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, + 'process.pe.sections': { + dashed_name: 'process-pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'process.pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'pe', + short: 'Section information of the PE file.', + type: 'nested', + }, + 'process.pe.sections.entropy': { + dashed_name: 'process-pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'process.pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.pe.sections.name': { + dashed_name: 'process-pe-sections-name', + description: 'PE Section List name.', + flat_name: 'process.pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List name.', + type: 'keyword', + }, + 'process.pe.sections.physical_size': { + dashed_name: 'process-pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'process.pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List physical size.', + type: 'long', + }, + 'process.pe.sections.var_entropy': { + dashed_name: 'process-pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'process.pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.pe.sections.virtual_size': { + dashed_name: 'process-pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'process.pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, 'process.pgid': { dashed_name: 'process-pgid', description: @@ -10085,6 +11922,20 @@ export const EcsFlat = { short: 'The time the process started.', type: 'date', }, + 'process.session_leader.parent.session_leader.vpid': { + dashed_name: 'process-session-leader-parent-session-leader-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.session_leader.parent.session_leader.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.session_leader.parent.start': { dashed_name: 'process-session-leader-parent-start', description: 'The time the process started.', @@ -10097,6 +11948,20 @@ export const EcsFlat = { short: 'The time the process started.', type: 'date', }, + 'process.session_leader.parent.vpid': { + dashed_name: 'process-session-leader-parent-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.session_leader.parent.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.session_leader.pid': { dashed_name: 'process-session-leader-pid', description: 'Process id.', @@ -10345,6 +12210,20 @@ export const EcsFlat = { short: 'Short name or login of the user.', type: 'keyword', }, + 'process.session_leader.vpid': { + dashed_name: 'process-session-leader-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.session_leader.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.session_leader.working_directory': { dashed_name: 'process-session-leader-working-directory', description: 'The working directory of the process.', @@ -10400,6 +12279,34 @@ export const EcsFlat = { short: 'Name of the group.', type: 'keyword', }, + 'process.thread.capabilities.effective': { + dashed_name: 'process-thread-capabilities-effective', + description: + 'This is the set of capabilities used by the kernel to perform permission checks for the thread.', + example: '["CAP_BPF", "CAP_SYS_ADMIN"]', + flat_name: 'process.thread.capabilities.effective', + ignore_above: 1024, + level: 'extended', + name: 'thread.capabilities.effective', + normalize: ['array'], + pattern: '^(CAP_[A-Z_]+|\\d+)$', + short: 'Array of capabilities used for permission checks.', + type: 'keyword', + }, + 'process.thread.capabilities.permitted': { + dashed_name: 'process-thread-capabilities-permitted', + description: + 'This is a limiting superset for the effective capabilities that the thread may assume.', + example: '["CAP_BPF", "CAP_SYS_ADMIN"]', + flat_name: 'process.thread.capabilities.permitted', + ignore_above: 1024, + level: 'extended', + name: 'thread.capabilities.permitted', + normalize: ['array'], + pattern: '^(CAP_[A-Z_]+|\\d+)$', + short: 'Array of capabilities a thread could assume.', + type: 'keyword', + }, 'process.thread.id': { dashed_name: 'process-thread-id', description: 'Thread ID.', @@ -10548,6 +12455,19 @@ export const EcsFlat = { short: 'Short name or login of the user.', type: 'keyword', }, + 'process.vpid': { + dashed_name: 'process-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + short: 'Virtual process id.', + type: 'long', + }, 'process.working_directory': { dashed_name: 'process-working-directory', description: 'The working directory of the process.', @@ -12588,6 +14508,67 @@ export const EcsFlat = { short: 'List of exported element names and types.', type: 'flattened', }, + 'threat.enrichments.indicator.file.elf.go_import_hash': { + dashed_name: 'threat-enrichments-indicator-file-elf-go-import-hash', + description: + 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'threat.enrichments.indicator.file.elf.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the Go language imports in an ELF file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.go_imports': { + dashed_name: 'threat-enrichments-indicator-file-elf-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'threat.enrichments.indicator.file.elf.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'elf', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'threat.enrichments.indicator.file.elf.go_imports_names_entropy': { + dashed_name: 'threat-enrichments-indicator-file-elf-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.enrichments.indicator.file.elf.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.enrichments.indicator.file.elf.go_imports_names_var_entropy': { + dashed_name: 'threat-enrichments-indicator-file-elf-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.enrichments.indicator.file.elf.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.enrichments.indicator.file.elf.go_stripped': { + dashed_name: 'threat-enrichments-indicator-file-elf-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'threat.enrichments.indicator.file.elf.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'elf', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'threat.enrichments.indicator.file.elf.header.abi_version': { dashed_name: 'threat-enrichments-indicator-file-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -12684,6 +14665,20 @@ export const EcsFlat = { short: 'Version of the ELF header.', type: 'keyword', }, + 'threat.enrichments.indicator.file.elf.import_hash': { + dashed_name: 'threat-enrichments-indicator-file-elf-import-hash', + description: + 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'threat.enrichments.indicator.file.elf.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the imports in an ELF file.', + type: 'keyword', + }, 'threat.enrichments.indicator.file.elf.imports': { dashed_name: 'threat-enrichments-indicator-file-elf-imports', description: 'List of imported element names and types.', @@ -12695,6 +14690,32 @@ export const EcsFlat = { short: 'List of imported element names and types.', type: 'flattened', }, + 'threat.enrichments.indicator.file.elf.imports_names_entropy': { + dashed_name: 'threat-enrichments-indicator-file-elf-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.enrichments.indicator.file.elf.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'threat.enrichments.indicator.file.elf.imports_names_var_entropy': { + dashed_name: 'threat-enrichments-indicator-file-elf-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.enrichments.indicator.file.elf.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'threat.enrichments.indicator.file.elf.sections': { dashed_name: 'threat-enrichments-indicator-file-elf-sections', description: @@ -12791,6 +14812,18 @@ export const EcsFlat = { short: 'ELF Section List type.', type: 'keyword', }, + 'threat.enrichments.indicator.file.elf.sections.var_entropy': { + dashed_name: 'threat-enrichments-indicator-file-elf-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'threat.enrichments.indicator.file.elf.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, 'threat.enrichments.indicator.file.elf.sections.virtual_address': { dashed_name: 'threat-enrichments-indicator-file-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -13156,11 +15189,72 @@ export const EcsFlat = { flat_name: 'threat.enrichments.indicator.file.pe.file_version', ignore_above: 1024, level: 'extended', - name: 'file_version', + name: 'file_version', + normalize: [], + original_fieldset: 'pe', + short: 'Process name.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.go_import_hash': { + dashed_name: 'threat-enrichments-indicator-file-pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'threat.enrichments.indicator.file.pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.go_imports': { + dashed_name: 'threat-enrichments-indicator-file-pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'threat.enrichments.indicator.file.pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'pe', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'threat.enrichments.indicator.file.pe.go_imports_names_entropy': { + dashed_name: 'threat-enrichments-indicator-file-pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.enrichments.indicator.file.pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.enrichments.indicator.file.pe.go_imports_names_var_entropy': { + dashed_name: 'threat-enrichments-indicator-file-pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.enrichments.indicator.file.pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.enrichments.indicator.file.pe.go_stripped': { + dashed_name: 'threat-enrichments-indicator-file-pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'threat.enrichments.indicator.file.pe.go_stripped', + level: 'extended', + name: 'go_stripped', normalize: [], original_fieldset: 'pe', - short: 'Process name.', - type: 'keyword', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', }, 'threat.enrichments.indicator.file.pe.imphash': { dashed_name: 'threat-enrichments-indicator-file-pe-imphash', @@ -13176,6 +15270,57 @@ export const EcsFlat = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'threat.enrichments.indicator.file.pe.import_hash': { + dashed_name: 'threat-enrichments-indicator-file-pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'threat.enrichments.indicator.file.pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.imports': { + dashed_name: 'threat-enrichments-indicator-file-pe-imports', + description: 'List of imported element names and types.', + flat_name: 'threat.enrichments.indicator.file.pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'pe', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'threat.enrichments.indicator.file.pe.imports_names_entropy': { + dashed_name: 'threat-enrichments-indicator-file-pe-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.enrichments.indicator.file.pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'threat.enrichments.indicator.file.pe.imports_names_var_entropy': { + dashed_name: 'threat-enrichments-indicator-file-pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.enrichments.indicator.file.pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'threat.enrichments.indicator.file.pe.original_file_name': { dashed_name: 'threat-enrichments-indicator-file-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -13216,6 +15361,78 @@ export const EcsFlat = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, + 'threat.enrichments.indicator.file.pe.sections': { + dashed_name: 'threat-enrichments-indicator-file-pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'threat.enrichments.indicator.file.pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'pe', + short: 'Section information of the PE file.', + type: 'nested', + }, + 'threat.enrichments.indicator.file.pe.sections.entropy': { + dashed_name: 'threat-enrichments-indicator-file-pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'threat.enrichments.indicator.file.pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'threat.enrichments.indicator.file.pe.sections.name': { + dashed_name: 'threat-enrichments-indicator-file-pe-sections-name', + description: 'PE Section List name.', + flat_name: 'threat.enrichments.indicator.file.pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List name.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.sections.physical_size': { + dashed_name: 'threat-enrichments-indicator-file-pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'threat.enrichments.indicator.file.pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List physical size.', + type: 'long', + }, + 'threat.enrichments.indicator.file.pe.sections.var_entropy': { + dashed_name: 'threat-enrichments-indicator-file-pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'threat.enrichments.indicator.file.pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'threat.enrichments.indicator.file.pe.sections.virtual_size': { + dashed_name: 'threat-enrichments-indicator-file-pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'threat.enrichments.indicator.file.pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, 'threat.enrichments.indicator.file.size': { dashed_name: 'threat-enrichments-indicator-file-size', description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', @@ -13802,6 +16019,31 @@ export const EcsFlat = { short: 'Date/time indicator was last updated.', type: 'date', }, + 'threat.enrichments.indicator.name': { + dashed_name: 'threat-enrichments-indicator-name', + description: 'The display name indicator in an UI friendly format', + example: '5.2.75.227', + expected_values: [ + '5.2.75.227', + '2a02:cf40:add:4002:91f2:a9b2:e09a:6fc6', + 'https://example.com/some/path', + 'example.com', + '373d34874d7bc89fd4cefa6272ee80bf', + 'b0e914d1bbe19433cc9df64ea1ca07fe77f7b150b511b786e46e007941a62bd7', + 'email@example.com', + 'HKLM\\\\SOFTWARE\\\\Microsoft\\\\Active', + 13335, + '00:00:5e:00:53:af', + 8008, + ], + flat_name: 'threat.enrichments.indicator.name', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.indicator.name', + normalize: [], + short: 'Indicator display name', + type: 'keyword', + }, 'threat.enrichments.indicator.port': { dashed_name: 'threat-enrichments-indicator-port', description: 'Identifies a threat indicator as a port number (irrespective of direction).', @@ -15025,6 +17267,67 @@ export const EcsFlat = { short: 'List of exported element names and types.', type: 'flattened', }, + 'threat.indicator.file.elf.go_import_hash': { + dashed_name: 'threat-indicator-file-elf-go-import-hash', + description: + 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'threat.indicator.file.elf.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the Go language imports in an ELF file.', + type: 'keyword', + }, + 'threat.indicator.file.elf.go_imports': { + dashed_name: 'threat-indicator-file-elf-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'threat.indicator.file.elf.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'elf', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'threat.indicator.file.elf.go_imports_names_entropy': { + dashed_name: 'threat-indicator-file-elf-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.indicator.file.elf.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.indicator.file.elf.go_imports_names_var_entropy': { + dashed_name: 'threat-indicator-file-elf-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.indicator.file.elf.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.indicator.file.elf.go_stripped': { + dashed_name: 'threat-indicator-file-elf-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'threat.indicator.file.elf.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'elf', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'threat.indicator.file.elf.header.abi_version': { dashed_name: 'threat-indicator-file-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -15121,6 +17424,20 @@ export const EcsFlat = { short: 'Version of the ELF header.', type: 'keyword', }, + 'threat.indicator.file.elf.import_hash': { + dashed_name: 'threat-indicator-file-elf-import-hash', + description: + 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'threat.indicator.file.elf.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the imports in an ELF file.', + type: 'keyword', + }, 'threat.indicator.file.elf.imports': { dashed_name: 'threat-indicator-file-elf-imports', description: 'List of imported element names and types.', @@ -15132,6 +17449,32 @@ export const EcsFlat = { short: 'List of imported element names and types.', type: 'flattened', }, + 'threat.indicator.file.elf.imports_names_entropy': { + dashed_name: 'threat-indicator-file-elf-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.indicator.file.elf.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'threat.indicator.file.elf.imports_names_var_entropy': { + dashed_name: 'threat-indicator-file-elf-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.indicator.file.elf.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'threat.indicator.file.elf.sections': { dashed_name: 'threat-indicator-file-elf-sections', description: @@ -15228,6 +17571,18 @@ export const EcsFlat = { short: 'ELF Section List type.', type: 'keyword', }, + 'threat.indicator.file.elf.sections.var_entropy': { + dashed_name: 'threat-indicator-file-elf-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'threat.indicator.file.elf.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, 'threat.indicator.file.elf.sections.virtual_address': { dashed_name: 'threat-indicator-file-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -15599,6 +17954,67 @@ export const EcsFlat = { short: 'Process name.', type: 'keyword', }, + 'threat.indicator.file.pe.go_import_hash': { + dashed_name: 'threat-indicator-file-pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'threat.indicator.file.pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'threat.indicator.file.pe.go_imports': { + dashed_name: 'threat-indicator-file-pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'threat.indicator.file.pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'pe', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'threat.indicator.file.pe.go_imports_names_entropy': { + dashed_name: 'threat-indicator-file-pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.indicator.file.pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.indicator.file.pe.go_imports_names_var_entropy': { + dashed_name: 'threat-indicator-file-pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.indicator.file.pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.indicator.file.pe.go_stripped': { + dashed_name: 'threat-indicator-file-pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'threat.indicator.file.pe.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'pe', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'threat.indicator.file.pe.imphash': { dashed_name: 'threat-indicator-file-pe-imphash', description: @@ -15613,6 +18029,57 @@ export const EcsFlat = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'threat.indicator.file.pe.import_hash': { + dashed_name: 'threat-indicator-file-pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'threat.indicator.file.pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'threat.indicator.file.pe.imports': { + dashed_name: 'threat-indicator-file-pe-imports', + description: 'List of imported element names and types.', + flat_name: 'threat.indicator.file.pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'pe', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'threat.indicator.file.pe.imports_names_entropy': { + dashed_name: 'threat-indicator-file-pe-imports-names-entropy', + description: 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.indicator.file.pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'threat.indicator.file.pe.imports_names_var_entropy': { + dashed_name: 'threat-indicator-file-pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.indicator.file.pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'threat.indicator.file.pe.original_file_name': { dashed_name: 'threat-indicator-file-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -15653,6 +18120,78 @@ export const EcsFlat = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, + 'threat.indicator.file.pe.sections': { + dashed_name: 'threat-indicator-file-pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'threat.indicator.file.pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'pe', + short: 'Section information of the PE file.', + type: 'nested', + }, + 'threat.indicator.file.pe.sections.entropy': { + dashed_name: 'threat-indicator-file-pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'threat.indicator.file.pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'threat.indicator.file.pe.sections.name': { + dashed_name: 'threat-indicator-file-pe-sections-name', + description: 'PE Section List name.', + flat_name: 'threat.indicator.file.pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List name.', + type: 'keyword', + }, + 'threat.indicator.file.pe.sections.physical_size': { + dashed_name: 'threat-indicator-file-pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'threat.indicator.file.pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List physical size.', + type: 'long', + }, + 'threat.indicator.file.pe.sections.var_entropy': { + dashed_name: 'threat-indicator-file-pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'threat.indicator.file.pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'threat.indicator.file.pe.sections.virtual_size': { + dashed_name: 'threat-indicator-file-pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'threat.indicator.file.pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, 'threat.indicator.file.size': { dashed_name: 'threat-indicator-file-size', description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', @@ -16239,6 +18778,31 @@ export const EcsFlat = { short: 'Date/time indicator was last updated.', type: 'date', }, + 'threat.indicator.name': { + dashed_name: 'threat-indicator-name', + description: 'The display name indicator in an UI friendly format', + example: '5.2.75.227', + expected_values: [ + '5.2.75.227', + '2a02:cf40:add:4002:91f2:a9b2:e09a:6fc6', + 'https://example.com/some/path', + 'example.com', + '373d34874d7bc89fd4cefa6272ee80bf', + 'b0e914d1bbe19433cc9df64ea1ca07fe77f7b150b511b786e46e007941a62bd7', + 'email@example.com', + 'HKLM\\\\SOFTWARE\\\\Microsoft\\\\Active', + 13335, + '00:00:5e:00:53:af', + 8008, + ], + flat_name: 'threat.indicator.name', + ignore_above: 1024, + level: 'extended', + name: 'indicator.name', + normalize: [], + short: 'Indicator display name', + type: 'keyword', + }, 'threat.indicator.port': { dashed_name: 'threat-indicator-port', description: 'Identifies a threat indicator as a port number (irrespective of direction).', diff --git a/packages/kbn-ecs/generated/ecs_nested.ts b/packages/kbn-ecs/generated/ecs_nested.ts index 4ebcb5f4ef565..8dfd2aed9b60b 100644 --- a/packages/kbn-ecs/generated/ecs_nested.ts +++ b/packages/kbn-ecs/generated/ecs_nested.ts @@ -1478,6 +1478,16 @@ export const EcsNested = { short: 'Runtime managing this container.', type: 'keyword', }, + 'container.security_context.privileged': { + dashed_name: 'container-security-context-privileged', + description: 'Indicates whether the container is running in privileged mode.', + flat_name: 'container.security_context.privileged', + level: 'extended', + name: 'security_context.privileged', + normalize: [], + short: 'Indicates whether the container is running in privileged mode.', + type: 'boolean', + }, }, group: 2, name: 'container', @@ -2036,7 +2046,7 @@ export const EcsNested = { 'device.id': { dashed_name: 'device-id', description: - 'The unique identifier of a device. The identifier must not change across application sessions but stay fixex for an instance of a (mobile) device. \nOn iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application.\nFor GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user.', + 'The unique identifier of a device. The identifier must not change across application sessions but stay fixed for an instance of a (mobile) device. \nOn iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application.\nFor GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user.', example: '00000000-54b3-e7c7-0000-000046bffd97', flat_name: 'device.id', ignore_above: 1024, @@ -2374,6 +2384,67 @@ export const EcsNested = { short: 'Process name.', type: 'keyword', }, + 'dll.pe.go_import_hash': { + dashed_name: 'dll-pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'dll.pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'dll.pe.go_imports': { + dashed_name: 'dll-pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'dll.pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'pe', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'dll.pe.go_imports_names_entropy': { + dashed_name: 'dll-pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'dll.pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'dll.pe.go_imports_names_var_entropy': { + dashed_name: 'dll-pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'dll.pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'dll.pe.go_stripped': { + dashed_name: 'dll-pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'dll.pe.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'pe', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'dll.pe.imphash': { dashed_name: 'dll-pe-imphash', description: @@ -2388,6 +2459,58 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'dll.pe.import_hash': { + dashed_name: 'dll-pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'dll.pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'dll.pe.imports': { + dashed_name: 'dll-pe-imports', + description: 'List of imported element names and types.', + flat_name: 'dll.pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'pe', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'dll.pe.imports_names_entropy': { + dashed_name: 'dll-pe-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'dll.pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'dll.pe.imports_names_var_entropy': { + dashed_name: 'dll-pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'dll.pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'dll.pe.original_file_name': { dashed_name: 'dll-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -2428,6 +2551,78 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, + 'dll.pe.sections': { + dashed_name: 'dll-pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'dll.pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'pe', + short: 'Section information of the PE file.', + type: 'nested', + }, + 'dll.pe.sections.entropy': { + dashed_name: 'dll-pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'dll.pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'dll.pe.sections.name': { + dashed_name: 'dll-pe-sections-name', + description: 'PE Section List name.', + flat_name: 'dll.pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List name.', + type: 'keyword', + }, + 'dll.pe.sections.physical_size': { + dashed_name: 'dll-pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'dll.pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List physical size.', + type: 'long', + }, + 'dll.pe.sections.var_entropy': { + dashed_name: 'dll-pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'dll.pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'dll.pe.sections.virtual_size': { + dashed_name: 'dll-pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'dll.pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, }, group: 2, name: 'dll', @@ -2780,6 +2975,62 @@ export const EcsNested = { short: 'List of exported element names and types.', type: 'flattened', }, + 'elf.go_import_hash': { + dashed_name: 'elf-go-import-hash', + description: + 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'elf.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + short: 'A hash of the Go language imports in an ELF file.', + type: 'keyword', + }, + 'elf.go_imports': { + dashed_name: 'elf-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'elf.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'elf.go_imports_names_entropy': { + dashed_name: 'elf-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'elf.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'elf.go_imports_names_var_entropy': { + dashed_name: 'elf-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'elf.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'elf.go_stripped': { + dashed_name: 'elf-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'elf.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'elf.header.abi_version': { dashed_name: 'elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -2868,6 +3119,19 @@ export const EcsNested = { short: 'Version of the ELF header.', type: 'keyword', }, + 'elf.import_hash': { + dashed_name: 'elf-import-hash', + description: + 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'elf.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + short: 'A hash of the imports in an ELF file.', + type: 'keyword', + }, 'elf.imports': { dashed_name: 'elf-imports', description: 'List of imported element names and types.', @@ -2878,6 +3142,31 @@ export const EcsNested = { short: 'List of imported element names and types.', type: 'flattened', }, + 'elf.imports_names_entropy': { + dashed_name: 'elf-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'elf.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'elf.imports_names_var_entropy': { + dashed_name: 'elf-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'elf.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'elf.sections': { dashed_name: 'elf-sections', description: @@ -2966,6 +3255,17 @@ export const EcsNested = { short: 'ELF Section List type.', type: 'keyword', }, + 'elf.sections.var_entropy': { + dashed_name: 'elf-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'elf.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, 'elf.sections.virtual_address': { dashed_name: 'elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -3516,6 +3816,24 @@ export const EcsNested = { }, 'event.category': { allowed_values: [ + { + description: + 'Events in this category annotate API calls that occured on a system. Typical sources for those events could be from the Operating System level through the native libraries (for example Windows Win32, Linux libc, etc.), or managed sources of events (such as ETW, syslog), but can also include network protocols (such as SOAP, RPC, Websocket, REST, etc.)', + expected_event_types: [ + 'access', + 'admin', + 'allowed', + 'change', + 'creation', + 'deletion', + 'denied', + 'end', + 'info', + 'start', + 'user', + ], + name: 'api', + }, { description: 'Events in this category are related to the challenge and response process in which credentials are supplied and verified to allow the creation of a session. Common sources for these logs are Windows event logs and ssh logs. Visualize and analyze events in this category to look for failed logins, and other authentication-related activity.', @@ -3549,7 +3867,7 @@ export const EcsNested = { { description: 'Relating to a set of information that has been created on, or has existed on a filesystem. Use this category of events to visualize and analyze the creation, access, and deletions of files. Events in this category can come from both host-based and network-based sources. An example source of a network-based detection of a file transfer would be the Zeek file.log.', - expected_event_types: ['change', 'creation', 'deletion', 'info'], + expected_event_types: ['access', 'change', 'creation', 'deletion', 'info'], name: 'file', }, { @@ -3578,6 +3896,12 @@ export const EcsNested = { expected_event_types: ['allowed', 'denied', 'info'], name: 'intrusion_detection', }, + { + description: + 'Events in this category refer to the loading of a library, such as (dll / so / dynlib), into a process. Use this category to visualize and analyze library loading related activity on hosts. Keep in mind that driver related activity will be captured under the "driver" category above.', + expected_event_types: ['start'], + name: 'library', + }, { description: 'Malware detection events and alerts. Use this category to visualize and analyze malware detections from EDR/EPP systems such as Elastic Endpoint Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems such as Suricata, or other sources of malware-related events such as Palo Alto Networks threat logs and Wildfire logs.', @@ -3670,7 +3994,7 @@ export const EcsNested = { 'event.created': { dashed_name: 'event-created', description: - "event.created contains the date/time when the event was first read by an agent, or by your pipeline.\nThis field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event.\nIn most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source.\nIn case the two timestamps are identical, @timestamp should be used.", + "`event.created` contains the date/time when the event was first read by an agent, or by your pipeline.\nThis field is distinct from `@timestamp` in that `@timestamp` typically contain the time extracted from the original event.\nIn most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source.\nIn case the two timestamps are identical, `@timestamp` should be used.", example: '2016-05-23T08:05:34.857Z', flat_name: 'event.created', level: 'core', @@ -3695,7 +4019,7 @@ export const EcsNested = { 'event.duration': { dashed_name: 'event-duration', description: - 'Duration of the event in nanoseconds.\nIf event.start and event.end are known this value should be the difference between the end and start time.', + 'Duration of the event in nanoseconds.\nIf `event.start` and `event.end` are known this value should be the difference between the end and start time.', flat_name: 'event.duration', format: 'duration', input_format: 'nanoseconds', @@ -3710,13 +4034,13 @@ export const EcsNested = { 'event.end': { dashed_name: 'event-end', description: - 'event.end contains the date when the event ended or when the activity was last observed.', + '`event.end` contains the date when the event ended or when the activity was last observed.', flat_name: 'event.end', level: 'extended', name: 'end', normalize: [], short: - 'event.end contains the date when the event ended or when the activity was last observed.', + '`event.end` contains the date when the event ended or when the activity was last observed.', type: 'date', }, 'event.hash': { @@ -3764,6 +4088,12 @@ export const EcsNested = { 'This value indicates an event such as an alert or notable event, triggered by a detection rule executing externally to the Elastic Stack.\n`event.kind:alert` is often populated for events coming from firewalls, intrusion detection systems, endpoint detection and response systems, and so on.\nThis value is not used by Elastic solutions for alert documents that are created by rules executing within the Kibana alerting framework.', name: 'alert', }, + { + beta: 'This event categorization value is beta and subject to change.', + description: + 'This value indicates events whose primary purpose is to store an inventory of assets/entities and their attributes. Assets/entities are objects (such as users and hosts) that are expected to be subjects of detailed analysis within the system.\nExamples include lists of user identities or accounts ingested from directory services such as Active Directory (AD), inventory of hosts pulled from configuration management databases (CMDB), and lists of cloud storage buckets pulled from cloud provider APIs.\nThis value is used by Elastic Security for asset management solutions. `event.kind: asset` is not used for normal system events or logs that are coming from an asset/entity, nor is it used for system events or logs coming from a directory or CMDB system.', + name: 'asset', + }, { description: 'The `enrichment` value indicates an event collected to provide additional context, often to other events.\nAn example is collecting indicators of compromise (IOCs) from a threat intelligence provider with the intent to use those values to enrich other events. The IOC events from the intelligence provider should be categorized as `event.kind:enrichment`.', @@ -3797,7 +4127,7 @@ export const EcsNested = { ], dashed_name: 'event-kind', description: - 'This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy.\n`event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events.\nThe value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not.', + 'This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy.\n`event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events.\nThe value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data is coming in at a regular interval or not.', example: 'alert', flat_name: 'event.kind', ignore_above: 1024, @@ -3955,13 +4285,13 @@ export const EcsNested = { 'event.start': { dashed_name: 'event-start', description: - 'event.start contains the date when the event started or when the activity was first observed.', + '`event.start` contains the date when the event started or when the activity was first observed.', flat_name: 'event.start', level: 'extended', name: 'start', normalize: [], short: - 'event.start contains the date when the event started or when the activity was first observed.', + '`event.start` contains the date when the event started or when the activity was first observed.', type: 'date', }, 'event.timezone': { @@ -4148,16 +4478,6 @@ export const EcsNested = { short: 'The name of a serverless function.', type: 'keyword', }, - 'faas.trigger': { - dashed_name: 'faas-trigger', - description: 'Details about the function trigger.', - flat_name: 'faas.trigger', - level: 'extended', - name: 'trigger', - normalize: [], - short: 'Details about the function trigger.', - type: 'nested', - }, 'faas.trigger.request_id': { dashed_name: 'faas-trigger-request-id', description: 'The ID of the trigger request , message, event, etc.', @@ -4472,6 +4792,67 @@ export const EcsNested = { short: 'List of exported element names and types.', type: 'flattened', }, + 'file.elf.go_import_hash': { + dashed_name: 'file-elf-go-import-hash', + description: + 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'file.elf.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the Go language imports in an ELF file.', + type: 'keyword', + }, + 'file.elf.go_imports': { + dashed_name: 'file-elf-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'file.elf.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'elf', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'file.elf.go_imports_names_entropy': { + dashed_name: 'file-elf-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'file.elf.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'file.elf.go_imports_names_var_entropy': { + dashed_name: 'file-elf-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'file.elf.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'file.elf.go_stripped': { + dashed_name: 'file-elf-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'file.elf.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'elf', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'file.elf.header.abi_version': { dashed_name: 'file-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -4568,6 +4949,20 @@ export const EcsNested = { short: 'Version of the ELF header.', type: 'keyword', }, + 'file.elf.import_hash': { + dashed_name: 'file-elf-import-hash', + description: + 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'file.elf.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the imports in an ELF file.', + type: 'keyword', + }, 'file.elf.imports': { dashed_name: 'file-elf-imports', description: 'List of imported element names and types.', @@ -4579,6 +4974,33 @@ export const EcsNested = { short: 'List of imported element names and types.', type: 'flattened', }, + 'file.elf.imports_names_entropy': { + dashed_name: 'file-elf-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'file.elf.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'file.elf.imports_names_var_entropy': { + dashed_name: 'file-elf-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'file.elf.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'file.elf.sections': { dashed_name: 'file-elf-sections', description: @@ -4675,6 +5097,18 @@ export const EcsNested = { short: 'ELF Section List type.', type: 'keyword', }, + 'file.elf.sections.var_entropy': { + dashed_name: 'file-elf-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'file.elf.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, 'file.elf.sections.virtual_address': { dashed_name: 'file-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -4905,28 +5339,228 @@ export const EcsNested = { short: 'Inode representing the file in the filesystem.', type: 'keyword', }, - 'file.mime_type': { - dashed_name: 'file-mime-type', + 'file.macho.go_import_hash': { + dashed_name: 'file-macho-go-import-hash', description: - 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', - flat_name: 'file.mime_type', + 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'file.macho.go_import_hash', ignore_above: 1024, level: 'extended', - name: 'mime_type', + name: 'go_import_hash', normalize: [], - short: 'Media type of file, document, or arrangement of bytes.', + original_fieldset: 'macho', + short: 'A hash of the Go language imports in a Mach-O file.', type: 'keyword', }, - 'file.mode': { - dashed_name: 'file-mode', - description: 'Mode of the file in octal representation.', - example: '0640', - flat_name: 'file.mode', - ignore_above: 1024, + 'file.macho.go_imports': { + dashed_name: 'file-macho-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'file.macho.go_imports', level: 'extended', - name: 'mode', + name: 'go_imports', normalize: [], - short: 'Mode of the file in octal representation.', + original_fieldset: 'macho', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'file.macho.go_imports_names_entropy': { + dashed_name: 'file-macho-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'file.macho.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'file.macho.go_imports_names_var_entropy': { + dashed_name: 'file-macho-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'file.macho.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'file.macho.go_stripped': { + dashed_name: 'file-macho-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'file.macho.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'macho', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, + 'file.macho.import_hash': { + dashed_name: 'file-macho-import-hash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'file.macho.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, + 'file.macho.imports': { + dashed_name: 'file-macho-imports', + description: 'List of imported element names and types.', + flat_name: 'file.macho.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'macho', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'file.macho.imports_names_entropy': { + dashed_name: 'file-macho-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'file.macho.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'file.macho.imports_names_var_entropy': { + dashed_name: 'file-macho-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'file.macho.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'macho', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'file.macho.sections': { + dashed_name: 'file-macho-sections', + description: + 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', + flat_name: 'file.macho.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'macho', + short: 'Section information of the Mach-O file.', + type: 'nested', + }, + 'file.macho.sections.entropy': { + dashed_name: 'file-macho-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'file.macho.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'file.macho.sections.name': { + dashed_name: 'file-macho-sections-name', + description: 'Mach-O Section List name.', + flat_name: 'file.macho.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List name.', + type: 'keyword', + }, + 'file.macho.sections.physical_size': { + dashed_name: 'file-macho-sections-physical-size', + description: 'Mach-O Section List physical size.', + flat_name: 'file.macho.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List physical size.', + type: 'long', + }, + 'file.macho.sections.var_entropy': { + dashed_name: 'file-macho-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'file.macho.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'file.macho.sections.virtual_size': { + dashed_name: 'file-macho-sections-virtual-size', + description: + 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'file.macho.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, + 'file.macho.symhash': { + dashed_name: 'file-macho-symhash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', + example: 'd3ccf195b62a9279c3c19af1080497ec', + flat_name: 'file.macho.symhash', + ignore_above: 1024, + level: 'extended', + name: 'symhash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, + 'file.mime_type': { + dashed_name: 'file-mime-type', + description: + 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', + flat_name: 'file.mime_type', + ignore_above: 1024, + level: 'extended', + name: 'mime_type', + normalize: [], + short: 'Media type of file, document, or arrangement of bytes.', + type: 'keyword', + }, + 'file.mode': { + dashed_name: 'file-mode', + description: 'Mode of the file in octal representation.', + example: '0640', + flat_name: 'file.mode', + ignore_above: 1024, + level: 'extended', + name: 'mode', + normalize: [], + short: 'Mode of the file in octal representation.', type: 'keyword', }, 'file.mtime': { @@ -5035,6 +5669,67 @@ export const EcsNested = { short: 'Process name.', type: 'keyword', }, + 'file.pe.go_import_hash': { + dashed_name: 'file-pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'file.pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'file.pe.go_imports': { + dashed_name: 'file-pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'file.pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'pe', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'file.pe.go_imports_names_entropy': { + dashed_name: 'file-pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'file.pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'file.pe.go_imports_names_var_entropy': { + dashed_name: 'file-pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'file.pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'file.pe.go_stripped': { + dashed_name: 'file-pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'file.pe.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'pe', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'file.pe.imphash': { dashed_name: 'file-pe-imphash', description: @@ -5049,6 +5744,58 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'file.pe.import_hash': { + dashed_name: 'file-pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'file.pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'file.pe.imports': { + dashed_name: 'file-pe-imports', + description: 'List of imported element names and types.', + flat_name: 'file.pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'pe', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'file.pe.imports_names_entropy': { + dashed_name: 'file-pe-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'file.pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'file.pe.imports_names_var_entropy': { + dashed_name: 'file-pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'file.pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'file.pe.original_file_name': { dashed_name: 'file-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -5089,6 +5836,78 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, + 'file.pe.sections': { + dashed_name: 'file-pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'file.pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'pe', + short: 'Section information of the PE file.', + type: 'nested', + }, + 'file.pe.sections.entropy': { + dashed_name: 'file-pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'file.pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'file.pe.sections.name': { + dashed_name: 'file-pe-sections-name', + description: 'PE Section List name.', + flat_name: 'file.pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List name.', + type: 'keyword', + }, + 'file.pe.sections.physical_size': { + dashed_name: 'file-pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'file.pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List physical size.', + type: 'long', + }, + 'file.pe.sections.var_entropy': { + dashed_name: 'file-pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'file.pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'file.pe.sections.virtual_size': { + dashed_name: 'file-pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'file.pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, 'file.size': { dashed_name: 'file-size', description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', @@ -5461,7 +6280,14 @@ export const EcsNested = { }, group: 2, name: 'file', - nestings: ['file.code_signature', 'file.elf', 'file.hash', 'file.pe', 'file.x509'], + nestings: [ + 'file.code_signature', + 'file.elf', + 'file.hash', + 'file.macho', + 'file.pe', + 'file.x509', + ], prefix: 'file.', reusable: { expected: [ @@ -5501,6 +6327,12 @@ export const EcsNested = { schema_name: 'elf', short: 'These fields contain Linux Executable Linkable Format (ELF) metadata.', }, + { + beta: 'This field reuse is beta and subject to change.', + full: 'file.macho', + schema_name: 'macho', + short: 'These fields contain Mac OS Mach Object file format (Mach-O) metadata.', + }, ], short: 'Fields describing files.', title: 'File', @@ -6127,7 +6959,7 @@ export const EcsNested = { 'host.name': { dashed_name: 'host-name', description: - 'Name of the host.\nIt can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.', + 'Name of the host.\nIt can contain what hostname returns on Unix systems, the fully qualified domain name (FQDN), or a name specified by the user. The recommended value is the lowercase FQDN of the host.', flat_name: 'host.name', ignore_above: 1024, level: 'core', @@ -6918,51 +7750,264 @@ export const EcsNested = { title: 'Log', type: 'group', }, - network: { - description: - 'The network is defined as the communication path over which a host or network event happens.\nThe network.* fields should be populated with details about the network activity associated with an event.', + macho: { + beta: 'These fields are in beta and are subject to change.', + description: 'These fields contain Mac OS Mach Object file format (Mach-O) metadata.', fields: { - 'network.application': { - dashed_name: 'network-application', + 'macho.go_import_hash': { + dashed_name: 'macho-go-import-hash', description: - "When a specific application or service is identified from network connection details (source/dest IPs, ports, certificates, or wire format), this field captures the application's or service's name.\nFor example, the original event identifies the network connection being from a specific web service in a `https` network connection, like `facebook` or `twitter`.\nThe field value must be normalized to lowercase for querying.", - example: 'aim', - flat_name: 'network.application', + 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'macho.go_import_hash', ignore_above: 1024, level: 'extended', - name: 'application', + name: 'go_import_hash', normalize: [], - short: 'Application level protocol name.', + short: 'A hash of the Go language imports in a Mach-O file.', type: 'keyword', }, - 'network.bytes': { - dashed_name: 'network-bytes', - description: - 'Total bytes transferred in both directions.\nIf `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum.', - example: 368, - flat_name: 'network.bytes', - format: 'bytes', - level: 'core', - name: 'bytes', + 'macho.go_imports': { + dashed_name: 'macho-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'macho.go_imports', + level: 'extended', + name: 'go_imports', normalize: [], - short: 'Total bytes transferred in both directions.', - type: 'long', + short: 'List of imported Go language element names and types.', + type: 'flattened', }, - 'network.community_id': { - dashed_name: 'network-community-id', - description: - 'A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows.\nLearn more at https://github.com/corelight/community-id-spec.', - example: '1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=', - flat_name: 'network.community_id', - ignore_above: 1024, + 'macho.go_imports_names_entropy': { + dashed_name: 'macho-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'macho.go_imports_names_entropy', + format: 'number', level: 'extended', - name: 'community_id', + name: 'go_imports_names_entropy', normalize: [], - short: 'A hash of source and destination IPs and ports.', - type: 'keyword', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', }, - 'network.direction': { - dashed_name: 'network-direction', + 'macho.go_imports_names_var_entropy': { + dashed_name: 'macho-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'macho.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'macho.go_stripped': { + dashed_name: 'macho-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'macho.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, + 'macho.import_hash': { + dashed_name: 'macho-import-hash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'macho.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, + 'macho.imports': { + dashed_name: 'macho-imports', + description: 'List of imported element names and types.', + flat_name: 'macho.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'macho.imports_names_entropy': { + dashed_name: 'macho-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'macho.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'macho.imports_names_var_entropy': { + dashed_name: 'macho-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'macho.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'macho.sections': { + dashed_name: 'macho-sections', + description: + 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', + flat_name: 'macho.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + short: 'Section information of the Mach-O file.', + type: 'nested', + }, + 'macho.sections.entropy': { + dashed_name: 'macho-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'macho.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'macho.sections.name': { + dashed_name: 'macho-sections-name', + description: 'Mach-O Section List name.', + flat_name: 'macho.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + short: 'Mach-O Section List name.', + type: 'keyword', + }, + 'macho.sections.physical_size': { + dashed_name: 'macho-sections-physical-size', + description: 'Mach-O Section List physical size.', + flat_name: 'macho.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + short: 'Mach-O Section List physical size.', + type: 'long', + }, + 'macho.sections.var_entropy': { + dashed_name: 'macho-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'macho.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'macho.sections.virtual_size': { + dashed_name: 'macho-sections-virtual-size', + description: + 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'macho.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, + 'macho.symhash': { + dashed_name: 'macho-symhash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', + example: 'd3ccf195b62a9279c3c19af1080497ec', + flat_name: 'macho.symhash', + ignore_above: 1024, + level: 'extended', + name: 'symhash', + normalize: [], + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, + }, + group: 2, + name: 'macho', + prefix: 'macho.', + reusable: { + expected: [ + { + as: 'macho', + at: 'file', + beta: 'This field reuse is beta and subject to change.', + full: 'file.macho', + }, + { + as: 'macho', + at: 'process', + beta: 'This field reuse is beta and subject to change.', + full: 'process.macho', + }, + ], + top_level: false, + }, + short: 'These fields contain Mac OS Mach Object file format (Mach-O) metadata.', + title: 'Mach-O Header', + type: 'group', + }, + network: { + description: + 'The network is defined as the communication path over which a host or network event happens.\nThe network.* fields should be populated with details about the network activity associated with an event.', + fields: { + 'network.application': { + dashed_name: 'network-application', + description: + "When a specific application or service is identified from network connection details (source/dest IPs, ports, certificates, or wire format), this field captures the application's or service's name.\nFor example, the original event identifies the network connection being from a specific web service in a `https` network connection, like `facebook` or `twitter`.\nThe field value must be normalized to lowercase for querying.", + example: 'aim', + flat_name: 'network.application', + ignore_above: 1024, + level: 'extended', + name: 'application', + normalize: [], + short: 'Application level protocol name.', + type: 'keyword', + }, + 'network.bytes': { + dashed_name: 'network-bytes', + description: + 'Total bytes transferred in both directions.\nIf `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum.', + example: 368, + flat_name: 'network.bytes', + format: 'bytes', + level: 'core', + name: 'bytes', + normalize: [], + short: 'Total bytes transferred in both directions.', + type: 'long', + }, + 'network.community_id': { + dashed_name: 'network-community-id', + description: + 'A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows.\nLearn more at https://github.com/corelight/community-id-spec.', + example: '1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=', + flat_name: 'network.community_id', + ignore_above: 1024, + level: 'extended', + name: 'community_id', + normalize: [], + short: 'A hash of source and destination IPs and ports.', + type: 'keyword', + }, + 'network.direction': { + dashed_name: 'network-direction', description: 'Direction of the network traffic.\nWhen mapping events from a host-based monitoring context, populate this field from the host\'s point of view, using the values "ingress" or "egress".\nWhen mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of the network perimeter, using the values "inbound", "outbound", "internal" or "external".\nNote that "internal" is not crossing perimeter boundaries, and is meant to describe communication between two hosts within the perimeter. Note also that "external" is meant to describe traffic between two hosts that are external to the perimeter. This could for example be useful for ISPs or VPN service providers.', example: 'inbound', @@ -7828,6 +8873,18 @@ export const EcsNested = { short: 'Organization affected by the event (for multi-tenant orchestrator setups).', type: 'keyword', }, + 'orchestrator.resource.annotation': { + dashed_name: 'orchestrator-resource-annotation', + description: 'The list of annotations added to the resource.', + example: "['key1:value1', 'key2:value2', 'key3:value3']", + flat_name: 'orchestrator.resource.annotation', + ignore_above: 1024, + level: 'extended', + name: 'resource.annotation', + normalize: ['array'], + short: 'The list of annotations added to the resource.', + type: 'keyword', + }, 'orchestrator.resource.id': { dashed_name: 'orchestrator-resource-id', description: 'Unique ID of the resource being acted upon.', @@ -7850,6 +8907,18 @@ export const EcsNested = { short: 'IP address assigned to the resource associated with the event being observed.', type: 'ip', }, + 'orchestrator.resource.label': { + dashed_name: 'orchestrator-resource-label', + description: 'The list of labels added to the resource.', + example: "['key1:value1', 'key2:value2', 'key3:value3']", + flat_name: 'orchestrator.resource.label', + ignore_above: 1024, + level: 'extended', + name: 'resource.label', + normalize: ['array'], + short: 'The list of labels added to the resource.', + type: 'keyword', + }, 'orchestrator.resource.name': { dashed_name: 'orchestrator-resource-name', description: 'Name of the resource being acted upon.', @@ -8275,6 +9344,62 @@ export const EcsNested = { short: 'Process name.', type: 'keyword', }, + 'pe.go_import_hash': { + dashed_name: 'pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'pe.go_imports': { + dashed_name: 'pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'pe.go_imports_names_entropy': { + dashed_name: 'pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'pe.go_imports_names_var_entropy': { + dashed_name: 'pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'pe.go_stripped': { + dashed_name: 'pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'pe.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'pe.imphash': { dashed_name: 'pe-imphash', description: @@ -8288,6 +9413,54 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'pe.import_hash': { + dashed_name: 'pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'pe.imports': { + dashed_name: 'pe-imports', + description: 'List of imported element names and types.', + flat_name: 'pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'pe.imports_names_entropy': { + dashed_name: 'pe-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'pe.imports_names_var_entropy': { + dashed_name: 'pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'pe.original_file_name': { dashed_name: 'pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -8325,6 +9498,72 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, + 'pe.sections': { + dashed_name: 'pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + short: 'Section information of the PE file.', + type: 'nested', + }, + 'pe.sections.entropy': { + dashed_name: 'pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'pe.sections.name': { + dashed_name: 'pe-sections-name', + description: 'PE Section List name.', + flat_name: 'pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + short: 'PE Section List name.', + type: 'keyword', + }, + 'pe.sections.physical_size': { + dashed_name: 'pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + short: 'PE Section List physical size.', + type: 'long', + }, + 'pe.sections.var_entropy': { + dashed_name: 'pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'pe.sections.virtual_size': { + dashed_name: 'pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, }, group: 2, name: 'pe', @@ -8571,29 +9810,90 @@ export const EcsNested = { short: 'List of exported element names and types.', type: 'flattened', }, - 'process.elf.header.abi_version': { - dashed_name: 'process-elf-header-abi-version', - description: 'Version of the ELF Application Binary Interface (ABI).', - flat_name: 'process.elf.header.abi_version', + 'process.elf.go_import_hash': { + dashed_name: 'process-elf-go-import-hash', + description: + 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'process.elf.go_import_hash', ignore_above: 1024, level: 'extended', - name: 'header.abi_version', + name: 'go_import_hash', normalize: [], original_fieldset: 'elf', - short: 'Version of the ELF Application Binary Interface (ABI).', + short: 'A hash of the Go language imports in an ELF file.', type: 'keyword', }, - 'process.elf.header.class': { - dashed_name: 'process-elf-header-class', - description: 'Header class of the ELF file.', - flat_name: 'process.elf.header.class', - ignore_above: 1024, + 'process.elf.go_imports': { + dashed_name: 'process-elf-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'process.elf.go_imports', level: 'extended', - name: 'header.class', + name: 'go_imports', normalize: [], original_fieldset: 'elf', - short: 'Header class of the ELF file.', - type: 'keyword', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'process.elf.go_imports_names_entropy': { + dashed_name: 'process-elf-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.elf.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.elf.go_imports_names_var_entropy': { + dashed_name: 'process-elf-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.elf.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.elf.go_stripped': { + dashed_name: 'process-elf-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'process.elf.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'elf', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, + 'process.elf.header.abi_version': { + dashed_name: 'process-elf-header-abi-version', + description: 'Version of the ELF Application Binary Interface (ABI).', + flat_name: 'process.elf.header.abi_version', + ignore_above: 1024, + level: 'extended', + name: 'header.abi_version', + normalize: [], + original_fieldset: 'elf', + short: 'Version of the ELF Application Binary Interface (ABI).', + type: 'keyword', + }, + 'process.elf.header.class': { + dashed_name: 'process-elf-header-class', + description: 'Header class of the ELF file.', + flat_name: 'process.elf.header.class', + ignore_above: 1024, + level: 'extended', + name: 'header.class', + normalize: [], + original_fieldset: 'elf', + short: 'Header class of the ELF file.', + type: 'keyword', }, 'process.elf.header.data': { dashed_name: 'process-elf-header-data', @@ -8667,6 +9967,20 @@ export const EcsNested = { short: 'Version of the ELF header.', type: 'keyword', }, + 'process.elf.import_hash': { + dashed_name: 'process-elf-import-hash', + description: + 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'process.elf.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the imports in an ELF file.', + type: 'keyword', + }, 'process.elf.imports': { dashed_name: 'process-elf-imports', description: 'List of imported element names and types.', @@ -8678,6 +9992,33 @@ export const EcsNested = { short: 'List of imported element names and types.', type: 'flattened', }, + 'process.elf.imports_names_entropy': { + dashed_name: 'process-elf-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.elf.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.elf.imports_names_var_entropy': { + dashed_name: 'process-elf-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.elf.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'process.elf.sections': { dashed_name: 'process-elf-sections', description: @@ -8774,6 +10115,18 @@ export const EcsNested = { short: 'ELF Section List type.', type: 'keyword', }, + 'process.elf.sections.var_entropy': { + dashed_name: 'process-elf-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'process.elf.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, 'process.elf.sections.virtual_address': { dashed_name: 'process-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -9155,6 +10508,20 @@ export const EcsNested = { short: 'The time the process started.', type: 'date', }, + 'process.entry_leader.parent.session_leader.vpid': { + dashed_name: 'process-entry-leader-parent-session-leader-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.entry_leader.parent.session_leader.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.entry_leader.parent.start': { dashed_name: 'process-entry-leader-parent-start', description: 'The time the process started.', @@ -9167,6 +10534,20 @@ export const EcsNested = { short: 'The time the process started.', type: 'date', }, + 'process.entry_leader.parent.vpid': { + dashed_name: 'process-entry-leader-parent-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.entry_leader.parent.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.entry_leader.pid': { dashed_name: 'process-entry-leader-pid', description: 'Process id.', @@ -9415,6 +10796,20 @@ export const EcsNested = { short: 'Short name or login of the user.', type: 'keyword', }, + 'process.entry_leader.vpid': { + dashed_name: 'process-entry-leader-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.entry_leader.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.entry_leader.working_directory': { dashed_name: 'process-entry-leader-working-directory', description: 'The working directory of the process.', @@ -9866,6 +11261,20 @@ export const EcsNested = { short: 'Short name or login of the user.', type: 'keyword', }, + 'process.group_leader.vpid': { + dashed_name: 'process-group-leader-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.group_leader.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.group_leader.working_directory': { dashed_name: 'process-group-leader-working-directory', description: 'The working directory of the process.', @@ -10092,6 +11501,206 @@ export const EcsNested = { short: 'The type of object on which the IO action (read or write) was taken.', type: 'keyword', }, + 'process.macho.go_import_hash': { + dashed_name: 'process-macho-go-import-hash', + description: + 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'process.macho.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the Go language imports in a Mach-O file.', + type: 'keyword', + }, + 'process.macho.go_imports': { + dashed_name: 'process-macho-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'process.macho.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'macho', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'process.macho.go_imports_names_entropy': { + dashed_name: 'process-macho-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.macho.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.macho.go_imports_names_var_entropy': { + dashed_name: 'process-macho-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.macho.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.macho.go_stripped': { + dashed_name: 'process-macho-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'process.macho.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'macho', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, + 'process.macho.import_hash': { + dashed_name: 'process-macho-import-hash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'process.macho.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, + 'process.macho.imports': { + dashed_name: 'process-macho-imports', + description: 'List of imported element names and types.', + flat_name: 'process.macho.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'macho', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'process.macho.imports_names_entropy': { + dashed_name: 'process-macho-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.macho.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.macho.imports_names_var_entropy': { + dashed_name: 'process-macho-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.macho.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'macho', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.macho.sections': { + dashed_name: 'process-macho-sections', + description: + 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', + flat_name: 'process.macho.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'macho', + short: 'Section information of the Mach-O file.', + type: 'nested', + }, + 'process.macho.sections.entropy': { + dashed_name: 'process-macho-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'process.macho.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.macho.sections.name': { + dashed_name: 'process-macho-sections-name', + description: 'Mach-O Section List name.', + flat_name: 'process.macho.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List name.', + type: 'keyword', + }, + 'process.macho.sections.physical_size': { + dashed_name: 'process-macho-sections-physical-size', + description: 'Mach-O Section List physical size.', + flat_name: 'process.macho.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List physical size.', + type: 'long', + }, + 'process.macho.sections.var_entropy': { + dashed_name: 'process-macho-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'process.macho.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.macho.sections.virtual_size': { + dashed_name: 'process-macho-sections-virtual-size', + description: + 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'process.macho.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, + 'process.macho.symhash': { + dashed_name: 'process-macho-symhash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', + example: 'd3ccf195b62a9279c3c19af1080497ec', + flat_name: 'process.macho.symhash', + ignore_above: 1024, + level: 'extended', + name: 'symhash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, 'process.name': { dashed_name: 'process-name', description: 'Process name.\nSometimes called program name or similar.', @@ -10340,6 +11949,67 @@ export const EcsNested = { short: 'List of exported element names and types.', type: 'flattened', }, + 'process.parent.elf.go_import_hash': { + dashed_name: 'process-parent-elf-go-import-hash', + description: + 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'process.parent.elf.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the Go language imports in an ELF file.', + type: 'keyword', + }, + 'process.parent.elf.go_imports': { + dashed_name: 'process-parent-elf-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'process.parent.elf.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'elf', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'process.parent.elf.go_imports_names_entropy': { + dashed_name: 'process-parent-elf-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.parent.elf.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.parent.elf.go_imports_names_var_entropy': { + dashed_name: 'process-parent-elf-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.parent.elf.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.parent.elf.go_stripped': { + dashed_name: 'process-parent-elf-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'process.parent.elf.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'elf', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'process.parent.elf.header.abi_version': { dashed_name: 'process-parent-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -10436,6 +12106,20 @@ export const EcsNested = { short: 'Version of the ELF header.', type: 'keyword', }, + 'process.parent.elf.import_hash': { + dashed_name: 'process-parent-elf-import-hash', + description: + 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'process.parent.elf.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the imports in an ELF file.', + type: 'keyword', + }, 'process.parent.elf.imports': { dashed_name: 'process-parent-elf-imports', description: 'List of imported element names and types.', @@ -10447,6 +12131,33 @@ export const EcsNested = { short: 'List of imported element names and types.', type: 'flattened', }, + 'process.parent.elf.imports_names_entropy': { + dashed_name: 'process-parent-elf-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.parent.elf.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.parent.elf.imports_names_var_entropy': { + dashed_name: 'process-parent-elf-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.parent.elf.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'process.parent.elf.sections': { dashed_name: 'process-parent-elf-sections', description: @@ -10543,6 +12254,18 @@ export const EcsNested = { short: 'ELF Section List type.', type: 'keyword', }, + 'process.parent.elf.sections.var_entropy': { + dashed_name: 'process-parent-elf-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'process.parent.elf.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, 'process.parent.elf.sections.virtual_address': { dashed_name: 'process-parent-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -10749,6 +12472,20 @@ export const EcsNested = { short: 'The time the process started.', type: 'date', }, + 'process.parent.group_leader.vpid': { + dashed_name: 'process-parent-group-leader-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.parent.group_leader.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.parent.hash.md5': { dashed_name: 'process-parent-hash-md5', description: 'MD5 hash.', @@ -10846,6 +12583,206 @@ export const EcsNested = { short: 'Whether the process is connected to an interactive shell.', type: 'boolean', }, + 'process.parent.macho.go_import_hash': { + dashed_name: 'process-parent-macho-go-import-hash', + description: + 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'process.parent.macho.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the Go language imports in a Mach-O file.', + type: 'keyword', + }, + 'process.parent.macho.go_imports': { + dashed_name: 'process-parent-macho-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'process.parent.macho.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'macho', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'process.parent.macho.go_imports_names_entropy': { + dashed_name: 'process-parent-macho-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.parent.macho.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.parent.macho.go_imports_names_var_entropy': { + dashed_name: 'process-parent-macho-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.parent.macho.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.parent.macho.go_stripped': { + dashed_name: 'process-parent-macho-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'process.parent.macho.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'macho', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, + 'process.parent.macho.import_hash': { + dashed_name: 'process-parent-macho-import-hash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'process.parent.macho.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, + 'process.parent.macho.imports': { + dashed_name: 'process-parent-macho-imports', + description: 'List of imported element names and types.', + flat_name: 'process.parent.macho.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'macho', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'process.parent.macho.imports_names_entropy': { + dashed_name: 'process-parent-macho-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.parent.macho.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.parent.macho.imports_names_var_entropy': { + dashed_name: 'process-parent-macho-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.parent.macho.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'macho', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.parent.macho.sections': { + dashed_name: 'process-parent-macho-sections', + description: + 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', + flat_name: 'process.parent.macho.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'macho', + short: 'Section information of the Mach-O file.', + type: 'nested', + }, + 'process.parent.macho.sections.entropy': { + dashed_name: 'process-parent-macho-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'process.parent.macho.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.parent.macho.sections.name': { + dashed_name: 'process-parent-macho-sections-name', + description: 'Mach-O Section List name.', + flat_name: 'process.parent.macho.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List name.', + type: 'keyword', + }, + 'process.parent.macho.sections.physical_size': { + dashed_name: 'process-parent-macho-sections-physical-size', + description: 'Mach-O Section List physical size.', + flat_name: 'process.parent.macho.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List physical size.', + type: 'long', + }, + 'process.parent.macho.sections.var_entropy': { + dashed_name: 'process-parent-macho-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'process.parent.macho.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'macho', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.parent.macho.sections.virtual_size': { + dashed_name: 'process-parent-macho-sections-virtual-size', + description: + 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'process.parent.macho.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'macho', + short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, + 'process.parent.macho.symhash': { + dashed_name: 'process-parent-macho-symhash', + description: + 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', + example: 'd3ccf195b62a9279c3c19af1080497ec', + flat_name: 'process.parent.macho.symhash', + ignore_above: 1024, + level: 'extended', + name: 'symhash', + normalize: [], + original_fieldset: 'macho', + short: 'A hash of the imports in a Mach-O file.', + type: 'keyword', + }, 'process.parent.name': { dashed_name: 'process-parent-name', description: 'Process name.\nSometimes called program name or similar.', @@ -10918,6 +12855,67 @@ export const EcsNested = { short: 'Process name.', type: 'keyword', }, + 'process.parent.pe.go_import_hash': { + dashed_name: 'process-parent-pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'process.parent.pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'process.parent.pe.go_imports': { + dashed_name: 'process-parent-pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'process.parent.pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'pe', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'process.parent.pe.go_imports_names_entropy': { + dashed_name: 'process-parent-pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.parent.pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.parent.pe.go_imports_names_var_entropy': { + dashed_name: 'process-parent-pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.parent.pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.parent.pe.go_stripped': { + dashed_name: 'process-parent-pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'process.parent.pe.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'pe', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'process.parent.pe.imphash': { dashed_name: 'process-parent-pe-imphash', description: @@ -10932,6 +12930,58 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'process.parent.pe.import_hash': { + dashed_name: 'process-parent-pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'process.parent.pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'process.parent.pe.imports': { + dashed_name: 'process-parent-pe-imports', + description: 'List of imported element names and types.', + flat_name: 'process.parent.pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'pe', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'process.parent.pe.imports_names_entropy': { + dashed_name: 'process-parent-pe-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.parent.pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.parent.pe.imports_names_var_entropy': { + dashed_name: 'process-parent-pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.parent.pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'process.parent.pe.original_file_name': { dashed_name: 'process-parent-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -10972,6 +13022,78 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, + 'process.parent.pe.sections': { + dashed_name: 'process-parent-pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'process.parent.pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'pe', + short: 'Section information of the PE file.', + type: 'nested', + }, + 'process.parent.pe.sections.entropy': { + dashed_name: 'process-parent-pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'process.parent.pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.parent.pe.sections.name': { + dashed_name: 'process-parent-pe-sections-name', + description: 'PE Section List name.', + flat_name: 'process.parent.pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List name.', + type: 'keyword', + }, + 'process.parent.pe.sections.physical_size': { + dashed_name: 'process-parent-pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'process.parent.pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List physical size.', + type: 'long', + }, + 'process.parent.pe.sections.var_entropy': { + dashed_name: 'process-parent-pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'process.parent.pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.parent.pe.sections.virtual_size': { + dashed_name: 'process-parent-pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'process.parent.pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, 'process.parent.pgid': { dashed_name: 'process-parent-pgid', description: @@ -11142,10 +13264,40 @@ export const EcsNested = { flat_name: 'process.parent.supplemental_groups.name', ignore_above: 1024, level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.parent.thread.capabilities.effective': { + dashed_name: 'process-parent-thread-capabilities-effective', + description: + 'This is the set of capabilities used by the kernel to perform permission checks for the thread.', + example: '["CAP_BPF", "CAP_SYS_ADMIN"]', + flat_name: 'process.parent.thread.capabilities.effective', + ignore_above: 1024, + level: 'extended', + name: 'thread.capabilities.effective', + normalize: ['array'], + original_fieldset: 'process', + pattern: '^(CAP_[A-Z_]+|\\d+)$', + short: 'Array of capabilities used for permission checks.', + type: 'keyword', + }, + 'process.parent.thread.capabilities.permitted': { + dashed_name: 'process-parent-thread-capabilities-permitted', + description: + 'This is a limiting superset for the effective capabilities that the thread may assume.', + example: '["CAP_BPF", "CAP_SYS_ADMIN"]', + flat_name: 'process.parent.thread.capabilities.permitted', + ignore_above: 1024, + level: 'extended', + name: 'thread.capabilities.permitted', + normalize: ['array'], + original_fieldset: 'process', + pattern: '^(CAP_[A-Z_]+|\\d+)$', + short: 'Array of capabilities a thread could assume.', type: 'keyword', }, 'process.parent.thread.id': { @@ -11277,6 +13429,20 @@ export const EcsNested = { short: 'Short name or login of the user.', type: 'keyword', }, + 'process.parent.vpid': { + dashed_name: 'process-parent-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.parent.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.parent.working_directory': { dashed_name: 'process-parent-working-directory', description: 'The working directory of the process.', @@ -11349,6 +13515,67 @@ export const EcsNested = { short: 'Process name.', type: 'keyword', }, + 'process.pe.go_import_hash': { + dashed_name: 'process-pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'process.pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'process.pe.go_imports': { + dashed_name: 'process-pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'process.pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'pe', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'process.pe.go_imports_names_entropy': { + dashed_name: 'process-pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.pe.go_imports_names_var_entropy': { + dashed_name: 'process-pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'process.pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'process.pe.go_stripped': { + dashed_name: 'process-pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'process.pe.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'pe', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'process.pe.imphash': { dashed_name: 'process-pe-imphash', description: @@ -11363,6 +13590,58 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'process.pe.import_hash': { + dashed_name: 'process-pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'process.pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'process.pe.imports': { + dashed_name: 'process-pe-imports', + description: 'List of imported element names and types.', + flat_name: 'process.pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'pe', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'process.pe.imports_names_entropy': { + dashed_name: 'process-pe-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'process.pe.imports_names_var_entropy': { + dashed_name: 'process-pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'process.pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'process.pe.original_file_name': { dashed_name: 'process-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -11403,6 +13682,78 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, + 'process.pe.sections': { + dashed_name: 'process-pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'process.pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'pe', + short: 'Section information of the PE file.', + type: 'nested', + }, + 'process.pe.sections.entropy': { + dashed_name: 'process-pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'process.pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.pe.sections.name': { + dashed_name: 'process-pe-sections-name', + description: 'PE Section List name.', + flat_name: 'process.pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List name.', + type: 'keyword', + }, + 'process.pe.sections.physical_size': { + dashed_name: 'process-pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'process.pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List physical size.', + type: 'long', + }, + 'process.pe.sections.var_entropy': { + dashed_name: 'process-pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'process.pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.pe.sections.virtual_size': { + dashed_name: 'process-pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'process.pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, 'process.pgid': { dashed_name: 'process-pgid', description: @@ -11792,6 +14143,20 @@ export const EcsNested = { short: 'The time the process started.', type: 'date', }, + 'process.session_leader.parent.session_leader.vpid': { + dashed_name: 'process-session-leader-parent-session-leader-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.session_leader.parent.session_leader.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.session_leader.parent.start': { dashed_name: 'process-session-leader-parent-start', description: 'The time the process started.', @@ -11804,6 +14169,20 @@ export const EcsNested = { short: 'The time the process started.', type: 'date', }, + 'process.session_leader.parent.vpid': { + dashed_name: 'process-session-leader-parent-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.session_leader.parent.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.session_leader.pid': { dashed_name: 'process-session-leader-pid', description: 'Process id.', @@ -12052,6 +14431,20 @@ export const EcsNested = { short: 'Short name or login of the user.', type: 'keyword', }, + 'process.session_leader.vpid': { + dashed_name: 'process-session-leader-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.session_leader.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + original_fieldset: 'process', + short: 'Virtual process id.', + type: 'long', + }, 'process.session_leader.working_directory': { dashed_name: 'process-session-leader-working-directory', description: 'The working directory of the process.', @@ -12107,6 +14500,34 @@ export const EcsNested = { short: 'Name of the group.', type: 'keyword', }, + 'process.thread.capabilities.effective': { + dashed_name: 'process-thread-capabilities-effective', + description: + 'This is the set of capabilities used by the kernel to perform permission checks for the thread.', + example: '["CAP_BPF", "CAP_SYS_ADMIN"]', + flat_name: 'process.thread.capabilities.effective', + ignore_above: 1024, + level: 'extended', + name: 'thread.capabilities.effective', + normalize: ['array'], + pattern: '^(CAP_[A-Z_]+|\\d+)$', + short: 'Array of capabilities used for permission checks.', + type: 'keyword', + }, + 'process.thread.capabilities.permitted': { + dashed_name: 'process-thread-capabilities-permitted', + description: + 'This is a limiting superset for the effective capabilities that the thread may assume.', + example: '["CAP_BPF", "CAP_SYS_ADMIN"]', + flat_name: 'process.thread.capabilities.permitted', + ignore_above: 1024, + level: 'extended', + name: 'thread.capabilities.permitted', + normalize: ['array'], + pattern: '^(CAP_[A-Z_]+|\\d+)$', + short: 'Array of capabilities a thread could assume.', + type: 'keyword', + }, 'process.thread.id': { dashed_name: 'process-thread-id', description: 'Thread ID.', @@ -12255,6 +14676,19 @@ export const EcsNested = { short: 'Short name or login of the user.', type: 'keyword', }, + 'process.vpid': { + dashed_name: 'process-vpid', + description: + 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', + example: 4242, + flat_name: 'process.vpid', + format: 'string', + level: 'core', + name: 'vpid', + normalize: [], + short: 'Virtual process id.', + type: 'long', + }, 'process.working_directory': { dashed_name: 'process-working-directory', description: 'The working directory of the process.', @@ -12289,6 +14723,7 @@ export const EcsNested = { 'process.group', 'process.group_leader', 'process.hash', + 'process.macho', 'process.parent', 'process.parent.group_leader', 'process.pe', @@ -12429,6 +14864,12 @@ export const EcsNested = { schema_name: 'elf', short: 'These fields contain Linux Executable Linkable Format (ELF) metadata.', }, + { + beta: 'This field reuse is beta and subject to change.', + full: 'process.macho', + schema_name: 'macho', + short: 'These fields contain Mac OS Mach Object file format (Mach-O) metadata.', + }, { full: 'process.entry_meta.source', schema_name: 'source', @@ -14789,6 +17230,67 @@ export const EcsNested = { short: 'List of exported element names and types.', type: 'flattened', }, + 'threat.enrichments.indicator.file.elf.go_import_hash': { + dashed_name: 'threat-enrichments-indicator-file-elf-go-import-hash', + description: + 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'threat.enrichments.indicator.file.elf.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the Go language imports in an ELF file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.go_imports': { + dashed_name: 'threat-enrichments-indicator-file-elf-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'threat.enrichments.indicator.file.elf.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'elf', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'threat.enrichments.indicator.file.elf.go_imports_names_entropy': { + dashed_name: 'threat-enrichments-indicator-file-elf-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.enrichments.indicator.file.elf.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.enrichments.indicator.file.elf.go_imports_names_var_entropy': { + dashed_name: 'threat-enrichments-indicator-file-elf-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.enrichments.indicator.file.elf.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.enrichments.indicator.file.elf.go_stripped': { + dashed_name: 'threat-enrichments-indicator-file-elf-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'threat.enrichments.indicator.file.elf.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'elf', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'threat.enrichments.indicator.file.elf.header.abi_version': { dashed_name: 'threat-enrichments-indicator-file-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -14885,6 +17387,20 @@ export const EcsNested = { short: 'Version of the ELF header.', type: 'keyword', }, + 'threat.enrichments.indicator.file.elf.import_hash': { + dashed_name: 'threat-enrichments-indicator-file-elf-import-hash', + description: + 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'threat.enrichments.indicator.file.elf.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the imports in an ELF file.', + type: 'keyword', + }, 'threat.enrichments.indicator.file.elf.imports': { dashed_name: 'threat-enrichments-indicator-file-elf-imports', description: 'List of imported element names and types.', @@ -14896,6 +17412,33 @@ export const EcsNested = { short: 'List of imported element names and types.', type: 'flattened', }, + 'threat.enrichments.indicator.file.elf.imports_names_entropy': { + dashed_name: 'threat-enrichments-indicator-file-elf-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.enrichments.indicator.file.elf.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'threat.enrichments.indicator.file.elf.imports_names_var_entropy': { + dashed_name: 'threat-enrichments-indicator-file-elf-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.enrichments.indicator.file.elf.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'threat.enrichments.indicator.file.elf.sections': { dashed_name: 'threat-enrichments-indicator-file-elf-sections', description: @@ -14992,6 +17535,18 @@ export const EcsNested = { short: 'ELF Section List type.', type: 'keyword', }, + 'threat.enrichments.indicator.file.elf.sections.var_entropy': { + dashed_name: 'threat-enrichments-indicator-file-elf-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'threat.enrichments.indicator.file.elf.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, 'threat.enrichments.indicator.file.elf.sections.virtual_address': { dashed_name: 'threat-enrichments-indicator-file-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -15357,11 +17912,72 @@ export const EcsNested = { flat_name: 'threat.enrichments.indicator.file.pe.file_version', ignore_above: 1024, level: 'extended', - name: 'file_version', + name: 'file_version', + normalize: [], + original_fieldset: 'pe', + short: 'Process name.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.go_import_hash': { + dashed_name: 'threat-enrichments-indicator-file-pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'threat.enrichments.indicator.file.pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.go_imports': { + dashed_name: 'threat-enrichments-indicator-file-pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'threat.enrichments.indicator.file.pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'pe', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'threat.enrichments.indicator.file.pe.go_imports_names_entropy': { + dashed_name: 'threat-enrichments-indicator-file-pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.enrichments.indicator.file.pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.enrichments.indicator.file.pe.go_imports_names_var_entropy': { + dashed_name: 'threat-enrichments-indicator-file-pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.enrichments.indicator.file.pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.enrichments.indicator.file.pe.go_stripped': { + dashed_name: 'threat-enrichments-indicator-file-pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'threat.enrichments.indicator.file.pe.go_stripped', + level: 'extended', + name: 'go_stripped', normalize: [], original_fieldset: 'pe', - short: 'Process name.', - type: 'keyword', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', }, 'threat.enrichments.indicator.file.pe.imphash': { dashed_name: 'threat-enrichments-indicator-file-pe-imphash', @@ -15377,6 +17993,58 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'threat.enrichments.indicator.file.pe.import_hash': { + dashed_name: 'threat-enrichments-indicator-file-pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'threat.enrichments.indicator.file.pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.imports': { + dashed_name: 'threat-enrichments-indicator-file-pe-imports', + description: 'List of imported element names and types.', + flat_name: 'threat.enrichments.indicator.file.pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'pe', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'threat.enrichments.indicator.file.pe.imports_names_entropy': { + dashed_name: 'threat-enrichments-indicator-file-pe-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.enrichments.indicator.file.pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'threat.enrichments.indicator.file.pe.imports_names_var_entropy': { + dashed_name: 'threat-enrichments-indicator-file-pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.enrichments.indicator.file.pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'threat.enrichments.indicator.file.pe.original_file_name': { dashed_name: 'threat-enrichments-indicator-file-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -15417,6 +18085,78 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, + 'threat.enrichments.indicator.file.pe.sections': { + dashed_name: 'threat-enrichments-indicator-file-pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'threat.enrichments.indicator.file.pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'pe', + short: 'Section information of the PE file.', + type: 'nested', + }, + 'threat.enrichments.indicator.file.pe.sections.entropy': { + dashed_name: 'threat-enrichments-indicator-file-pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'threat.enrichments.indicator.file.pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'threat.enrichments.indicator.file.pe.sections.name': { + dashed_name: 'threat-enrichments-indicator-file-pe-sections-name', + description: 'PE Section List name.', + flat_name: 'threat.enrichments.indicator.file.pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List name.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.sections.physical_size': { + dashed_name: 'threat-enrichments-indicator-file-pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'threat.enrichments.indicator.file.pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List physical size.', + type: 'long', + }, + 'threat.enrichments.indicator.file.pe.sections.var_entropy': { + dashed_name: 'threat-enrichments-indicator-file-pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'threat.enrichments.indicator.file.pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'threat.enrichments.indicator.file.pe.sections.virtual_size': { + dashed_name: 'threat-enrichments-indicator-file-pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'threat.enrichments.indicator.file.pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, 'threat.enrichments.indicator.file.size': { dashed_name: 'threat-enrichments-indicator-file-size', description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', @@ -16006,6 +18746,31 @@ export const EcsNested = { short: 'Date/time indicator was last updated.', type: 'date', }, + 'threat.enrichments.indicator.name': { + dashed_name: 'threat-enrichments-indicator-name', + description: 'The display name indicator in an UI friendly format', + example: '5.2.75.227', + expected_values: [ + '5.2.75.227', + '2a02:cf40:add:4002:91f2:a9b2:e09a:6fc6', + 'https://example.com/some/path', + 'example.com', + '373d34874d7bc89fd4cefa6272ee80bf', + 'b0e914d1bbe19433cc9df64ea1ca07fe77f7b150b511b786e46e007941a62bd7', + 'email@example.com', + 'HKLM\\\\SOFTWARE\\\\Microsoft\\\\Active', + 13335, + '00:00:5e:00:53:af', + 8008, + ], + flat_name: 'threat.enrichments.indicator.name', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.indicator.name', + normalize: [], + short: 'Indicator display name', + type: 'keyword', + }, 'threat.enrichments.indicator.port': { dashed_name: 'threat-enrichments-indicator-port', description: 'Identifies a threat indicator as a port number (irrespective of direction).', @@ -17234,6 +19999,67 @@ export const EcsNested = { short: 'List of exported element names and types.', type: 'flattened', }, + 'threat.indicator.file.elf.go_import_hash': { + dashed_name: 'threat-indicator-file-elf-go-import-hash', + description: + 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'threat.indicator.file.elf.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the Go language imports in an ELF file.', + type: 'keyword', + }, + 'threat.indicator.file.elf.go_imports': { + dashed_name: 'threat-indicator-file-elf-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'threat.indicator.file.elf.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'elf', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'threat.indicator.file.elf.go_imports_names_entropy': { + dashed_name: 'threat-indicator-file-elf-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.indicator.file.elf.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.indicator.file.elf.go_imports_names_var_entropy': { + dashed_name: 'threat-indicator-file-elf-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.indicator.file.elf.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.indicator.file.elf.go_stripped': { + dashed_name: 'threat-indicator-file-elf-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'threat.indicator.file.elf.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'elf', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'threat.indicator.file.elf.header.abi_version': { dashed_name: 'threat-indicator-file-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -17330,6 +20156,20 @@ export const EcsNested = { short: 'Version of the ELF header.', type: 'keyword', }, + 'threat.indicator.file.elf.import_hash': { + dashed_name: 'threat-indicator-file-elf-import-hash', + description: + 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'threat.indicator.file.elf.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'elf', + short: 'A hash of the imports in an ELF file.', + type: 'keyword', + }, 'threat.indicator.file.elf.imports': { dashed_name: 'threat-indicator-file-elf-imports', description: 'List of imported element names and types.', @@ -17341,6 +20181,33 @@ export const EcsNested = { short: 'List of imported element names and types.', type: 'flattened', }, + 'threat.indicator.file.elf.imports_names_entropy': { + dashed_name: 'threat-indicator-file-elf-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.indicator.file.elf.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'threat.indicator.file.elf.imports_names_var_entropy': { + dashed_name: 'threat-indicator-file-elf-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.indicator.file.elf.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'elf', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'threat.indicator.file.elf.sections': { dashed_name: 'threat-indicator-file-elf-sections', description: @@ -17437,6 +20304,18 @@ export const EcsNested = { short: 'ELF Section List type.', type: 'keyword', }, + 'threat.indicator.file.elf.sections.var_entropy': { + dashed_name: 'threat-indicator-file-elf-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'threat.indicator.file.elf.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, 'threat.indicator.file.elf.sections.virtual_address': { dashed_name: 'threat-indicator-file-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -17808,6 +20687,67 @@ export const EcsNested = { short: 'Process name.', type: 'keyword', }, + 'threat.indicator.file.pe.go_import_hash': { + dashed_name: 'threat-indicator-file-pe-go-import-hash', + description: + 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', + example: '10bddcb4cee42080f76c88d9ff964491', + flat_name: 'threat.indicator.file.pe.go_import_hash', + ignore_above: 1024, + level: 'extended', + name: 'go_import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the Go language imports in a PE file.', + type: 'keyword', + }, + 'threat.indicator.file.pe.go_imports': { + dashed_name: 'threat-indicator-file-pe-go-imports', + description: 'List of imported Go language element names and types.', + flat_name: 'threat.indicator.file.pe.go_imports', + level: 'extended', + name: 'go_imports', + normalize: [], + original_fieldset: 'pe', + short: 'List of imported Go language element names and types.', + type: 'flattened', + }, + 'threat.indicator.file.pe.go_imports_names_entropy': { + dashed_name: 'threat-indicator-file-pe-go-imports-names-entropy', + description: 'Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.indicator.file.pe.go_imports_names_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.indicator.file.pe.go_imports_names_var_entropy': { + dashed_name: 'threat-indicator-file-pe-go-imports-names-var-entropy', + description: 'Variance for Shannon entropy calculation from the list of Go imports.', + flat_name: 'threat.indicator.file.pe.go_imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'go_imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the list of Go imports.', + type: 'long', + }, + 'threat.indicator.file.pe.go_stripped': { + dashed_name: 'threat-indicator-file-pe-go-stripped', + description: + 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', + flat_name: 'threat.indicator.file.pe.go_stripped', + level: 'extended', + name: 'go_stripped', + normalize: [], + original_fieldset: 'pe', + short: 'Whether the file is a stripped or obfuscated Go executable.', + type: 'boolean', + }, 'threat.indicator.file.pe.imphash': { dashed_name: 'threat-indicator-file-pe-imphash', description: @@ -17822,6 +20762,58 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, + 'threat.indicator.file.pe.import_hash': { + dashed_name: 'threat-indicator-file-pe-import-hash', + description: + 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', + example: 'd41d8cd98f00b204e9800998ecf8427e', + flat_name: 'threat.indicator.file.pe.import_hash', + ignore_above: 1024, + level: 'extended', + name: 'import_hash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'threat.indicator.file.pe.imports': { + dashed_name: 'threat-indicator-file-pe-imports', + description: 'List of imported element names and types.', + flat_name: 'threat.indicator.file.pe.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'pe', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'threat.indicator.file.pe.imports_names_entropy': { + dashed_name: 'threat-indicator-file-pe-imports-names-entropy', + description: + 'Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.indicator.file.pe.imports_names_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, + 'threat.indicator.file.pe.imports_names_var_entropy': { + dashed_name: 'threat-indicator-file-pe-imports-names-var-entropy', + description: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + flat_name: 'threat.indicator.file.pe.imports_names_var_entropy', + format: 'number', + level: 'extended', + name: 'imports_names_var_entropy', + normalize: [], + original_fieldset: 'pe', + short: + 'Variance for Shannon entropy calculation from the list of imported element names and types.', + type: 'long', + }, 'threat.indicator.file.pe.original_file_name': { dashed_name: 'threat-indicator-file-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -17862,6 +20854,78 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, + 'threat.indicator.file.pe.sections': { + dashed_name: 'threat-indicator-file-pe-sections', + description: + 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', + flat_name: 'threat.indicator.file.pe.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'pe', + short: 'Section information of the PE file.', + type: 'nested', + }, + 'threat.indicator.file.pe.sections.entropy': { + dashed_name: 'threat-indicator-file-pe-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'threat.indicator.file.pe.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'threat.indicator.file.pe.sections.name': { + dashed_name: 'threat-indicator-file-pe-sections-name', + description: 'PE Section List name.', + flat_name: 'threat.indicator.file.pe.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List name.', + type: 'keyword', + }, + 'threat.indicator.file.pe.sections.physical_size': { + dashed_name: 'threat-indicator-file-pe-sections-physical-size', + description: 'PE Section List physical size.', + flat_name: 'threat.indicator.file.pe.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List physical size.', + type: 'long', + }, + 'threat.indicator.file.pe.sections.var_entropy': { + dashed_name: 'threat-indicator-file-pe-sections-var-entropy', + description: 'Variance for Shannon entropy calculation from the section.', + flat_name: 'threat.indicator.file.pe.sections.var_entropy', + format: 'number', + level: 'extended', + name: 'sections.var_entropy', + normalize: [], + original_fieldset: 'pe', + short: 'Variance for Shannon entropy calculation from the section.', + type: 'long', + }, + 'threat.indicator.file.pe.sections.virtual_size': { + dashed_name: 'threat-indicator-file-pe-sections-virtual-size', + description: 'PE Section List virtual size. This is always the same as `physical_size`.', + flat_name: 'threat.indicator.file.pe.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'pe', + short: 'PE Section List virtual size. This is always the same as `physical_size`.', + type: 'long', + }, 'threat.indicator.file.size': { dashed_name: 'threat-indicator-file-size', description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', @@ -18451,6 +21515,31 @@ export const EcsNested = { short: 'Date/time indicator was last updated.', type: 'date', }, + 'threat.indicator.name': { + dashed_name: 'threat-indicator-name', + description: 'The display name indicator in an UI friendly format', + example: '5.2.75.227', + expected_values: [ + '5.2.75.227', + '2a02:cf40:add:4002:91f2:a9b2:e09a:6fc6', + 'https://example.com/some/path', + 'example.com', + '373d34874d7bc89fd4cefa6272ee80bf', + 'b0e914d1bbe19433cc9df64ea1ca07fe77f7b150b511b786e46e007941a62bd7', + 'email@example.com', + 'HKLM\\\\SOFTWARE\\\\Microsoft\\\\Active', + 13335, + '00:00:5e:00:53:af', + 8008, + ], + flat_name: 'threat.indicator.name', + ignore_above: 1024, + level: 'extended', + name: 'indicator.name', + normalize: [], + short: 'Indicator display name', + type: 'keyword', + }, 'threat.indicator.port': { dashed_name: 'threat-indicator-port', description: 'Identifies a threat indicator as a port number (irrespective of direction).', diff --git a/packages/kbn-ecs/generated/elf.ts b/packages/kbn-ecs/generated/elf.ts index 3036fa8690733..12133f6afb486 100644 --- a/packages/kbn-ecs/generated/elf.ts +++ b/packages/kbn-ecs/generated/elf.ts @@ -29,7 +29,28 @@ export interface EcsElf { /** * List of exported element names and types. */ - exports?: Array>; + exports?: Record | Array>; + /** + * A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; header?: { /** * Version of the ELF Application Binary Interface (ABI). @@ -65,24 +86,37 @@ export interface EcsElf { version?: string; }; + /** + * A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is an ELF implementation of the Windows PE imphash. + */ + import_hash?: string; /** * List of imported element names and types. */ - imports?: Array>; + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; /** * An array containing an object for each section of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. */ - sections?: Array>; + sections?: Record | Array>; /** * An array containing an object for each segment of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. */ - segments?: Array>; + segments?: Record | Array>; /** * List of shared libraries used by this ELF object. */ - shared_libraries?: string[]; + shared_libraries?: string | string[]; /** * telfhash symbol hash for ELF file. */ diff --git a/packages/kbn-ecs/generated/email.ts b/packages/kbn-ecs/generated/email.ts index 6148733a28a14..d24658894a9c0 100644 --- a/packages/kbn-ecs/generated/email.ts +++ b/packages/kbn-ecs/generated/email.ts @@ -14,19 +14,19 @@ export interface EcsEmail { /** * A list of objects describing the attachment files sent along with an email message. */ - attachments?: Array>; + attachments?: Record | Array>; bcc?: { /** * The email address of BCC recipient */ - address?: string[]; + address?: string | string[]; }; cc?: { /** * The email address of CC recipient */ - address?: string[]; + address?: string | string[]; }; /** @@ -46,7 +46,7 @@ export interface EcsEmail { /** * The email address of the sender, typically from the RFC 5322 `From:` header field. */ - address?: string[]; + address?: string | string[]; }; /** @@ -66,7 +66,7 @@ export interface EcsEmail { /** * The address that replies should be delivered to based on the value in the RFC 5322 `Reply-To:` header. */ - address?: string[]; + address?: string | string[]; }; sender?: { @@ -84,7 +84,7 @@ export interface EcsEmail { /** * The email address of recipient */ - address?: string[]; + address?: string | string[]; }; /** diff --git a/packages/kbn-ecs/generated/event.ts b/packages/kbn-ecs/generated/event.ts index bab8fe9dfa1ca..ea95c7cf91222 100644 --- a/packages/kbn-ecs/generated/event.ts +++ b/packages/kbn-ecs/generated/event.ts @@ -32,17 +32,17 @@ export interface EcsEvent { * `event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory. * This field is an array. This will allow proper categorization of some events that fall in multiple categories. */ - category?: string[]; + category?: string | string[]; /** * Identification code for this event, if one exists. * Some event sources use event codes to identify messages unambiguously, regardless of message language or wording adjustments over time. An example of this is the Windows Event ID. */ code?: string; /** - * event.created contains the date/time when the event was first read by an agent, or by your pipeline. - * This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. + * `event.created` contains the date/time when the event was first read by an agent, or by your pipeline. + * This field is distinct from `@timestamp` in that `@timestamp` typically contain the time extracted from the original event. * In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. - * In case the two timestamps are identical, @timestamp should be used. + * In case the two timestamps are identical, `@timestamp` should be used. */ created?: string; /** @@ -53,11 +53,11 @@ export interface EcsEvent { dataset?: string; /** * Duration of the event in nanoseconds. - * If event.start and event.end are known this value should be the difference between the end and start time. + * If `event.start` and `event.end` are known this value should be the difference between the end and start time. */ duration?: number; /** - * event.end contains the date when the event ended or when the activity was last observed. + * `event.end` contains the date when the event ended or when the activity was last observed. */ end?: string; /** @@ -77,7 +77,7 @@ export interface EcsEvent { /** * This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy. * `event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events. - * The value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not. + * The value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data is coming in at a regular interval or not. */ kind?: string; /** @@ -134,7 +134,7 @@ export interface EcsEvent { */ severity?: number; /** - * event.start contains the date when the event started or when the activity was first observed. + * `event.start` contains the date when the event started or when the activity was first observed. */ start?: string; /** @@ -147,7 +147,7 @@ export interface EcsEvent { * `event.type` represents a categorization "sub-bucket" that, when used along with the `event.category` field values, enables filtering events down to a level appropriate for single visualization. * This field is an array. This will allow proper categorization of some events that fall in multiple event types. */ - type?: string[]; + type?: string | string[]; /** * URL linking to an external system to continue investigation of this event. * This URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. diff --git a/packages/kbn-ecs/generated/faas.ts b/packages/kbn-ecs/generated/faas.ts index 91704dd91348e..c589e8e924b8d 100644 --- a/packages/kbn-ecs/generated/faas.ts +++ b/packages/kbn-ecs/generated/faas.ts @@ -27,10 +27,17 @@ export interface EcsFaas { * The name of a serverless function. */ name?: string; - /** - * Details about the function trigger. - */ - trigger?: Record; + trigger?: { + /** + * The ID of the trigger request , message, event, etc. + */ + request_id?: string; + /** + * The trigger for the function execution. + */ + type?: string; + }; + /** * The version of a serverless function. */ diff --git a/packages/kbn-ecs/generated/file.ts b/packages/kbn-ecs/generated/file.ts index c759adace6246..66f60db2fd686 100644 --- a/packages/kbn-ecs/generated/file.ts +++ b/packages/kbn-ecs/generated/file.ts @@ -20,7 +20,7 @@ export interface EcsFile { * Array of file attributes. * Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write. */ - attributes?: string[]; + attributes?: string | string[]; code_signature?: { /** * The hashing algorithm used to sign the process. @@ -109,7 +109,28 @@ export interface EcsFile { /** * List of exported element names and types. */ - exports?: Array>; + exports?: Record | Array>; + /** + * A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; header?: { /** * Version of the ELF Application Binary Interface (ABI). @@ -145,24 +166,37 @@ export interface EcsFile { version?: string; }; + /** + * A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is an ELF implementation of the Windows PE imphash. + */ + import_hash?: string; /** * List of imported element names and types. */ - imports?: Array>; + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; /** * An array containing an object for each section of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. */ - sections?: Array>; + sections?: Record | Array>; /** * An array containing an object for each segment of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. */ - segments?: Array>; + segments?: Record | Array>; /** * List of shared libraries used by this ELF object. */ - shared_libraries?: string[]; + shared_libraries?: string | string[]; /** * telfhash symbol hash for ELF file. */ @@ -223,6 +257,57 @@ export interface EcsFile { * Inode representing the file in the filesystem. */ inode?: string; + macho?: { + /** + * A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; + /** + * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is a synonym for symhash. + */ + import_hash?: string; + /** + * List of imported element names and types. + */ + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; + /** + * An array containing an object for each section of the Mach-O file. + * The keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`. + */ + sections?: Record | Array>; + /** + * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is a Mach-O implementation of the Windows PE imphash + */ + symhash?: string; + }; + /** * MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used. */ @@ -264,11 +349,49 @@ export interface EcsFile { * Internal version of the file, provided at compile-time. */ file_version?: string; + /** + * A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; /** * A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. */ imphash?: string; + /** + * A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is a synonym for imphash. + */ + import_hash?: string; + /** + * List of imported element names and types. + */ + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; /** * Internal name of the file, provided at compile-time. */ @@ -282,6 +405,11 @@ export interface EcsFile { * Internal product name of the file, provided at compile-time. */ product?: string; + /** + * An array containing an object for each section of the PE file. + * The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`. + */ + sections?: Record | Array>; }; /** @@ -305,16 +433,16 @@ export interface EcsFile { /** * List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. */ - alternative_names?: string[]; + alternative_names?: string | string[]; issuer?: { /** * List of common name (CN) of issuing certificate authority. */ - common_name?: string[]; + common_name?: string | string[]; /** * List of country \(C) codes */ - country?: string[]; + country?: string | string[]; /** * Distinguished name (DN) of issuing certificate authority. */ @@ -322,19 +450,19 @@ export interface EcsFile { /** * List of locality names (L) */ - locality?: string[]; + locality?: string | string[]; /** * List of organizations (O) of issuing certificate authority. */ - organization?: string[]; + organization?: string | string[]; /** * List of organizational units (OU) of issuing certificate authority. */ - organizational_unit?: string[]; + organizational_unit?: string | string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string[]; + state_or_province?: string | string[]; }; /** @@ -373,11 +501,11 @@ export interface EcsFile { /** * List of common names (CN) of subject. */ - common_name?: string[]; + common_name?: string | string[]; /** * List of country \(C) code */ - country?: string[]; + country?: string | string[]; /** * Distinguished name (DN) of the certificate subject entity. */ @@ -385,19 +513,19 @@ export interface EcsFile { /** * List of locality names (L) */ - locality?: string[]; + locality?: string | string[]; /** * List of organizations (O) of subject. */ - organization?: string[]; + organization?: string | string[]; /** * List of organizational units (OU) of subject. */ - organizational_unit?: string[]; + organizational_unit?: string | string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string[]; + state_or_province?: string | string[]; }; /** diff --git a/packages/kbn-ecs/generated/host.ts b/packages/kbn-ecs/generated/host.ts index aa2f082dbb60e..3cdc083145d7f 100644 --- a/packages/kbn-ecs/generated/host.ts +++ b/packages/kbn-ecs/generated/host.ts @@ -116,15 +116,15 @@ export interface EcsHost { /** * Host ip addresses. */ - ip?: string[]; + ip?: string | string[]; /** * Host MAC addresses. * The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. */ - mac?: string[]; + mac?: string | string[]; /** * Name of the host. - * It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. + * It can contain what hostname returns on Unix systems, the fully qualified domain name (FQDN), or a name specified by the user. The recommended value is the lowercase FQDN of the host. */ name?: string; network?: { diff --git a/packages/kbn-ecs/generated/index.ts b/packages/kbn-ecs/generated/index.ts index bd3cd6a3a7eac..e7d4e54e9a6b6 100644 --- a/packages/kbn-ecs/generated/index.ts +++ b/packages/kbn-ecs/generated/index.ts @@ -32,6 +32,7 @@ import { EcsHost } from './host'; import { EcsHttp } from './http'; import { EcsInterface } from './interface'; import { EcsLog } from './log'; +import { EcsMacho } from './macho'; import { EcsNetwork } from './network'; import { EcsObserver } from './observer'; import { EcsOrchestrator } from './orchestrator'; @@ -57,7 +58,7 @@ import { EcsVlan } from './vlan'; import { EcsVulnerability } from './vulnerability'; import { EcsX509 } from './x509'; -export const EcsVersion = '8.6.1' as const; +export const EcsVersion = '8.10.0' as const; /** * Exporting raw schema files for easy programmatic use @@ -92,6 +93,7 @@ export type { EcsHttp, EcsInterface, EcsLog, + EcsMacho, EcsNetwork, EcsObserver, EcsOrchestrator, diff --git a/packages/kbn-ecs/generated/macho.ts b/packages/kbn-ecs/generated/macho.ts index 4f6ae41df01b3..023f13395dd6b 100644 --- a/packages/kbn-ecs/generated/macho.ts +++ b/packages/kbn-ecs/generated/macho.ts @@ -39,7 +39,7 @@ export interface EcsMacho { /** * List of imported element names and types. */ - imports?: Record; + imports?: Record | Array>; /** * Shannon entropy calculation from the list of imported element names and types. */ @@ -52,7 +52,7 @@ export interface EcsMacho { * An array containing an object for each section of the Mach-O file. * The keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`. */ - sections?: Record; + sections?: Record | Array>; /** * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * This is a Mach-O implementation of the Windows PE imphash diff --git a/packages/kbn-ecs/generated/observer.ts b/packages/kbn-ecs/generated/observer.ts index ae4c6f5b8e47a..775adeed1fa83 100644 --- a/packages/kbn-ecs/generated/observer.ts +++ b/packages/kbn-ecs/generated/observer.ts @@ -76,12 +76,12 @@ export interface EcsObserver { /** * IP addresses of the observer. */ - ip?: string[]; + ip?: string | string[]; /** * MAC addresses of the observer. * The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. */ - mac?: string[]; + mac?: string | string[]; /** * Custom name of the observer. * This is a name that can be given to an observer. This can be helpful for example if multiple firewalls of the same model are used in an organization. diff --git a/packages/kbn-ecs/generated/orchestrator.ts b/packages/kbn-ecs/generated/orchestrator.ts index 386f182209a29..08378f6f1744a 100644 --- a/packages/kbn-ecs/generated/orchestrator.ts +++ b/packages/kbn-ecs/generated/orchestrator.ts @@ -42,6 +42,10 @@ export interface EcsOrchestrator { */ organization?: string; resource?: { + /** + * The list of annotations added to the resource. + */ + annotation?: string | string[]; /** * Unique ID of the resource being acted upon. */ @@ -49,7 +53,11 @@ export interface EcsOrchestrator { /** * IP address assigned to the resource associated with the event being observed. In the case of a Kubernetes Pod, this array would contain only one element: the IP of the Pod (as opposed to the Node on which the Pod is running). */ - ip?: string[]; + ip?: string | string[]; + /** + * The list of labels added to the resource. + */ + label?: string | string[]; /** * Name of the resource being acted upon. */ diff --git a/packages/kbn-ecs/generated/pe.ts b/packages/kbn-ecs/generated/pe.ts index 91ba52d8f4a11..431dbcc33490a 100644 --- a/packages/kbn-ecs/generated/pe.ts +++ b/packages/kbn-ecs/generated/pe.ts @@ -26,11 +26,49 @@ export interface EcsPe { * Internal version of the file, provided at compile-time. */ file_version?: string; + /** + * A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; /** * A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. */ imphash?: string; + /** + * A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is a synonym for imphash. + */ + import_hash?: string; + /** + * List of imported element names and types. + */ + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; /** * Internal name of the file, provided at compile-time. */ @@ -44,4 +82,9 @@ export interface EcsPe { * Internal product name of the file, provided at compile-time. */ product?: string; + /** + * An array containing an object for each section of the PE file. + * The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`. + */ + sections?: Record | Array>; } diff --git a/packages/kbn-ecs/generated/process.ts b/packages/kbn-ecs/generated/process.ts index fad38c5e9775f..a011f81dca9d0 100644 --- a/packages/kbn-ecs/generated/process.ts +++ b/packages/kbn-ecs/generated/process.ts @@ -15,7 +15,7 @@ export interface EcsProcess { * Array of process arguments, starting with the absolute path to the executable. * May be filtered to protect sensitive information. */ - args?: string[]; + args?: string | string[]; /** * Length of the process.args array. * This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. @@ -91,7 +91,28 @@ export interface EcsProcess { /** * List of exported element names and types. */ - exports?: Array>; + exports?: Record | Array>; + /** + * A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; header?: { /** * Version of the ELF Application Binary Interface (ABI). @@ -127,24 +148,37 @@ export interface EcsProcess { version?: string; }; + /** + * A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is an ELF implementation of the Windows PE imphash. + */ + import_hash?: string; /** * List of imported element names and types. */ - imports?: Array>; + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; /** * An array containing an object for each section of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. */ - sections?: Array>; + sections?: Record | Array>; /** * An array containing an object for each segment of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. */ - segments?: Array>; + segments?: Record | Array>; /** * List of shared libraries used by this ELF object. */ - shared_libraries?: string[]; + shared_libraries?: string | string[]; /** * telfhash symbol hash for ELF file. */ @@ -166,7 +200,7 @@ export interface EcsProcess { * Array of process arguments, starting with the absolute path to the executable. * May be filtered to protect sensitive information. */ - args?: string[]; + args?: string | string[]; /** * Length of the process.args array. * This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. @@ -268,12 +302,22 @@ export interface EcsProcess { * The time the process started. */ start?: string; + /** + * Virtual process id. + * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + */ + vpid?: number; }; /** * The time the process started. */ start?: string; + /** + * Virtual process id. + * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + */ + vpid?: number; }; /** @@ -362,6 +406,11 @@ export interface EcsProcess { name?: string; }; + /** + * Virtual process id. + * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + */ + vpid?: number; /** * The working directory of the process. */ @@ -372,7 +421,7 @@ export interface EcsProcess { * Array of environment variable bindings. Captured from a snapshot of the environment at the time of execution. * May be filtered to protect sensitive information. */ - env_vars?: string[]; + env_vars?: string | string[]; /** * Absolute path to the process executable. */ @@ -387,7 +436,7 @@ export interface EcsProcess { * Array of process arguments, starting with the absolute path to the executable. * May be filtered to protect sensitive information. */ - args?: string[]; + args?: string | string[]; /** * Length of the process.args array. * This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. @@ -516,6 +565,11 @@ export interface EcsProcess { name?: string; }; + /** + * Virtual process id. + * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + */ + vpid?: number; /** * The working directory of the process. */ @@ -564,6 +618,57 @@ export interface EcsProcess { * This field only appears on the top level process object, which is the process that wrote the output or read the input. */ io?: Record; + macho?: { + /** + * A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; + /** + * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is a synonym for symhash. + */ + import_hash?: string; + /** + * List of imported element names and types. + */ + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; + /** + * An array containing an object for each section of the Mach-O file. + * The keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`. + */ + sections?: Record | Array>; + /** + * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is a Mach-O implementation of the Windows PE imphash + */ + symhash?: string; + }; + /** * Process name. * Sometimes called program name or similar. @@ -574,7 +679,7 @@ export interface EcsProcess { * Array of process arguments, starting with the absolute path to the executable. * May be filtered to protect sensitive information. */ - args?: string[]; + args?: string | string[]; /** * Length of the process.args array. * This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. @@ -650,7 +755,28 @@ export interface EcsProcess { /** * List of exported element names and types. */ - exports?: Array>; + exports?: Record | Array>; + /** + * A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; header?: { /** * Version of the ELF Application Binary Interface (ABI). @@ -686,24 +812,37 @@ export interface EcsProcess { version?: string; }; + /** + * A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is an ELF implementation of the Windows PE imphash. + */ + import_hash?: string; /** * List of imported element names and types. */ - imports?: Array>; + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; /** * An array containing an object for each section of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. */ - sections?: Array>; + sections?: Record | Array>; /** * An array containing an object for each segment of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. */ - segments?: Array>; + segments?: Record | Array>; /** * List of shared libraries used by this ELF object. */ - shared_libraries?: string[]; + shared_libraries?: string | string[]; /** * telfhash symbol hash for ELF file. */ @@ -755,6 +894,11 @@ export interface EcsProcess { * The time the process started. */ start?: string; + /** + * Virtual process id. + * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + */ + vpid?: number; }; hash?: { @@ -794,6 +938,57 @@ export interface EcsProcess { * Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY. */ interactive?: boolean; + macho?: { + /** + * A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; + /** + * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is a synonym for symhash. + */ + import_hash?: string; + /** + * List of imported element names and types. + */ + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; + /** + * An array containing an object for each section of the Mach-O file. + * The keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`. + */ + sections?: Record | Array>; + /** + * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is a Mach-O implementation of the Windows PE imphash + */ + symhash?: string; + }; + /** * Process name. * Sometimes called program name or similar. @@ -816,11 +1011,49 @@ export interface EcsProcess { * Internal version of the file, provided at compile-time. */ file_version?: string; + /** + * A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; /** * A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. */ imphash?: string; + /** + * A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is a synonym for imphash. + */ + import_hash?: string; + /** + * List of imported element names and types. + */ + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; /** * Internal name of the file, provided at compile-time. */ @@ -834,6 +1067,11 @@ export interface EcsProcess { * Internal product name of the file, provided at compile-time. */ product?: string; + /** + * An array containing an object for each section of the PE file. + * The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`. + */ + sections?: Record | Array>; }; /** @@ -905,6 +1143,17 @@ export interface EcsProcess { }; thread?: { + capabilities?: { + /** + * This is the set of capabilities used by the kernel to perform permission checks for the thread. + */ + effective?: string | string[]; + /** + * This is a limiting superset for the effective capabilities that the thread may assume. + */ + permitted?: string | string[]; + }; + /** * Thread ID. */ @@ -939,6 +1188,11 @@ export interface EcsProcess { name?: string; }; + /** + * Virtual process id. + * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + */ + vpid?: number; /** * The working directory of the process. */ @@ -962,11 +1216,49 @@ export interface EcsProcess { * Internal version of the file, provided at compile-time. */ file_version?: string; + /** + * A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; /** * A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. */ imphash?: string; + /** + * A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is a synonym for imphash. + */ + import_hash?: string; + /** + * List of imported element names and types. + */ + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; /** * Internal name of the file, provided at compile-time. */ @@ -980,6 +1272,11 @@ export interface EcsProcess { * Internal product name of the file, provided at compile-time. */ product?: string; + /** + * An array containing an object for each section of the PE file. + * The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`. + */ + sections?: Record | Array>; }; /** @@ -996,7 +1293,7 @@ export interface EcsProcess { * Array of process arguments, starting with the absolute path to the executable. * May be filtered to protect sensitive information. */ - args?: string[]; + args?: string | string[]; /** * Length of the process.args array. * This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. @@ -1057,7 +1354,7 @@ export interface EcsProcess { * Array of process arguments, starting with the absolute path to the executable. * May be filtered to protect sensitive information. */ - args?: string[]; + args?: string | string[]; /** * Length of the process.args array. * This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. @@ -1126,12 +1423,22 @@ export interface EcsProcess { * The time the process started. */ start?: string; + /** + * Virtual process id. + * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + */ + vpid?: number; }; /** * The time the process started. */ start?: string; + /** + * Virtual process id. + * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + */ + vpid?: number; }; /** @@ -1220,6 +1527,11 @@ export interface EcsProcess { name?: string; }; + /** + * Virtual process id. + * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + */ + vpid?: number; /** * The working directory of the process. */ @@ -1242,6 +1554,17 @@ export interface EcsProcess { }; thread?: { + capabilities?: { + /** + * This is the set of capabilities used by the kernel to perform permission checks for the thread. + */ + effective?: string | string[]; + /** + * This is a limiting superset for the effective capabilities that the thread may assume. + */ + permitted?: string | string[]; + }; + /** * Thread ID. */ @@ -1276,6 +1599,11 @@ export interface EcsProcess { name?: string; }; + /** + * Virtual process id. + * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. + */ + vpid?: number; /** * The working directory of the process. */ diff --git a/packages/kbn-ecs/generated/registry.ts b/packages/kbn-ecs/generated/registry.ts index f1f5ade606b12..b591bc79cdcfc 100644 --- a/packages/kbn-ecs/generated/registry.ts +++ b/packages/kbn-ecs/generated/registry.ts @@ -20,7 +20,7 @@ export interface EcsRegistry { * Content when writing string types. * Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). */ - strings?: string[]; + strings?: string | string[]; /** * Standard registry type for encoding contents */ diff --git a/packages/kbn-ecs/generated/related.ts b/packages/kbn-ecs/generated/related.ts index dc6e1d6b40130..07ce7c8e582df 100644 --- a/packages/kbn-ecs/generated/related.ts +++ b/packages/kbn-ecs/generated/related.ts @@ -15,17 +15,17 @@ export interface EcsRelated { /** * All the hashes seen on your event. Populating this field, then using it to search for hashes can help in situations where you're unsure what the hash algorithm is (and therefore which key name to search). */ - hash?: string[]; + hash?: string | string[]; /** * All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases. */ - hosts?: string[]; + hosts?: string | string[]; /** * All of the IPs seen on your event. */ - ip?: string[]; + ip?: string | string[]; /** * All the user names or other user identifiers seen on the event. */ - user?: string[]; + user?: string | string[]; } diff --git a/packages/kbn-ecs/generated/rule.ts b/packages/kbn-ecs/generated/rule.ts index d632db2e967ca..6942149e002b5 100644 --- a/packages/kbn-ecs/generated/rule.ts +++ b/packages/kbn-ecs/generated/rule.ts @@ -14,7 +14,7 @@ export interface EcsRule { /** * Name, organization, or pseudonym of the author or authors who created the rule used to generate this event. */ - author?: string[]; + author?: string | string[]; /** * A categorization value keyword used by the entity using the rule for detection of this event. */ diff --git a/packages/kbn-ecs/generated/schema.ts b/packages/kbn-ecs/generated/schema.ts deleted file mode 100644 index 72e60f123f788..0000000000000 --- a/packages/kbn-ecs/generated/schema.ts +++ /dev/null @@ -1,22185 +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 EcsSchema = { - agent: { - description: - 'The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host.\nExamples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken.', - fields: { - 'agent.build.original': { - dashed_name: 'agent-build-original', - description: - 'Extended build information for the agent.\nThis field is intended to contain any build information that a data source may provide, no specific formatting is required.', - example: - 'metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC]', - flat_name: 'agent.build.original', - ignore_above: 1024, - level: 'core', - name: 'build.original', - normalize: [], - short: 'Extended build information for the agent.', - type: 'keyword', - }, - 'agent.ephemeral_id': { - dashed_name: 'agent-ephemeral-id', - description: - 'Ephemeral identifier of this agent (if one exists).\nThis id normally changes across restarts, but `agent.id` does not.', - example: '8a4f500f', - flat_name: 'agent.ephemeral_id', - ignore_above: 1024, - level: 'extended', - name: 'ephemeral_id', - normalize: [], - short: 'Ephemeral identifier of this agent.', - type: 'keyword', - }, - 'agent.id': { - dashed_name: 'agent-id', - description: - 'Unique identifier of this agent (if one exists).\nExample: For Beats this would be beat.id.', - example: '8a4f500d', - flat_name: 'agent.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - short: 'Unique identifier of this agent.', - type: 'keyword', - }, - 'agent.name': { - dashed_name: 'agent-name', - description: - 'Custom name of the agent.\nThis is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from.', - example: 'foo', - flat_name: 'agent.name', - ignore_above: 1024, - level: 'core', - name: 'name', - normalize: [], - short: 'Custom name of the agent.', - type: 'keyword', - }, - 'agent.type': { - dashed_name: 'agent-type', - description: - 'Type of the agent.\nThe agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine.', - example: 'filebeat', - flat_name: 'agent.type', - ignore_above: 1024, - level: 'core', - name: 'type', - normalize: [], - short: 'Type of the agent.', - type: 'keyword', - }, - 'agent.version': { - dashed_name: 'agent-version', - description: 'Version of the agent.', - example: '6.0.0-rc2', - flat_name: 'agent.version', - ignore_above: 1024, - level: 'core', - name: 'version', - normalize: [], - short: 'Version of the agent.', - type: 'keyword', - }, - }, - footnote: - 'Examples: In the case of Beats for logs, the agent.name is filebeat. For APM, it is the agent running in the app/service. The agent information does not change if data is sent through queuing systems like Kafka, Redis, or processing systems such as Logstash or APM Server.', - group: 2, - name: 'agent', - prefix: 'agent.', - short: 'Fields about the monitoring agent.', - title: 'Agent', - type: 'group', - }, - as: { - description: - 'An autonomous system (AS) is a collection of connected Internet Protocol (IP) routing prefixes under the control of one or more network operators on behalf of a single administrative entity or domain that presents a common, clearly defined routing policy to the internet.', - fields: { - 'as.number': { - dashed_name: 'as-number', - description: - 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', - example: 15169, - flat_name: 'as.number', - level: 'extended', - name: 'number', - normalize: [], - short: 'Unique number allocated to the autonomous system.', - type: 'long', - }, - 'as.organization.name': { - dashed_name: 'as-organization-name', - description: 'Organization name.', - example: 'Google LLC', - flat_name: 'as.organization.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'as.organization.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'organization.name', - normalize: [], - short: 'Organization name.', - type: 'keyword', - }, - }, - group: 2, - name: 'as', - prefix: 'as.', - reusable: { - expected: [ - { as: 'as', at: 'client', full: 'client.as' }, - { as: 'as', at: 'destination', full: 'destination.as' }, - { as: 'as', at: 'server', full: 'server.as' }, - { as: 'as', at: 'source', full: 'source.as' }, - { as: 'as', at: 'threat.indicator', full: 'threat.indicator.as' }, - { - as: 'as', - at: 'threat.enrichments.indicator', - full: 'threat.enrichments.indicator.as', - }, - ], - top_level: false, - }, - short: 'Fields describing an Autonomous System (Internet routing prefix).', - title: 'Autonomous System', - type: 'group', - }, - base: { - description: - 'The `base` field set contains all fields which are at the root of the events. These fields are common across all types of events.', - fields: { - '@timestamp': { - dashed_name: 'timestamp', - description: - 'Date/time when the event originated.\nThis is the date/time extracted from the event, typically representing when the event was generated by the source.\nIf the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline.\nRequired field for all events.', - example: '2016-05-23T08:05:34.853Z', - flat_name: '@timestamp', - level: 'core', - name: '@timestamp', - normalize: [], - required: true, - short: 'Date/time when the event originated.', - type: 'date', - }, - labels: { - dashed_name: 'labels', - description: - 'Custom key/value pairs.\nCan be used to add meta information to events. Should not contain nested objects. All values are stored as keyword.\nExample: `docker` and `k8s` labels.', - example: '{"application": "foo-bar", "env": "production"}', - flat_name: 'labels', - level: 'core', - name: 'labels', - normalize: [], - object_type: 'keyword', - short: 'Custom key/value pairs.', - type: 'object', - }, - message: { - dashed_name: 'message', - description: - 'For log events the message field contains the log message, optimized for viewing in a log viewer.\nFor structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event.\nIf multiple messages exist, they can be combined into one message.', - example: 'Hello World', - flat_name: 'message', - level: 'core', - name: 'message', - normalize: [], - short: 'Log message optimized for viewing in a log viewer.', - type: 'match_only_text', - }, - tags: { - dashed_name: 'tags', - description: 'List of keywords used to tag each event.', - example: '["production", "env2"]', - flat_name: 'tags', - ignore_above: 1024, - level: 'core', - name: 'tags', - normalize: ['array'], - short: 'List of keywords used to tag each event.', - type: 'keyword', - }, - }, - group: 1, - name: 'base', - prefix: '', - root: true, - short: 'All fields defined directly at the root of the events.', - title: 'Base', - type: 'group', - }, - client: { - description: - 'A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records.\nFor TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events.\nClient / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately.', - fields: { - 'client.address': { - dashed_name: 'client-address', - description: - 'Some event client addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field.\nThen it should be duplicated to `.ip` or `.domain`, depending on which one it is.', - flat_name: 'client.address', - ignore_above: 1024, - level: 'extended', - name: 'address', - normalize: [], - short: 'Client network address.', - type: 'keyword', - }, - 'client.as.number': { - dashed_name: 'client-as-number', - description: - 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', - example: 15169, - flat_name: 'client.as.number', - level: 'extended', - name: 'number', - normalize: [], - original_fieldset: 'as', - short: 'Unique number allocated to the autonomous system.', - type: 'long', - }, - 'client.as.organization.name': { - dashed_name: 'client-as-organization-name', - description: 'Organization name.', - example: 'Google LLC', - flat_name: 'client.as.organization.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'client.as.organization.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'organization.name', - normalize: [], - original_fieldset: 'as', - short: 'Organization name.', - type: 'keyword', - }, - 'client.bytes': { - dashed_name: 'client-bytes', - description: 'Bytes sent from the client to the server.', - example: 184, - flat_name: 'client.bytes', - format: 'bytes', - level: 'core', - name: 'bytes', - normalize: [], - short: 'Bytes sent from the client to the server.', - type: 'long', - }, - 'client.domain': { - dashed_name: 'client-domain', - description: - 'The domain name of the client system.\nThis value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.', - example: 'foo.example.com', - flat_name: 'client.domain', - ignore_above: 1024, - level: 'core', - name: 'domain', - normalize: [], - short: 'The domain name of the client.', - type: 'keyword', - }, - 'client.geo.city_name': { - dashed_name: 'client-geo-city-name', - description: 'City name.', - example: 'Montreal', - flat_name: 'client.geo.city_name', - ignore_above: 1024, - level: 'core', - name: 'city_name', - normalize: [], - original_fieldset: 'geo', - short: 'City name.', - type: 'keyword', - }, - 'client.geo.continent_code': { - dashed_name: 'client-geo-continent-code', - description: "Two-letter code representing continent's name.", - example: 'NA', - flat_name: 'client.geo.continent_code', - ignore_above: 1024, - level: 'core', - name: 'continent_code', - normalize: [], - original_fieldset: 'geo', - short: 'Continent code.', - type: 'keyword', - }, - 'client.geo.continent_name': { - dashed_name: 'client-geo-continent-name', - description: 'Name of the continent.', - example: 'North America', - flat_name: 'client.geo.continent_name', - ignore_above: 1024, - level: 'core', - name: 'continent_name', - normalize: [], - original_fieldset: 'geo', - short: 'Name of the continent.', - type: 'keyword', - }, - 'client.geo.country_iso_code': { - dashed_name: 'client-geo-country-iso-code', - description: 'Country ISO code.', - example: 'CA', - flat_name: 'client.geo.country_iso_code', - ignore_above: 1024, - level: 'core', - name: 'country_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Country ISO code.', - type: 'keyword', - }, - 'client.geo.country_name': { - dashed_name: 'client-geo-country-name', - description: 'Country name.', - example: 'Canada', - flat_name: 'client.geo.country_name', - ignore_above: 1024, - level: 'core', - name: 'country_name', - normalize: [], - original_fieldset: 'geo', - short: 'Country name.', - type: 'keyword', - }, - 'client.geo.location': { - dashed_name: 'client-geo-location', - description: 'Longitude and latitude.', - example: '{ "lon": -73.614830, "lat": 45.505918 }', - flat_name: 'client.geo.location', - level: 'core', - name: 'location', - normalize: [], - original_fieldset: 'geo', - short: 'Longitude and latitude.', - type: 'geo_point', - }, - 'client.geo.name': { - dashed_name: 'client-geo-name', - description: - 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', - example: 'boston-dc', - flat_name: 'client.geo.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'geo', - short: 'User-defined description of a location.', - type: 'keyword', - }, - 'client.geo.postal_code': { - dashed_name: 'client-geo-postal-code', - description: - 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', - example: 94040, - flat_name: 'client.geo.postal_code', - ignore_above: 1024, - level: 'core', - name: 'postal_code', - normalize: [], - original_fieldset: 'geo', - short: 'Postal code.', - type: 'keyword', - }, - 'client.geo.region_iso_code': { - dashed_name: 'client-geo-region-iso-code', - description: 'Region ISO code.', - example: 'CA-QC', - flat_name: 'client.geo.region_iso_code', - ignore_above: 1024, - level: 'core', - name: 'region_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Region ISO code.', - type: 'keyword', - }, - 'client.geo.region_name': { - dashed_name: 'client-geo-region-name', - description: 'Region name.', - example: 'Quebec', - flat_name: 'client.geo.region_name', - ignore_above: 1024, - level: 'core', - name: 'region_name', - normalize: [], - original_fieldset: 'geo', - short: 'Region name.', - type: 'keyword', - }, - 'client.geo.timezone': { - dashed_name: 'client-geo-timezone', - description: 'The time zone of the location, such as IANA time zone name.', - example: 'America/Argentina/Buenos_Aires', - flat_name: 'client.geo.timezone', - ignore_above: 1024, - level: 'core', - name: 'timezone', - normalize: [], - original_fieldset: 'geo', - short: 'Time zone.', - type: 'keyword', - }, - 'client.ip': { - dashed_name: 'client-ip', - description: 'IP address of the client (IPv4 or IPv6).', - flat_name: 'client.ip', - level: 'core', - name: 'ip', - normalize: [], - short: 'IP address of the client.', - type: 'ip', - }, - 'client.mac': { - dashed_name: 'client-mac', - description: - 'MAC address of the client.\nThe notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.', - example: '00-00-5E-00-53-23', - flat_name: 'client.mac', - ignore_above: 1024, - level: 'core', - name: 'mac', - normalize: [], - pattern: '^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$', - short: 'MAC address of the client.', - type: 'keyword', - }, - 'client.nat.ip': { - dashed_name: 'client-nat-ip', - description: - 'Translated IP of source based NAT sessions (e.g. internal client to internet).\nTypically connections traversing load balancers, firewalls, or routers.', - flat_name: 'client.nat.ip', - level: 'extended', - name: 'nat.ip', - normalize: [], - short: 'Client NAT ip address', - type: 'ip', - }, - 'client.nat.port': { - dashed_name: 'client-nat-port', - description: - 'Translated port of source based NAT sessions (e.g. internal client to internet).\nTypically connections traversing load balancers, firewalls, or routers.', - flat_name: 'client.nat.port', - format: 'string', - level: 'extended', - name: 'nat.port', - normalize: [], - short: 'Client NAT port', - type: 'long', - }, - 'client.packets': { - dashed_name: 'client-packets', - description: 'Packets sent from the client to the server.', - example: 12, - flat_name: 'client.packets', - level: 'core', - name: 'packets', - normalize: [], - short: 'Packets sent from the client to the server.', - type: 'long', - }, - 'client.port': { - dashed_name: 'client-port', - description: 'Port of the client.', - flat_name: 'client.port', - format: 'string', - level: 'core', - name: 'port', - normalize: [], - short: 'Port of the client.', - type: 'long', - }, - 'client.registered_domain': { - dashed_name: 'client-registered-domain', - description: - 'The highest registered client domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', - example: 'example.com', - flat_name: 'client.registered_domain', - ignore_above: 1024, - level: 'extended', - name: 'registered_domain', - normalize: [], - short: 'The highest registered client domain, stripped of the subdomain.', - type: 'keyword', - }, - 'client.subdomain': { - dashed_name: 'client-subdomain', - description: - 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', - example: 'east', - flat_name: 'client.subdomain', - ignore_above: 1024, - level: 'extended', - name: 'subdomain', - normalize: [], - short: 'The subdomain of the domain.', - type: 'keyword', - }, - 'client.top_level_domain': { - dashed_name: 'client-top-level-domain', - description: - 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', - example: 'co.uk', - flat_name: 'client.top_level_domain', - ignore_above: 1024, - level: 'extended', - name: 'top_level_domain', - normalize: [], - short: 'The effective top level domain (com, org, net, co.uk).', - type: 'keyword', - }, - 'client.user.domain': { - dashed_name: 'client-user-domain', - description: - 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'client.user.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'user', - short: 'Name of the directory the user is a member of.', - type: 'keyword', - }, - 'client.user.email': { - dashed_name: 'client-user-email', - description: 'User email address.', - flat_name: 'client.user.email', - ignore_above: 1024, - level: 'extended', - name: 'email', - normalize: [], - original_fieldset: 'user', - short: 'User email address.', - type: 'keyword', - }, - 'client.user.full_name': { - dashed_name: 'client-user-full-name', - description: "User's full name, if available.", - example: 'Albert Einstein', - flat_name: 'client.user.full_name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'client.user.full_name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full_name', - normalize: [], - original_fieldset: 'user', - short: "User's full name, if available.", - type: 'keyword', - }, - 'client.user.group.domain': { - dashed_name: 'client-user-group-domain', - description: - 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'client.user.group.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'group', - short: 'Name of the directory the group is a member of.', - type: 'keyword', - }, - 'client.user.group.id': { - dashed_name: 'client-user-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'client.user.group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'client.user.group.name': { - dashed_name: 'client-user-group-name', - description: 'Name of the group.', - flat_name: 'client.user.group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'client.user.hash': { - dashed_name: 'client-user-hash', - description: - 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', - flat_name: 'client.user.hash', - ignore_above: 1024, - level: 'extended', - name: 'hash', - normalize: [], - original_fieldset: 'user', - short: 'Unique user hash to correlate information for a user in anonymized form.', - type: 'keyword', - }, - 'client.user.id': { - dashed_name: 'client-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'client.user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'client.user.name': { - dashed_name: 'client-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'client.user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'client.user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'client.user.roles': { - dashed_name: 'client-user-roles', - description: 'Array of user roles at the time of the event.', - example: '["kibana_admin", "reporting_user"]', - flat_name: 'client.user.roles', - ignore_above: 1024, - level: 'extended', - name: 'roles', - normalize: ['array'], - original_fieldset: 'user', - short: 'Array of user roles at the time of the event.', - type: 'keyword', - }, - }, - group: 2, - name: 'client', - nestings: ['client.as', 'client.geo', 'client.user'], - prefix: 'client.', - reused_here: [ - { - full: 'client.as', - schema_name: 'as', - short: 'Fields describing an Autonomous System (Internet routing prefix).', - }, - { - full: 'client.geo', - schema_name: 'geo', - short: 'Fields describing a location.', - }, - { - full: 'client.user', - schema_name: 'user', - short: 'Fields to describe the user relevant to the event.', - }, - ], - short: 'Fields about the client side of a network connection, used with server.', - title: 'Client', - type: 'group', - }, - cloud: { - description: 'Fields related to the cloud or infrastructure the events are coming from.', - fields: { - 'cloud.account.id': { - dashed_name: 'cloud-account-id', - description: - 'The cloud account or organization id used to identify different entities in a multi-tenant environment.\nExamples: AWS account id, Google Cloud ORG Id, or other unique identifier.', - example: 666777888999, - flat_name: 'cloud.account.id', - ignore_above: 1024, - level: 'extended', - name: 'account.id', - normalize: [], - short: 'The cloud account or organization id.', - type: 'keyword', - }, - 'cloud.account.name': { - dashed_name: 'cloud-account-name', - description: - 'The cloud account name or alias used to identify different entities in a multi-tenant environment.\nExamples: AWS account name, Google Cloud ORG display name.', - example: 'elastic-dev', - flat_name: 'cloud.account.name', - ignore_above: 1024, - level: 'extended', - name: 'account.name', - normalize: [], - short: 'The cloud account name.', - type: 'keyword', - }, - 'cloud.availability_zone': { - dashed_name: 'cloud-availability-zone', - description: 'Availability zone in which this host, resource, or service is located.', - example: 'us-east-1c', - flat_name: 'cloud.availability_zone', - ignore_above: 1024, - level: 'extended', - name: 'availability_zone', - normalize: [], - short: 'Availability zone in which this host, resource, or service is located.', - type: 'keyword', - }, - 'cloud.instance.id': { - dashed_name: 'cloud-instance-id', - description: 'Instance ID of the host machine.', - example: 'i-1234567890abcdef0', - flat_name: 'cloud.instance.id', - ignore_above: 1024, - level: 'extended', - name: 'instance.id', - normalize: [], - short: 'Instance ID of the host machine.', - type: 'keyword', - }, - 'cloud.instance.name': { - dashed_name: 'cloud-instance-name', - description: 'Instance name of the host machine.', - flat_name: 'cloud.instance.name', - ignore_above: 1024, - level: 'extended', - name: 'instance.name', - normalize: [], - short: 'Instance name of the host machine.', - type: 'keyword', - }, - 'cloud.machine.type': { - dashed_name: 'cloud-machine-type', - description: 'Machine type of the host machine.', - example: 't2.medium', - flat_name: 'cloud.machine.type', - ignore_above: 1024, - level: 'extended', - name: 'machine.type', - normalize: [], - short: 'Machine type of the host machine.', - type: 'keyword', - }, - 'cloud.origin.account.id': { - dashed_name: 'cloud-origin-account-id', - description: - 'The cloud account or organization id used to identify different entities in a multi-tenant environment.\nExamples: AWS account id, Google Cloud ORG Id, or other unique identifier.', - example: 666777888999, - flat_name: 'cloud.origin.account.id', - ignore_above: 1024, - level: 'extended', - name: 'account.id', - normalize: [], - original_fieldset: 'cloud', - short: 'The cloud account or organization id.', - type: 'keyword', - }, - 'cloud.origin.account.name': { - dashed_name: 'cloud-origin-account-name', - description: - 'The cloud account name or alias used to identify different entities in a multi-tenant environment.\nExamples: AWS account name, Google Cloud ORG display name.', - example: 'elastic-dev', - flat_name: 'cloud.origin.account.name', - ignore_above: 1024, - level: 'extended', - name: 'account.name', - normalize: [], - original_fieldset: 'cloud', - short: 'The cloud account name.', - type: 'keyword', - }, - 'cloud.origin.availability_zone': { - dashed_name: 'cloud-origin-availability-zone', - description: 'Availability zone in which this host, resource, or service is located.', - example: 'us-east-1c', - flat_name: 'cloud.origin.availability_zone', - ignore_above: 1024, - level: 'extended', - name: 'availability_zone', - normalize: [], - original_fieldset: 'cloud', - short: 'Availability zone in which this host, resource, or service is located.', - type: 'keyword', - }, - 'cloud.origin.instance.id': { - dashed_name: 'cloud-origin-instance-id', - description: 'Instance ID of the host machine.', - example: 'i-1234567890abcdef0', - flat_name: 'cloud.origin.instance.id', - ignore_above: 1024, - level: 'extended', - name: 'instance.id', - normalize: [], - original_fieldset: 'cloud', - short: 'Instance ID of the host machine.', - type: 'keyword', - }, - 'cloud.origin.instance.name': { - dashed_name: 'cloud-origin-instance-name', - description: 'Instance name of the host machine.', - flat_name: 'cloud.origin.instance.name', - ignore_above: 1024, - level: 'extended', - name: 'instance.name', - normalize: [], - original_fieldset: 'cloud', - short: 'Instance name of the host machine.', - type: 'keyword', - }, - 'cloud.origin.machine.type': { - dashed_name: 'cloud-origin-machine-type', - description: 'Machine type of the host machine.', - example: 't2.medium', - flat_name: 'cloud.origin.machine.type', - ignore_above: 1024, - level: 'extended', - name: 'machine.type', - normalize: [], - original_fieldset: 'cloud', - short: 'Machine type of the host machine.', - type: 'keyword', - }, - 'cloud.origin.project.id': { - dashed_name: 'cloud-origin-project-id', - description: - 'The cloud project identifier.\nExamples: Google Cloud Project id, Azure Project id.', - example: 'my-project', - flat_name: 'cloud.origin.project.id', - ignore_above: 1024, - level: 'extended', - name: 'project.id', - normalize: [], - original_fieldset: 'cloud', - short: 'The cloud project id.', - type: 'keyword', - }, - 'cloud.origin.project.name': { - dashed_name: 'cloud-origin-project-name', - description: - 'The cloud project name.\nExamples: Google Cloud Project name, Azure Project name.', - example: 'my project', - flat_name: 'cloud.origin.project.name', - ignore_above: 1024, - level: 'extended', - name: 'project.name', - normalize: [], - original_fieldset: 'cloud', - short: 'The cloud project name.', - type: 'keyword', - }, - 'cloud.origin.provider': { - dashed_name: 'cloud-origin-provider', - description: - 'Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean.', - example: 'aws', - flat_name: 'cloud.origin.provider', - ignore_above: 1024, - level: 'extended', - name: 'provider', - normalize: [], - original_fieldset: 'cloud', - short: 'Name of the cloud provider.', - type: 'keyword', - }, - 'cloud.origin.region': { - dashed_name: 'cloud-origin-region', - description: 'Region in which this host, resource, or service is located.', - example: 'us-east-1', - flat_name: 'cloud.origin.region', - ignore_above: 1024, - level: 'extended', - name: 'region', - normalize: [], - original_fieldset: 'cloud', - short: 'Region in which this host, resource, or service is located.', - type: 'keyword', - }, - 'cloud.origin.service.name': { - dashed_name: 'cloud-origin-service-name', - description: - 'The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server.\nExamples: app engine, app service, cloud run, fargate, lambda.', - example: 'lambda', - flat_name: 'cloud.origin.service.name', - ignore_above: 1024, - level: 'extended', - name: 'service.name', - normalize: [], - original_fieldset: 'cloud', - short: 'The cloud service name.', - type: 'keyword', - }, - 'cloud.project.id': { - dashed_name: 'cloud-project-id', - description: - 'The cloud project identifier.\nExamples: Google Cloud Project id, Azure Project id.', - example: 'my-project', - flat_name: 'cloud.project.id', - ignore_above: 1024, - level: 'extended', - name: 'project.id', - normalize: [], - short: 'The cloud project id.', - type: 'keyword', - }, - 'cloud.project.name': { - dashed_name: 'cloud-project-name', - description: - 'The cloud project name.\nExamples: Google Cloud Project name, Azure Project name.', - example: 'my project', - flat_name: 'cloud.project.name', - ignore_above: 1024, - level: 'extended', - name: 'project.name', - normalize: [], - short: 'The cloud project name.', - type: 'keyword', - }, - 'cloud.provider': { - dashed_name: 'cloud-provider', - description: - 'Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean.', - example: 'aws', - flat_name: 'cloud.provider', - ignore_above: 1024, - level: 'extended', - name: 'provider', - normalize: [], - short: 'Name of the cloud provider.', - type: 'keyword', - }, - 'cloud.region': { - dashed_name: 'cloud-region', - description: 'Region in which this host, resource, or service is located.', - example: 'us-east-1', - flat_name: 'cloud.region', - ignore_above: 1024, - level: 'extended', - name: 'region', - normalize: [], - short: 'Region in which this host, resource, or service is located.', - type: 'keyword', - }, - 'cloud.service.name': { - dashed_name: 'cloud-service-name', - description: - 'The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server.\nExamples: app engine, app service, cloud run, fargate, lambda.', - example: 'lambda', - flat_name: 'cloud.service.name', - ignore_above: 1024, - level: 'extended', - name: 'service.name', - normalize: [], - short: 'The cloud service name.', - type: 'keyword', - }, - 'cloud.target.account.id': { - dashed_name: 'cloud-target-account-id', - description: - 'The cloud account or organization id used to identify different entities in a multi-tenant environment.\nExamples: AWS account id, Google Cloud ORG Id, or other unique identifier.', - example: 666777888999, - flat_name: 'cloud.target.account.id', - ignore_above: 1024, - level: 'extended', - name: 'account.id', - normalize: [], - original_fieldset: 'cloud', - short: 'The cloud account or organization id.', - type: 'keyword', - }, - 'cloud.target.account.name': { - dashed_name: 'cloud-target-account-name', - description: - 'The cloud account name or alias used to identify different entities in a multi-tenant environment.\nExamples: AWS account name, Google Cloud ORG display name.', - example: 'elastic-dev', - flat_name: 'cloud.target.account.name', - ignore_above: 1024, - level: 'extended', - name: 'account.name', - normalize: [], - original_fieldset: 'cloud', - short: 'The cloud account name.', - type: 'keyword', - }, - 'cloud.target.availability_zone': { - dashed_name: 'cloud-target-availability-zone', - description: 'Availability zone in which this host, resource, or service is located.', - example: 'us-east-1c', - flat_name: 'cloud.target.availability_zone', - ignore_above: 1024, - level: 'extended', - name: 'availability_zone', - normalize: [], - original_fieldset: 'cloud', - short: 'Availability zone in which this host, resource, or service is located.', - type: 'keyword', - }, - 'cloud.target.instance.id': { - dashed_name: 'cloud-target-instance-id', - description: 'Instance ID of the host machine.', - example: 'i-1234567890abcdef0', - flat_name: 'cloud.target.instance.id', - ignore_above: 1024, - level: 'extended', - name: 'instance.id', - normalize: [], - original_fieldset: 'cloud', - short: 'Instance ID of the host machine.', - type: 'keyword', - }, - 'cloud.target.instance.name': { - dashed_name: 'cloud-target-instance-name', - description: 'Instance name of the host machine.', - flat_name: 'cloud.target.instance.name', - ignore_above: 1024, - level: 'extended', - name: 'instance.name', - normalize: [], - original_fieldset: 'cloud', - short: 'Instance name of the host machine.', - type: 'keyword', - }, - 'cloud.target.machine.type': { - dashed_name: 'cloud-target-machine-type', - description: 'Machine type of the host machine.', - example: 't2.medium', - flat_name: 'cloud.target.machine.type', - ignore_above: 1024, - level: 'extended', - name: 'machine.type', - normalize: [], - original_fieldset: 'cloud', - short: 'Machine type of the host machine.', - type: 'keyword', - }, - 'cloud.target.project.id': { - dashed_name: 'cloud-target-project-id', - description: - 'The cloud project identifier.\nExamples: Google Cloud Project id, Azure Project id.', - example: 'my-project', - flat_name: 'cloud.target.project.id', - ignore_above: 1024, - level: 'extended', - name: 'project.id', - normalize: [], - original_fieldset: 'cloud', - short: 'The cloud project id.', - type: 'keyword', - }, - 'cloud.target.project.name': { - dashed_name: 'cloud-target-project-name', - description: - 'The cloud project name.\nExamples: Google Cloud Project name, Azure Project name.', - example: 'my project', - flat_name: 'cloud.target.project.name', - ignore_above: 1024, - level: 'extended', - name: 'project.name', - normalize: [], - original_fieldset: 'cloud', - short: 'The cloud project name.', - type: 'keyword', - }, - 'cloud.target.provider': { - dashed_name: 'cloud-target-provider', - description: - 'Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean.', - example: 'aws', - flat_name: 'cloud.target.provider', - ignore_above: 1024, - level: 'extended', - name: 'provider', - normalize: [], - original_fieldset: 'cloud', - short: 'Name of the cloud provider.', - type: 'keyword', - }, - 'cloud.target.region': { - dashed_name: 'cloud-target-region', - description: 'Region in which this host, resource, or service is located.', - example: 'us-east-1', - flat_name: 'cloud.target.region', - ignore_above: 1024, - level: 'extended', - name: 'region', - normalize: [], - original_fieldset: 'cloud', - short: 'Region in which this host, resource, or service is located.', - type: 'keyword', - }, - 'cloud.target.service.name': { - dashed_name: 'cloud-target-service-name', - description: - 'The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server.\nExamples: app engine, app service, cloud run, fargate, lambda.', - example: 'lambda', - flat_name: 'cloud.target.service.name', - ignore_above: 1024, - level: 'extended', - name: 'service.name', - normalize: [], - original_fieldset: 'cloud', - short: 'The cloud service name.', - type: 'keyword', - }, - }, - footnote: - "Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.\nThe cloud fields may be self-nested under cloud.origin.* and cloud.target.* to describe origin or target service's cloud information in the context of incoming or outgoing requests, respectively. However, the fieldsets cloud.origin.* and cloud.target.* must not be confused with the root cloud fieldset that is used to describe the cloud context of the actual service under observation. The fieldset cloud.origin.* may only be used in the context of incoming requests or events to provide the originating service's cloud information. The fieldset cloud.target.* may only be used in the context of outgoing requests or events to describe the target service's cloud information.", - group: 2, - name: 'cloud', - nestings: ['cloud.origin', 'cloud.target'], - prefix: 'cloud.', - reusable: { - expected: [ - { - as: 'origin', - at: 'cloud', - beta: 'Reusing the `cloud` fields in this location is currently considered beta.', - full: 'cloud.origin', - short_override: - 'Provides the cloud information of the origin entity in case of an incoming request or event.', - }, - { - as: 'target', - at: 'cloud', - beta: 'Reusing the `cloud` fields in this location is currently considered beta.', - full: 'cloud.target', - short_override: - 'Provides the cloud information of the target entity in case of an outgoing request or event.', - }, - ], - top_level: true, - }, - reused_here: [ - { - beta: 'Reusing the `cloud` fields in this location is currently considered beta.', - full: 'cloud.origin', - schema_name: 'cloud', - short: - 'Provides the cloud information of the origin entity in case of an incoming request or event.', - }, - { - beta: 'Reusing the `cloud` fields in this location is currently considered beta.', - full: 'cloud.target', - schema_name: 'cloud', - short: - 'Provides the cloud information of the target entity in case of an outgoing request or event.', - }, - ], - short: 'Fields about the cloud resource.', - title: 'Cloud', - type: 'group', - }, - code_signature: { - description: 'These fields contain information about binary code signatures.', - fields: { - 'code_signature.digest_algorithm': { - dashed_name: 'code-signature-digest-algorithm', - description: - 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', - example: 'sha256', - flat_name: 'code_signature.digest_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'digest_algorithm', - normalize: [], - short: 'Hashing algorithm used to sign the process.', - type: 'keyword', - }, - 'code_signature.exists': { - dashed_name: 'code-signature-exists', - description: 'Boolean to capture if a signature is present.', - example: 'true', - flat_name: 'code_signature.exists', - level: 'core', - name: 'exists', - normalize: [], - short: 'Boolean to capture if a signature is present.', - type: 'boolean', - }, - 'code_signature.signing_id': { - dashed_name: 'code-signature-signing-id', - description: - 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', - example: 'com.apple.xpc.proxy', - flat_name: 'code_signature.signing_id', - ignore_above: 1024, - level: 'extended', - name: 'signing_id', - normalize: [], - short: 'The identifier used to sign the process.', - type: 'keyword', - }, - 'code_signature.status': { - dashed_name: 'code-signature-status', - description: - 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', - example: 'ERROR_UNTRUSTED_ROOT', - flat_name: 'code_signature.status', - ignore_above: 1024, - level: 'extended', - name: 'status', - normalize: [], - short: 'Additional information about the certificate status.', - type: 'keyword', - }, - 'code_signature.subject_name': { - dashed_name: 'code-signature-subject-name', - description: 'Subject name of the code signer', - example: 'Microsoft Corporation', - flat_name: 'code_signature.subject_name', - ignore_above: 1024, - level: 'core', - name: 'subject_name', - normalize: [], - short: 'Subject name of the code signer', - type: 'keyword', - }, - 'code_signature.team_id': { - dashed_name: 'code-signature-team-id', - description: - 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', - example: 'EQHXZ8M8AV', - flat_name: 'code_signature.team_id', - ignore_above: 1024, - level: 'extended', - name: 'team_id', - normalize: [], - short: 'The team identifier used to sign the process.', - type: 'keyword', - }, - 'code_signature.timestamp': { - dashed_name: 'code-signature-timestamp', - description: 'Date and time when the code signature was generated and signed.', - example: '2021-01-01T12:10:30Z', - flat_name: 'code_signature.timestamp', - level: 'extended', - name: 'timestamp', - normalize: [], - short: 'When the signature was generated and signed.', - type: 'date', - }, - 'code_signature.trusted': { - dashed_name: 'code-signature-trusted', - description: - 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', - example: 'true', - flat_name: 'code_signature.trusted', - level: 'extended', - name: 'trusted', - normalize: [], - short: 'Stores the trust status of the certificate chain.', - type: 'boolean', - }, - 'code_signature.valid': { - dashed_name: 'code-signature-valid', - description: - 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', - example: 'true', - flat_name: 'code_signature.valid', - level: 'extended', - name: 'valid', - normalize: [], - short: - 'Boolean to capture if the digital signature is verified against the binary content.', - type: 'boolean', - }, - }, - group: 2, - name: 'code_signature', - prefix: 'code_signature.', - reusable: { - expected: [ - { as: 'code_signature', at: 'file', full: 'file.code_signature' }, - { as: 'code_signature', at: 'process', full: 'process.code_signature' }, - { as: 'code_signature', at: 'dll', full: 'dll.code_signature' }, - ], - top_level: false, - }, - short: 'These fields contain information about binary code signatures.', - title: 'Code Signature', - type: 'group', - }, - container: { - description: - 'Container fields are used for meta information about the specific container that is the source of information.\nThese fields help correlate data based containers from any runtime.', - fields: { - 'container.cpu.usage': { - dashed_name: 'container-cpu-usage', - description: - 'Percent CPU used which is normalized by the number of CPU cores and it ranges from 0 to 1. Scaling factor: 1000.', - flat_name: 'container.cpu.usage', - level: 'extended', - name: 'cpu.usage', - normalize: [], - scaling_factor: 1000, - short: 'Percent CPU used, between 0 and 1.', - type: 'scaled_float', - }, - 'container.disk.read.bytes': { - dashed_name: 'container-disk-read-bytes', - description: - 'The total number of bytes (gauge) read successfully (aggregated from all disks) since the last metric collection.', - flat_name: 'container.disk.read.bytes', - level: 'extended', - name: 'disk.read.bytes', - normalize: [], - short: 'The number of bytes read by all disks.', - type: 'long', - }, - 'container.disk.write.bytes': { - dashed_name: 'container-disk-write-bytes', - description: - 'The total number of bytes (gauge) written successfully (aggregated from all disks) since the last metric collection.', - flat_name: 'container.disk.write.bytes', - level: 'extended', - name: 'disk.write.bytes', - normalize: [], - short: 'The number of bytes written on all disks.', - type: 'long', - }, - 'container.id': { - dashed_name: 'container-id', - description: 'Unique container id.', - flat_name: 'container.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - short: 'Unique container id.', - type: 'keyword', - }, - 'container.image.hash.all': { - dashed_name: 'container-image-hash-all', - description: - 'An array of digests of the image the container was built on. Each digest consists of the hash algorithm and value in this format: `algorithm:value`. Algorithm names should align with the field names in the ECS hash field set.', - example: '[sha256:f8fefc80e3273dc756f288a63945820d6476ad64883892c771b5e2ece6bf1b26]', - flat_name: 'container.image.hash.all', - ignore_above: 1024, - level: 'extended', - name: 'image.hash.all', - normalize: ['array'], - short: 'An array of digests of the image the container was built on.', - type: 'keyword', - }, - 'container.image.name': { - dashed_name: 'container-image-name', - description: 'Name of the image the container was built on.', - flat_name: 'container.image.name', - ignore_above: 1024, - level: 'extended', - name: 'image.name', - normalize: [], - short: 'Name of the image the container was built on.', - type: 'keyword', - }, - 'container.image.tag': { - dashed_name: 'container-image-tag', - description: 'Container image tags.', - flat_name: 'container.image.tag', - ignore_above: 1024, - level: 'extended', - name: 'image.tag', - normalize: ['array'], - short: 'Container image tags.', - type: 'keyword', - }, - 'container.labels': { - dashed_name: 'container-labels', - description: 'Image labels.', - flat_name: 'container.labels', - level: 'extended', - name: 'labels', - normalize: [], - object_type: 'keyword', - short: 'Image labels.', - type: 'object', - }, - 'container.memory.usage': { - dashed_name: 'container-memory-usage', - description: 'Memory usage percentage and it ranges from 0 to 1. Scaling factor: 1000.', - flat_name: 'container.memory.usage', - level: 'extended', - name: 'memory.usage', - normalize: [], - scaling_factor: 1000, - short: 'Percent memory used, between 0 and 1.', - type: 'scaled_float', - }, - 'container.name': { - dashed_name: 'container-name', - description: 'Container name.', - flat_name: 'container.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'Container name.', - type: 'keyword', - }, - 'container.network.egress.bytes': { - dashed_name: 'container-network-egress-bytes', - description: - 'The number of bytes (gauge) sent out on all network interfaces by the container since the last metric collection.', - flat_name: 'container.network.egress.bytes', - level: 'extended', - name: 'network.egress.bytes', - normalize: [], - short: 'The number of bytes sent on all network interfaces.', - type: 'long', - }, - 'container.network.ingress.bytes': { - dashed_name: 'container-network-ingress-bytes', - description: - 'The number of bytes received (gauge) on all network interfaces by the container since the last metric collection.', - flat_name: 'container.network.ingress.bytes', - level: 'extended', - name: 'network.ingress.bytes', - normalize: [], - short: 'The number of bytes received on all network interfaces.', - type: 'long', - }, - 'container.runtime': { - dashed_name: 'container-runtime', - description: 'Runtime managing this container.', - example: 'docker', - flat_name: 'container.runtime', - ignore_above: 1024, - level: 'extended', - name: 'runtime', - normalize: [], - short: 'Runtime managing this container.', - type: 'keyword', - }, - }, - group: 2, - name: 'container', - prefix: 'container.', - short: 'Fields describing the container that generated this event.', - title: 'Container', - type: 'group', - }, - data_stream: { - beta: 'These fields are in beta and are subject to change.', - description: - 'The data_stream fields take part in defining the new data stream naming scheme.\nIn the new data stream naming scheme the value of the data stream fields combine to the name of the actual data stream in the following manner: `{data_stream.type}-{data_stream.dataset}-{data_stream.namespace}`. This means the fields can only contain characters that are valid as part of names of data streams. More details about this can be found in this https://www.elastic.co/blog/an-introduction-to-the-elastic-data-stream-naming-scheme[blog post].\nAn Elasticsearch data stream consists of one or more backing indices, and a data stream name forms part of the backing indices names. Due to this convention, data streams must also follow index naming restrictions. For example, data stream names cannot include `\\`, `/`, `*`, `?`, `"`, `<`, `>`, `|`, ` ` (space character), `,`, or `#`. Please see the Elasticsearch reference for additional https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html#indices-create-api-path-params[restrictions].', - fields: { - 'data_stream.dataset': { - dashed_name: 'data-stream-dataset', - description: - 'The field can contain anything that makes sense to signify the source of the data.\nExamples include `nginx.access`, `prometheus`, `endpoint` etc. For data streams that otherwise fit, but that do not have dataset set we use the value "generic" for the dataset value. `event.dataset` should have the same value as `data_stream.dataset`.\nBeyond the Elasticsearch data stream naming criteria noted above, the `dataset` value has additional restrictions:\n * Must not contain `-`\n * No longer than 100 characters', - example: 'nginx.access', - flat_name: 'data_stream.dataset', - level: 'extended', - name: 'dataset', - normalize: [], - short: 'The field can contain anything that makes sense to signify the source of the data.', - type: 'constant_keyword', - }, - 'data_stream.namespace': { - dashed_name: 'data-stream-namespace', - description: - 'A user defined namespace. Namespaces are useful to allow grouping of data.\nMany users already organize their indices this way, and the data stream naming scheme now provides this best practice as a default. Many users will populate this field with `default`. If no value is used, it falls back to `default`.\nBeyond the Elasticsearch index naming criteria noted above, `namespace` value has the additional restrictions:\n * Must not contain `-`\n * No longer than 100 characters', - example: 'production', - flat_name: 'data_stream.namespace', - level: 'extended', - name: 'namespace', - normalize: [], - short: 'A user defined namespace. Namespaces are useful to allow grouping of data.', - type: 'constant_keyword', - }, - 'data_stream.type': { - dashed_name: 'data-stream-type', - description: - 'An overarching type for the data stream.\nCurrently allowed values are "logs" and "metrics". We expect to also add "traces" and "synthetics" in the near future.', - example: 'logs', - flat_name: 'data_stream.type', - level: 'extended', - name: 'type', - normalize: [], - short: 'An overarching type for the data stream.', - type: 'constant_keyword', - }, - }, - group: 2, - name: 'data_stream', - prefix: 'data_stream.', - short: 'The data_stream fields take part in defining the new data stream naming scheme.', - title: 'Data Stream', - type: 'group', - }, - destination: { - description: - 'Destination fields capture details about the receiver of a network exchange/packet. These fields are populated from a network event, packet, or other event containing details of a network transaction.\nDestination fields are usually populated in conjunction with source fields. The source and destination fields are considered the baseline and should always be filled if an event contains source and destination details from a network transaction. If the event also contains identification of the client and server roles, then the client and server fields should also be populated.', - fields: { - 'destination.address': { - dashed_name: 'destination-address', - description: - 'Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field.\nThen it should be duplicated to `.ip` or `.domain`, depending on which one it is.', - flat_name: 'destination.address', - ignore_above: 1024, - level: 'extended', - name: 'address', - normalize: [], - short: 'Destination network address.', - type: 'keyword', - }, - 'destination.as.number': { - dashed_name: 'destination-as-number', - description: - 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', - example: 15169, - flat_name: 'destination.as.number', - level: 'extended', - name: 'number', - normalize: [], - original_fieldset: 'as', - short: 'Unique number allocated to the autonomous system.', - type: 'long', - }, - 'destination.as.organization.name': { - dashed_name: 'destination-as-organization-name', - description: 'Organization name.', - example: 'Google LLC', - flat_name: 'destination.as.organization.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'destination.as.organization.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'organization.name', - normalize: [], - original_fieldset: 'as', - short: 'Organization name.', - type: 'keyword', - }, - 'destination.bytes': { - dashed_name: 'destination-bytes', - description: 'Bytes sent from the destination to the source.', - example: 184, - flat_name: 'destination.bytes', - format: 'bytes', - level: 'core', - name: 'bytes', - normalize: [], - short: 'Bytes sent from the destination to the source.', - type: 'long', - }, - 'destination.domain': { - dashed_name: 'destination-domain', - description: - 'The domain name of the destination system.\nThis value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.', - example: 'foo.example.com', - flat_name: 'destination.domain', - ignore_above: 1024, - level: 'core', - name: 'domain', - normalize: [], - short: 'The domain name of the destination.', - type: 'keyword', - }, - 'destination.geo.city_name': { - dashed_name: 'destination-geo-city-name', - description: 'City name.', - example: 'Montreal', - flat_name: 'destination.geo.city_name', - ignore_above: 1024, - level: 'core', - name: 'city_name', - normalize: [], - original_fieldset: 'geo', - short: 'City name.', - type: 'keyword', - }, - 'destination.geo.continent_code': { - dashed_name: 'destination-geo-continent-code', - description: "Two-letter code representing continent's name.", - example: 'NA', - flat_name: 'destination.geo.continent_code', - ignore_above: 1024, - level: 'core', - name: 'continent_code', - normalize: [], - original_fieldset: 'geo', - short: 'Continent code.', - type: 'keyword', - }, - 'destination.geo.continent_name': { - dashed_name: 'destination-geo-continent-name', - description: 'Name of the continent.', - example: 'North America', - flat_name: 'destination.geo.continent_name', - ignore_above: 1024, - level: 'core', - name: 'continent_name', - normalize: [], - original_fieldset: 'geo', - short: 'Name of the continent.', - type: 'keyword', - }, - 'destination.geo.country_iso_code': { - dashed_name: 'destination-geo-country-iso-code', - description: 'Country ISO code.', - example: 'CA', - flat_name: 'destination.geo.country_iso_code', - ignore_above: 1024, - level: 'core', - name: 'country_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Country ISO code.', - type: 'keyword', - }, - 'destination.geo.country_name': { - dashed_name: 'destination-geo-country-name', - description: 'Country name.', - example: 'Canada', - flat_name: 'destination.geo.country_name', - ignore_above: 1024, - level: 'core', - name: 'country_name', - normalize: [], - original_fieldset: 'geo', - short: 'Country name.', - type: 'keyword', - }, - 'destination.geo.location': { - dashed_name: 'destination-geo-location', - description: 'Longitude and latitude.', - example: '{ "lon": -73.614830, "lat": 45.505918 }', - flat_name: 'destination.geo.location', - level: 'core', - name: 'location', - normalize: [], - original_fieldset: 'geo', - short: 'Longitude and latitude.', - type: 'geo_point', - }, - 'destination.geo.name': { - dashed_name: 'destination-geo-name', - description: - 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', - example: 'boston-dc', - flat_name: 'destination.geo.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'geo', - short: 'User-defined description of a location.', - type: 'keyword', - }, - 'destination.geo.postal_code': { - dashed_name: 'destination-geo-postal-code', - description: - 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', - example: 94040, - flat_name: 'destination.geo.postal_code', - ignore_above: 1024, - level: 'core', - name: 'postal_code', - normalize: [], - original_fieldset: 'geo', - short: 'Postal code.', - type: 'keyword', - }, - 'destination.geo.region_iso_code': { - dashed_name: 'destination-geo-region-iso-code', - description: 'Region ISO code.', - example: 'CA-QC', - flat_name: 'destination.geo.region_iso_code', - ignore_above: 1024, - level: 'core', - name: 'region_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Region ISO code.', - type: 'keyword', - }, - 'destination.geo.region_name': { - dashed_name: 'destination-geo-region-name', - description: 'Region name.', - example: 'Quebec', - flat_name: 'destination.geo.region_name', - ignore_above: 1024, - level: 'core', - name: 'region_name', - normalize: [], - original_fieldset: 'geo', - short: 'Region name.', - type: 'keyword', - }, - 'destination.geo.timezone': { - dashed_name: 'destination-geo-timezone', - description: 'The time zone of the location, such as IANA time zone name.', - example: 'America/Argentina/Buenos_Aires', - flat_name: 'destination.geo.timezone', - ignore_above: 1024, - level: 'core', - name: 'timezone', - normalize: [], - original_fieldset: 'geo', - short: 'Time zone.', - type: 'keyword', - }, - 'destination.ip': { - dashed_name: 'destination-ip', - description: 'IP address of the destination (IPv4 or IPv6).', - flat_name: 'destination.ip', - level: 'core', - name: 'ip', - normalize: [], - short: 'IP address of the destination.', - type: 'ip', - }, - 'destination.mac': { - dashed_name: 'destination-mac', - description: - 'MAC address of the destination.\nThe notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.', - example: '00-00-5E-00-53-23', - flat_name: 'destination.mac', - ignore_above: 1024, - level: 'core', - name: 'mac', - normalize: [], - pattern: '^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$', - short: 'MAC address of the destination.', - type: 'keyword', - }, - 'destination.nat.ip': { - dashed_name: 'destination-nat-ip', - description: - 'Translated ip of destination based NAT sessions (e.g. internet to private DMZ)\nTypically used with load balancers, firewalls, or routers.', - flat_name: 'destination.nat.ip', - level: 'extended', - name: 'nat.ip', - normalize: [], - short: 'Destination NAT ip', - type: 'ip', - }, - 'destination.nat.port': { - dashed_name: 'destination-nat-port', - description: - 'Port the source session is translated to by NAT Device.\nTypically used with load balancers, firewalls, or routers.', - flat_name: 'destination.nat.port', - format: 'string', - level: 'extended', - name: 'nat.port', - normalize: [], - short: 'Destination NAT Port', - type: 'long', - }, - 'destination.packets': { - dashed_name: 'destination-packets', - description: 'Packets sent from the destination to the source.', - example: 12, - flat_name: 'destination.packets', - level: 'core', - name: 'packets', - normalize: [], - short: 'Packets sent from the destination to the source.', - type: 'long', - }, - 'destination.port': { - dashed_name: 'destination-port', - description: 'Port of the destination.', - flat_name: 'destination.port', - format: 'string', - level: 'core', - name: 'port', - normalize: [], - short: 'Port of the destination.', - type: 'long', - }, - 'destination.registered_domain': { - dashed_name: 'destination-registered-domain', - description: - 'The highest registered destination domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', - example: 'example.com', - flat_name: 'destination.registered_domain', - ignore_above: 1024, - level: 'extended', - name: 'registered_domain', - normalize: [], - short: 'The highest registered destination domain, stripped of the subdomain.', - type: 'keyword', - }, - 'destination.subdomain': { - dashed_name: 'destination-subdomain', - description: - 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', - example: 'east', - flat_name: 'destination.subdomain', - ignore_above: 1024, - level: 'extended', - name: 'subdomain', - normalize: [], - short: 'The subdomain of the domain.', - type: 'keyword', - }, - 'destination.top_level_domain': { - dashed_name: 'destination-top-level-domain', - description: - 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', - example: 'co.uk', - flat_name: 'destination.top_level_domain', - ignore_above: 1024, - level: 'extended', - name: 'top_level_domain', - normalize: [], - short: 'The effective top level domain (com, org, net, co.uk).', - type: 'keyword', - }, - 'destination.user.domain': { - dashed_name: 'destination-user-domain', - description: - 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'destination.user.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'user', - short: 'Name of the directory the user is a member of.', - type: 'keyword', - }, - 'destination.user.email': { - dashed_name: 'destination-user-email', - description: 'User email address.', - flat_name: 'destination.user.email', - ignore_above: 1024, - level: 'extended', - name: 'email', - normalize: [], - original_fieldset: 'user', - short: 'User email address.', - type: 'keyword', - }, - 'destination.user.full_name': { - dashed_name: 'destination-user-full-name', - description: "User's full name, if available.", - example: 'Albert Einstein', - flat_name: 'destination.user.full_name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'destination.user.full_name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full_name', - normalize: [], - original_fieldset: 'user', - short: "User's full name, if available.", - type: 'keyword', - }, - 'destination.user.group.domain': { - dashed_name: 'destination-user-group-domain', - description: - 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'destination.user.group.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'group', - short: 'Name of the directory the group is a member of.', - type: 'keyword', - }, - 'destination.user.group.id': { - dashed_name: 'destination-user-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'destination.user.group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'destination.user.group.name': { - dashed_name: 'destination-user-group-name', - description: 'Name of the group.', - flat_name: 'destination.user.group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'destination.user.hash': { - dashed_name: 'destination-user-hash', - description: - 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', - flat_name: 'destination.user.hash', - ignore_above: 1024, - level: 'extended', - name: 'hash', - normalize: [], - original_fieldset: 'user', - short: 'Unique user hash to correlate information for a user in anonymized form.', - type: 'keyword', - }, - 'destination.user.id': { - dashed_name: 'destination-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'destination.user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'destination.user.name': { - dashed_name: 'destination-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'destination.user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'destination.user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'destination.user.roles': { - dashed_name: 'destination-user-roles', - description: 'Array of user roles at the time of the event.', - example: '["kibana_admin", "reporting_user"]', - flat_name: 'destination.user.roles', - ignore_above: 1024, - level: 'extended', - name: 'roles', - normalize: ['array'], - original_fieldset: 'user', - short: 'Array of user roles at the time of the event.', - type: 'keyword', - }, - }, - group: 2, - name: 'destination', - nestings: ['destination.as', 'destination.geo', 'destination.user'], - prefix: 'destination.', - reused_here: [ - { - full: 'destination.as', - schema_name: 'as', - short: 'Fields describing an Autonomous System (Internet routing prefix).', - }, - { - full: 'destination.geo', - schema_name: 'geo', - short: 'Fields describing a location.', - }, - { - full: 'destination.user', - schema_name: 'user', - short: 'Fields to describe the user relevant to the event.', - }, - ], - short: 'Fields about the destination side of a network connection, used with source.', - title: 'Destination', - type: 'group', - }, - device: { - beta: 'These fields are in beta and are subject to change.', - description: - 'Fields that describe a device instance and its characteristics. Data collected for applications and processes running on a (mobile) device can be enriched with these fields to describe the identity, type and other characteristics of the device.\nThis field group definition is based on the Device namespace of the OpenTelemetry Semantic Conventions (https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/device/).', - fields: { - 'device.id': { - dashed_name: 'device-id', - description: - 'The unique identifier of a device. The identifier must not change across application sessions but stay fixex for an instance of a (mobile) device. \nOn iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application.\nFor GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user.', - example: '00000000-54b3-e7c7-0000-000046bffd97', - flat_name: 'device.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - short: 'The unique identifier of a device.', - type: 'keyword', - }, - 'device.manufacturer': { - dashed_name: 'device-manufacturer', - description: 'The vendor name of the device manufacturer.', - example: 'Samsung', - flat_name: 'device.manufacturer', - ignore_above: 1024, - level: 'extended', - name: 'manufacturer', - normalize: [], - short: 'The vendor name of the device manufacturer.', - type: 'keyword', - }, - 'device.model.identifier': { - dashed_name: 'device-model-identifier', - description: 'The machine readable identifier of the device model.', - example: 'SM-G920F', - flat_name: 'device.model.identifier', - ignore_above: 1024, - level: 'extended', - name: 'model.identifier', - normalize: [], - short: 'The machine readable identifier of the device model.', - type: 'keyword', - }, - 'device.model.name': { - dashed_name: 'device-model-name', - description: 'The human readable marketing name of the device model.', - example: 'Samsung Galaxy S6', - flat_name: 'device.model.name', - ignore_above: 1024, - level: 'extended', - name: 'model.name', - normalize: [], - short: 'The human readable marketing name of the device model.', - type: 'keyword', - }, - }, - group: 2, - name: 'device', - prefix: 'device.', - short: 'Fields characterizing a (mobile) device a process or application is running on.', - title: 'Device', - type: 'group', - }, - dll: { - description: - 'These fields contain information about code libraries dynamically loaded into processes.\n\nMany operating systems refer to "shared code libraries" with different names, but this field set refers to all of the following:\n* Dynamic-link library (`.dll`) commonly used on Windows\n* Shared Object (`.so`) commonly used on Unix-like operating systems\n* Dynamic library (`.dylib`) commonly used on macOS', - fields: { - 'dll.code_signature.digest_algorithm': { - dashed_name: 'dll-code-signature-digest-algorithm', - description: - 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', - example: 'sha256', - flat_name: 'dll.code_signature.digest_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'digest_algorithm', - normalize: [], - original_fieldset: 'code_signature', - short: 'Hashing algorithm used to sign the process.', - type: 'keyword', - }, - 'dll.code_signature.exists': { - dashed_name: 'dll-code-signature-exists', - description: 'Boolean to capture if a signature is present.', - example: 'true', - flat_name: 'dll.code_signature.exists', - level: 'core', - name: 'exists', - normalize: [], - original_fieldset: 'code_signature', - short: 'Boolean to capture if a signature is present.', - type: 'boolean', - }, - 'dll.code_signature.signing_id': { - dashed_name: 'dll-code-signature-signing-id', - description: - 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', - example: 'com.apple.xpc.proxy', - flat_name: 'dll.code_signature.signing_id', - ignore_above: 1024, - level: 'extended', - name: 'signing_id', - normalize: [], - original_fieldset: 'code_signature', - short: 'The identifier used to sign the process.', - type: 'keyword', - }, - 'dll.code_signature.status': { - dashed_name: 'dll-code-signature-status', - description: - 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', - example: 'ERROR_UNTRUSTED_ROOT', - flat_name: 'dll.code_signature.status', - ignore_above: 1024, - level: 'extended', - name: 'status', - normalize: [], - original_fieldset: 'code_signature', - short: 'Additional information about the certificate status.', - type: 'keyword', - }, - 'dll.code_signature.subject_name': { - dashed_name: 'dll-code-signature-subject-name', - description: 'Subject name of the code signer', - example: 'Microsoft Corporation', - flat_name: 'dll.code_signature.subject_name', - ignore_above: 1024, - level: 'core', - name: 'subject_name', - normalize: [], - original_fieldset: 'code_signature', - short: 'Subject name of the code signer', - type: 'keyword', - }, - 'dll.code_signature.team_id': { - dashed_name: 'dll-code-signature-team-id', - description: - 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', - example: 'EQHXZ8M8AV', - flat_name: 'dll.code_signature.team_id', - ignore_above: 1024, - level: 'extended', - name: 'team_id', - normalize: [], - original_fieldset: 'code_signature', - short: 'The team identifier used to sign the process.', - type: 'keyword', - }, - 'dll.code_signature.timestamp': { - dashed_name: 'dll-code-signature-timestamp', - description: 'Date and time when the code signature was generated and signed.', - example: '2021-01-01T12:10:30Z', - flat_name: 'dll.code_signature.timestamp', - level: 'extended', - name: 'timestamp', - normalize: [], - original_fieldset: 'code_signature', - short: 'When the signature was generated and signed.', - type: 'date', - }, - 'dll.code_signature.trusted': { - dashed_name: 'dll-code-signature-trusted', - description: - 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', - example: 'true', - flat_name: 'dll.code_signature.trusted', - level: 'extended', - name: 'trusted', - normalize: [], - original_fieldset: 'code_signature', - short: 'Stores the trust status of the certificate chain.', - type: 'boolean', - }, - 'dll.code_signature.valid': { - dashed_name: 'dll-code-signature-valid', - description: - 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', - example: 'true', - flat_name: 'dll.code_signature.valid', - level: 'extended', - name: 'valid', - normalize: [], - original_fieldset: 'code_signature', - short: - 'Boolean to capture if the digital signature is verified against the binary content.', - type: 'boolean', - }, - 'dll.hash.md5': { - dashed_name: 'dll-hash-md5', - description: 'MD5 hash.', - flat_name: 'dll.hash.md5', - ignore_above: 1024, - level: 'extended', - name: 'md5', - normalize: [], - original_fieldset: 'hash', - short: 'MD5 hash.', - type: 'keyword', - }, - 'dll.hash.sha1': { - dashed_name: 'dll-hash-sha1', - description: 'SHA1 hash.', - flat_name: 'dll.hash.sha1', - ignore_above: 1024, - level: 'extended', - name: 'sha1', - normalize: [], - original_fieldset: 'hash', - short: 'SHA1 hash.', - type: 'keyword', - }, - 'dll.hash.sha256': { - dashed_name: 'dll-hash-sha256', - description: 'SHA256 hash.', - flat_name: 'dll.hash.sha256', - ignore_above: 1024, - level: 'extended', - name: 'sha256', - normalize: [], - original_fieldset: 'hash', - short: 'SHA256 hash.', - type: 'keyword', - }, - 'dll.hash.sha384': { - dashed_name: 'dll-hash-sha384', - description: 'SHA384 hash.', - flat_name: 'dll.hash.sha384', - ignore_above: 1024, - level: 'extended', - name: 'sha384', - normalize: [], - original_fieldset: 'hash', - short: 'SHA384 hash.', - type: 'keyword', - }, - 'dll.hash.sha512': { - dashed_name: 'dll-hash-sha512', - description: 'SHA512 hash.', - flat_name: 'dll.hash.sha512', - ignore_above: 1024, - level: 'extended', - name: 'sha512', - normalize: [], - original_fieldset: 'hash', - short: 'SHA512 hash.', - type: 'keyword', - }, - 'dll.hash.ssdeep': { - dashed_name: 'dll-hash-ssdeep', - description: 'SSDEEP hash.', - flat_name: 'dll.hash.ssdeep', - ignore_above: 1024, - level: 'extended', - name: 'ssdeep', - normalize: [], - original_fieldset: 'hash', - short: 'SSDEEP hash.', - type: 'keyword', - }, - 'dll.hash.tlsh': { - dashed_name: 'dll-hash-tlsh', - description: 'TLSH hash.', - flat_name: 'dll.hash.tlsh', - ignore_above: 1024, - level: 'extended', - name: 'tlsh', - normalize: [], - original_fieldset: 'hash', - short: 'TLSH hash.', - type: 'keyword', - }, - 'dll.name': { - dashed_name: 'dll-name', - description: 'Name of the library.\nThis generally maps to the name of the file on disk.', - example: 'kernel32.dll', - flat_name: 'dll.name', - ignore_above: 1024, - level: 'core', - name: 'name', - normalize: [], - short: 'Name of the library.', - type: 'keyword', - }, - 'dll.path': { - dashed_name: 'dll-path', - description: 'Full file path of the library.', - example: 'C:\\Windows\\System32\\kernel32.dll', - flat_name: 'dll.path', - ignore_above: 1024, - level: 'extended', - name: 'path', - normalize: [], - short: 'Full file path of the library.', - type: 'keyword', - }, - 'dll.pe.architecture': { - dashed_name: 'dll-pe-architecture', - description: 'CPU architecture target for the file.', - example: 'x64', - flat_name: 'dll.pe.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - original_fieldset: 'pe', - short: 'CPU architecture target for the file.', - type: 'keyword', - }, - 'dll.pe.company': { - dashed_name: 'dll-pe-company', - description: 'Internal company name of the file, provided at compile-time.', - example: 'Microsoft Corporation', - flat_name: 'dll.pe.company', - ignore_above: 1024, - level: 'extended', - name: 'company', - normalize: [], - original_fieldset: 'pe', - short: 'Internal company name of the file, provided at compile-time.', - type: 'keyword', - }, - 'dll.pe.description': { - dashed_name: 'dll-pe-description', - description: 'Internal description of the file, provided at compile-time.', - example: 'Paint', - flat_name: 'dll.pe.description', - ignore_above: 1024, - level: 'extended', - name: 'description', - normalize: [], - original_fieldset: 'pe', - short: 'Internal description of the file, provided at compile-time.', - type: 'keyword', - }, - 'dll.pe.file_version': { - dashed_name: 'dll-pe-file-version', - description: 'Internal version of the file, provided at compile-time.', - example: '6.3.9600.17415', - flat_name: 'dll.pe.file_version', - ignore_above: 1024, - level: 'extended', - name: 'file_version', - normalize: [], - original_fieldset: 'pe', - short: 'Process name.', - type: 'keyword', - }, - 'dll.pe.imphash': { - dashed_name: 'dll-pe-imphash', - description: - 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', - example: '0c6803c4e922103c4dca5963aad36ddf', - flat_name: 'dll.pe.imphash', - ignore_above: 1024, - level: 'extended', - name: 'imphash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'dll.pe.original_file_name': { - dashed_name: 'dll-pe-original-file-name', - description: 'Internal name of the file, provided at compile-time.', - example: 'MSPAINT.EXE', - flat_name: 'dll.pe.original_file_name', - ignore_above: 1024, - level: 'extended', - name: 'original_file_name', - normalize: [], - original_fieldset: 'pe', - short: 'Internal name of the file, provided at compile-time.', - type: 'keyword', - }, - 'dll.pe.pehash': { - dashed_name: 'dll-pe-pehash', - description: - 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', - example: '73ff189b63cd6be375a7ff25179a38d347651975', - flat_name: 'dll.pe.pehash', - ignore_above: 1024, - level: 'extended', - name: 'pehash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the PE header and data from one or more PE sections.', - type: 'keyword', - }, - 'dll.pe.product': { - dashed_name: 'dll-pe-product', - description: 'Internal product name of the file, provided at compile-time.', - example: 'Microsoft® Windows® Operating System', - flat_name: 'dll.pe.product', - ignore_above: 1024, - level: 'extended', - name: 'product', - normalize: [], - original_fieldset: 'pe', - short: 'Internal product name of the file, provided at compile-time.', - type: 'keyword', - }, - }, - group: 2, - name: 'dll', - nestings: ['dll.code_signature', 'dll.hash', 'dll.pe'], - prefix: 'dll.', - reused_here: [ - { - full: 'dll.hash', - schema_name: 'hash', - short: 'Hashes, usually file hashes.', - }, - { - full: 'dll.pe', - schema_name: 'pe', - short: 'These fields contain Windows Portable Executable (PE) metadata.', - }, - { - full: 'dll.code_signature', - schema_name: 'code_signature', - short: 'These fields contain information about binary code signatures.', - }, - ], - short: - 'These fields contain information about code libraries dynamically loaded into processes.', - title: 'DLL', - type: 'group', - }, - dns: { - description: - 'Fields describing DNS queries and answers.\nDNS events should either represent a single DNS query prior to getting answers (`dns.type:query`) or they should represent a full exchange and contain the query details as well as all of the answers that were provided for this query (`dns.type:answer`).', - fields: { - 'dns.answers': { - dashed_name: 'dns-answers', - description: - 'An array containing an object for each answer section returned by the server.\nThe main keys that should be present in these objects are defined by ECS. Records that have more information may contain more keys than what ECS defines.\nNot all DNS data sources give all details about DNS answers. At minimum, answer objects must contain the `data` key. If more information is available, map as much of it to ECS as possible, and add any additional fields to the answer objects as custom fields.', - flat_name: 'dns.answers', - level: 'extended', - name: 'answers', - normalize: ['array'], - short: 'Array of DNS answers.', - type: 'object', - }, - 'dns.answers.class': { - dashed_name: 'dns-answers-class', - description: 'The class of DNS data contained in this resource record.', - example: 'IN', - flat_name: 'dns.answers.class', - ignore_above: 1024, - level: 'extended', - name: 'answers.class', - normalize: [], - short: 'The class of DNS data contained in this resource record.', - type: 'keyword', - }, - 'dns.answers.data': { - dashed_name: 'dns-answers-data', - description: - 'The data describing the resource.\nThe meaning of this data depends on the type and class of the resource record.', - example: '10.10.10.10', - flat_name: 'dns.answers.data', - ignore_above: 1024, - level: 'extended', - name: 'answers.data', - normalize: [], - short: 'The data describing the resource.', - type: 'keyword', - }, - 'dns.answers.name': { - dashed_name: 'dns-answers-name', - description: - "The domain name to which this resource record pertains.\nIf a chain of CNAME is being resolved, each answer's `name` should be the one that corresponds with the answer's `data`. It should not simply be the original `question.name` repeated.", - example: 'www.example.com', - flat_name: 'dns.answers.name', - ignore_above: 1024, - level: 'extended', - name: 'answers.name', - normalize: [], - short: 'The domain name to which this resource record pertains.', - type: 'keyword', - }, - 'dns.answers.ttl': { - dashed_name: 'dns-answers-ttl', - description: - 'The time interval in seconds that this resource record may be cached before it should be discarded. Zero values mean that the data should not be cached.', - example: 180, - flat_name: 'dns.answers.ttl', - level: 'extended', - name: 'answers.ttl', - normalize: [], - short: - 'The time interval in seconds that this resource record may be cached before it should be discarded.', - type: 'long', - }, - 'dns.answers.type': { - dashed_name: 'dns-answers-type', - description: 'The type of data contained in this resource record.', - example: 'CNAME', - flat_name: 'dns.answers.type', - ignore_above: 1024, - level: 'extended', - name: 'answers.type', - normalize: [], - short: 'The type of data contained in this resource record.', - type: 'keyword', - }, - 'dns.header_flags': { - dashed_name: 'dns-header-flags', - description: 'Array of 2 letter DNS header flags.', - example: '["RD", "RA"]', - expected_values: ['AA', 'TC', 'RD', 'RA', 'AD', 'CD', 'DO'], - flat_name: 'dns.header_flags', - ignore_above: 1024, - level: 'extended', - name: 'header_flags', - normalize: ['array'], - short: 'Array of DNS header flags.', - type: 'keyword', - }, - 'dns.id': { - dashed_name: 'dns-id', - description: - 'The DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response.', - example: 62111, - flat_name: 'dns.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - short: - 'The DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response.', - type: 'keyword', - }, - 'dns.op_code': { - dashed_name: 'dns-op-code', - description: - 'The DNS operation code that specifies the kind of query in the message. This value is set by the originator of a query and copied into the response.', - example: 'QUERY', - flat_name: 'dns.op_code', - ignore_above: 1024, - level: 'extended', - name: 'op_code', - normalize: [], - short: 'The DNS operation code that specifies the kind of query in the message.', - type: 'keyword', - }, - 'dns.question.class': { - dashed_name: 'dns-question-class', - description: 'The class of records being queried.', - example: 'IN', - flat_name: 'dns.question.class', - ignore_above: 1024, - level: 'extended', - name: 'question.class', - normalize: [], - short: 'The class of records being queried.', - type: 'keyword', - }, - 'dns.question.name': { - dashed_name: 'dns-question-name', - description: - 'The name being queried.\nIf the name field contains non-printable characters (below 32 or above 126), those characters should be represented as escaped base 10 integers (\\DDD). Back slashes and quotes should be escaped. Tabs, carriage returns, and line feeds should be converted to \\t, \\r, and \\n respectively.', - example: 'www.example.com', - flat_name: 'dns.question.name', - ignore_above: 1024, - level: 'extended', - name: 'question.name', - normalize: [], - short: 'The name being queried.', - type: 'keyword', - }, - 'dns.question.registered_domain': { - dashed_name: 'dns-question-registered-domain', - description: - 'The highest registered domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', - example: 'example.com', - flat_name: 'dns.question.registered_domain', - ignore_above: 1024, - level: 'extended', - name: 'question.registered_domain', - normalize: [], - short: 'The highest registered domain, stripped of the subdomain.', - type: 'keyword', - }, - 'dns.question.subdomain': { - dashed_name: 'dns-question-subdomain', - description: - 'The subdomain is all of the labels under the registered_domain.\nIf the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', - example: 'www', - flat_name: 'dns.question.subdomain', - ignore_above: 1024, - level: 'extended', - name: 'question.subdomain', - normalize: [], - short: 'The subdomain of the domain.', - type: 'keyword', - }, - 'dns.question.top_level_domain': { - dashed_name: 'dns-question-top-level-domain', - description: - 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', - example: 'co.uk', - flat_name: 'dns.question.top_level_domain', - ignore_above: 1024, - level: 'extended', - name: 'question.top_level_domain', - normalize: [], - short: 'The effective top level domain (com, org, net, co.uk).', - type: 'keyword', - }, - 'dns.question.type': { - dashed_name: 'dns-question-type', - description: 'The type of record being queried.', - example: 'AAAA', - flat_name: 'dns.question.type', - ignore_above: 1024, - level: 'extended', - name: 'question.type', - normalize: [], - short: 'The type of record being queried.', - type: 'keyword', - }, - 'dns.resolved_ip': { - dashed_name: 'dns-resolved-ip', - description: - 'Array containing all IPs seen in `answers.data`.\nThe `answers` array can be difficult to use, because of the variety of data formats it can contain. Extracting all IP addresses seen in there to `dns.resolved_ip` makes it possible to index them as IP addresses, and makes them easier to visualize and query for.', - example: '["10.10.10.10", "10.10.10.11"]', - flat_name: 'dns.resolved_ip', - level: 'extended', - name: 'resolved_ip', - normalize: ['array'], - short: 'Array containing all IPs seen in answers.data', - type: 'ip', - }, - 'dns.response_code': { - dashed_name: 'dns-response-code', - description: 'The DNS response code.', - example: 'NOERROR', - flat_name: 'dns.response_code', - ignore_above: 1024, - level: 'extended', - name: 'response_code', - normalize: [], - short: 'The DNS response code.', - type: 'keyword', - }, - 'dns.type': { - dashed_name: 'dns-type', - description: - 'The type of DNS event captured, query or answer.\nIf your source of DNS events only gives you DNS queries, you should only create dns events of type `dns.type:query`.\nIf your source of DNS events gives you answers as well, you should create one event per query (optionally as soon as the query is seen). And a second event containing all query details as well as an array of answers.', - example: 'answer', - flat_name: 'dns.type', - ignore_above: 1024, - level: 'extended', - name: 'type', - normalize: [], - short: 'The type of DNS event captured, query or answer.', - type: 'keyword', - }, - }, - group: 2, - name: 'dns', - prefix: 'dns.', - short: 'Fields describing DNS queries and answers.', - title: 'DNS', - type: 'group', - }, - ecs: { - description: 'Meta-information specific to ECS.', - fields: { - 'ecs.version': { - dashed_name: 'ecs-version', - description: - 'ECS version this event conforms to. `ecs.version` is a required field and must exist in all events.\nWhen querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events.', - example: '1.0.0', - flat_name: 'ecs.version', - ignore_above: 1024, - level: 'core', - name: 'version', - normalize: [], - required: true, - short: 'ECS version this event conforms to.', - type: 'keyword', - }, - }, - group: 2, - name: 'ecs', - prefix: 'ecs.', - short: 'Meta-information specific to ECS.', - title: 'ECS', - type: 'group', - }, - elf: { - beta: 'These fields are in beta and are subject to change.', - description: 'These fields contain Linux Executable Linkable Format (ELF) metadata.', - fields: { - 'elf.architecture': { - dashed_name: 'elf-architecture', - description: 'Machine architecture of the ELF file.', - example: 'x86-64', - flat_name: 'elf.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - short: 'Machine architecture of the ELF file.', - type: 'keyword', - }, - 'elf.byte_order': { - dashed_name: 'elf-byte-order', - description: 'Byte sequence of ELF file.', - example: 'Little Endian', - flat_name: 'elf.byte_order', - ignore_above: 1024, - level: 'extended', - name: 'byte_order', - normalize: [], - short: 'Byte sequence of ELF file.', - type: 'keyword', - }, - 'elf.cpu_type': { - dashed_name: 'elf-cpu-type', - description: 'CPU type of the ELF file.', - example: 'Intel', - flat_name: 'elf.cpu_type', - ignore_above: 1024, - level: 'extended', - name: 'cpu_type', - normalize: [], - short: 'CPU type of the ELF file.', - type: 'keyword', - }, - 'elf.creation_date': { - dashed_name: 'elf-creation-date', - description: - "Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.", - flat_name: 'elf.creation_date', - level: 'extended', - name: 'creation_date', - normalize: [], - short: 'Build or compile date.', - type: 'date', - }, - 'elf.exports': { - dashed_name: 'elf-exports', - description: 'List of exported element names and types.', - flat_name: 'elf.exports', - level: 'extended', - name: 'exports', - normalize: ['array'], - short: 'List of exported element names and types.', - type: 'flattened', - }, - 'elf.header.abi_version': { - dashed_name: 'elf-header-abi-version', - description: 'Version of the ELF Application Binary Interface (ABI).', - flat_name: 'elf.header.abi_version', - ignore_above: 1024, - level: 'extended', - name: 'header.abi_version', - normalize: [], - short: 'Version of the ELF Application Binary Interface (ABI).', - type: 'keyword', - }, - 'elf.header.class': { - dashed_name: 'elf-header-class', - description: 'Header class of the ELF file.', - flat_name: 'elf.header.class', - ignore_above: 1024, - level: 'extended', - name: 'header.class', - normalize: [], - short: 'Header class of the ELF file.', - type: 'keyword', - }, - 'elf.header.data': { - dashed_name: 'elf-header-data', - description: 'Data table of the ELF header.', - flat_name: 'elf.header.data', - ignore_above: 1024, - level: 'extended', - name: 'header.data', - normalize: [], - short: 'Data table of the ELF header.', - type: 'keyword', - }, - 'elf.header.entrypoint': { - dashed_name: 'elf-header-entrypoint', - description: 'Header entrypoint of the ELF file.', - flat_name: 'elf.header.entrypoint', - format: 'string', - level: 'extended', - name: 'header.entrypoint', - normalize: [], - short: 'Header entrypoint of the ELF file.', - type: 'long', - }, - 'elf.header.object_version': { - dashed_name: 'elf-header-object-version', - description: '"0x1" for original ELF files.', - flat_name: 'elf.header.object_version', - ignore_above: 1024, - level: 'extended', - name: 'header.object_version', - normalize: [], - short: '"0x1" for original ELF files.', - type: 'keyword', - }, - 'elf.header.os_abi': { - dashed_name: 'elf-header-os-abi', - description: 'Application Binary Interface (ABI) of the Linux OS.', - flat_name: 'elf.header.os_abi', - ignore_above: 1024, - level: 'extended', - name: 'header.os_abi', - normalize: [], - short: 'Application Binary Interface (ABI) of the Linux OS.', - type: 'keyword', - }, - 'elf.header.type': { - dashed_name: 'elf-header-type', - description: 'Header type of the ELF file.', - flat_name: 'elf.header.type', - ignore_above: 1024, - level: 'extended', - name: 'header.type', - normalize: [], - short: 'Header type of the ELF file.', - type: 'keyword', - }, - 'elf.header.version': { - dashed_name: 'elf-header-version', - description: 'Version of the ELF header.', - flat_name: 'elf.header.version', - ignore_above: 1024, - level: 'extended', - name: 'header.version', - normalize: [], - short: 'Version of the ELF header.', - type: 'keyword', - }, - 'elf.imports': { - dashed_name: 'elf-imports', - description: 'List of imported element names and types.', - flat_name: 'elf.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'elf.sections': { - dashed_name: 'elf-sections', - description: - 'An array containing an object for each section of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.', - flat_name: 'elf.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - short: 'Section information of the ELF file.', - type: 'nested', - }, - 'elf.sections.chi2': { - dashed_name: 'elf-sections-chi2', - description: 'Chi-square probability distribution of the section.', - flat_name: 'elf.sections.chi2', - format: 'number', - level: 'extended', - name: 'sections.chi2', - normalize: [], - short: 'Chi-square probability distribution of the section.', - type: 'long', - }, - 'elf.sections.entropy': { - dashed_name: 'elf-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'elf.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'elf.sections.flags': { - dashed_name: 'elf-sections-flags', - description: 'ELF Section List flags.', - flat_name: 'elf.sections.flags', - ignore_above: 1024, - level: 'extended', - name: 'sections.flags', - normalize: [], - short: 'ELF Section List flags.', - type: 'keyword', - }, - 'elf.sections.name': { - dashed_name: 'elf-sections-name', - description: 'ELF Section List name.', - flat_name: 'elf.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - short: 'ELF Section List name.', - type: 'keyword', - }, - 'elf.sections.physical_offset': { - dashed_name: 'elf-sections-physical-offset', - description: 'ELF Section List offset.', - flat_name: 'elf.sections.physical_offset', - ignore_above: 1024, - level: 'extended', - name: 'sections.physical_offset', - normalize: [], - short: 'ELF Section List offset.', - type: 'keyword', - }, - 'elf.sections.physical_size': { - dashed_name: 'elf-sections-physical-size', - description: 'ELF Section List physical size.', - flat_name: 'elf.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - short: 'ELF Section List physical size.', - type: 'long', - }, - 'elf.sections.type': { - dashed_name: 'elf-sections-type', - description: 'ELF Section List type.', - flat_name: 'elf.sections.type', - ignore_above: 1024, - level: 'extended', - name: 'sections.type', - normalize: [], - short: 'ELF Section List type.', - type: 'keyword', - }, - 'elf.sections.virtual_address': { - dashed_name: 'elf-sections-virtual-address', - description: 'ELF Section List virtual address.', - flat_name: 'elf.sections.virtual_address', - format: 'string', - level: 'extended', - name: 'sections.virtual_address', - normalize: [], - short: 'ELF Section List virtual address.', - type: 'long', - }, - 'elf.sections.virtual_size': { - dashed_name: 'elf-sections-virtual-size', - description: 'ELF Section List virtual size.', - flat_name: 'elf.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - short: 'ELF Section List virtual size.', - type: 'long', - }, - 'elf.segments': { - dashed_name: 'elf-segments', - description: - 'An array containing an object for each segment of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.', - flat_name: 'elf.segments', - level: 'extended', - name: 'segments', - normalize: ['array'], - short: 'ELF object segment list.', - type: 'nested', - }, - 'elf.segments.sections': { - dashed_name: 'elf-segments-sections', - description: 'ELF object segment sections.', - flat_name: 'elf.segments.sections', - ignore_above: 1024, - level: 'extended', - name: 'segments.sections', - normalize: [], - short: 'ELF object segment sections.', - type: 'keyword', - }, - 'elf.segments.type': { - dashed_name: 'elf-segments-type', - description: 'ELF object segment type.', - flat_name: 'elf.segments.type', - ignore_above: 1024, - level: 'extended', - name: 'segments.type', - normalize: [], - short: 'ELF object segment type.', - type: 'keyword', - }, - 'elf.shared_libraries': { - dashed_name: 'elf-shared-libraries', - description: 'List of shared libraries used by this ELF object.', - flat_name: 'elf.shared_libraries', - ignore_above: 1024, - level: 'extended', - name: 'shared_libraries', - normalize: ['array'], - short: 'List of shared libraries used by this ELF object.', - type: 'keyword', - }, - 'elf.telfhash': { - dashed_name: 'elf-telfhash', - description: 'telfhash symbol hash for ELF file.', - flat_name: 'elf.telfhash', - ignore_above: 1024, - level: 'extended', - name: 'telfhash', - normalize: [], - short: 'telfhash hash for ELF file.', - type: 'keyword', - }, - }, - group: 2, - name: 'elf', - prefix: 'elf.', - reusable: { - expected: [ - { - as: 'elf', - at: 'file', - beta: 'This field reuse is beta and subject to change.', - full: 'file.elf', - }, - { - as: 'elf', - at: 'process', - beta: 'This field reuse is beta and subject to change.', - full: 'process.elf', - }, - ], - top_level: false, - }, - short: 'These fields contain Linux Executable Linkable Format (ELF) metadata.', - title: 'ELF Header', - type: 'group', - }, - email: { - description: - 'Event details relating to an email transaction.\nThis field set focuses on the email message header, body, and attachments. Network protocols that send and receive email messages such as SMTP are outside the scope of the `email.*` fields.', - fields: { - 'email.attachments': { - dashed_name: 'email-attachments', - description: - 'A list of objects describing the attachment files sent along with an email message.', - flat_name: 'email.attachments', - level: 'extended', - name: 'attachments', - normalize: ['array'], - short: 'List of objects describing the attachments.', - type: 'nested', - }, - 'email.attachments.file.extension': { - dashed_name: 'email-attachments-file-extension', - description: 'Attachment file extension, excluding the leading dot.', - example: 'txt', - flat_name: 'email.attachments.file.extension', - ignore_above: 1024, - level: 'extended', - name: 'attachments.file.extension', - normalize: [], - short: 'Attachment file extension.', - type: 'keyword', - }, - 'email.attachments.file.hash.md5': { - dashed_name: 'email-attachments-file-hash-md5', - description: 'MD5 hash.', - flat_name: 'email.attachments.file.hash.md5', - ignore_above: 1024, - level: 'extended', - name: 'md5', - normalize: [], - original_fieldset: 'hash', - short: 'MD5 hash.', - type: 'keyword', - }, - 'email.attachments.file.hash.sha1': { - dashed_name: 'email-attachments-file-hash-sha1', - description: 'SHA1 hash.', - flat_name: 'email.attachments.file.hash.sha1', - ignore_above: 1024, - level: 'extended', - name: 'sha1', - normalize: [], - original_fieldset: 'hash', - short: 'SHA1 hash.', - type: 'keyword', - }, - 'email.attachments.file.hash.sha256': { - dashed_name: 'email-attachments-file-hash-sha256', - description: 'SHA256 hash.', - flat_name: 'email.attachments.file.hash.sha256', - ignore_above: 1024, - level: 'extended', - name: 'sha256', - normalize: [], - original_fieldset: 'hash', - short: 'SHA256 hash.', - type: 'keyword', - }, - 'email.attachments.file.hash.sha384': { - dashed_name: 'email-attachments-file-hash-sha384', - description: 'SHA384 hash.', - flat_name: 'email.attachments.file.hash.sha384', - ignore_above: 1024, - level: 'extended', - name: 'sha384', - normalize: [], - original_fieldset: 'hash', - short: 'SHA384 hash.', - type: 'keyword', - }, - 'email.attachments.file.hash.sha512': { - dashed_name: 'email-attachments-file-hash-sha512', - description: 'SHA512 hash.', - flat_name: 'email.attachments.file.hash.sha512', - ignore_above: 1024, - level: 'extended', - name: 'sha512', - normalize: [], - original_fieldset: 'hash', - short: 'SHA512 hash.', - type: 'keyword', - }, - 'email.attachments.file.hash.ssdeep': { - dashed_name: 'email-attachments-file-hash-ssdeep', - description: 'SSDEEP hash.', - flat_name: 'email.attachments.file.hash.ssdeep', - ignore_above: 1024, - level: 'extended', - name: 'ssdeep', - normalize: [], - original_fieldset: 'hash', - short: 'SSDEEP hash.', - type: 'keyword', - }, - 'email.attachments.file.hash.tlsh': { - dashed_name: 'email-attachments-file-hash-tlsh', - description: 'TLSH hash.', - flat_name: 'email.attachments.file.hash.tlsh', - ignore_above: 1024, - level: 'extended', - name: 'tlsh', - normalize: [], - original_fieldset: 'hash', - short: 'TLSH hash.', - type: 'keyword', - }, - 'email.attachments.file.mime_type': { - dashed_name: 'email-attachments-file-mime-type', - description: - 'The MIME media type of the attachment.\nThis value will typically be extracted from the `Content-Type` MIME header field.', - example: 'text/plain', - flat_name: 'email.attachments.file.mime_type', - ignore_above: 1024, - level: 'extended', - name: 'attachments.file.mime_type', - normalize: [], - short: 'MIME type of the attachment file.', - type: 'keyword', - }, - 'email.attachments.file.name': { - dashed_name: 'email-attachments-file-name', - description: 'Name of the attachment file including the file extension.', - example: 'attachment.txt', - flat_name: 'email.attachments.file.name', - ignore_above: 1024, - level: 'extended', - name: 'attachments.file.name', - normalize: [], - short: 'Name of the attachment file.', - type: 'keyword', - }, - 'email.attachments.file.size': { - dashed_name: 'email-attachments-file-size', - description: 'Attachment file size in bytes.', - example: 64329, - flat_name: 'email.attachments.file.size', - level: 'extended', - name: 'attachments.file.size', - normalize: [], - short: 'Attachment file size.', - type: 'long', - }, - 'email.bcc.address': { - dashed_name: 'email-bcc-address', - description: 'The email address of BCC recipient', - example: 'bcc.user1@example.com', - flat_name: 'email.bcc.address', - ignore_above: 1024, - level: 'extended', - name: 'bcc.address', - normalize: ['array'], - short: 'Email address of BCC recipient', - type: 'keyword', - }, - 'email.cc.address': { - dashed_name: 'email-cc-address', - description: 'The email address of CC recipient', - example: 'cc.user1@example.com', - flat_name: 'email.cc.address', - ignore_above: 1024, - level: 'extended', - name: 'cc.address', - normalize: ['array'], - short: 'Email address of CC recipient', - type: 'keyword', - }, - 'email.content_type': { - dashed_name: 'email-content-type', - description: - 'Information about how the message is to be displayed.\nTypically a MIME type.', - example: 'text/plain', - flat_name: 'email.content_type', - ignore_above: 1024, - level: 'extended', - name: 'content_type', - normalize: [], - short: 'MIME type of the email message.', - type: 'keyword', - }, - 'email.delivery_timestamp': { - dashed_name: 'email-delivery-timestamp', - description: - 'The date and time when the email message was received by the service or client.', - example: '2020-11-10T22:12:34.8196921Z', - flat_name: 'email.delivery_timestamp', - level: 'extended', - name: 'delivery_timestamp', - normalize: [], - short: 'Date and time when message was delivered.', - type: 'date', - }, - 'email.direction': { - dashed_name: 'email-direction', - description: 'The direction of the message based on the sending and receiving domains.', - example: 'inbound', - flat_name: 'email.direction', - ignore_above: 1024, - level: 'extended', - name: 'direction', - normalize: [], - short: 'Direction of the message.', - type: 'keyword', - }, - 'email.from.address': { - dashed_name: 'email-from-address', - description: - 'The email address of the sender, typically from the RFC 5322 `From:` header field.', - example: 'sender@example.com', - flat_name: 'email.from.address', - ignore_above: 1024, - level: 'extended', - name: 'from.address', - normalize: ['array'], - short: "The sender's email address.", - type: 'keyword', - }, - 'email.local_id': { - dashed_name: 'email-local-id', - description: - 'Unique identifier given to the email by the source that created the event.\nIdentifier is not persistent across hops.', - example: 'c26dbea0-80d5-463b-b93c-4e8b708219ce', - flat_name: 'email.local_id', - ignore_above: 1024, - level: 'extended', - name: 'local_id', - normalize: [], - short: 'Unique identifier given by the source.', - type: 'keyword', - }, - 'email.message_id': { - dashed_name: 'email-message-id', - description: - 'Identifier from the RFC 5322 `Message-ID:` email header that refers to a particular email message.', - example: '81ce15$8r2j59@mail01.example.com', - flat_name: 'email.message_id', - level: 'extended', - name: 'message_id', - normalize: [], - short: 'Value from the Message-ID header.', - type: 'wildcard', - }, - 'email.origination_timestamp': { - dashed_name: 'email-origination-timestamp', - description: - 'The date and time the email message was composed. Many email clients will fill in this value automatically when the message is sent by a user.', - example: '2020-11-10T22:12:34.8196921Z', - flat_name: 'email.origination_timestamp', - level: 'extended', - name: 'origination_timestamp', - normalize: [], - short: 'Date and time the email was composed.', - type: 'date', - }, - 'email.reply_to.address': { - dashed_name: 'email-reply-to-address', - description: - 'The address that replies should be delivered to based on the value in the RFC 5322 `Reply-To:` header.', - example: 'reply.here@example.com', - flat_name: 'email.reply_to.address', - ignore_above: 1024, - level: 'extended', - name: 'reply_to.address', - normalize: ['array'], - short: 'Address replies should be delivered to.', - type: 'keyword', - }, - 'email.sender.address': { - dashed_name: 'email-sender-address', - description: - 'Per RFC 5322, specifies the address responsible for the actual transmission of the message.', - flat_name: 'email.sender.address', - ignore_above: 1024, - level: 'extended', - name: 'sender.address', - normalize: [], - short: 'Address of the message sender.', - type: 'keyword', - }, - 'email.subject': { - dashed_name: 'email-subject', - description: 'A brief summary of the topic of the message.', - example: 'Please see this important message.', - flat_name: 'email.subject', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'email.subject.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'subject', - normalize: [], - short: 'The subject of the email message.', - type: 'keyword', - }, - 'email.to.address': { - dashed_name: 'email-to-address', - description: 'The email address of recipient', - example: 'user1@example.com', - flat_name: 'email.to.address', - ignore_above: 1024, - level: 'extended', - name: 'to.address', - normalize: ['array'], - short: 'Email address of recipient', - type: 'keyword', - }, - 'email.x_mailer': { - dashed_name: 'email-x-mailer', - description: - 'The name of the application that was used to draft and send the original email message.', - example: 'Spambot v2.5', - flat_name: 'email.x_mailer', - ignore_above: 1024, - level: 'extended', - name: 'x_mailer', - normalize: [], - short: 'Application that drafted email.', - type: 'keyword', - }, - }, - group: 2, - name: 'email', - nestings: ['email.attachments.file.hash'], - prefix: 'email.', - reused_here: [ - { - full: 'email.attachments.file.hash', - schema_name: 'hash', - short: 'Hashes, usually file hashes.', - }, - ], - short: 'Describes an email transaction.', - title: 'Email', - type: 'group', - }, - error: { - description: - 'These fields can represent errors of any kind.\nUse them for errors that happen while fetching events or in cases where the event itself contains an error.', - fields: { - 'error.code': { - dashed_name: 'error-code', - description: 'Error code describing the error.', - flat_name: 'error.code', - ignore_above: 1024, - level: 'core', - name: 'code', - normalize: [], - short: 'Error code describing the error.', - type: 'keyword', - }, - 'error.id': { - dashed_name: 'error-id', - description: 'Unique identifier for the error.', - flat_name: 'error.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - short: 'Unique identifier for the error.', - type: 'keyword', - }, - 'error.message': { - dashed_name: 'error-message', - description: 'Error message.', - flat_name: 'error.message', - level: 'core', - name: 'message', - normalize: [], - short: 'Error message.', - type: 'match_only_text', - }, - 'error.stack_trace': { - dashed_name: 'error-stack-trace', - description: 'The stack trace of this error in plain text.', - flat_name: 'error.stack_trace', - level: 'extended', - multi_fields: [ - { - flat_name: 'error.stack_trace.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'stack_trace', - normalize: [], - short: 'The stack trace of this error in plain text.', - type: 'wildcard', - }, - 'error.type': { - dashed_name: 'error-type', - description: 'The type of the error, for example the class name of the exception.', - example: 'java.lang.NullPointerException', - flat_name: 'error.type', - ignore_above: 1024, - level: 'extended', - name: 'type', - normalize: [], - short: 'The type of the error, for example the class name of the exception.', - type: 'keyword', - }, - }, - group: 2, - name: 'error', - prefix: 'error.', - short: 'Fields about errors of any kind.', - title: 'Error', - type: 'group', - }, - event: { - description: - 'The event fields are used for context information about the log or metric event itself.\nA log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host and device temperature. See the `event.kind` definition in this section for additional details about metric and state events.', - fields: { - 'event.action': { - dashed_name: 'event-action', - description: - 'The action captured by the event.\nThis describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer.', - example: 'user-password-change', - flat_name: 'event.action', - ignore_above: 1024, - level: 'core', - name: 'action', - normalize: [], - short: 'The action captured by the event.', - type: 'keyword', - }, - 'event.agent_id_status': { - dashed_name: 'event-agent-id-status', - description: - "Agents are normally responsible for populating the `agent.id` field value. If the system receiving events is capable of validating the value based on authentication information for the client then this field can be used to reflect the outcome of that validation.\nFor example if the agent's connection is authenticated with mTLS and the client cert contains the ID of the agent to which the cert was issued then the `agent.id` value in events can be checked against the certificate. If the values match then `event.agent_id_status: verified` is added to the event, otherwise one of the other allowed values should be used.\nIf no validation is performed then the field should be omitted.\nThe allowed values are:\n`verified` - The `agent.id` field value matches expected value obtained from auth metadata.\n`mismatch` - The `agent.id` field value does not match the expected value obtained from auth metadata.\n`missing` - There was no `agent.id` field in the event to validate.\n`auth_metadata_missing` - There was no auth metadata or it was missing information about the agent ID.", - example: 'verified', - flat_name: 'event.agent_id_status', - ignore_above: 1024, - level: 'extended', - name: 'agent_id_status', - normalize: [], - short: "Validation status of the event's agent.id field.", - type: 'keyword', - }, - 'event.category': { - allowed_values: [ - { - description: - 'Events in this category are related to the challenge and response process in which credentials are supplied and verified to allow the creation of a session. Common sources for these logs are Windows event logs and ssh logs. Visualize and analyze events in this category to look for failed logins, and other authentication-related activity.', - expected_event_types: ['start', 'end', 'info'], - name: 'authentication', - }, - { - description: - 'Events in the configuration category have to deal with creating, modifying, or deleting the settings or parameters of an application, process, or system.\nExample sources include security policy change logs, configuration auditing logging, and system integrity monitoring.', - expected_event_types: ['access', 'change', 'creation', 'deletion', 'info'], - name: 'configuration', - }, - { - description: - 'The database category denotes events and metrics relating to a data storage and retrieval system. Note that use of this category is not limited to relational database systems. Examples include event logs from MS SQL, MySQL, Elasticsearch, MongoDB, etc. Use this category to visualize and analyze database activity such as accesses and changes.', - expected_event_types: ['access', 'change', 'info', 'error'], - name: 'database', - }, - { - description: - 'Events in the driver category have to do with operating system device drivers and similar software entities such as Windows drivers, kernel extensions, kernel modules, etc.\nUse events and metrics in this category to visualize and analyze driver-related activity and status on hosts.', - expected_event_types: ['change', 'end', 'info', 'start'], - name: 'driver', - }, - { - description: - 'This category is used for events relating to email messages, email attachments, and email network or protocol activity.\nEmails events can be produced by email security gateways, mail transfer agents, email cloud service providers, or mail server monitoring applications.', - expected_event_types: ['info'], - name: 'email', - }, - { - description: - 'Relating to a set of information that has been created on, or has existed on a filesystem. Use this category of events to visualize and analyze the creation, access, and deletions of files. Events in this category can come from both host-based and network-based sources. An example source of a network-based detection of a file transfer would be the Zeek file.log.', - expected_event_types: ['change', 'creation', 'deletion', 'info'], - name: 'file', - }, - { - description: - 'Use this category to visualize and analyze information such as host inventory or host lifecycle events.\nMost of the events in this category can usually be observed from the outside, such as from a hypervisor or a control plane\'s point of view. Some can also be seen from within, such as "start" or "end".\nNote that this category is for information about hosts themselves; it is not meant to capture activity "happening on a host".', - expected_event_types: ['access', 'change', 'end', 'info', 'start'], - name: 'host', - }, - { - description: - 'Identity and access management (IAM) events relating to users, groups, and administration. Use this category to visualize and analyze IAM-related logs and data from active directory, LDAP, Okta, Duo, and other IAM systems.', - expected_event_types: [ - 'admin', - 'change', - 'creation', - 'deletion', - 'group', - 'info', - 'user', - ], - name: 'iam', - }, - { - description: - 'Relating to intrusion detections from IDS/IPS systems and functions, both network and host-based. Use this category to visualize and analyze intrusion detection alerts from systems such as Snort, Suricata, and Palo Alto threat detections.', - expected_event_types: ['allowed', 'denied', 'info'], - name: 'intrusion_detection', - }, - { - description: - 'Malware detection events and alerts. Use this category to visualize and analyze malware detections from EDR/EPP systems such as Elastic Endpoint Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems such as Suricata, or other sources of malware-related events such as Palo Alto Networks threat logs and Wildfire logs.', - expected_event_types: ['info'], - name: 'malware', - }, - { - description: - 'Relating to all network activity, including network connection lifecycle, network traffic, and essentially any event that includes an IP address. Many events containing decoded network protocol transactions fit into this category. Use events in this category to visualize or analyze counts of network ports, protocols, addresses, geolocation information, etc.', - expected_event_types: [ - 'access', - 'allowed', - 'connection', - 'denied', - 'end', - 'info', - 'protocol', - 'start', - ], - name: 'network', - }, - { - description: - 'Relating to software packages installed on hosts. Use this category to visualize and analyze inventory of software installed on various hosts, or to determine host vulnerability in the absence of vulnerability scan data.', - expected_event_types: ['access', 'change', 'deletion', 'info', 'installation', 'start'], - name: 'package', - }, - { - description: - 'Use this category of events to visualize and analyze process-specific information such as lifecycle events or process ancestry.', - expected_event_types: ['access', 'change', 'end', 'info', 'start'], - name: 'process', - }, - { - description: - 'Having to do with settings and assets stored in the Windows registry. Use this category to visualize and analyze activity such as registry access and modifications.', - expected_event_types: ['access', 'change', 'creation', 'deletion'], - name: 'registry', - }, - { - description: - 'The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections between assets. Data for this category may come from Windows Event logs, SSH logs, or stateless sessions such as HTTP cookie-based sessions, etc.', - expected_event_types: ['start', 'end', 'info'], - name: 'session', - }, - { - description: - "Use this category to visualize and analyze events describing threat actors' targets, motives, or behaviors.", - expected_event_types: ['indicator'], - name: 'threat', - }, - { - description: - 'Relating to vulnerability scan results. Use this category to analyze vulnerabilities detected by Tenable, Qualys, internal scanners, and other vulnerability management sources.', - expected_event_types: ['info'], - name: 'vulnerability', - }, - { - description: - 'Relating to web server access. Use this category to create a dashboard of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: events from network observers such as Zeek http log may also be included in this category.', - expected_event_types: ['access', 'error', 'info'], - name: 'web', - }, - ], - dashed_name: 'event-category', - description: - 'This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy.\n`event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory.\nThis field is an array. This will allow proper categorization of some events that fall in multiple categories.', - example: 'authentication', - flat_name: 'event.category', - ignore_above: 1024, - level: 'core', - name: 'category', - normalize: ['array'], - short: 'Event category. The second categorization field in the hierarchy.', - type: 'keyword', - }, - 'event.code': { - dashed_name: 'event-code', - description: - 'Identification code for this event, if one exists.\nSome event sources use event codes to identify messages unambiguously, regardless of message language or wording adjustments over time. An example of this is the Windows Event ID.', - example: 4648, - flat_name: 'event.code', - ignore_above: 1024, - level: 'extended', - name: 'code', - normalize: [], - short: 'Identification code for this event.', - type: 'keyword', - }, - 'event.created': { - dashed_name: 'event-created', - description: - "event.created contains the date/time when the event was first read by an agent, or by your pipeline.\nThis field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event.\nIn most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source.\nIn case the two timestamps are identical, @timestamp should be used.", - example: '2016-05-23T08:05:34.857Z', - flat_name: 'event.created', - level: 'core', - name: 'created', - normalize: [], - short: 'Time when the event was first read by an agent or by your pipeline.', - type: 'date', - }, - 'event.dataset': { - dashed_name: 'event-dataset', - description: - "Name of the dataset.\nIf an event source publishes more than one type of log or events (e.g. access log, error log), the dataset is used to specify which one the event comes from.\nIt's recommended but not required to start the dataset name with the module name, followed by a dot, then the dataset name.", - example: 'apache.access', - flat_name: 'event.dataset', - ignore_above: 1024, - level: 'core', - name: 'dataset', - normalize: [], - short: 'Name of the dataset.', - type: 'keyword', - }, - 'event.duration': { - dashed_name: 'event-duration', - description: - 'Duration of the event in nanoseconds.\nIf event.start and event.end are known this value should be the difference between the end and start time.', - flat_name: 'event.duration', - format: 'duration', - input_format: 'nanoseconds', - level: 'core', - name: 'duration', - normalize: [], - output_format: 'asMilliseconds', - output_precision: 1, - short: 'Duration of the event in nanoseconds.', - type: 'long', - }, - 'event.end': { - dashed_name: 'event-end', - description: - 'event.end contains the date when the event ended or when the activity was last observed.', - flat_name: 'event.end', - level: 'extended', - name: 'end', - normalize: [], - short: - 'event.end contains the date when the event ended or when the activity was last observed.', - type: 'date', - }, - 'event.hash': { - dashed_name: 'event-hash', - description: - 'Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity.', - example: '123456789012345678901234567890ABCD', - flat_name: 'event.hash', - ignore_above: 1024, - level: 'extended', - name: 'hash', - normalize: [], - short: - 'Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity.', - type: 'keyword', - }, - 'event.id': { - dashed_name: 'event-id', - description: 'Unique ID to describe the event.', - example: '8a4f500d', - flat_name: 'event.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - short: 'Unique ID to describe the event.', - type: 'keyword', - }, - 'event.ingested': { - dashed_name: 'event-ingested', - description: - "Timestamp when an event arrived in the central data store.\nThis is different from `@timestamp`, which is when the event originally occurred. It's also different from `event.created`, which is meant to capture the first time an agent saw the event.\nIn normal conditions, assuming no tampering, the timestamps should chronologically look like this: `@timestamp` < `event.created` < `event.ingested`.", - example: '2016-05-23T08:05:35.101Z', - flat_name: 'event.ingested', - level: 'core', - name: 'ingested', - normalize: [], - short: 'Timestamp when an event arrived in the central data store.', - type: 'date', - }, - 'event.kind': { - allowed_values: [ - { - description: - 'This value indicates an event such as an alert or notable event, triggered by a detection rule executing externally to the Elastic Stack.\n`event.kind:alert` is often populated for events coming from firewalls, intrusion detection systems, endpoint detection and response systems, and so on.\nThis value is not used by Elastic solutions for alert documents that are created by rules executing within the Kibana alerting framework.', - name: 'alert', - }, - { - description: - 'The `enrichment` value indicates an event collected to provide additional context, often to other events.\nAn example is collecting indicators of compromise (IOCs) from a threat intelligence provider with the intent to use those values to enrich other events. The IOC events from the intelligence provider should be categorized as `event.kind:enrichment`.', - name: 'enrichment', - }, - { - description: - 'This value is the most general and most common value for this field. It is used to represent events that indicate that something happened.', - name: 'event', - }, - { - description: - 'This value is used to indicate that this event describes a numeric measurement taken at given point in time.\nExamples include CPU utilization, memory usage, or device temperature.\nMetric events are often collected on a predictable frequency, such as once every few seconds, or once a minute, but can also be used to describe ad-hoc numeric metric queries.', - name: 'metric', - }, - { - description: - "The state value is similar to metric, indicating that this event describes a measurement taken at given point in time, except that the measurement does not result in a numeric value, but rather one of a fixed set of categorical values that represent conditions or states.\nExamples include periodic events reporting Elasticsearch cluster state (green/yellow/red), the state of a TCP connection (open, closed, fin_wait, etc.), the state of a host with respect to a software vulnerability (vulnerable, not vulnerable), and the state of a system regarding compliance with a regulatory standard (compliant, not compliant).\nNote that an event that describes a change of state would not use `event.kind:state`, but instead would use 'event.kind:event' since a state change fits the more general event definition of something that happened.\nState events are often collected on a predictable frequency, such as once every few seconds, once a minute, once an hour, or once a day, but can also be used to describe ad-hoc state queries.", - name: 'state', - }, - { - description: - 'This value indicates that an error occurred during the ingestion of this event, and that event data may be missing, inconsistent, or incorrect. `event.kind:pipeline_error` is often associated with parsing errors.', - name: 'pipeline_error', - }, - { - description: - 'This value is used by Elastic solutions (e.g., Security, Observability) for alert documents that are created by rules executing within the Kibana alerting framework.\nUsage of this value is reserved, and data ingestion pipelines must not populate `event.kind` with the value "signal".', - name: 'signal', - }, - ], - dashed_name: 'event-kind', - description: - 'This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy.\n`event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events.\nThe value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not.', - example: 'alert', - flat_name: 'event.kind', - ignore_above: 1024, - level: 'core', - name: 'kind', - normalize: [], - short: 'The kind of the event. The highest categorization field in the hierarchy.', - type: 'keyword', - }, - 'event.module': { - dashed_name: 'event-module', - description: - 'Name of the module this data is coming from.\nIf your monitoring agent supports the concept of modules or plugins to process events of a given source (e.g. Apache logs), `event.module` should contain the name of this module.', - example: 'apache', - flat_name: 'event.module', - ignore_above: 1024, - level: 'core', - name: 'module', - normalize: [], - short: 'Name of the module this data is coming from.', - type: 'keyword', - }, - 'event.original': { - dashed_name: 'event-original', - description: - 'Raw text message of entire event. Used to demonstrate log integrity or where the full log message (before splitting it up in multiple parts) may be required, e.g. for reindex.\nThis field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. If users wish to override this and index this field, please see `Field data types` in the `Elasticsearch Reference`.', - doc_values: false, - example: - 'Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232', - flat_name: 'event.original', - index: false, - level: 'core', - name: 'original', - normalize: [], - short: 'Raw text message of entire event.', - type: 'keyword', - }, - 'event.outcome': { - allowed_values: [ - { - description: - 'Indicates that this event describes a failed result. A common example is `event.category:file AND event.type:access AND event.outcome:failure` to indicate that a file access was attempted, but was not successful.', - name: 'failure', - }, - { - description: - 'Indicates that this event describes a successful result. A common example is `event.category:file AND event.type:create AND event.outcome:success` to indicate that a file was successfully created.', - name: 'success', - }, - { - description: - "Indicates that this event describes only an attempt for which the result is unknown from the perspective of the event producer. For example, if the event contains information only about the request side of a transaction that results in a response, populating `event.outcome:unknown` in the request event is appropriate. The unknown value should not be used when an outcome doesn't make logical sense for the event. In such cases `event.outcome` should not be populated.", - name: 'unknown', - }, - ], - dashed_name: 'event-outcome', - description: - 'This is one of four ECS Categorization Fields, and indicates the lowest level in the ECS category hierarchy.\n`event.outcome` simply denotes whether the event represents a success or a failure from the perspective of the entity that produced the event.\nNote that when a single transaction is described in multiple events, each event may populate different values of `event.outcome`, according to their perspective.\nAlso note that in the case of a compound event (a single event that contains multiple logical events), this field should be populated with the value that best captures the overall success or failure from the perspective of the event producer.\nFurther note that not all events will have an associated outcome. For example, this field is generally not populated for metric events, events with `event.type:info`, or any events for which an outcome does not make logical sense.', - example: 'success', - flat_name: 'event.outcome', - ignore_above: 1024, - level: 'core', - name: 'outcome', - normalize: [], - short: 'The outcome of the event. The lowest level categorization field in the hierarchy.', - type: 'keyword', - }, - 'event.provider': { - dashed_name: 'event-provider', - description: - 'Source of the event.\nEvent transports such as Syslog or the Windows Event Log typically mention the source of an event. It can be the name of the software that generated the event (e.g. Sysmon, httpd), or of a subsystem of the operating system (kernel, Microsoft-Windows-Security-Auditing).', - example: 'kernel', - flat_name: 'event.provider', - ignore_above: 1024, - level: 'extended', - name: 'provider', - normalize: [], - short: 'Source of the event.', - type: 'keyword', - }, - 'event.reason': { - dashed_name: 'event-reason', - description: - 'Reason why this event happened, according to the source.\nThis describes the why of a particular action or outcome captured in the event. Where `event.action` captures the action from the event, `event.reason` describes why that action was taken. For example, a web proxy with an `event.action` which denied the request may also populate `event.reason` with the reason why (e.g. `blocked site`).', - example: 'Terminated an unexpected process', - flat_name: 'event.reason', - ignore_above: 1024, - level: 'extended', - name: 'reason', - normalize: [], - short: 'Reason why this event happened, according to the source', - type: 'keyword', - }, - 'event.reference': { - dashed_name: 'event-reference', - description: - 'Reference URL linking to additional information about this event.\nThis URL links to a static definition of this event. Alert events, indicated by `event.kind:alert`, are a common use case for this field.', - example: 'https://system.example.com/event/#0001234', - flat_name: 'event.reference', - ignore_above: 1024, - level: 'extended', - name: 'reference', - normalize: [], - short: 'Event reference URL', - type: 'keyword', - }, - 'event.risk_score': { - dashed_name: 'event-risk-score', - description: - "Risk score or priority of the event (e.g. security solutions). Use your system's original value here.", - flat_name: 'event.risk_score', - level: 'core', - name: 'risk_score', - normalize: [], - short: - "Risk score or priority of the event (e.g. security solutions). Use your system's original value here.", - type: 'float', - }, - 'event.risk_score_norm': { - dashed_name: 'event-risk-score-norm', - description: - 'Normalized risk score or priority of the event, on a scale of 0 to 100.\nThis is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems.', - flat_name: 'event.risk_score_norm', - level: 'extended', - name: 'risk_score_norm', - normalize: [], - short: 'Normalized risk score or priority of the event (0-100).', - type: 'float', - }, - 'event.sequence': { - dashed_name: 'event-sequence', - description: - 'Sequence number of the event.\nThe sequence number is a value published by some event sources, to make the exact ordering of events unambiguous, regardless of the timestamp precision.', - flat_name: 'event.sequence', - format: 'string', - level: 'extended', - name: 'sequence', - normalize: [], - short: 'Sequence number of the event.', - type: 'long', - }, - 'event.severity': { - dashed_name: 'event-severity', - description: - "The numeric severity of the event according to your event source.\nWhat the different severity values mean can be different between sources and use cases. It's up to the implementer to make sure severities are consistent across events from the same source.\nThe Syslog severity belongs in `log.syslog.severity.code`. `event.severity` is meant to represent the severity according to the event source (e.g. firewall, IDS). If the event source does not publish its own severity, you may optionally copy the `log.syslog.severity.code` to `event.severity`.", - example: 7, - flat_name: 'event.severity', - format: 'string', - level: 'core', - name: 'severity', - normalize: [], - short: 'Numeric severity of the event.', - type: 'long', - }, - 'event.start': { - dashed_name: 'event-start', - description: - 'event.start contains the date when the event started or when the activity was first observed.', - flat_name: 'event.start', - level: 'extended', - name: 'start', - normalize: [], - short: - 'event.start contains the date when the event started or when the activity was first observed.', - type: 'date', - }, - 'event.timezone': { - dashed_name: 'event-timezone', - description: - 'This field should be populated when the event\'s timestamp does not include timezone information already (e.g. default Syslog timestamps). It\'s optional otherwise.\nAcceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00").', - flat_name: 'event.timezone', - ignore_above: 1024, - level: 'extended', - name: 'timezone', - normalize: [], - short: 'Event time zone.', - type: 'keyword', - }, - 'event.type': { - allowed_values: [ - { - description: - 'The access event type is used for the subset of events within a category that indicate that something was accessed. Common examples include `event.category:database AND event.type:access`, or `event.category:file AND event.type:access`. Note for file access, both directory listings and file opens should be included in this subcategory. You can further distinguish access operations using the ECS `event.action` field.', - name: 'access', - }, - { - description: - 'The admin event type is used for the subset of events within a category that are related to admin objects. For example, administrative changes within an IAM framework that do not specifically affect a user or group (e.g., adding new applications to a federation solution or connecting discrete forests in Active Directory) would fall into this subcategory. Common example: `event.category:iam AND event.type:change AND event.type:admin`. You can further distinguish admin operations using the ECS `event.action` field.', - name: 'admin', - }, - { - description: - 'The allowed event type is used for the subset of events within a category that indicate that something was allowed. Common examples include `event.category:network AND event.type:connection AND event.type:allowed` (to indicate a network firewall event for which the firewall disposition was to allow the connection to complete) and `event.category:intrusion_detection AND event.type:allowed` (to indicate a network intrusion prevention system event for which the IPS disposition was to allow the connection to complete). You can further distinguish allowed operations using the ECS `event.action` field, populating with values of your choosing, such as "allow", "detect", or "pass".', - name: 'allowed', - }, - { - description: - 'The change event type is used for the subset of events within a category that indicate that something has changed. If semantics best describe an event as modified, then include them in this subcategory. Common examples include `event.category:process AND event.type:change`, and `event.category:file AND event.type:change`. You can further distinguish change operations using the ECS `event.action` field.', - name: 'change', - }, - { - description: - 'Used primarily with `event.category:network` this value is used for the subset of network traffic that includes sufficient information for the event to be included in flow or connection analysis. Events in this subcategory will contain at least source and destination IP addresses, source and destination TCP/UDP ports, and will usually contain counts of bytes and/or packets transferred. Events in this subcategory may contain unidirectional or bidirectional information, including summary information. Use this subcategory to visualize and analyze network connections. Flow analysis, including Netflow, IPFIX, and other flow-related events fit in this subcategory. Note that firewall events from many Next-Generation Firewall (NGFW) devices will also fit into this subcategory. A common filter for flow/connection information would be `event.category:network AND event.type:connection AND event.type:end` (to view or analyze all completed network connections, ignoring mid-flow reports). You can further distinguish connection events using the ECS `event.action` field, populating with values of your choosing, such as "timeout", or "reset".', - name: 'connection', - }, - { - description: - 'The "creation" event type is used for the subset of events within a category that indicate that something was created. A common example is `event.category:file AND event.type:creation`.', - name: 'creation', - }, - { - description: - 'The deletion event type is used for the subset of events within a category that indicate that something was deleted. A common example is `event.category:file AND event.type:deletion` to indicate that a file has been deleted.', - name: 'deletion', - }, - { - description: - 'The denied event type is used for the subset of events within a category that indicate that something was denied. Common examples include `event.category:network AND event.type:denied` (to indicate a network firewall event for which the firewall disposition was to deny the connection) and `event.category:intrusion_detection AND event.type:denied` (to indicate a network intrusion prevention system event for which the IPS disposition was to deny the connection to complete). You can further distinguish denied operations using the ECS `event.action` field, populating with values of your choosing, such as "blocked", "dropped", or "quarantined".', - name: 'denied', - }, - { - description: - 'The end event type is used for the subset of events within a category that indicate something has ended. A common example is `event.category:process AND event.type:end`.', - name: 'end', - }, - { - description: - 'The error event type is used for the subset of events within a category that indicate or describe an error. A common example is `event.category:database AND event.type:error`. Note that pipeline errors that occur during the event ingestion process should not use this `event.type` value. Instead, they should use `event.kind:pipeline_error`.', - name: 'error', - }, - { - description: - 'The group event type is used for the subset of events within a category that are related to group objects. Common example: `event.category:iam AND event.type:creation AND event.type:group`. You can further distinguish group operations using the ECS `event.action` field.', - name: 'group', - }, - { - description: - 'The indicator event type is used for the subset of events within a category that contain details about indicators of compromise (IOCs).\nA common example is `event.category:threat AND event.type:indicator`.', - name: 'indicator', - }, - { - description: - 'The info event type is used for the subset of events within a category that indicate that they are purely informational, and don\'t report a state change, or any type of action. For example, an initial run of a file integrity monitoring system (FIM), where an agent reports all files under management, would fall into the "info" subcategory. Similarly, an event containing a dump of all currently running processes (as opposed to reporting that a process started/ended) would fall into the "info" subcategory. An additional common examples is `event.category:intrusion_detection AND event.type:info`.', - name: 'info', - }, - { - description: - 'The installation event type is used for the subset of events within a category that indicate that something was installed. A common example is `event.category:package` AND `event.type:installation`.', - name: 'installation', - }, - { - description: - 'The protocol event type is used for the subset of events within a category that indicate that they contain protocol details or analysis, beyond simply identifying the protocol. Generally, network events that contain specific protocol details will fall into this subcategory. A common example is `event.category:network AND event.type:protocol AND event.type:connection AND event.type:end` (to indicate that the event is a network connection event sent at the end of a connection that also includes a protocol detail breakdown). Note that events that only indicate the name or id of the protocol should not use the protocol value. Further note that when the protocol subcategory is used, the identified protocol is populated in the ECS `network.protocol` field.', - name: 'protocol', - }, - { - description: - 'The start event type is used for the subset of events within a category that indicate something has started. A common example is `event.category:process AND event.type:start`.', - name: 'start', - }, - { - description: - 'The user event type is used for the subset of events within a category that are related to user objects. Common example: `event.category:iam AND event.type:deletion AND event.type:user`. You can further distinguish user operations using the ECS `event.action` field.', - name: 'user', - }, - ], - dashed_name: 'event-type', - description: - 'This is one of four ECS Categorization Fields, and indicates the third level in the ECS category hierarchy.\n`event.type` represents a categorization "sub-bucket" that, when used along with the `event.category` field values, enables filtering events down to a level appropriate for single visualization.\nThis field is an array. This will allow proper categorization of some events that fall in multiple event types.', - flat_name: 'event.type', - ignore_above: 1024, - level: 'core', - name: 'type', - normalize: ['array'], - short: 'Event type. The third categorization field in the hierarchy.', - type: 'keyword', - }, - 'event.url': { - dashed_name: 'event-url', - description: - 'URL linking to an external system to continue investigation of this event.\nThis URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field.', - example: 'https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe', - flat_name: 'event.url', - ignore_above: 1024, - level: 'extended', - name: 'url', - normalize: [], - short: 'Event investigation URL', - type: 'keyword', - }, - }, - group: 2, - name: 'event', - prefix: 'event.', - short: 'Fields breaking down the event details.', - title: 'Event', - type: 'group', - }, - faas: { - beta: 'These fields are in beta and are subject to change.', - description: - 'The user fields describe information about the function as a service (FaaS) that is relevant to the event.', - fields: { - 'faas.coldstart': { - dashed_name: 'faas-coldstart', - description: 'Boolean value indicating a cold start of a function.', - flat_name: 'faas.coldstart', - level: 'extended', - name: 'coldstart', - normalize: [], - short: 'Boolean value indicating a cold start of a function.', - type: 'boolean', - }, - 'faas.execution': { - dashed_name: 'faas-execution', - description: 'The execution ID of the current function execution.', - example: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28', - flat_name: 'faas.execution', - ignore_above: 1024, - level: 'extended', - name: 'execution', - normalize: [], - short: 'The execution ID of the current function execution.', - type: 'keyword', - }, - 'faas.id': { - dashed_name: 'faas-id', - description: - "The unique identifier of a serverless function.\nFor AWS Lambda it's the function ARN (Amazon Resource Name) without a version or alias suffix.", - example: 'arn:aws:lambda:us-west-2:123456789012:function:my-function', - flat_name: 'faas.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - short: 'The unique identifier of a serverless function.', - type: 'keyword', - }, - 'faas.name': { - dashed_name: 'faas-name', - description: 'The name of a serverless function.', - example: 'my-function', - flat_name: 'faas.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'The name of a serverless function.', - type: 'keyword', - }, - 'faas.trigger': { - dashed_name: 'faas-trigger', - description: 'Details about the function trigger.', - flat_name: 'faas.trigger', - level: 'extended', - name: 'trigger', - normalize: [], - short: 'Details about the function trigger.', - type: 'nested', - }, - 'faas.trigger.request_id': { - dashed_name: 'faas-trigger-request-id', - description: 'The ID of the trigger request , message, event, etc.', - example: 123456789, - flat_name: 'faas.trigger.request_id', - ignore_above: 1024, - level: 'extended', - name: 'trigger.request_id', - normalize: [], - short: 'The ID of the trigger request , message, event, etc.', - type: 'keyword', - }, - 'faas.trigger.type': { - dashed_name: 'faas-trigger-type', - description: 'The trigger for the function execution.', - example: 'http', - expected_values: ['http', 'pubsub', 'datasource', 'timer', 'other'], - flat_name: 'faas.trigger.type', - ignore_above: 1024, - level: 'extended', - name: 'trigger.type', - normalize: [], - short: 'The trigger for the function execution.', - type: 'keyword', - }, - 'faas.version': { - dashed_name: 'faas-version', - description: 'The version of a serverless function.', - example: '123', - flat_name: 'faas.version', - ignore_above: 1024, - level: 'extended', - name: 'version', - normalize: [], - short: 'The version of a serverless function.', - type: 'keyword', - }, - }, - group: 2, - name: 'faas', - prefix: 'faas.', - short: 'Fields describing functions as a service.', - title: 'FaaS', - type: 'group', - }, - file: { - description: - 'A file is defined as a set of information that has been created on, or has existed on a filesystem.\nFile objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric.', - fields: { - 'file.accessed': { - dashed_name: 'file-accessed', - description: - 'Last time the file was accessed.\nNote that not all filesystems keep track of access time.', - flat_name: 'file.accessed', - level: 'extended', - name: 'accessed', - normalize: [], - short: 'Last time the file was accessed.', - type: 'date', - }, - 'file.attributes': { - dashed_name: 'file-attributes', - description: - "Array of file attributes.\nAttributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write.", - example: '["readonly", "system"]', - flat_name: 'file.attributes', - ignore_above: 1024, - level: 'extended', - name: 'attributes', - normalize: ['array'], - short: 'Array of file attributes.', - type: 'keyword', - }, - 'file.code_signature.digest_algorithm': { - dashed_name: 'file-code-signature-digest-algorithm', - description: - 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', - example: 'sha256', - flat_name: 'file.code_signature.digest_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'digest_algorithm', - normalize: [], - original_fieldset: 'code_signature', - short: 'Hashing algorithm used to sign the process.', - type: 'keyword', - }, - 'file.code_signature.exists': { - dashed_name: 'file-code-signature-exists', - description: 'Boolean to capture if a signature is present.', - example: 'true', - flat_name: 'file.code_signature.exists', - level: 'core', - name: 'exists', - normalize: [], - original_fieldset: 'code_signature', - short: 'Boolean to capture if a signature is present.', - type: 'boolean', - }, - 'file.code_signature.signing_id': { - dashed_name: 'file-code-signature-signing-id', - description: - 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', - example: 'com.apple.xpc.proxy', - flat_name: 'file.code_signature.signing_id', - ignore_above: 1024, - level: 'extended', - name: 'signing_id', - normalize: [], - original_fieldset: 'code_signature', - short: 'The identifier used to sign the process.', - type: 'keyword', - }, - 'file.code_signature.status': { - dashed_name: 'file-code-signature-status', - description: - 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', - example: 'ERROR_UNTRUSTED_ROOT', - flat_name: 'file.code_signature.status', - ignore_above: 1024, - level: 'extended', - name: 'status', - normalize: [], - original_fieldset: 'code_signature', - short: 'Additional information about the certificate status.', - type: 'keyword', - }, - 'file.code_signature.subject_name': { - dashed_name: 'file-code-signature-subject-name', - description: 'Subject name of the code signer', - example: 'Microsoft Corporation', - flat_name: 'file.code_signature.subject_name', - ignore_above: 1024, - level: 'core', - name: 'subject_name', - normalize: [], - original_fieldset: 'code_signature', - short: 'Subject name of the code signer', - type: 'keyword', - }, - 'file.code_signature.team_id': { - dashed_name: 'file-code-signature-team-id', - description: - 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', - example: 'EQHXZ8M8AV', - flat_name: 'file.code_signature.team_id', - ignore_above: 1024, - level: 'extended', - name: 'team_id', - normalize: [], - original_fieldset: 'code_signature', - short: 'The team identifier used to sign the process.', - type: 'keyword', - }, - 'file.code_signature.timestamp': { - dashed_name: 'file-code-signature-timestamp', - description: 'Date and time when the code signature was generated and signed.', - example: '2021-01-01T12:10:30Z', - flat_name: 'file.code_signature.timestamp', - level: 'extended', - name: 'timestamp', - normalize: [], - original_fieldset: 'code_signature', - short: 'When the signature was generated and signed.', - type: 'date', - }, - 'file.code_signature.trusted': { - dashed_name: 'file-code-signature-trusted', - description: - 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', - example: 'true', - flat_name: 'file.code_signature.trusted', - level: 'extended', - name: 'trusted', - normalize: [], - original_fieldset: 'code_signature', - short: 'Stores the trust status of the certificate chain.', - type: 'boolean', - }, - 'file.code_signature.valid': { - dashed_name: 'file-code-signature-valid', - description: - 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', - example: 'true', - flat_name: 'file.code_signature.valid', - level: 'extended', - name: 'valid', - normalize: [], - original_fieldset: 'code_signature', - short: - 'Boolean to capture if the digital signature is verified against the binary content.', - type: 'boolean', - }, - 'file.created': { - dashed_name: 'file-created', - description: 'File creation time.\nNote that not all filesystems store the creation time.', - flat_name: 'file.created', - level: 'extended', - name: 'created', - normalize: [], - short: 'File creation time.', - type: 'date', - }, - 'file.ctime': { - dashed_name: 'file-ctime', - description: - 'Last time the file attributes or metadata changed.\nNote that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file.', - flat_name: 'file.ctime', - level: 'extended', - name: 'ctime', - normalize: [], - short: 'Last time the file attributes or metadata changed.', - type: 'date', - }, - 'file.device': { - dashed_name: 'file-device', - description: 'Device that is the source of the file.', - example: 'sda', - flat_name: 'file.device', - ignore_above: 1024, - level: 'extended', - name: 'device', - normalize: [], - short: 'Device that is the source of the file.', - type: 'keyword', - }, - 'file.directory': { - dashed_name: 'file-directory', - description: - 'Directory where the file is located. It should include the drive letter, when appropriate.', - example: '/home/alice', - flat_name: 'file.directory', - ignore_above: 1024, - level: 'extended', - name: 'directory', - normalize: [], - short: 'Directory where the file is located.', - type: 'keyword', - }, - 'file.drive_letter': { - dashed_name: 'file-drive-letter', - description: - 'Drive letter where the file is located. This field is only relevant on Windows.\nThe value should be uppercase, and not include the colon.', - example: 'C', - flat_name: 'file.drive_letter', - ignore_above: 1, - level: 'extended', - name: 'drive_letter', - normalize: [], - short: 'Drive letter where the file is located.', - type: 'keyword', - }, - 'file.elf.architecture': { - dashed_name: 'file-elf-architecture', - description: 'Machine architecture of the ELF file.', - example: 'x86-64', - flat_name: 'file.elf.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - original_fieldset: 'elf', - short: 'Machine architecture of the ELF file.', - type: 'keyword', - }, - 'file.elf.byte_order': { - dashed_name: 'file-elf-byte-order', - description: 'Byte sequence of ELF file.', - example: 'Little Endian', - flat_name: 'file.elf.byte_order', - ignore_above: 1024, - level: 'extended', - name: 'byte_order', - normalize: [], - original_fieldset: 'elf', - short: 'Byte sequence of ELF file.', - type: 'keyword', - }, - 'file.elf.cpu_type': { - dashed_name: 'file-elf-cpu-type', - description: 'CPU type of the ELF file.', - example: 'Intel', - flat_name: 'file.elf.cpu_type', - ignore_above: 1024, - level: 'extended', - name: 'cpu_type', - normalize: [], - original_fieldset: 'elf', - short: 'CPU type of the ELF file.', - type: 'keyword', - }, - 'file.elf.creation_date': { - dashed_name: 'file-elf-creation-date', - description: - "Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.", - flat_name: 'file.elf.creation_date', - level: 'extended', - name: 'creation_date', - normalize: [], - original_fieldset: 'elf', - short: 'Build or compile date.', - type: 'date', - }, - 'file.elf.exports': { - dashed_name: 'file-elf-exports', - description: 'List of exported element names and types.', - flat_name: 'file.elf.exports', - level: 'extended', - name: 'exports', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of exported element names and types.', - type: 'flattened', - }, - 'file.elf.header.abi_version': { - dashed_name: 'file-elf-header-abi-version', - description: 'Version of the ELF Application Binary Interface (ABI).', - flat_name: 'file.elf.header.abi_version', - ignore_above: 1024, - level: 'extended', - name: 'header.abi_version', - normalize: [], - original_fieldset: 'elf', - short: 'Version of the ELF Application Binary Interface (ABI).', - type: 'keyword', - }, - 'file.elf.header.class': { - dashed_name: 'file-elf-header-class', - description: 'Header class of the ELF file.', - flat_name: 'file.elf.header.class', - ignore_above: 1024, - level: 'extended', - name: 'header.class', - normalize: [], - original_fieldset: 'elf', - short: 'Header class of the ELF file.', - type: 'keyword', - }, - 'file.elf.header.data': { - dashed_name: 'file-elf-header-data', - description: 'Data table of the ELF header.', - flat_name: 'file.elf.header.data', - ignore_above: 1024, - level: 'extended', - name: 'header.data', - normalize: [], - original_fieldset: 'elf', - short: 'Data table of the ELF header.', - type: 'keyword', - }, - 'file.elf.header.entrypoint': { - dashed_name: 'file-elf-header-entrypoint', - description: 'Header entrypoint of the ELF file.', - flat_name: 'file.elf.header.entrypoint', - format: 'string', - level: 'extended', - name: 'header.entrypoint', - normalize: [], - original_fieldset: 'elf', - short: 'Header entrypoint of the ELF file.', - type: 'long', - }, - 'file.elf.header.object_version': { - dashed_name: 'file-elf-header-object-version', - description: '"0x1" for original ELF files.', - flat_name: 'file.elf.header.object_version', - ignore_above: 1024, - level: 'extended', - name: 'header.object_version', - normalize: [], - original_fieldset: 'elf', - short: '"0x1" for original ELF files.', - type: 'keyword', - }, - 'file.elf.header.os_abi': { - dashed_name: 'file-elf-header-os-abi', - description: 'Application Binary Interface (ABI) of the Linux OS.', - flat_name: 'file.elf.header.os_abi', - ignore_above: 1024, - level: 'extended', - name: 'header.os_abi', - normalize: [], - original_fieldset: 'elf', - short: 'Application Binary Interface (ABI) of the Linux OS.', - type: 'keyword', - }, - 'file.elf.header.type': { - dashed_name: 'file-elf-header-type', - description: 'Header type of the ELF file.', - flat_name: 'file.elf.header.type', - ignore_above: 1024, - level: 'extended', - name: 'header.type', - normalize: [], - original_fieldset: 'elf', - short: 'Header type of the ELF file.', - type: 'keyword', - }, - 'file.elf.header.version': { - dashed_name: 'file-elf-header-version', - description: 'Version of the ELF header.', - flat_name: 'file.elf.header.version', - ignore_above: 1024, - level: 'extended', - name: 'header.version', - normalize: [], - original_fieldset: 'elf', - short: 'Version of the ELF header.', - type: 'keyword', - }, - 'file.elf.imports': { - dashed_name: 'file-elf-imports', - description: 'List of imported element names and types.', - flat_name: 'file.elf.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'file.elf.sections': { - dashed_name: 'file-elf-sections', - description: - 'An array containing an object for each section of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.', - flat_name: 'file.elf.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'elf', - short: 'Section information of the ELF file.', - type: 'nested', - }, - 'file.elf.sections.chi2': { - dashed_name: 'file-elf-sections-chi2', - description: 'Chi-square probability distribution of the section.', - flat_name: 'file.elf.sections.chi2', - format: 'number', - level: 'extended', - name: 'sections.chi2', - normalize: [], - original_fieldset: 'elf', - short: 'Chi-square probability distribution of the section.', - type: 'long', - }, - 'file.elf.sections.entropy': { - dashed_name: 'file-elf-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'file.elf.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'file.elf.sections.flags': { - dashed_name: 'file-elf-sections-flags', - description: 'ELF Section List flags.', - flat_name: 'file.elf.sections.flags', - ignore_above: 1024, - level: 'extended', - name: 'sections.flags', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List flags.', - type: 'keyword', - }, - 'file.elf.sections.name': { - dashed_name: 'file-elf-sections-name', - description: 'ELF Section List name.', - flat_name: 'file.elf.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List name.', - type: 'keyword', - }, - 'file.elf.sections.physical_offset': { - dashed_name: 'file-elf-sections-physical-offset', - description: 'ELF Section List offset.', - flat_name: 'file.elf.sections.physical_offset', - ignore_above: 1024, - level: 'extended', - name: 'sections.physical_offset', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List offset.', - type: 'keyword', - }, - 'file.elf.sections.physical_size': { - dashed_name: 'file-elf-sections-physical-size', - description: 'ELF Section List physical size.', - flat_name: 'file.elf.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List physical size.', - type: 'long', - }, - 'file.elf.sections.type': { - dashed_name: 'file-elf-sections-type', - description: 'ELF Section List type.', - flat_name: 'file.elf.sections.type', - ignore_above: 1024, - level: 'extended', - name: 'sections.type', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List type.', - type: 'keyword', - }, - 'file.elf.sections.virtual_address': { - dashed_name: 'file-elf-sections-virtual-address', - description: 'ELF Section List virtual address.', - flat_name: 'file.elf.sections.virtual_address', - format: 'string', - level: 'extended', - name: 'sections.virtual_address', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List virtual address.', - type: 'long', - }, - 'file.elf.sections.virtual_size': { - dashed_name: 'file-elf-sections-virtual-size', - description: 'ELF Section List virtual size.', - flat_name: 'file.elf.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List virtual size.', - type: 'long', - }, - 'file.elf.segments': { - dashed_name: 'file-elf-segments', - description: - 'An array containing an object for each segment of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.', - flat_name: 'file.elf.segments', - level: 'extended', - name: 'segments', - normalize: ['array'], - original_fieldset: 'elf', - short: 'ELF object segment list.', - type: 'nested', - }, - 'file.elf.segments.sections': { - dashed_name: 'file-elf-segments-sections', - description: 'ELF object segment sections.', - flat_name: 'file.elf.segments.sections', - ignore_above: 1024, - level: 'extended', - name: 'segments.sections', - normalize: [], - original_fieldset: 'elf', - short: 'ELF object segment sections.', - type: 'keyword', - }, - 'file.elf.segments.type': { - dashed_name: 'file-elf-segments-type', - description: 'ELF object segment type.', - flat_name: 'file.elf.segments.type', - ignore_above: 1024, - level: 'extended', - name: 'segments.type', - normalize: [], - original_fieldset: 'elf', - short: 'ELF object segment type.', - type: 'keyword', - }, - 'file.elf.shared_libraries': { - dashed_name: 'file-elf-shared-libraries', - description: 'List of shared libraries used by this ELF object.', - flat_name: 'file.elf.shared_libraries', - ignore_above: 1024, - level: 'extended', - name: 'shared_libraries', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of shared libraries used by this ELF object.', - type: 'keyword', - }, - 'file.elf.telfhash': { - dashed_name: 'file-elf-telfhash', - description: 'telfhash symbol hash for ELF file.', - flat_name: 'file.elf.telfhash', - ignore_above: 1024, - level: 'extended', - name: 'telfhash', - normalize: [], - original_fieldset: 'elf', - short: 'telfhash hash for ELF file.', - type: 'keyword', - }, - 'file.extension': { - dashed_name: 'file-extension', - description: - 'File extension, excluding the leading dot.\nNote that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").', - example: 'png', - flat_name: 'file.extension', - ignore_above: 1024, - level: 'extended', - name: 'extension', - normalize: [], - short: 'File extension, excluding the leading dot.', - type: 'keyword', - }, - 'file.fork_name': { - dashed_name: 'file-fork-name', - description: - 'A fork is additional data associated with a filesystem object.\nOn Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.\nOn NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\\path\\to\\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.', - example: 'Zone.Identifer', - flat_name: 'file.fork_name', - ignore_above: 1024, - level: 'extended', - name: 'fork_name', - normalize: [], - short: 'A fork is additional data associated with a filesystem object.', - type: 'keyword', - }, - 'file.gid': { - dashed_name: 'file-gid', - description: 'Primary group ID (GID) of the file.', - example: '1001', - flat_name: 'file.gid', - ignore_above: 1024, - level: 'extended', - name: 'gid', - normalize: [], - short: 'Primary group ID (GID) of the file.', - type: 'keyword', - }, - 'file.group': { - dashed_name: 'file-group', - description: 'Primary group name of the file.', - example: 'alice', - flat_name: 'file.group', - ignore_above: 1024, - level: 'extended', - name: 'group', - normalize: [], - short: 'Primary group name of the file.', - type: 'keyword', - }, - 'file.hash.md5': { - dashed_name: 'file-hash-md5', - description: 'MD5 hash.', - flat_name: 'file.hash.md5', - ignore_above: 1024, - level: 'extended', - name: 'md5', - normalize: [], - original_fieldset: 'hash', - short: 'MD5 hash.', - type: 'keyword', - }, - 'file.hash.sha1': { - dashed_name: 'file-hash-sha1', - description: 'SHA1 hash.', - flat_name: 'file.hash.sha1', - ignore_above: 1024, - level: 'extended', - name: 'sha1', - normalize: [], - original_fieldset: 'hash', - short: 'SHA1 hash.', - type: 'keyword', - }, - 'file.hash.sha256': { - dashed_name: 'file-hash-sha256', - description: 'SHA256 hash.', - flat_name: 'file.hash.sha256', - ignore_above: 1024, - level: 'extended', - name: 'sha256', - normalize: [], - original_fieldset: 'hash', - short: 'SHA256 hash.', - type: 'keyword', - }, - 'file.hash.sha384': { - dashed_name: 'file-hash-sha384', - description: 'SHA384 hash.', - flat_name: 'file.hash.sha384', - ignore_above: 1024, - level: 'extended', - name: 'sha384', - normalize: [], - original_fieldset: 'hash', - short: 'SHA384 hash.', - type: 'keyword', - }, - 'file.hash.sha512': { - dashed_name: 'file-hash-sha512', - description: 'SHA512 hash.', - flat_name: 'file.hash.sha512', - ignore_above: 1024, - level: 'extended', - name: 'sha512', - normalize: [], - original_fieldset: 'hash', - short: 'SHA512 hash.', - type: 'keyword', - }, - 'file.hash.ssdeep': { - dashed_name: 'file-hash-ssdeep', - description: 'SSDEEP hash.', - flat_name: 'file.hash.ssdeep', - ignore_above: 1024, - level: 'extended', - name: 'ssdeep', - normalize: [], - original_fieldset: 'hash', - short: 'SSDEEP hash.', - type: 'keyword', - }, - 'file.hash.tlsh': { - dashed_name: 'file-hash-tlsh', - description: 'TLSH hash.', - flat_name: 'file.hash.tlsh', - ignore_above: 1024, - level: 'extended', - name: 'tlsh', - normalize: [], - original_fieldset: 'hash', - short: 'TLSH hash.', - type: 'keyword', - }, - 'file.inode': { - dashed_name: 'file-inode', - description: 'Inode representing the file in the filesystem.', - example: '256383', - flat_name: 'file.inode', - ignore_above: 1024, - level: 'extended', - name: 'inode', - normalize: [], - short: 'Inode representing the file in the filesystem.', - type: 'keyword', - }, - 'file.mime_type': { - dashed_name: 'file-mime-type', - description: - 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', - flat_name: 'file.mime_type', - ignore_above: 1024, - level: 'extended', - name: 'mime_type', - normalize: [], - short: 'Media type of file, document, or arrangement of bytes.', - type: 'keyword', - }, - 'file.mode': { - dashed_name: 'file-mode', - description: 'Mode of the file in octal representation.', - example: '0640', - flat_name: 'file.mode', - ignore_above: 1024, - level: 'extended', - name: 'mode', - normalize: [], - short: 'Mode of the file in octal representation.', - type: 'keyword', - }, - 'file.mtime': { - dashed_name: 'file-mtime', - description: 'Last time the file content was modified.', - flat_name: 'file.mtime', - level: 'extended', - name: 'mtime', - normalize: [], - short: 'Last time the file content was modified.', - type: 'date', - }, - 'file.name': { - dashed_name: 'file-name', - description: 'Name of the file including the extension, without the directory.', - example: 'example.png', - flat_name: 'file.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'Name of the file including the extension, without the directory.', - type: 'keyword', - }, - 'file.owner': { - dashed_name: 'file-owner', - description: "File owner's username.", - example: 'alice', - flat_name: 'file.owner', - ignore_above: 1024, - level: 'extended', - name: 'owner', - normalize: [], - short: "File owner's username.", - type: 'keyword', - }, - 'file.path': { - dashed_name: 'file-path', - description: - 'Full path to the file, including the file name. It should include the drive letter, when appropriate.', - example: '/home/alice/example.png', - flat_name: 'file.path', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'file.path.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'path', - normalize: [], - short: 'Full path to the file, including the file name.', - type: 'keyword', - }, - 'file.pe.architecture': { - dashed_name: 'file-pe-architecture', - description: 'CPU architecture target for the file.', - example: 'x64', - flat_name: 'file.pe.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - original_fieldset: 'pe', - short: 'CPU architecture target for the file.', - type: 'keyword', - }, - 'file.pe.company': { - dashed_name: 'file-pe-company', - description: 'Internal company name of the file, provided at compile-time.', - example: 'Microsoft Corporation', - flat_name: 'file.pe.company', - ignore_above: 1024, - level: 'extended', - name: 'company', - normalize: [], - original_fieldset: 'pe', - short: 'Internal company name of the file, provided at compile-time.', - type: 'keyword', - }, - 'file.pe.description': { - dashed_name: 'file-pe-description', - description: 'Internal description of the file, provided at compile-time.', - example: 'Paint', - flat_name: 'file.pe.description', - ignore_above: 1024, - level: 'extended', - name: 'description', - normalize: [], - original_fieldset: 'pe', - short: 'Internal description of the file, provided at compile-time.', - type: 'keyword', - }, - 'file.pe.file_version': { - dashed_name: 'file-pe-file-version', - description: 'Internal version of the file, provided at compile-time.', - example: '6.3.9600.17415', - flat_name: 'file.pe.file_version', - ignore_above: 1024, - level: 'extended', - name: 'file_version', - normalize: [], - original_fieldset: 'pe', - short: 'Process name.', - type: 'keyword', - }, - 'file.pe.imphash': { - dashed_name: 'file-pe-imphash', - description: - 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', - example: '0c6803c4e922103c4dca5963aad36ddf', - flat_name: 'file.pe.imphash', - ignore_above: 1024, - level: 'extended', - name: 'imphash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'file.pe.original_file_name': { - dashed_name: 'file-pe-original-file-name', - description: 'Internal name of the file, provided at compile-time.', - example: 'MSPAINT.EXE', - flat_name: 'file.pe.original_file_name', - ignore_above: 1024, - level: 'extended', - name: 'original_file_name', - normalize: [], - original_fieldset: 'pe', - short: 'Internal name of the file, provided at compile-time.', - type: 'keyword', - }, - 'file.pe.pehash': { - dashed_name: 'file-pe-pehash', - description: - 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', - example: '73ff189b63cd6be375a7ff25179a38d347651975', - flat_name: 'file.pe.pehash', - ignore_above: 1024, - level: 'extended', - name: 'pehash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the PE header and data from one or more PE sections.', - type: 'keyword', - }, - 'file.pe.product': { - dashed_name: 'file-pe-product', - description: 'Internal product name of the file, provided at compile-time.', - example: 'Microsoft® Windows® Operating System', - flat_name: 'file.pe.product', - ignore_above: 1024, - level: 'extended', - name: 'product', - normalize: [], - original_fieldset: 'pe', - short: 'Internal product name of the file, provided at compile-time.', - type: 'keyword', - }, - 'file.size': { - dashed_name: 'file-size', - description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', - example: 16384, - flat_name: 'file.size', - level: 'extended', - name: 'size', - normalize: [], - short: 'File size in bytes.', - type: 'long', - }, - 'file.target_path': { - dashed_name: 'file-target-path', - description: 'Target path for symlinks.', - flat_name: 'file.target_path', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'file.target_path.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'target_path', - normalize: [], - short: 'Target path for symlinks.', - type: 'keyword', - }, - 'file.type': { - dashed_name: 'file-type', - description: 'File type (file, dir, or symlink).', - example: 'file', - flat_name: 'file.type', - ignore_above: 1024, - level: 'extended', - name: 'type', - normalize: [], - short: 'File type (file, dir, or symlink).', - type: 'keyword', - }, - 'file.uid': { - dashed_name: 'file-uid', - description: 'The user ID (UID) or security identifier (SID) of the file owner.', - example: '1001', - flat_name: 'file.uid', - ignore_above: 1024, - level: 'extended', - name: 'uid', - normalize: [], - short: 'The user ID (UID) or security identifier (SID) of the file owner.', - type: 'keyword', - }, - 'file.x509.alternative_names': { - dashed_name: 'file-x509-alternative-names', - description: - 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', - example: '*.elastic.co', - flat_name: 'file.x509.alternative_names', - ignore_above: 1024, - level: 'extended', - name: 'alternative_names', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of subject alternative names (SAN).', - type: 'keyword', - }, - 'file.x509.issuer.common_name': { - dashed_name: 'file-x509-issuer-common-name', - description: 'List of common name (CN) of issuing certificate authority.', - example: 'Example SHA2 High Assurance Server CA', - flat_name: 'file.x509.issuer.common_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common name (CN) of issuing certificate authority.', - type: 'keyword', - }, - 'file.x509.issuer.country': { - dashed_name: 'file-x509-issuer-country', - description: 'List of country \\(C) codes', - example: 'US', - flat_name: 'file.x509.issuer.country', - ignore_above: 1024, - level: 'extended', - name: 'issuer.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) codes', - type: 'keyword', - }, - 'file.x509.issuer.distinguished_name': { - dashed_name: 'file-x509-issuer-distinguished-name', - description: 'Distinguished name (DN) of issuing certificate authority.', - example: - 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', - flat_name: 'file.x509.issuer.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of issuing certificate authority.', - type: 'keyword', - }, - 'file.x509.issuer.locality': { - dashed_name: 'file-x509-issuer-locality', - description: 'List of locality names (L)', - example: 'Mountain View', - flat_name: 'file.x509.issuer.locality', - ignore_above: 1024, - level: 'extended', - name: 'issuer.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'file.x509.issuer.organization': { - dashed_name: 'file-x509-issuer-organization', - description: 'List of organizations (O) of issuing certificate authority.', - example: 'Example Inc', - flat_name: 'file.x509.issuer.organization', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of issuing certificate authority.', - type: 'keyword', - }, - 'file.x509.issuer.organizational_unit': { - dashed_name: 'file-x509-issuer-organizational-unit', - description: 'List of organizational units (OU) of issuing certificate authority.', - example: 'www.example.com', - flat_name: 'file.x509.issuer.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of issuing certificate authority.', - type: 'keyword', - }, - 'file.x509.issuer.state_or_province': { - dashed_name: 'file-x509-issuer-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'file.x509.issuer.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'issuer.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'file.x509.not_after': { - dashed_name: 'file-x509-not-after', - description: 'Time at which the certificate is no longer considered valid.', - example: '2020-07-16T03:15:39Z', - flat_name: 'file.x509.not_after', - level: 'extended', - name: 'not_after', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is no longer considered valid.', - type: 'date', - }, - 'file.x509.not_before': { - dashed_name: 'file-x509-not-before', - description: 'Time at which the certificate is first considered valid.', - example: '2019-08-16T01:40:25Z', - flat_name: 'file.x509.not_before', - level: 'extended', - name: 'not_before', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is first considered valid.', - type: 'date', - }, - 'file.x509.public_key_algorithm': { - dashed_name: 'file-x509-public-key-algorithm', - description: 'Algorithm used to generate the public key.', - example: 'RSA', - flat_name: 'file.x509.public_key_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'public_key_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Algorithm used to generate the public key.', - type: 'keyword', - }, - 'file.x509.public_key_curve': { - dashed_name: 'file-x509-public-key-curve', - description: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - example: 'nistp521', - flat_name: 'file.x509.public_key_curve', - ignore_above: 1024, - level: 'extended', - name: 'public_key_curve', - normalize: [], - original_fieldset: 'x509', - short: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - type: 'keyword', - }, - 'file.x509.public_key_exponent': { - dashed_name: 'file-x509-public-key-exponent', - description: 'Exponent used to derive the public key. This is algorithm specific.', - doc_values: false, - example: 65537, - flat_name: 'file.x509.public_key_exponent', - index: false, - level: 'extended', - name: 'public_key_exponent', - normalize: [], - original_fieldset: 'x509', - short: 'Exponent used to derive the public key. This is algorithm specific.', - type: 'long', - }, - 'file.x509.public_key_size': { - dashed_name: 'file-x509-public-key-size', - description: 'The size of the public key space in bits.', - example: 2048, - flat_name: 'file.x509.public_key_size', - level: 'extended', - name: 'public_key_size', - normalize: [], - original_fieldset: 'x509', - short: 'The size of the public key space in bits.', - type: 'long', - }, - 'file.x509.serial_number': { - dashed_name: 'file-x509-serial-number', - description: - 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', - example: '55FBB9C7DEBF09809D12CCAA', - flat_name: 'file.x509.serial_number', - ignore_above: 1024, - level: 'extended', - name: 'serial_number', - normalize: [], - original_fieldset: 'x509', - short: 'Unique serial number issued by the certificate authority.', - type: 'keyword', - }, - 'file.x509.signature_algorithm': { - dashed_name: 'file-x509-signature-algorithm', - description: - 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', - example: 'SHA256-RSA', - flat_name: 'file.x509.signature_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'signature_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Identifier for certificate signature algorithm.', - type: 'keyword', - }, - 'file.x509.subject.common_name': { - dashed_name: 'file-x509-subject-common-name', - description: 'List of common names (CN) of subject.', - example: 'shared.global.example.net', - flat_name: 'file.x509.subject.common_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common names (CN) of subject.', - type: 'keyword', - }, - 'file.x509.subject.country': { - dashed_name: 'file-x509-subject-country', - description: 'List of country \\(C) code', - example: 'US', - flat_name: 'file.x509.subject.country', - ignore_above: 1024, - level: 'extended', - name: 'subject.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) code', - type: 'keyword', - }, - 'file.x509.subject.distinguished_name': { - dashed_name: 'file-x509-subject-distinguished-name', - description: 'Distinguished name (DN) of the certificate subject entity.', - example: - 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', - flat_name: 'file.x509.subject.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of the certificate subject entity.', - type: 'keyword', - }, - 'file.x509.subject.locality': { - dashed_name: 'file-x509-subject-locality', - description: 'List of locality names (L)', - example: 'San Francisco', - flat_name: 'file.x509.subject.locality', - ignore_above: 1024, - level: 'extended', - name: 'subject.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'file.x509.subject.organization': { - dashed_name: 'file-x509-subject-organization', - description: 'List of organizations (O) of subject.', - example: 'Example, Inc.', - flat_name: 'file.x509.subject.organization', - ignore_above: 1024, - level: 'extended', - name: 'subject.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of subject.', - type: 'keyword', - }, - 'file.x509.subject.organizational_unit': { - dashed_name: 'file-x509-subject-organizational-unit', - description: 'List of organizational units (OU) of subject.', - flat_name: 'file.x509.subject.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'subject.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of subject.', - type: 'keyword', - }, - 'file.x509.subject.state_or_province': { - dashed_name: 'file-x509-subject-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'file.x509.subject.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'subject.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'file.x509.version_number': { - dashed_name: 'file-x509-version-number', - description: 'Version of x509 format.', - example: 3, - flat_name: 'file.x509.version_number', - ignore_above: 1024, - level: 'extended', - name: 'version_number', - normalize: [], - original_fieldset: 'x509', - short: 'Version of x509 format.', - type: 'keyword', - }, - }, - group: 2, - name: 'file', - nestings: ['file.code_signature', 'file.elf', 'file.hash', 'file.pe', 'file.x509'], - prefix: 'file.', - reusable: { - expected: [ - { as: 'file', at: 'threat.indicator', full: 'threat.indicator.file' }, - { - as: 'file', - at: 'threat.enrichments.indicator', - full: 'threat.enrichments.indicator.file', - }, - ], - top_level: true, - }, - reused_here: [ - { - full: 'file.hash', - schema_name: 'hash', - short: 'Hashes, usually file hashes.', - }, - { - full: 'file.pe', - schema_name: 'pe', - short: 'These fields contain Windows Portable Executable (PE) metadata.', - }, - { - full: 'file.x509', - schema_name: 'x509', - short: 'These fields contain x509 certificate metadata.', - }, - { - full: 'file.code_signature', - schema_name: 'code_signature', - short: 'These fields contain information about binary code signatures.', - }, - { - beta: 'This field reuse is beta and subject to change.', - full: 'file.elf', - schema_name: 'elf', - short: 'These fields contain Linux Executable Linkable Format (ELF) metadata.', - }, - ], - short: 'Fields describing files.', - title: 'File', - type: 'group', - }, - geo: { - description: - 'Geo fields can carry data about a specific location related to an event.\nThis geolocation information can be derived from techniques such as Geo IP, or be user-supplied.', - fields: { - 'geo.city_name': { - dashed_name: 'geo-city-name', - description: 'City name.', - example: 'Montreal', - flat_name: 'geo.city_name', - ignore_above: 1024, - level: 'core', - name: 'city_name', - normalize: [], - short: 'City name.', - type: 'keyword', - }, - 'geo.continent_code': { - dashed_name: 'geo-continent-code', - description: "Two-letter code representing continent's name.", - example: 'NA', - flat_name: 'geo.continent_code', - ignore_above: 1024, - level: 'core', - name: 'continent_code', - normalize: [], - short: 'Continent code.', - type: 'keyword', - }, - 'geo.continent_name': { - dashed_name: 'geo-continent-name', - description: 'Name of the continent.', - example: 'North America', - flat_name: 'geo.continent_name', - ignore_above: 1024, - level: 'core', - name: 'continent_name', - normalize: [], - short: 'Name of the continent.', - type: 'keyword', - }, - 'geo.country_iso_code': { - dashed_name: 'geo-country-iso-code', - description: 'Country ISO code.', - example: 'CA', - flat_name: 'geo.country_iso_code', - ignore_above: 1024, - level: 'core', - name: 'country_iso_code', - normalize: [], - short: 'Country ISO code.', - type: 'keyword', - }, - 'geo.country_name': { - dashed_name: 'geo-country-name', - description: 'Country name.', - example: 'Canada', - flat_name: 'geo.country_name', - ignore_above: 1024, - level: 'core', - name: 'country_name', - normalize: [], - short: 'Country name.', - type: 'keyword', - }, - 'geo.location': { - dashed_name: 'geo-location', - description: 'Longitude and latitude.', - example: '{ "lon": -73.614830, "lat": 45.505918 }', - flat_name: 'geo.location', - level: 'core', - name: 'location', - normalize: [], - short: 'Longitude and latitude.', - type: 'geo_point', - }, - 'geo.name': { - dashed_name: 'geo-name', - description: - 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', - example: 'boston-dc', - flat_name: 'geo.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'User-defined description of a location.', - type: 'keyword', - }, - 'geo.postal_code': { - dashed_name: 'geo-postal-code', - description: - 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', - example: 94040, - flat_name: 'geo.postal_code', - ignore_above: 1024, - level: 'core', - name: 'postal_code', - normalize: [], - short: 'Postal code.', - type: 'keyword', - }, - 'geo.region_iso_code': { - dashed_name: 'geo-region-iso-code', - description: 'Region ISO code.', - example: 'CA-QC', - flat_name: 'geo.region_iso_code', - ignore_above: 1024, - level: 'core', - name: 'region_iso_code', - normalize: [], - short: 'Region ISO code.', - type: 'keyword', - }, - 'geo.region_name': { - dashed_name: 'geo-region-name', - description: 'Region name.', - example: 'Quebec', - flat_name: 'geo.region_name', - ignore_above: 1024, - level: 'core', - name: 'region_name', - normalize: [], - short: 'Region name.', - type: 'keyword', - }, - 'geo.timezone': { - dashed_name: 'geo-timezone', - description: 'The time zone of the location, such as IANA time zone name.', - example: 'America/Argentina/Buenos_Aires', - flat_name: 'geo.timezone', - ignore_above: 1024, - level: 'core', - name: 'timezone', - normalize: [], - short: 'Time zone.', - type: 'keyword', - }, - }, - group: 2, - name: 'geo', - prefix: 'geo.', - reusable: { - expected: [ - { as: 'geo', at: 'client', full: 'client.geo' }, - { as: 'geo', at: 'destination', full: 'destination.geo' }, - { as: 'geo', at: 'observer', full: 'observer.geo' }, - { as: 'geo', at: 'host', full: 'host.geo' }, - { as: 'geo', at: 'server', full: 'server.geo' }, - { as: 'geo', at: 'source', full: 'source.geo' }, - { as: 'geo', at: 'threat.indicator', full: 'threat.indicator.geo' }, - { - as: 'geo', - at: 'threat.enrichments.indicator', - full: 'threat.enrichments.indicator.geo', - }, - ], - top_level: false, - }, - short: 'Fields describing a location.', - title: 'Geo', - type: 'group', - }, - group: { - description: 'The group fields are meant to represent groups that are relevant to the event.', - fields: { - 'group.domain': { - dashed_name: 'group-domain', - description: - 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'group.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - short: 'Name of the directory the group is a member of.', - type: 'keyword', - }, - 'group.id': { - dashed_name: 'group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'group.name': { - dashed_name: 'group-name', - description: 'Name of the group.', - flat_name: 'group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'Name of the group.', - type: 'keyword', - }, - }, - group: 2, - name: 'group', - prefix: 'group.', - reusable: { - expected: [ - { as: 'group', at: 'user', full: 'user.group' }, - { - as: 'group', - at: 'process', - full: 'process.group', - short_override: 'The effective group (egid).', - }, - { - as: 'real_group', - at: 'process', - full: 'process.real_group', - short_override: 'The real group (rgid).', - }, - { - as: 'saved_group', - at: 'process', - full: 'process.saved_group', - short_override: 'The saved group (sgid).', - }, - { - as: 'supplemental_groups', - at: 'process', - full: 'process.supplemental_groups', - normalize: ['array'], - short_override: 'An array of supplemental groups.', - }, - { - as: 'attested_groups', - at: 'process', - beta: 'Reusing the `group` fields in this location is currently considered beta.', - full: 'process.attested_groups', - normalize: ['array'], - short_override: - 'The externally attested groups based on an external source such as the Kube API.', - }, - ], - top_level: true, - }, - short: "User's group relevant to the event.", - title: 'Group', - type: 'group', - }, - hash: { - description: - 'The hash fields represent different bitwise hash algorithms and their values.\nField names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512).\nNote that this fieldset is used for common hashes that may be computed over a range of generic bytes. Entity-specific hashes such as ja3 or imphash are placed in the fieldsets to which they relate (tls and pe, respectively).', - fields: { - 'hash.md5': { - dashed_name: 'hash-md5', - description: 'MD5 hash.', - flat_name: 'hash.md5', - ignore_above: 1024, - level: 'extended', - name: 'md5', - normalize: [], - short: 'MD5 hash.', - type: 'keyword', - }, - 'hash.sha1': { - dashed_name: 'hash-sha1', - description: 'SHA1 hash.', - flat_name: 'hash.sha1', - ignore_above: 1024, - level: 'extended', - name: 'sha1', - normalize: [], - short: 'SHA1 hash.', - type: 'keyword', - }, - 'hash.sha256': { - dashed_name: 'hash-sha256', - description: 'SHA256 hash.', - flat_name: 'hash.sha256', - ignore_above: 1024, - level: 'extended', - name: 'sha256', - normalize: [], - short: 'SHA256 hash.', - type: 'keyword', - }, - 'hash.sha384': { - dashed_name: 'hash-sha384', - description: 'SHA384 hash.', - flat_name: 'hash.sha384', - ignore_above: 1024, - level: 'extended', - name: 'sha384', - normalize: [], - short: 'SHA384 hash.', - type: 'keyword', - }, - 'hash.sha512': { - dashed_name: 'hash-sha512', - description: 'SHA512 hash.', - flat_name: 'hash.sha512', - ignore_above: 1024, - level: 'extended', - name: 'sha512', - normalize: [], - short: 'SHA512 hash.', - type: 'keyword', - }, - 'hash.ssdeep': { - dashed_name: 'hash-ssdeep', - description: 'SSDEEP hash.', - flat_name: 'hash.ssdeep', - ignore_above: 1024, - level: 'extended', - name: 'ssdeep', - normalize: [], - short: 'SSDEEP hash.', - type: 'keyword', - }, - 'hash.tlsh': { - dashed_name: 'hash-tlsh', - description: 'TLSH hash.', - flat_name: 'hash.tlsh', - ignore_above: 1024, - level: 'extended', - name: 'tlsh', - normalize: [], - short: 'TLSH hash.', - type: 'keyword', - }, - }, - group: 2, - name: 'hash', - prefix: 'hash.', - reusable: { - expected: [ - { as: 'hash', at: 'file', full: 'file.hash' }, - { as: 'hash', at: 'process', full: 'process.hash' }, - { as: 'hash', at: 'dll', full: 'dll.hash' }, - { - as: 'hash', - at: 'email.attachments.file', - full: 'email.attachments.file.hash', - }, - ], - top_level: false, - }, - short: 'Hashes, usually file hashes.', - title: 'Hash', - type: 'group', - }, - host: { - description: - 'A host is defined as a general computing instance.\nECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.', - fields: { - 'host.architecture': { - dashed_name: 'host-architecture', - description: 'Operating system architecture.', - example: 'x86_64', - flat_name: 'host.architecture', - ignore_above: 1024, - level: 'core', - name: 'architecture', - normalize: [], - short: 'Operating system architecture.', - type: 'keyword', - }, - 'host.boot.id': { - beta: 'This field is beta and subject to change.', - dashed_name: 'host-boot-id', - description: - 'Linux boot uuid taken from /proc/sys/kernel/random/boot_id. Note the boot_id value from /proc may or may not be the same in containers as on the host. Some container runtimes will bind mount a new boot_id value onto the proc file in each container.', - example: '88a1f0ed-5ae5-41ee-af6b-41921c311872', - flat_name: 'host.boot.id', - ignore_above: 1024, - level: 'extended', - name: 'boot.id', - normalize: [], - short: 'Linux boot uuid taken from /proc/sys/kernel/random/boot_id', - type: 'keyword', - }, - 'host.cpu.usage': { - dashed_name: 'host-cpu-usage', - description: - 'Percent CPU used which is normalized by the number of CPU cores and it ranges from 0 to 1.\nScaling factor: 1000.\nFor example: For a two core host, this value should be the average of the two cores, between 0 and 1.', - flat_name: 'host.cpu.usage', - level: 'extended', - name: 'cpu.usage', - normalize: [], - scaling_factor: 1000, - short: 'Percent CPU used, between 0 and 1.', - type: 'scaled_float', - }, - 'host.disk.read.bytes': { - dashed_name: 'host-disk-read-bytes', - description: - 'The total number of bytes (gauge) read successfully (aggregated from all disks) since the last metric collection.', - flat_name: 'host.disk.read.bytes', - level: 'extended', - name: 'disk.read.bytes', - normalize: [], - short: 'The number of bytes read by all disks.', - type: 'long', - }, - 'host.disk.write.bytes': { - dashed_name: 'host-disk-write-bytes', - description: - 'The total number of bytes (gauge) written successfully (aggregated from all disks) since the last metric collection.', - flat_name: 'host.disk.write.bytes', - level: 'extended', - name: 'disk.write.bytes', - normalize: [], - short: 'The number of bytes written on all disks.', - type: 'long', - }, - 'host.domain': { - dashed_name: 'host-domain', - description: - "Name of the domain of which the host is a member.\nFor example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider.", - example: 'CONTOSO', - flat_name: 'host.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - short: 'Name of the directory the group is a member of.', - type: 'keyword', - }, - 'host.geo.city_name': { - dashed_name: 'host-geo-city-name', - description: 'City name.', - example: 'Montreal', - flat_name: 'host.geo.city_name', - ignore_above: 1024, - level: 'core', - name: 'city_name', - normalize: [], - original_fieldset: 'geo', - short: 'City name.', - type: 'keyword', - }, - 'host.geo.continent_code': { - dashed_name: 'host-geo-continent-code', - description: "Two-letter code representing continent's name.", - example: 'NA', - flat_name: 'host.geo.continent_code', - ignore_above: 1024, - level: 'core', - name: 'continent_code', - normalize: [], - original_fieldset: 'geo', - short: 'Continent code.', - type: 'keyword', - }, - 'host.geo.continent_name': { - dashed_name: 'host-geo-continent-name', - description: 'Name of the continent.', - example: 'North America', - flat_name: 'host.geo.continent_name', - ignore_above: 1024, - level: 'core', - name: 'continent_name', - normalize: [], - original_fieldset: 'geo', - short: 'Name of the continent.', - type: 'keyword', - }, - 'host.geo.country_iso_code': { - dashed_name: 'host-geo-country-iso-code', - description: 'Country ISO code.', - example: 'CA', - flat_name: 'host.geo.country_iso_code', - ignore_above: 1024, - level: 'core', - name: 'country_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Country ISO code.', - type: 'keyword', - }, - 'host.geo.country_name': { - dashed_name: 'host-geo-country-name', - description: 'Country name.', - example: 'Canada', - flat_name: 'host.geo.country_name', - ignore_above: 1024, - level: 'core', - name: 'country_name', - normalize: [], - original_fieldset: 'geo', - short: 'Country name.', - type: 'keyword', - }, - 'host.geo.location': { - dashed_name: 'host-geo-location', - description: 'Longitude and latitude.', - example: '{ "lon": -73.614830, "lat": 45.505918 }', - flat_name: 'host.geo.location', - level: 'core', - name: 'location', - normalize: [], - original_fieldset: 'geo', - short: 'Longitude and latitude.', - type: 'geo_point', - }, - 'host.geo.name': { - dashed_name: 'host-geo-name', - description: - 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', - example: 'boston-dc', - flat_name: 'host.geo.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'geo', - short: 'User-defined description of a location.', - type: 'keyword', - }, - 'host.geo.postal_code': { - dashed_name: 'host-geo-postal-code', - description: - 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', - example: 94040, - flat_name: 'host.geo.postal_code', - ignore_above: 1024, - level: 'core', - name: 'postal_code', - normalize: [], - original_fieldset: 'geo', - short: 'Postal code.', - type: 'keyword', - }, - 'host.geo.region_iso_code': { - dashed_name: 'host-geo-region-iso-code', - description: 'Region ISO code.', - example: 'CA-QC', - flat_name: 'host.geo.region_iso_code', - ignore_above: 1024, - level: 'core', - name: 'region_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Region ISO code.', - type: 'keyword', - }, - 'host.geo.region_name': { - dashed_name: 'host-geo-region-name', - description: 'Region name.', - example: 'Quebec', - flat_name: 'host.geo.region_name', - ignore_above: 1024, - level: 'core', - name: 'region_name', - normalize: [], - original_fieldset: 'geo', - short: 'Region name.', - type: 'keyword', - }, - 'host.geo.timezone': { - dashed_name: 'host-geo-timezone', - description: 'The time zone of the location, such as IANA time zone name.', - example: 'America/Argentina/Buenos_Aires', - flat_name: 'host.geo.timezone', - ignore_above: 1024, - level: 'core', - name: 'timezone', - normalize: [], - original_fieldset: 'geo', - short: 'Time zone.', - type: 'keyword', - }, - 'host.hostname': { - dashed_name: 'host-hostname', - description: - 'Hostname of the host.\nIt normally contains what the `hostname` command returns on the host machine.', - flat_name: 'host.hostname', - ignore_above: 1024, - level: 'core', - name: 'hostname', - normalize: [], - short: 'Hostname of the host.', - type: 'keyword', - }, - 'host.id': { - dashed_name: 'host-id', - description: - 'Unique host id.\nAs hostname is not always unique, use values that are meaningful in your environment.\nExample: The current usage of `beat.name`.', - flat_name: 'host.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - short: 'Unique host id.', - type: 'keyword', - }, - 'host.ip': { - dashed_name: 'host-ip', - description: 'Host ip addresses.', - flat_name: 'host.ip', - level: 'core', - name: 'ip', - normalize: ['array'], - short: 'Host ip addresses.', - type: 'ip', - }, - 'host.mac': { - dashed_name: 'host-mac', - description: - 'Host MAC addresses.\nThe notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.', - example: '["00-00-5E-00-53-23", "00-00-5E-00-53-24"]', - flat_name: 'host.mac', - ignore_above: 1024, - level: 'core', - name: 'mac', - normalize: ['array'], - pattern: '^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$', - short: 'Host MAC addresses.', - type: 'keyword', - }, - 'host.name': { - dashed_name: 'host-name', - description: - 'Name of the host.\nIt can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.', - flat_name: 'host.name', - ignore_above: 1024, - level: 'core', - name: 'name', - normalize: [], - short: 'Name of the host.', - type: 'keyword', - }, - 'host.network.egress.bytes': { - dashed_name: 'host-network-egress-bytes', - description: - 'The number of bytes (gauge) sent out on all network interfaces by the host since the last metric collection.', - flat_name: 'host.network.egress.bytes', - level: 'extended', - name: 'network.egress.bytes', - normalize: [], - short: 'The number of bytes sent on all network interfaces.', - type: 'long', - }, - 'host.network.egress.packets': { - dashed_name: 'host-network-egress-packets', - description: - 'The number of packets (gauge) sent out on all network interfaces by the host since the last metric collection.', - flat_name: 'host.network.egress.packets', - level: 'extended', - name: 'network.egress.packets', - normalize: [], - short: 'The number of packets sent on all network interfaces.', - type: 'long', - }, - 'host.network.ingress.bytes': { - dashed_name: 'host-network-ingress-bytes', - description: - 'The number of bytes received (gauge) on all network interfaces by the host since the last metric collection.', - flat_name: 'host.network.ingress.bytes', - level: 'extended', - name: 'network.ingress.bytes', - normalize: [], - short: 'The number of bytes received on all network interfaces.', - type: 'long', - }, - 'host.network.ingress.packets': { - dashed_name: 'host-network-ingress-packets', - description: - 'The number of packets (gauge) received on all network interfaces by the host since the last metric collection.', - flat_name: 'host.network.ingress.packets', - level: 'extended', - name: 'network.ingress.packets', - normalize: [], - short: 'The number of packets received on all network interfaces.', - type: 'long', - }, - 'host.os.family': { - dashed_name: 'host-os-family', - description: 'OS family (such as redhat, debian, freebsd, windows).', - example: 'debian', - flat_name: 'host.os.family', - ignore_above: 1024, - level: 'extended', - name: 'family', - normalize: [], - original_fieldset: 'os', - short: 'OS family (such as redhat, debian, freebsd, windows).', - type: 'keyword', - }, - 'host.os.full': { - dashed_name: 'host-os-full', - description: 'Operating system name, including the version or code name.', - example: 'Mac OS Mojave', - flat_name: 'host.os.full', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'host.os.full.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full', - normalize: [], - original_fieldset: 'os', - short: 'Operating system name, including the version or code name.', - type: 'keyword', - }, - 'host.os.kernel': { - dashed_name: 'host-os-kernel', - description: 'Operating system kernel version as a raw string.', - example: '4.4.0-112-generic', - flat_name: 'host.os.kernel', - ignore_above: 1024, - level: 'extended', - name: 'kernel', - normalize: [], - original_fieldset: 'os', - short: 'Operating system kernel version as a raw string.', - type: 'keyword', - }, - 'host.os.name': { - dashed_name: 'host-os-name', - description: 'Operating system name, without the version.', - example: 'Mac OS X', - flat_name: 'host.os.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'host.os.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'os', - short: 'Operating system name, without the version.', - type: 'keyword', - }, - 'host.os.platform': { - dashed_name: 'host-os-platform', - description: 'Operating system platform (such centos, ubuntu, windows).', - example: 'darwin', - flat_name: 'host.os.platform', - ignore_above: 1024, - level: 'extended', - name: 'platform', - normalize: [], - original_fieldset: 'os', - short: 'Operating system platform (such centos, ubuntu, windows).', - type: 'keyword', - }, - 'host.os.type': { - dashed_name: 'host-os-type', - description: - "Use the `os.type` field to categorize the operating system into one of the broad commercial families.\nIf the OS you're dealing with is not listed as an expected value, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition.", - example: 'macos', - expected_values: ['linux', 'macos', 'unix', 'windows', 'ios', 'android'], - flat_name: 'host.os.type', - ignore_above: 1024, - level: 'extended', - name: 'type', - normalize: [], - original_fieldset: 'os', - short: 'Which commercial OS family (one of: linux, macos, unix, windows, ios or android).', - type: 'keyword', - }, - 'host.os.version': { - dashed_name: 'host-os-version', - description: 'Operating system version as a raw string.', - example: '10.14.1', - flat_name: 'host.os.version', - ignore_above: 1024, - level: 'extended', - name: 'version', - normalize: [], - original_fieldset: 'os', - short: 'Operating system version as a raw string.', - type: 'keyword', - }, - 'host.pid_ns_ino': { - beta: 'This field is beta and subject to change.', - dashed_name: 'host-pid-ns-ino', - description: - 'This is the inode number of the namespace in the namespace file system (nsfs). Unsigned int inum in include/linux/ns_common.h.', - example: 256383, - flat_name: 'host.pid_ns_ino', - ignore_above: 1024, - level: 'extended', - name: 'pid_ns_ino', - normalize: [], - short: 'Pid namespace inode', - type: 'keyword', - }, - 'host.risk.calculated_level': { - dashed_name: 'host-risk-calculated-level', - description: - 'A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.', - example: 'High', - flat_name: 'host.risk.calculated_level', - ignore_above: 1024, - level: 'extended', - name: 'calculated_level', - normalize: [], - original_fieldset: 'risk', - short: - 'A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.', - type: 'keyword', - }, - 'host.risk.calculated_score': { - dashed_name: 'host-risk-calculated-score', - description: - 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.', - example: 880.73, - flat_name: 'host.risk.calculated_score', - level: 'extended', - name: 'calculated_score', - normalize: [], - original_fieldset: 'risk', - short: - 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.', - type: 'float', - }, - 'host.risk.calculated_score_norm': { - dashed_name: 'host-risk-calculated-score-norm', - description: - 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring, and normalized to a range of 0 to 100.', - example: 88.73, - flat_name: 'host.risk.calculated_score_norm', - level: 'extended', - name: 'calculated_score_norm', - normalize: [], - original_fieldset: 'risk', - short: 'A normalized risk score calculated by an internal system.', - type: 'float', - }, - 'host.risk.static_level': { - dashed_name: 'host-risk-static-level', - description: - 'A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.', - example: 'High', - flat_name: 'host.risk.static_level', - ignore_above: 1024, - level: 'extended', - name: 'static_level', - normalize: [], - original_fieldset: 'risk', - short: - 'A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.', - type: 'keyword', - }, - 'host.risk.static_score': { - dashed_name: 'host-risk-static-score', - description: - 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.', - example: 830, - flat_name: 'host.risk.static_score', - level: 'extended', - name: 'static_score', - normalize: [], - original_fieldset: 'risk', - short: - 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.', - type: 'float', - }, - 'host.risk.static_score_norm': { - dashed_name: 'host-risk-static-score-norm', - description: - 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform, and normalized to a range of 0 to 100.', - example: 83, - flat_name: 'host.risk.static_score_norm', - level: 'extended', - name: 'static_score_norm', - normalize: [], - original_fieldset: 'risk', - short: 'A normalized risk score calculated by an external system.', - type: 'float', - }, - 'host.type': { - dashed_name: 'host-type', - description: - 'Type of host.\nFor Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.', - flat_name: 'host.type', - ignore_above: 1024, - level: 'core', - name: 'type', - normalize: [], - short: 'Type of host.', - type: 'keyword', - }, - 'host.uptime': { - dashed_name: 'host-uptime', - description: 'Seconds the host has been up.', - example: 1325, - flat_name: 'host.uptime', - level: 'extended', - name: 'uptime', - normalize: [], - short: 'Seconds the host has been up.', - type: 'long', - }, - }, - group: 2, - name: 'host', - nestings: ['host.geo', 'host.os', 'host.risk'], - prefix: 'host.', - reused_here: [ - { - full: 'host.geo', - schema_name: 'geo', - short: 'Fields describing a location.', - }, - { - full: 'host.os', - schema_name: 'os', - short: 'OS fields contain information about the operating system.', - }, - { - full: 'host.risk', - schema_name: 'risk', - short: 'Fields for describing risk score and level.', - }, - ], - short: 'Fields describing the relevant computing instance.', - title: 'Host', - type: 'group', - }, - http: { - description: - 'Fields related to HTTP activity. Use the `url` field set to store the url of the request.', - fields: { - 'http.request.body.bytes': { - dashed_name: 'http-request-body-bytes', - description: 'Size in bytes of the request body.', - example: 887, - flat_name: 'http.request.body.bytes', - format: 'bytes', - level: 'extended', - name: 'request.body.bytes', - normalize: [], - short: 'Size in bytes of the request body.', - type: 'long', - }, - 'http.request.body.content': { - dashed_name: 'http-request-body-content', - description: 'The full HTTP request body.', - example: 'Hello world', - flat_name: 'http.request.body.content', - level: 'extended', - multi_fields: [ - { - flat_name: 'http.request.body.content.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'request.body.content', - normalize: [], - short: 'The full HTTP request body.', - type: 'wildcard', - }, - 'http.request.bytes': { - dashed_name: 'http-request-bytes', - description: 'Total size in bytes of the request (body and headers).', - example: 1437, - flat_name: 'http.request.bytes', - format: 'bytes', - level: 'extended', - name: 'request.bytes', - normalize: [], - short: 'Total size in bytes of the request (body and headers).', - type: 'long', - }, - 'http.request.id': { - dashed_name: 'http-request-id', - description: - 'A unique identifier for each HTTP request to correlate logs between clients and servers in transactions.\nThe id may be contained in a non-standard HTTP header, such as `X-Request-ID` or `X-Correlation-ID`.', - example: '123e4567-e89b-12d3-a456-426614174000', - flat_name: 'http.request.id', - ignore_above: 1024, - level: 'extended', - name: 'request.id', - normalize: [], - short: 'HTTP request ID.', - type: 'keyword', - }, - 'http.request.method': { - dashed_name: 'http-request-method', - description: - 'HTTP request method.\nThe value should retain its casing from the original event. For example, `GET`, `get`, and `GeT` are all considered valid values for this field.', - example: 'POST', - flat_name: 'http.request.method', - ignore_above: 1024, - level: 'extended', - name: 'request.method', - normalize: [], - short: 'HTTP request method.', - type: 'keyword', - }, - 'http.request.mime_type': { - dashed_name: 'http-request-mime-type', - description: - "Mime type of the body of the request.\nThis value must only be populated based on the content of the request body, not on the `Content-Type` header. Comparing the mime type of a request with the request's Content-Type header can be helpful in detecting threats or misconfigured clients.", - example: 'image/gif', - flat_name: 'http.request.mime_type', - ignore_above: 1024, - level: 'extended', - name: 'request.mime_type', - normalize: [], - short: 'Mime type of the body of the request.', - type: 'keyword', - }, - 'http.request.referrer': { - dashed_name: 'http-request-referrer', - description: 'Referrer for this HTTP request.', - example: 'https://blog.example.com/', - flat_name: 'http.request.referrer', - ignore_above: 1024, - level: 'extended', - name: 'request.referrer', - normalize: [], - short: 'Referrer for this HTTP request.', - type: 'keyword', - }, - 'http.response.body.bytes': { - dashed_name: 'http-response-body-bytes', - description: 'Size in bytes of the response body.', - example: 887, - flat_name: 'http.response.body.bytes', - format: 'bytes', - level: 'extended', - name: 'response.body.bytes', - normalize: [], - short: 'Size in bytes of the response body.', - type: 'long', - }, - 'http.response.body.content': { - dashed_name: 'http-response-body-content', - description: 'The full HTTP response body.', - example: 'Hello world', - flat_name: 'http.response.body.content', - level: 'extended', - multi_fields: [ - { - flat_name: 'http.response.body.content.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'response.body.content', - normalize: [], - short: 'The full HTTP response body.', - type: 'wildcard', - }, - 'http.response.bytes': { - dashed_name: 'http-response-bytes', - description: 'Total size in bytes of the response (body and headers).', - example: 1437, - flat_name: 'http.response.bytes', - format: 'bytes', - level: 'extended', - name: 'response.bytes', - normalize: [], - short: 'Total size in bytes of the response (body and headers).', - type: 'long', - }, - 'http.response.mime_type': { - dashed_name: 'http-response-mime-type', - description: - "Mime type of the body of the response.\nThis value must only be populated based on the content of the response body, not on the `Content-Type` header. Comparing the mime type of a response with the response's Content-Type header can be helpful in detecting misconfigured servers.", - example: 'image/gif', - flat_name: 'http.response.mime_type', - ignore_above: 1024, - level: 'extended', - name: 'response.mime_type', - normalize: [], - short: 'Mime type of the body of the response.', - type: 'keyword', - }, - 'http.response.status_code': { - dashed_name: 'http-response-status-code', - description: 'HTTP response status code.', - example: 404, - flat_name: 'http.response.status_code', - format: 'string', - level: 'extended', - name: 'response.status_code', - normalize: [], - short: 'HTTP response status code.', - type: 'long', - }, - 'http.version': { - dashed_name: 'http-version', - description: 'HTTP version.', - example: 1.1, - flat_name: 'http.version', - ignore_above: 1024, - level: 'extended', - name: 'version', - normalize: [], - short: 'HTTP version.', - type: 'keyword', - }, - }, - group: 2, - name: 'http', - prefix: 'http.', - short: 'Fields describing an HTTP request.', - title: 'HTTP', - type: 'group', - }, - interface: { - description: - 'The interface fields are used to record ingress and egress interface information when reported by an observer (e.g. firewall, router, load balancer) in the context of the observer handling a network connection. In the case of a single observer interface (e.g. network sensor on a span port) only the observer.ingress information should be populated.', - fields: { - 'interface.alias': { - dashed_name: 'interface-alias', - description: - 'Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming.', - example: 'outside', - flat_name: 'interface.alias', - ignore_above: 1024, - level: 'extended', - name: 'alias', - normalize: [], - short: 'Interface alias', - type: 'keyword', - }, - 'interface.id': { - dashed_name: 'interface-id', - description: 'Interface ID as reported by an observer (typically SNMP interface ID).', - example: 10, - flat_name: 'interface.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - short: 'Interface ID', - type: 'keyword', - }, - 'interface.name': { - dashed_name: 'interface-name', - description: 'Interface name as reported by the system.', - example: 'eth0', - flat_name: 'interface.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'Interface name', - type: 'keyword', - }, - }, - group: 2, - name: 'interface', - prefix: 'interface.', - reusable: { - expected: [ - { - as: 'interface', - at: 'observer.ingress', - full: 'observer.ingress.interface', - }, - { - as: 'interface', - at: 'observer.egress', - full: 'observer.egress.interface', - }, - ], - top_level: false, - }, - short: 'Fields to describe observer interface information.', - title: 'Interface', - type: 'group', - }, - log: { - description: - "Details about the event's logging mechanism or logging transport.\nThe log.* fields are typically populated with details about the logging mechanism used to create and/or transport the event. For example, syslog details belong under `log.syslog.*`.\nThe details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields.", - fields: { - 'log.file.path': { - dashed_name: 'log-file-path', - description: - "Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate.\nIf the event wasn't read from a log file, do not populate this field.", - example: '/var/log/fun-times.log', - flat_name: 'log.file.path', - ignore_above: 1024, - level: 'extended', - name: 'file.path', - normalize: [], - short: 'Full path to the log file this event came from.', - type: 'keyword', - }, - 'log.level': { - dashed_name: 'log-level', - description: - "Original log level of the log event.\nIf the source of the event provides a log level or textual severity, this is the one that goes in `log.level`. If your source doesn't specify one, you may put your event transport's severity here (e.g. Syslog severity).\nSome examples are `warn`, `err`, `i`, `informational`.", - example: 'error', - flat_name: 'log.level', - ignore_above: 1024, - level: 'core', - name: 'level', - normalize: [], - short: 'Log level of the log event.', - type: 'keyword', - }, - 'log.logger': { - dashed_name: 'log-logger', - description: - 'The name of the logger inside an application. This is usually the name of the class which initialized the logger, or can be a custom name.', - example: 'org.elasticsearch.bootstrap.Bootstrap', - flat_name: 'log.logger', - ignore_above: 1024, - level: 'core', - name: 'logger', - normalize: [], - short: 'Name of the logger.', - type: 'keyword', - }, - 'log.origin.file.line': { - dashed_name: 'log-origin-file-line', - description: - 'The line number of the file containing the source code which originated the log event.', - example: 42, - flat_name: 'log.origin.file.line', - level: 'extended', - name: 'origin.file.line', - normalize: [], - short: 'The line number of the file which originated the log event.', - type: 'long', - }, - 'log.origin.file.name': { - dashed_name: 'log-origin-file-name', - description: - 'The name of the file containing the source code which originated the log event.\nNote that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`.', - example: 'Bootstrap.java', - flat_name: 'log.origin.file.name', - ignore_above: 1024, - level: 'extended', - name: 'origin.file.name', - normalize: [], - short: 'The code file which originated the log event.', - type: 'keyword', - }, - 'log.origin.function': { - dashed_name: 'log-origin-function', - description: 'The name of the function or method which originated the log event.', - example: 'init', - flat_name: 'log.origin.function', - ignore_above: 1024, - level: 'extended', - name: 'origin.function', - normalize: [], - short: 'The function which originated the log event.', - type: 'keyword', - }, - 'log.syslog': { - dashed_name: 'log-syslog', - description: - 'The Syslog metadata of the event, if the event was transmitted via Syslog. Please see RFCs 5424 or 3164.', - flat_name: 'log.syslog', - level: 'extended', - name: 'syslog', - normalize: [], - short: 'Syslog metadata', - type: 'object', - }, - 'log.syslog.appname': { - dashed_name: 'log-syslog-appname', - description: 'The device or application that originated the Syslog message, if available.', - example: 'sshd', - flat_name: 'log.syslog.appname', - ignore_above: 1024, - level: 'extended', - name: 'syslog.appname', - normalize: [], - short: 'The device or application that originated the Syslog message.', - type: 'keyword', - }, - 'log.syslog.facility.code': { - dashed_name: 'log-syslog-facility-code', - description: - 'The Syslog numeric facility of the log event, if available.\nAccording to RFCs 5424 and 3164, this value should be an integer between 0 and 23.', - example: 23, - flat_name: 'log.syslog.facility.code', - format: 'string', - level: 'extended', - name: 'syslog.facility.code', - normalize: [], - short: 'Syslog numeric facility of the event.', - type: 'long', - }, - 'log.syslog.facility.name': { - dashed_name: 'log-syslog-facility-name', - description: 'The Syslog text-based facility of the log event, if available.', - example: 'local7', - flat_name: 'log.syslog.facility.name', - ignore_above: 1024, - level: 'extended', - name: 'syslog.facility.name', - normalize: [], - short: 'Syslog text-based facility of the event.', - type: 'keyword', - }, - 'log.syslog.hostname': { - dashed_name: 'log-syslog-hostname', - description: - 'The hostname, FQDN, or IP of the machine that originally sent the Syslog message. This is sourced from the hostname field of the syslog header. Depending on the environment, this value may be different from the host that handled the event, especially if the host handling the events is acting as a collector.', - example: 'example-host', - flat_name: 'log.syslog.hostname', - ignore_above: 1024, - level: 'extended', - name: 'syslog.hostname', - normalize: [], - short: 'The host that originated the Syslog message.', - type: 'keyword', - }, - 'log.syslog.msgid': { - dashed_name: 'log-syslog-msgid', - description: - 'An identifier for the type of Syslog message, if available. Only applicable for RFC 5424 messages.', - example: 'ID47', - flat_name: 'log.syslog.msgid', - ignore_above: 1024, - level: 'extended', - name: 'syslog.msgid', - normalize: [], - short: 'An identifier for the type of Syslog message.', - type: 'keyword', - }, - 'log.syslog.priority': { - dashed_name: 'log-syslog-priority', - description: - 'Syslog numeric priority of the event, if available.\nAccording to RFCs 5424 and 3164, the priority is 8 * facility + severity. This number is therefore expected to contain a value between 0 and 191.', - example: 135, - flat_name: 'log.syslog.priority', - format: 'string', - level: 'extended', - name: 'syslog.priority', - normalize: [], - short: 'Syslog priority of the event.', - type: 'long', - }, - 'log.syslog.procid': { - dashed_name: 'log-syslog-procid', - description: 'The process name or ID that originated the Syslog message, if available.', - example: 12345, - flat_name: 'log.syslog.procid', - ignore_above: 1024, - level: 'extended', - name: 'syslog.procid', - normalize: [], - short: 'The process name or ID that originated the Syslog message.', - type: 'keyword', - }, - 'log.syslog.severity.code': { - dashed_name: 'log-syslog-severity-code', - description: - "The Syslog numeric severity of the log event, if available.\nIf the event source publishing via Syslog provides a different numeric severity value (e.g. firewall, IDS), your source's numeric severity should go to `event.severity`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `event.severity`.", - example: 3, - flat_name: 'log.syslog.severity.code', - level: 'extended', - name: 'syslog.severity.code', - normalize: [], - short: 'Syslog numeric severity of the event.', - type: 'long', - }, - 'log.syslog.severity.name': { - dashed_name: 'log-syslog-severity-name', - description: - "The Syslog numeric severity of the log event, if available.\nIf the event source publishing via Syslog provides a different severity value (e.g. firewall, IDS), your source's text severity should go to `log.level`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `log.level`.", - example: 'Error', - flat_name: 'log.syslog.severity.name', - ignore_above: 1024, - level: 'extended', - name: 'syslog.severity.name', - normalize: [], - short: 'Syslog text-based severity of the event.', - type: 'keyword', - }, - 'log.syslog.structured_data': { - dashed_name: 'log-syslog-structured-data', - description: - 'Structured data expressed in RFC 5424 messages, if available. These are key-value pairs formed from the structured data portion of the syslog message, as defined in RFC 5424 Section 6.3.', - flat_name: 'log.syslog.structured_data', - level: 'extended', - name: 'syslog.structured_data', - normalize: [], - short: 'Structured data expressed in RFC 5424 messages.', - type: 'flattened', - }, - 'log.syslog.version': { - dashed_name: 'log-syslog-version', - description: - 'The version of the Syslog protocol specification. Only applicable for RFC 5424 messages.', - example: 1, - flat_name: 'log.syslog.version', - ignore_above: 1024, - level: 'extended', - name: 'syslog.version', - normalize: [], - short: 'Syslog protocol version.', - type: 'keyword', - }, - }, - group: 2, - name: 'log', - prefix: 'log.', - short: "Details about the event's logging mechanism.", - title: 'Log', - type: 'group', - }, - network: { - description: - 'The network is defined as the communication path over which a host or network event happens.\nThe network.* fields should be populated with details about the network activity associated with an event.', - fields: { - 'network.application': { - dashed_name: 'network-application', - description: - "When a specific application or service is identified from network connection details (source/dest IPs, ports, certificates, or wire format), this field captures the application's or service's name.\nFor example, the original event identifies the network connection being from a specific web service in a `https` network connection, like `facebook` or `twitter`.\nThe field value must be normalized to lowercase for querying.", - example: 'aim', - flat_name: 'network.application', - ignore_above: 1024, - level: 'extended', - name: 'application', - normalize: [], - short: 'Application level protocol name.', - type: 'keyword', - }, - 'network.bytes': { - dashed_name: 'network-bytes', - description: - 'Total bytes transferred in both directions.\nIf `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum.', - example: 368, - flat_name: 'network.bytes', - format: 'bytes', - level: 'core', - name: 'bytes', - normalize: [], - short: 'Total bytes transferred in both directions.', - type: 'long', - }, - 'network.community_id': { - dashed_name: 'network-community-id', - description: - 'A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows.\nLearn more at https://github.com/corelight/community-id-spec.', - example: '1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=', - flat_name: 'network.community_id', - ignore_above: 1024, - level: 'extended', - name: 'community_id', - normalize: [], - short: 'A hash of source and destination IPs and ports.', - type: 'keyword', - }, - 'network.direction': { - dashed_name: 'network-direction', - description: - 'Direction of the network traffic.\nWhen mapping events from a host-based monitoring context, populate this field from the host\'s point of view, using the values "ingress" or "egress".\nWhen mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of the network perimeter, using the values "inbound", "outbound", "internal" or "external".\nNote that "internal" is not crossing perimeter boundaries, and is meant to describe communication between two hosts within the perimeter. Note also that "external" is meant to describe traffic between two hosts that are external to the perimeter. This could for example be useful for ISPs or VPN service providers.', - example: 'inbound', - expected_values: [ - 'ingress', - 'egress', - 'inbound', - 'outbound', - 'internal', - 'external', - 'unknown', - ], - flat_name: 'network.direction', - ignore_above: 1024, - level: 'core', - name: 'direction', - normalize: [], - short: 'Direction of the network traffic.', - type: 'keyword', - }, - 'network.forwarded_ip': { - dashed_name: 'network-forwarded-ip', - description: 'Host IP address when the source IP address is the proxy.', - example: '192.1.1.2', - flat_name: 'network.forwarded_ip', - level: 'core', - name: 'forwarded_ip', - normalize: [], - short: 'Host IP address when the source IP address is the proxy.', - type: 'ip', - }, - 'network.iana_number': { - dashed_name: 'network-iana-number', - description: - 'IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number.', - example: 6, - flat_name: 'network.iana_number', - ignore_above: 1024, - level: 'extended', - name: 'iana_number', - normalize: [], - short: 'IANA Protocol Number.', - type: 'keyword', - }, - 'network.inner': { - dashed_name: 'network-inner', - description: - 'Network.inner fields are added in addition to network.vlan fields to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.)', - flat_name: 'network.inner', - level: 'extended', - name: 'inner', - normalize: [], - short: 'Inner VLAN tag information', - type: 'object', - }, - 'network.inner.vlan.id': { - dashed_name: 'network-inner-vlan-id', - description: 'VLAN ID as reported by the observer.', - example: 10, - flat_name: 'network.inner.vlan.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'vlan', - short: 'VLAN ID as reported by the observer.', - type: 'keyword', - }, - 'network.inner.vlan.name': { - dashed_name: 'network-inner-vlan-name', - description: 'Optional VLAN name as reported by the observer.', - example: 'outside', - flat_name: 'network.inner.vlan.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'vlan', - short: 'Optional VLAN name as reported by the observer.', - type: 'keyword', - }, - 'network.name': { - dashed_name: 'network-name', - description: 'Name given by operators to sections of their network.', - example: 'Guest Wifi', - flat_name: 'network.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'Name given by operators to sections of their network.', - type: 'keyword', - }, - 'network.packets': { - dashed_name: 'network-packets', - description: - 'Total packets transferred in both directions.\nIf `source.packets` and `destination.packets` are known, `network.packets` is their sum.', - example: 24, - flat_name: 'network.packets', - level: 'core', - name: 'packets', - normalize: [], - short: 'Total packets transferred in both directions.', - type: 'long', - }, - 'network.protocol': { - dashed_name: 'network-protocol', - description: - 'In the OSI Model this would be the Application Layer protocol. For example, `http`, `dns`, or `ssh`.\nThe field value must be normalized to lowercase for querying.', - example: 'http', - flat_name: 'network.protocol', - ignore_above: 1024, - level: 'core', - name: 'protocol', - normalize: [], - short: 'Application protocol name.', - type: 'keyword', - }, - 'network.transport': { - dashed_name: 'network-transport', - description: - 'Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.)\nThe field value must be normalized to lowercase for querying.', - example: 'tcp', - flat_name: 'network.transport', - ignore_above: 1024, - level: 'core', - name: 'transport', - normalize: [], - short: 'Protocol Name corresponding to the field `iana_number`.', - type: 'keyword', - }, - 'network.type': { - dashed_name: 'network-type', - description: - 'In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc\nThe field value must be normalized to lowercase for querying.', - example: 'ipv4', - flat_name: 'network.type', - ignore_above: 1024, - level: 'core', - name: 'type', - normalize: [], - short: 'In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc', - type: 'keyword', - }, - 'network.vlan.id': { - dashed_name: 'network-vlan-id', - description: 'VLAN ID as reported by the observer.', - example: 10, - flat_name: 'network.vlan.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'vlan', - short: 'VLAN ID as reported by the observer.', - type: 'keyword', - }, - 'network.vlan.name': { - dashed_name: 'network-vlan-name', - description: 'Optional VLAN name as reported by the observer.', - example: 'outside', - flat_name: 'network.vlan.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'vlan', - short: 'Optional VLAN name as reported by the observer.', - type: 'keyword', - }, - }, - group: 2, - name: 'network', - nestings: ['network.inner.vlan', 'network.vlan'], - prefix: 'network.', - reused_here: [ - { - full: 'network.vlan', - schema_name: 'vlan', - short: 'Fields to describe observed VLAN information.', - }, - { - full: 'network.inner.vlan', - schema_name: 'vlan', - short: 'Fields to describe observed VLAN information.', - }, - ], - short: 'Fields describing the communication path over which the event happened.', - title: 'Network', - type: 'group', - }, - observer: { - description: - 'An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics.\nThis could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, web proxies, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS.', - fields: { - 'observer.egress': { - dashed_name: 'observer-egress', - description: - 'Observer.egress holds information like interface number and name, vlan, and zone information to classify egress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic.', - flat_name: 'observer.egress', - level: 'extended', - name: 'egress', - normalize: [], - short: 'Object field for egress information', - type: 'object', - }, - 'observer.egress.interface.alias': { - dashed_name: 'observer-egress-interface-alias', - description: - 'Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming.', - example: 'outside', - flat_name: 'observer.egress.interface.alias', - ignore_above: 1024, - level: 'extended', - name: 'alias', - normalize: [], - original_fieldset: 'interface', - short: 'Interface alias', - type: 'keyword', - }, - 'observer.egress.interface.id': { - dashed_name: 'observer-egress-interface-id', - description: 'Interface ID as reported by an observer (typically SNMP interface ID).', - example: 10, - flat_name: 'observer.egress.interface.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'interface', - short: 'Interface ID', - type: 'keyword', - }, - 'observer.egress.interface.name': { - dashed_name: 'observer-egress-interface-name', - description: 'Interface name as reported by the system.', - example: 'eth0', - flat_name: 'observer.egress.interface.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'interface', - short: 'Interface name', - type: 'keyword', - }, - 'observer.egress.vlan.id': { - dashed_name: 'observer-egress-vlan-id', - description: 'VLAN ID as reported by the observer.', - example: 10, - flat_name: 'observer.egress.vlan.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'vlan', - short: 'VLAN ID as reported by the observer.', - type: 'keyword', - }, - 'observer.egress.vlan.name': { - dashed_name: 'observer-egress-vlan-name', - description: 'Optional VLAN name as reported by the observer.', - example: 'outside', - flat_name: 'observer.egress.vlan.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'vlan', - short: 'Optional VLAN name as reported by the observer.', - type: 'keyword', - }, - 'observer.egress.zone': { - dashed_name: 'observer-egress-zone', - description: - 'Network zone of outbound traffic as reported by the observer to categorize the destination area of egress traffic, e.g. Internal, External, DMZ, HR, Legal, etc.', - example: 'Public_Internet', - flat_name: 'observer.egress.zone', - ignore_above: 1024, - level: 'extended', - name: 'egress.zone', - normalize: [], - short: 'Observer Egress zone', - type: 'keyword', - }, - 'observer.geo.city_name': { - dashed_name: 'observer-geo-city-name', - description: 'City name.', - example: 'Montreal', - flat_name: 'observer.geo.city_name', - ignore_above: 1024, - level: 'core', - name: 'city_name', - normalize: [], - original_fieldset: 'geo', - short: 'City name.', - type: 'keyword', - }, - 'observer.geo.continent_code': { - dashed_name: 'observer-geo-continent-code', - description: "Two-letter code representing continent's name.", - example: 'NA', - flat_name: 'observer.geo.continent_code', - ignore_above: 1024, - level: 'core', - name: 'continent_code', - normalize: [], - original_fieldset: 'geo', - short: 'Continent code.', - type: 'keyword', - }, - 'observer.geo.continent_name': { - dashed_name: 'observer-geo-continent-name', - description: 'Name of the continent.', - example: 'North America', - flat_name: 'observer.geo.continent_name', - ignore_above: 1024, - level: 'core', - name: 'continent_name', - normalize: [], - original_fieldset: 'geo', - short: 'Name of the continent.', - type: 'keyword', - }, - 'observer.geo.country_iso_code': { - dashed_name: 'observer-geo-country-iso-code', - description: 'Country ISO code.', - example: 'CA', - flat_name: 'observer.geo.country_iso_code', - ignore_above: 1024, - level: 'core', - name: 'country_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Country ISO code.', - type: 'keyword', - }, - 'observer.geo.country_name': { - dashed_name: 'observer-geo-country-name', - description: 'Country name.', - example: 'Canada', - flat_name: 'observer.geo.country_name', - ignore_above: 1024, - level: 'core', - name: 'country_name', - normalize: [], - original_fieldset: 'geo', - short: 'Country name.', - type: 'keyword', - }, - 'observer.geo.location': { - dashed_name: 'observer-geo-location', - description: 'Longitude and latitude.', - example: '{ "lon": -73.614830, "lat": 45.505918 }', - flat_name: 'observer.geo.location', - level: 'core', - name: 'location', - normalize: [], - original_fieldset: 'geo', - short: 'Longitude and latitude.', - type: 'geo_point', - }, - 'observer.geo.name': { - dashed_name: 'observer-geo-name', - description: - 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', - example: 'boston-dc', - flat_name: 'observer.geo.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'geo', - short: 'User-defined description of a location.', - type: 'keyword', - }, - 'observer.geo.postal_code': { - dashed_name: 'observer-geo-postal-code', - description: - 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', - example: 94040, - flat_name: 'observer.geo.postal_code', - ignore_above: 1024, - level: 'core', - name: 'postal_code', - normalize: [], - original_fieldset: 'geo', - short: 'Postal code.', - type: 'keyword', - }, - 'observer.geo.region_iso_code': { - dashed_name: 'observer-geo-region-iso-code', - description: 'Region ISO code.', - example: 'CA-QC', - flat_name: 'observer.geo.region_iso_code', - ignore_above: 1024, - level: 'core', - name: 'region_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Region ISO code.', - type: 'keyword', - }, - 'observer.geo.region_name': { - dashed_name: 'observer-geo-region-name', - description: 'Region name.', - example: 'Quebec', - flat_name: 'observer.geo.region_name', - ignore_above: 1024, - level: 'core', - name: 'region_name', - normalize: [], - original_fieldset: 'geo', - short: 'Region name.', - type: 'keyword', - }, - 'observer.geo.timezone': { - dashed_name: 'observer-geo-timezone', - description: 'The time zone of the location, such as IANA time zone name.', - example: 'America/Argentina/Buenos_Aires', - flat_name: 'observer.geo.timezone', - ignore_above: 1024, - level: 'core', - name: 'timezone', - normalize: [], - original_fieldset: 'geo', - short: 'Time zone.', - type: 'keyword', - }, - 'observer.hostname': { - dashed_name: 'observer-hostname', - description: 'Hostname of the observer.', - flat_name: 'observer.hostname', - ignore_above: 1024, - level: 'core', - name: 'hostname', - normalize: [], - short: 'Hostname of the observer.', - type: 'keyword', - }, - 'observer.ingress': { - dashed_name: 'observer-ingress', - description: - 'Observer.ingress holds information like interface number and name, vlan, and zone information to classify ingress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic.', - flat_name: 'observer.ingress', - level: 'extended', - name: 'ingress', - normalize: [], - short: 'Object field for ingress information', - type: 'object', - }, - 'observer.ingress.interface.alias': { - dashed_name: 'observer-ingress-interface-alias', - description: - 'Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming.', - example: 'outside', - flat_name: 'observer.ingress.interface.alias', - ignore_above: 1024, - level: 'extended', - name: 'alias', - normalize: [], - original_fieldset: 'interface', - short: 'Interface alias', - type: 'keyword', - }, - 'observer.ingress.interface.id': { - dashed_name: 'observer-ingress-interface-id', - description: 'Interface ID as reported by an observer (typically SNMP interface ID).', - example: 10, - flat_name: 'observer.ingress.interface.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'interface', - short: 'Interface ID', - type: 'keyword', - }, - 'observer.ingress.interface.name': { - dashed_name: 'observer-ingress-interface-name', - description: 'Interface name as reported by the system.', - example: 'eth0', - flat_name: 'observer.ingress.interface.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'interface', - short: 'Interface name', - type: 'keyword', - }, - 'observer.ingress.vlan.id': { - dashed_name: 'observer-ingress-vlan-id', - description: 'VLAN ID as reported by the observer.', - example: 10, - flat_name: 'observer.ingress.vlan.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'vlan', - short: 'VLAN ID as reported by the observer.', - type: 'keyword', - }, - 'observer.ingress.vlan.name': { - dashed_name: 'observer-ingress-vlan-name', - description: 'Optional VLAN name as reported by the observer.', - example: 'outside', - flat_name: 'observer.ingress.vlan.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'vlan', - short: 'Optional VLAN name as reported by the observer.', - type: 'keyword', - }, - 'observer.ingress.zone': { - dashed_name: 'observer-ingress-zone', - description: - 'Network zone of incoming traffic as reported by the observer to categorize the source area of ingress traffic. e.g. internal, External, DMZ, HR, Legal, etc.', - example: 'DMZ', - flat_name: 'observer.ingress.zone', - ignore_above: 1024, - level: 'extended', - name: 'ingress.zone', - normalize: [], - short: 'Observer ingress zone', - type: 'keyword', - }, - 'observer.ip': { - dashed_name: 'observer-ip', - description: 'IP addresses of the observer.', - flat_name: 'observer.ip', - level: 'core', - name: 'ip', - normalize: ['array'], - short: 'IP addresses of the observer.', - type: 'ip', - }, - 'observer.mac': { - dashed_name: 'observer-mac', - description: - 'MAC addresses of the observer.\nThe notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.', - example: '["00-00-5E-00-53-23", "00-00-5E-00-53-24"]', - flat_name: 'observer.mac', - ignore_above: 1024, - level: 'core', - name: 'mac', - normalize: ['array'], - pattern: '^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$', - short: 'MAC addresses of the observer.', - type: 'keyword', - }, - 'observer.name': { - dashed_name: 'observer-name', - description: - 'Custom name of the observer.\nThis is a name that can be given to an observer. This can be helpful for example if multiple firewalls of the same model are used in an organization.\nIf no custom name is needed, the field can be left empty.', - example: '1_proxySG', - flat_name: 'observer.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'Custom name of the observer.', - type: 'keyword', - }, - 'observer.os.family': { - dashed_name: 'observer-os-family', - description: 'OS family (such as redhat, debian, freebsd, windows).', - example: 'debian', - flat_name: 'observer.os.family', - ignore_above: 1024, - level: 'extended', - name: 'family', - normalize: [], - original_fieldset: 'os', - short: 'OS family (such as redhat, debian, freebsd, windows).', - type: 'keyword', - }, - 'observer.os.full': { - dashed_name: 'observer-os-full', - description: 'Operating system name, including the version or code name.', - example: 'Mac OS Mojave', - flat_name: 'observer.os.full', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'observer.os.full.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full', - normalize: [], - original_fieldset: 'os', - short: 'Operating system name, including the version or code name.', - type: 'keyword', - }, - 'observer.os.kernel': { - dashed_name: 'observer-os-kernel', - description: 'Operating system kernel version as a raw string.', - example: '4.4.0-112-generic', - flat_name: 'observer.os.kernel', - ignore_above: 1024, - level: 'extended', - name: 'kernel', - normalize: [], - original_fieldset: 'os', - short: 'Operating system kernel version as a raw string.', - type: 'keyword', - }, - 'observer.os.name': { - dashed_name: 'observer-os-name', - description: 'Operating system name, without the version.', - example: 'Mac OS X', - flat_name: 'observer.os.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'observer.os.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'os', - short: 'Operating system name, without the version.', - type: 'keyword', - }, - 'observer.os.platform': { - dashed_name: 'observer-os-platform', - description: 'Operating system platform (such centos, ubuntu, windows).', - example: 'darwin', - flat_name: 'observer.os.platform', - ignore_above: 1024, - level: 'extended', - name: 'platform', - normalize: [], - original_fieldset: 'os', - short: 'Operating system platform (such centos, ubuntu, windows).', - type: 'keyword', - }, - 'observer.os.type': { - dashed_name: 'observer-os-type', - description: - "Use the `os.type` field to categorize the operating system into one of the broad commercial families.\nIf the OS you're dealing with is not listed as an expected value, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition.", - example: 'macos', - expected_values: ['linux', 'macos', 'unix', 'windows', 'ios', 'android'], - flat_name: 'observer.os.type', - ignore_above: 1024, - level: 'extended', - name: 'type', - normalize: [], - original_fieldset: 'os', - short: 'Which commercial OS family (one of: linux, macos, unix, windows, ios or android).', - type: 'keyword', - }, - 'observer.os.version': { - dashed_name: 'observer-os-version', - description: 'Operating system version as a raw string.', - example: '10.14.1', - flat_name: 'observer.os.version', - ignore_above: 1024, - level: 'extended', - name: 'version', - normalize: [], - original_fieldset: 'os', - short: 'Operating system version as a raw string.', - type: 'keyword', - }, - 'observer.product': { - dashed_name: 'observer-product', - description: 'The product name of the observer.', - example: 's200', - flat_name: 'observer.product', - ignore_above: 1024, - level: 'extended', - name: 'product', - normalize: [], - short: 'The product name of the observer.', - type: 'keyword', - }, - 'observer.serial_number': { - dashed_name: 'observer-serial-number', - description: 'Observer serial number.', - flat_name: 'observer.serial_number', - ignore_above: 1024, - level: 'extended', - name: 'serial_number', - normalize: [], - short: 'Observer serial number.', - type: 'keyword', - }, - 'observer.type': { - dashed_name: 'observer-type', - description: - 'The type of the observer the data is coming from.\nThere is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`.', - example: 'firewall', - flat_name: 'observer.type', - ignore_above: 1024, - level: 'core', - name: 'type', - normalize: [], - short: 'The type of the observer the data is coming from.', - type: 'keyword', - }, - 'observer.vendor': { - dashed_name: 'observer-vendor', - description: 'Vendor name of the observer.', - example: 'Symantec', - flat_name: 'observer.vendor', - ignore_above: 1024, - level: 'core', - name: 'vendor', - normalize: [], - short: 'Vendor name of the observer.', - type: 'keyword', - }, - 'observer.version': { - dashed_name: 'observer-version', - description: 'Observer version.', - flat_name: 'observer.version', - ignore_above: 1024, - level: 'core', - name: 'version', - normalize: [], - short: 'Observer version.', - type: 'keyword', - }, - }, - group: 2, - name: 'observer', - nestings: [ - 'observer.egress.interface', - 'observer.egress.vlan', - 'observer.geo', - 'observer.ingress.interface', - 'observer.ingress.vlan', - 'observer.os', - ], - prefix: 'observer.', - reused_here: [ - { - full: 'observer.geo', - schema_name: 'geo', - short: 'Fields describing a location.', - }, - { - full: 'observer.ingress.interface', - schema_name: 'interface', - short: 'Fields to describe observer interface information.', - }, - { - full: 'observer.egress.interface', - schema_name: 'interface', - short: 'Fields to describe observer interface information.', - }, - { - full: 'observer.os', - schema_name: 'os', - short: 'OS fields contain information about the operating system.', - }, - { - full: 'observer.ingress.vlan', - schema_name: 'vlan', - short: 'Fields to describe observed VLAN information.', - }, - { - full: 'observer.egress.vlan', - schema_name: 'vlan', - short: 'Fields to describe observed VLAN information.', - }, - ], - short: 'Fields describing an entity observing the event from outside the host.', - title: 'Observer', - type: 'group', - }, - orchestrator: { - description: - 'Fields that describe the resources which container orchestrators manage or act upon.', - fields: { - 'orchestrator.api_version': { - dashed_name: 'orchestrator-api-version', - description: 'API version being used to carry out the action', - example: 'v1beta1', - flat_name: 'orchestrator.api_version', - ignore_above: 1024, - level: 'extended', - name: 'api_version', - normalize: [], - short: 'API version being used to carry out the action', - type: 'keyword', - }, - 'orchestrator.cluster.id': { - dashed_name: 'orchestrator-cluster-id', - description: 'Unique ID of the cluster.', - flat_name: 'orchestrator.cluster.id', - ignore_above: 1024, - level: 'extended', - name: 'cluster.id', - normalize: [], - short: 'Unique ID of the cluster.', - type: 'keyword', - }, - 'orchestrator.cluster.name': { - dashed_name: 'orchestrator-cluster-name', - description: 'Name of the cluster.', - flat_name: 'orchestrator.cluster.name', - ignore_above: 1024, - level: 'extended', - name: 'cluster.name', - normalize: [], - short: 'Name of the cluster.', - type: 'keyword', - }, - 'orchestrator.cluster.url': { - dashed_name: 'orchestrator-cluster-url', - description: 'URL of the API used to manage the cluster.', - flat_name: 'orchestrator.cluster.url', - ignore_above: 1024, - level: 'extended', - name: 'cluster.url', - normalize: [], - short: 'URL of the API used to manage the cluster.', - type: 'keyword', - }, - 'orchestrator.cluster.version': { - dashed_name: 'orchestrator-cluster-version', - description: 'The version of the cluster.', - flat_name: 'orchestrator.cluster.version', - ignore_above: 1024, - level: 'extended', - name: 'cluster.version', - normalize: [], - short: 'The version of the cluster.', - type: 'keyword', - }, - 'orchestrator.namespace': { - dashed_name: 'orchestrator-namespace', - description: 'Namespace in which the action is taking place.', - example: 'kube-system', - flat_name: 'orchestrator.namespace', - ignore_above: 1024, - level: 'extended', - name: 'namespace', - normalize: [], - short: 'Namespace in which the action is taking place.', - type: 'keyword', - }, - 'orchestrator.organization': { - dashed_name: 'orchestrator-organization', - description: 'Organization affected by the event (for multi-tenant orchestrator setups).', - example: 'elastic', - flat_name: 'orchestrator.organization', - ignore_above: 1024, - level: 'extended', - name: 'organization', - normalize: [], - short: 'Organization affected by the event (for multi-tenant orchestrator setups).', - type: 'keyword', - }, - 'orchestrator.resource.id': { - dashed_name: 'orchestrator-resource-id', - description: 'Unique ID of the resource being acted upon.', - flat_name: 'orchestrator.resource.id', - ignore_above: 1024, - level: 'extended', - name: 'resource.id', - normalize: [], - short: 'Unique ID of the resource being acted upon.', - type: 'keyword', - }, - 'orchestrator.resource.ip': { - dashed_name: 'orchestrator-resource-ip', - description: - 'IP address assigned to the resource associated with the event being observed. In the case of a Kubernetes Pod, this array would contain only one element: the IP of the Pod (as opposed to the Node on which the Pod is running).', - flat_name: 'orchestrator.resource.ip', - level: 'extended', - name: 'resource.ip', - normalize: ['array'], - short: 'IP address assigned to the resource associated with the event being observed.', - type: 'ip', - }, - 'orchestrator.resource.name': { - dashed_name: 'orchestrator-resource-name', - description: 'Name of the resource being acted upon.', - example: 'test-pod-cdcws', - flat_name: 'orchestrator.resource.name', - ignore_above: 1024, - level: 'extended', - name: 'resource.name', - normalize: [], - short: 'Name of the resource being acted upon.', - type: 'keyword', - }, - 'orchestrator.resource.parent.type': { - dashed_name: 'orchestrator-resource-parent-type', - description: - 'Type or kind of the parent resource associated with the event being observed. In Kubernetes, this will be the name of a built-in workload resource (e.g., Deployment, StatefulSet, DaemonSet).', - example: 'DaemonSet', - flat_name: 'orchestrator.resource.parent.type', - ignore_above: 1024, - level: 'extended', - name: 'resource.parent.type', - normalize: [], - short: 'Type or kind of the parent resource associated with the event being observed.', - type: 'keyword', - }, - 'orchestrator.resource.type': { - dashed_name: 'orchestrator-resource-type', - description: 'Type of resource being acted upon.', - example: 'service', - flat_name: 'orchestrator.resource.type', - ignore_above: 1024, - level: 'extended', - name: 'resource.type', - normalize: [], - short: 'Type of resource being acted upon.', - type: 'keyword', - }, - 'orchestrator.type': { - dashed_name: 'orchestrator-type', - description: 'Orchestrator cluster type (e.g. kubernetes, nomad or cloudfoundry).', - example: 'kubernetes', - flat_name: 'orchestrator.type', - ignore_above: 1024, - level: 'extended', - name: 'type', - normalize: [], - short: 'Orchestrator cluster type (e.g. kubernetes, nomad or cloudfoundry).', - type: 'keyword', - }, - }, - group: 2, - name: 'orchestrator', - prefix: 'orchestrator.', - short: 'Fields relevant to container orchestrators.', - title: 'Orchestrator', - type: 'group', - }, - organization: { - description: - 'The organization fields enrich data with information about the company or entity the data is associated with.\nThese fields help you arrange or filter data stored in an index by one or multiple organizations.', - fields: { - 'organization.id': { - dashed_name: 'organization-id', - description: 'Unique identifier for the organization.', - flat_name: 'organization.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - short: 'Unique identifier for the organization.', - type: 'keyword', - }, - 'organization.name': { - dashed_name: 'organization-name', - description: 'Organization name.', - flat_name: 'organization.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'organization.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - short: 'Organization name.', - type: 'keyword', - }, - }, - group: 2, - name: 'organization', - prefix: 'organization.', - short: 'Fields describing the organization or company the event is associated with.', - title: 'Organization', - type: 'group', - }, - os: { - description: 'The OS fields contain information about the operating system.', - fields: { - 'os.family': { - dashed_name: 'os-family', - description: 'OS family (such as redhat, debian, freebsd, windows).', - example: 'debian', - flat_name: 'os.family', - ignore_above: 1024, - level: 'extended', - name: 'family', - normalize: [], - short: 'OS family (such as redhat, debian, freebsd, windows).', - type: 'keyword', - }, - 'os.full': { - dashed_name: 'os-full', - description: 'Operating system name, including the version or code name.', - example: 'Mac OS Mojave', - flat_name: 'os.full', - ignore_above: 1024, - level: 'extended', - multi_fields: [{ flat_name: 'os.full.text', name: 'text', type: 'match_only_text' }], - name: 'full', - normalize: [], - short: 'Operating system name, including the version or code name.', - type: 'keyword', - }, - 'os.kernel': { - dashed_name: 'os-kernel', - description: 'Operating system kernel version as a raw string.', - example: '4.4.0-112-generic', - flat_name: 'os.kernel', - ignore_above: 1024, - level: 'extended', - name: 'kernel', - normalize: [], - short: 'Operating system kernel version as a raw string.', - type: 'keyword', - }, - 'os.name': { - dashed_name: 'os-name', - description: 'Operating system name, without the version.', - example: 'Mac OS X', - flat_name: 'os.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [{ flat_name: 'os.name.text', name: 'text', type: 'match_only_text' }], - name: 'name', - normalize: [], - short: 'Operating system name, without the version.', - type: 'keyword', - }, - 'os.platform': { - dashed_name: 'os-platform', - description: 'Operating system platform (such centos, ubuntu, windows).', - example: 'darwin', - flat_name: 'os.platform', - ignore_above: 1024, - level: 'extended', - name: 'platform', - normalize: [], - short: 'Operating system platform (such centos, ubuntu, windows).', - type: 'keyword', - }, - 'os.type': { - dashed_name: 'os-type', - description: - "Use the `os.type` field to categorize the operating system into one of the broad commercial families.\nIf the OS you're dealing with is not listed as an expected value, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition.", - example: 'macos', - expected_values: ['linux', 'macos', 'unix', 'windows', 'ios', 'android'], - flat_name: 'os.type', - ignore_above: 1024, - level: 'extended', - name: 'type', - normalize: [], - short: 'Which commercial OS family (one of: linux, macos, unix, windows, ios or android).', - type: 'keyword', - }, - 'os.version': { - dashed_name: 'os-version', - description: 'Operating system version as a raw string.', - example: '10.14.1', - flat_name: 'os.version', - ignore_above: 1024, - level: 'extended', - name: 'version', - normalize: [], - short: 'Operating system version as a raw string.', - type: 'keyword', - }, - }, - group: 2, - name: 'os', - prefix: 'os.', - reusable: { - expected: [ - { as: 'os', at: 'observer', full: 'observer.os' }, - { as: 'os', at: 'host', full: 'host.os' }, - { as: 'os', at: 'user_agent', full: 'user_agent.os' }, - ], - top_level: false, - }, - short: 'OS fields contain information about the operating system.', - title: 'Operating System', - type: 'group', - }, - package: { - description: - 'These fields contain information about an installed software package. It contains general information about a package, such as name, version or size. It also contains installation details, such as time or location.', - fields: { - 'package.architecture': { - dashed_name: 'package-architecture', - description: 'Package architecture.', - example: 'x86_64', - flat_name: 'package.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - short: 'Package architecture.', - type: 'keyword', - }, - 'package.build_version': { - dashed_name: 'package-build-version', - description: - 'Additional information about the build version of the installed package.\nFor example use the commit SHA of a non-released package.', - example: '36f4f7e89dd61b0988b12ee000b98966867710cd', - flat_name: 'package.build_version', - ignore_above: 1024, - level: 'extended', - name: 'build_version', - normalize: [], - short: 'Build version information', - type: 'keyword', - }, - 'package.checksum': { - dashed_name: 'package-checksum', - description: 'Checksum of the installed package for verification.', - example: '68b329da9893e34099c7d8ad5cb9c940', - flat_name: 'package.checksum', - ignore_above: 1024, - level: 'extended', - name: 'checksum', - normalize: [], - short: 'Checksum of the installed package for verification.', - type: 'keyword', - }, - 'package.description': { - dashed_name: 'package-description', - description: 'Description of the package.', - example: 'Open source programming language to build simple/reliable/efficient software.', - flat_name: 'package.description', - ignore_above: 1024, - level: 'extended', - name: 'description', - normalize: [], - short: 'Description of the package.', - type: 'keyword', - }, - 'package.install_scope': { - dashed_name: 'package-install-scope', - description: 'Indicating how the package was installed, e.g. user-local, global.', - example: 'global', - flat_name: 'package.install_scope', - ignore_above: 1024, - level: 'extended', - name: 'install_scope', - normalize: [], - short: 'Indicating how the package was installed, e.g. user-local, global.', - type: 'keyword', - }, - 'package.installed': { - dashed_name: 'package-installed', - description: 'Time when package was installed.', - flat_name: 'package.installed', - level: 'extended', - name: 'installed', - normalize: [], - short: 'Time when package was installed.', - type: 'date', - }, - 'package.license': { - dashed_name: 'package-license', - description: - 'License under which the package was released.\nUse a short name, e.g. the license identifier from SPDX License List where possible (https://spdx.org/licenses/).', - example: 'Apache License 2.0', - flat_name: 'package.license', - ignore_above: 1024, - level: 'extended', - name: 'license', - normalize: [], - short: 'Package license', - type: 'keyword', - }, - 'package.name': { - dashed_name: 'package-name', - description: 'Package name', - example: 'go', - flat_name: 'package.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'Package name', - type: 'keyword', - }, - 'package.path': { - dashed_name: 'package-path', - description: 'Path where the package is installed.', - example: '/usr/local/Cellar/go/1.12.9/', - flat_name: 'package.path', - ignore_above: 1024, - level: 'extended', - name: 'path', - normalize: [], - short: 'Path where the package is installed.', - type: 'keyword', - }, - 'package.reference': { - dashed_name: 'package-reference', - description: 'Home page or reference URL of the software in this package, if available.', - example: 'https://golang.org', - flat_name: 'package.reference', - ignore_above: 1024, - level: 'extended', - name: 'reference', - normalize: [], - short: 'Package home page or reference URL', - type: 'keyword', - }, - 'package.size': { - dashed_name: 'package-size', - description: 'Package size in bytes.', - example: 62231, - flat_name: 'package.size', - format: 'string', - level: 'extended', - name: 'size', - normalize: [], - short: 'Package size in bytes.', - type: 'long', - }, - 'package.type': { - dashed_name: 'package-type', - description: - 'Type of package.\nThis should contain the package file type, rather than the package manager name. Examples: rpm, dpkg, brew, npm, gem, nupkg, jar.', - example: 'rpm', - flat_name: 'package.type', - ignore_above: 1024, - level: 'extended', - name: 'type', - normalize: [], - short: 'Package type', - type: 'keyword', - }, - 'package.version': { - dashed_name: 'package-version', - description: 'Package version', - example: '1.12.9', - flat_name: 'package.version', - ignore_above: 1024, - level: 'extended', - name: 'version', - normalize: [], - short: 'Package version', - type: 'keyword', - }, - }, - group: 2, - name: 'package', - prefix: 'package.', - short: 'These fields contain information about an installed software package.', - title: 'Package', - type: 'group', - }, - pe: { - description: 'These fields contain Windows Portable Executable (PE) metadata.', - fields: { - 'pe.architecture': { - dashed_name: 'pe-architecture', - description: 'CPU architecture target for the file.', - example: 'x64', - flat_name: 'pe.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - short: 'CPU architecture target for the file.', - type: 'keyword', - }, - 'pe.company': { - dashed_name: 'pe-company', - description: 'Internal company name of the file, provided at compile-time.', - example: 'Microsoft Corporation', - flat_name: 'pe.company', - ignore_above: 1024, - level: 'extended', - name: 'company', - normalize: [], - short: 'Internal company name of the file, provided at compile-time.', - type: 'keyword', - }, - 'pe.description': { - dashed_name: 'pe-description', - description: 'Internal description of the file, provided at compile-time.', - example: 'Paint', - flat_name: 'pe.description', - ignore_above: 1024, - level: 'extended', - name: 'description', - normalize: [], - short: 'Internal description of the file, provided at compile-time.', - type: 'keyword', - }, - 'pe.file_version': { - dashed_name: 'pe-file-version', - description: 'Internal version of the file, provided at compile-time.', - example: '6.3.9600.17415', - flat_name: 'pe.file_version', - ignore_above: 1024, - level: 'extended', - name: 'file_version', - normalize: [], - short: 'Process name.', - type: 'keyword', - }, - 'pe.imphash': { - dashed_name: 'pe-imphash', - description: - 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', - example: '0c6803c4e922103c4dca5963aad36ddf', - flat_name: 'pe.imphash', - ignore_above: 1024, - level: 'extended', - name: 'imphash', - normalize: [], - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'pe.original_file_name': { - dashed_name: 'pe-original-file-name', - description: 'Internal name of the file, provided at compile-time.', - example: 'MSPAINT.EXE', - flat_name: 'pe.original_file_name', - ignore_above: 1024, - level: 'extended', - name: 'original_file_name', - normalize: [], - short: 'Internal name of the file, provided at compile-time.', - type: 'keyword', - }, - 'pe.pehash': { - dashed_name: 'pe-pehash', - description: - 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', - example: '73ff189b63cd6be375a7ff25179a38d347651975', - flat_name: 'pe.pehash', - ignore_above: 1024, - level: 'extended', - name: 'pehash', - normalize: [], - short: 'A hash of the PE header and data from one or more PE sections.', - type: 'keyword', - }, - 'pe.product': { - dashed_name: 'pe-product', - description: 'Internal product name of the file, provided at compile-time.', - example: 'Microsoft® Windows® Operating System', - flat_name: 'pe.product', - ignore_above: 1024, - level: 'extended', - name: 'product', - normalize: [], - short: 'Internal product name of the file, provided at compile-time.', - type: 'keyword', - }, - }, - group: 2, - name: 'pe', - prefix: 'pe.', - reusable: { - expected: [ - { as: 'pe', at: 'file', full: 'file.pe' }, - { as: 'pe', at: 'dll', full: 'dll.pe' }, - { as: 'pe', at: 'process', full: 'process.pe' }, - ], - top_level: false, - }, - short: 'These fields contain Windows Portable Executable (PE) metadata.', - title: 'PE Header', - type: 'group', - }, - process: { - description: - 'These fields contain information about a process.\nThese fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation.', - fields: { - 'process.args': { - dashed_name: 'process-args', - description: - 'Array of process arguments, starting with the absolute path to the executable.\nMay be filtered to protect sensitive information.', - example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]', - flat_name: 'process.args', - ignore_above: 1024, - level: 'extended', - name: 'args', - normalize: ['array'], - short: 'Array of process arguments.', - type: 'keyword', - }, - 'process.args_count': { - dashed_name: 'process-args-count', - description: - 'Length of the process.args array.\nThis field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.', - example: 4, - flat_name: 'process.args_count', - level: 'extended', - name: 'args_count', - normalize: [], - short: 'Length of the process.args array.', - type: 'long', - }, - 'process.code_signature.digest_algorithm': { - dashed_name: 'process-code-signature-digest-algorithm', - description: - 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', - example: 'sha256', - flat_name: 'process.code_signature.digest_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'digest_algorithm', - normalize: [], - original_fieldset: 'code_signature', - short: 'Hashing algorithm used to sign the process.', - type: 'keyword', - }, - 'process.code_signature.exists': { - dashed_name: 'process-code-signature-exists', - description: 'Boolean to capture if a signature is present.', - example: 'true', - flat_name: 'process.code_signature.exists', - level: 'core', - name: 'exists', - normalize: [], - original_fieldset: 'code_signature', - short: 'Boolean to capture if a signature is present.', - type: 'boolean', - }, - 'process.code_signature.signing_id': { - dashed_name: 'process-code-signature-signing-id', - description: - 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', - example: 'com.apple.xpc.proxy', - flat_name: 'process.code_signature.signing_id', - ignore_above: 1024, - level: 'extended', - name: 'signing_id', - normalize: [], - original_fieldset: 'code_signature', - short: 'The identifier used to sign the process.', - type: 'keyword', - }, - 'process.code_signature.status': { - dashed_name: 'process-code-signature-status', - description: - 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', - example: 'ERROR_UNTRUSTED_ROOT', - flat_name: 'process.code_signature.status', - ignore_above: 1024, - level: 'extended', - name: 'status', - normalize: [], - original_fieldset: 'code_signature', - short: 'Additional information about the certificate status.', - type: 'keyword', - }, - 'process.code_signature.subject_name': { - dashed_name: 'process-code-signature-subject-name', - description: 'Subject name of the code signer', - example: 'Microsoft Corporation', - flat_name: 'process.code_signature.subject_name', - ignore_above: 1024, - level: 'core', - name: 'subject_name', - normalize: [], - original_fieldset: 'code_signature', - short: 'Subject name of the code signer', - type: 'keyword', - }, - 'process.code_signature.team_id': { - dashed_name: 'process-code-signature-team-id', - description: - 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', - example: 'EQHXZ8M8AV', - flat_name: 'process.code_signature.team_id', - ignore_above: 1024, - level: 'extended', - name: 'team_id', - normalize: [], - original_fieldset: 'code_signature', - short: 'The team identifier used to sign the process.', - type: 'keyword', - }, - 'process.code_signature.timestamp': { - dashed_name: 'process-code-signature-timestamp', - description: 'Date and time when the code signature was generated and signed.', - example: '2021-01-01T12:10:30Z', - flat_name: 'process.code_signature.timestamp', - level: 'extended', - name: 'timestamp', - normalize: [], - original_fieldset: 'code_signature', - short: 'When the signature was generated and signed.', - type: 'date', - }, - 'process.code_signature.trusted': { - dashed_name: 'process-code-signature-trusted', - description: - 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', - example: 'true', - flat_name: 'process.code_signature.trusted', - level: 'extended', - name: 'trusted', - normalize: [], - original_fieldset: 'code_signature', - short: 'Stores the trust status of the certificate chain.', - type: 'boolean', - }, - 'process.code_signature.valid': { - dashed_name: 'process-code-signature-valid', - description: - 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', - example: 'true', - flat_name: 'process.code_signature.valid', - level: 'extended', - name: 'valid', - normalize: [], - original_fieldset: 'code_signature', - short: - 'Boolean to capture if the digital signature is verified against the binary content.', - type: 'boolean', - }, - 'process.command_line': { - dashed_name: 'process-command-line', - description: - 'Full command line that started the process, including the absolute path to the executable, and all arguments.\nSome arguments may be filtered to protect sensitive information.', - example: '/usr/bin/ssh -l user 10.0.0.16', - flat_name: 'process.command_line', - level: 'extended', - multi_fields: [ - { - flat_name: 'process.command_line.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'command_line', - normalize: [], - short: 'Full command line that started the process.', - type: 'wildcard', - }, - 'process.elf.architecture': { - dashed_name: 'process-elf-architecture', - description: 'Machine architecture of the ELF file.', - example: 'x86-64', - flat_name: 'process.elf.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - original_fieldset: 'elf', - short: 'Machine architecture of the ELF file.', - type: 'keyword', - }, - 'process.elf.byte_order': { - dashed_name: 'process-elf-byte-order', - description: 'Byte sequence of ELF file.', - example: 'Little Endian', - flat_name: 'process.elf.byte_order', - ignore_above: 1024, - level: 'extended', - name: 'byte_order', - normalize: [], - original_fieldset: 'elf', - short: 'Byte sequence of ELF file.', - type: 'keyword', - }, - 'process.elf.cpu_type': { - dashed_name: 'process-elf-cpu-type', - description: 'CPU type of the ELF file.', - example: 'Intel', - flat_name: 'process.elf.cpu_type', - ignore_above: 1024, - level: 'extended', - name: 'cpu_type', - normalize: [], - original_fieldset: 'elf', - short: 'CPU type of the ELF file.', - type: 'keyword', - }, - 'process.elf.creation_date': { - dashed_name: 'process-elf-creation-date', - description: - "Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.", - flat_name: 'process.elf.creation_date', - level: 'extended', - name: 'creation_date', - normalize: [], - original_fieldset: 'elf', - short: 'Build or compile date.', - type: 'date', - }, - 'process.elf.exports': { - dashed_name: 'process-elf-exports', - description: 'List of exported element names and types.', - flat_name: 'process.elf.exports', - level: 'extended', - name: 'exports', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of exported element names and types.', - type: 'flattened', - }, - 'process.elf.header.abi_version': { - dashed_name: 'process-elf-header-abi-version', - description: 'Version of the ELF Application Binary Interface (ABI).', - flat_name: 'process.elf.header.abi_version', - ignore_above: 1024, - level: 'extended', - name: 'header.abi_version', - normalize: [], - original_fieldset: 'elf', - short: 'Version of the ELF Application Binary Interface (ABI).', - type: 'keyword', - }, - 'process.elf.header.class': { - dashed_name: 'process-elf-header-class', - description: 'Header class of the ELF file.', - flat_name: 'process.elf.header.class', - ignore_above: 1024, - level: 'extended', - name: 'header.class', - normalize: [], - original_fieldset: 'elf', - short: 'Header class of the ELF file.', - type: 'keyword', - }, - 'process.elf.header.data': { - dashed_name: 'process-elf-header-data', - description: 'Data table of the ELF header.', - flat_name: 'process.elf.header.data', - ignore_above: 1024, - level: 'extended', - name: 'header.data', - normalize: [], - original_fieldset: 'elf', - short: 'Data table of the ELF header.', - type: 'keyword', - }, - 'process.elf.header.entrypoint': { - dashed_name: 'process-elf-header-entrypoint', - description: 'Header entrypoint of the ELF file.', - flat_name: 'process.elf.header.entrypoint', - format: 'string', - level: 'extended', - name: 'header.entrypoint', - normalize: [], - original_fieldset: 'elf', - short: 'Header entrypoint of the ELF file.', - type: 'long', - }, - 'process.elf.header.object_version': { - dashed_name: 'process-elf-header-object-version', - description: '"0x1" for original ELF files.', - flat_name: 'process.elf.header.object_version', - ignore_above: 1024, - level: 'extended', - name: 'header.object_version', - normalize: [], - original_fieldset: 'elf', - short: '"0x1" for original ELF files.', - type: 'keyword', - }, - 'process.elf.header.os_abi': { - dashed_name: 'process-elf-header-os-abi', - description: 'Application Binary Interface (ABI) of the Linux OS.', - flat_name: 'process.elf.header.os_abi', - ignore_above: 1024, - level: 'extended', - name: 'header.os_abi', - normalize: [], - original_fieldset: 'elf', - short: 'Application Binary Interface (ABI) of the Linux OS.', - type: 'keyword', - }, - 'process.elf.header.type': { - dashed_name: 'process-elf-header-type', - description: 'Header type of the ELF file.', - flat_name: 'process.elf.header.type', - ignore_above: 1024, - level: 'extended', - name: 'header.type', - normalize: [], - original_fieldset: 'elf', - short: 'Header type of the ELF file.', - type: 'keyword', - }, - 'process.elf.header.version': { - dashed_name: 'process-elf-header-version', - description: 'Version of the ELF header.', - flat_name: 'process.elf.header.version', - ignore_above: 1024, - level: 'extended', - name: 'header.version', - normalize: [], - original_fieldset: 'elf', - short: 'Version of the ELF header.', - type: 'keyword', - }, - 'process.elf.imports': { - dashed_name: 'process-elf-imports', - description: 'List of imported element names and types.', - flat_name: 'process.elf.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'process.elf.sections': { - dashed_name: 'process-elf-sections', - description: - 'An array containing an object for each section of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.', - flat_name: 'process.elf.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'elf', - short: 'Section information of the ELF file.', - type: 'nested', - }, - 'process.elf.sections.chi2': { - dashed_name: 'process-elf-sections-chi2', - description: 'Chi-square probability distribution of the section.', - flat_name: 'process.elf.sections.chi2', - format: 'number', - level: 'extended', - name: 'sections.chi2', - normalize: [], - original_fieldset: 'elf', - short: 'Chi-square probability distribution of the section.', - type: 'long', - }, - 'process.elf.sections.entropy': { - dashed_name: 'process-elf-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'process.elf.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.elf.sections.flags': { - dashed_name: 'process-elf-sections-flags', - description: 'ELF Section List flags.', - flat_name: 'process.elf.sections.flags', - ignore_above: 1024, - level: 'extended', - name: 'sections.flags', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List flags.', - type: 'keyword', - }, - 'process.elf.sections.name': { - dashed_name: 'process-elf-sections-name', - description: 'ELF Section List name.', - flat_name: 'process.elf.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List name.', - type: 'keyword', - }, - 'process.elf.sections.physical_offset': { - dashed_name: 'process-elf-sections-physical-offset', - description: 'ELF Section List offset.', - flat_name: 'process.elf.sections.physical_offset', - ignore_above: 1024, - level: 'extended', - name: 'sections.physical_offset', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List offset.', - type: 'keyword', - }, - 'process.elf.sections.physical_size': { - dashed_name: 'process-elf-sections-physical-size', - description: 'ELF Section List physical size.', - flat_name: 'process.elf.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List physical size.', - type: 'long', - }, - 'process.elf.sections.type': { - dashed_name: 'process-elf-sections-type', - description: 'ELF Section List type.', - flat_name: 'process.elf.sections.type', - ignore_above: 1024, - level: 'extended', - name: 'sections.type', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List type.', - type: 'keyword', - }, - 'process.elf.sections.virtual_address': { - dashed_name: 'process-elf-sections-virtual-address', - description: 'ELF Section List virtual address.', - flat_name: 'process.elf.sections.virtual_address', - format: 'string', - level: 'extended', - name: 'sections.virtual_address', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List virtual address.', - type: 'long', - }, - 'process.elf.sections.virtual_size': { - dashed_name: 'process-elf-sections-virtual-size', - description: 'ELF Section List virtual size.', - flat_name: 'process.elf.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List virtual size.', - type: 'long', - }, - 'process.elf.segments': { - dashed_name: 'process-elf-segments', - description: - 'An array containing an object for each segment of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.', - flat_name: 'process.elf.segments', - level: 'extended', - name: 'segments', - normalize: ['array'], - original_fieldset: 'elf', - short: 'ELF object segment list.', - type: 'nested', - }, - 'process.elf.segments.sections': { - dashed_name: 'process-elf-segments-sections', - description: 'ELF object segment sections.', - flat_name: 'process.elf.segments.sections', - ignore_above: 1024, - level: 'extended', - name: 'segments.sections', - normalize: [], - original_fieldset: 'elf', - short: 'ELF object segment sections.', - type: 'keyword', - }, - 'process.elf.segments.type': { - dashed_name: 'process-elf-segments-type', - description: 'ELF object segment type.', - flat_name: 'process.elf.segments.type', - ignore_above: 1024, - level: 'extended', - name: 'segments.type', - normalize: [], - original_fieldset: 'elf', - short: 'ELF object segment type.', - type: 'keyword', - }, - 'process.elf.shared_libraries': { - dashed_name: 'process-elf-shared-libraries', - description: 'List of shared libraries used by this ELF object.', - flat_name: 'process.elf.shared_libraries', - ignore_above: 1024, - level: 'extended', - name: 'shared_libraries', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of shared libraries used by this ELF object.', - type: 'keyword', - }, - 'process.elf.telfhash': { - dashed_name: 'process-elf-telfhash', - description: 'telfhash symbol hash for ELF file.', - flat_name: 'process.elf.telfhash', - ignore_above: 1024, - level: 'extended', - name: 'telfhash', - normalize: [], - original_fieldset: 'elf', - short: 'telfhash hash for ELF file.', - type: 'keyword', - }, - 'process.end': { - dashed_name: 'process-end', - description: 'The time the process ended.', - example: '2016-05-23T08:05:34.853Z', - flat_name: 'process.end', - level: 'extended', - name: 'end', - normalize: [], - short: 'The time the process ended.', - type: 'date', - }, - 'process.entity_id': { - dashed_name: 'process-entity-id', - description: - 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', - example: 'c2c455d9f99375d', - flat_name: 'process.entity_id', - ignore_above: 1024, - level: 'extended', - name: 'entity_id', - normalize: [], - short: 'Unique identifier for the process.', - type: 'keyword', - }, - 'process.entry_leader.args': { - dashed_name: 'process-entry-leader-args', - description: - 'Array of process arguments, starting with the absolute path to the executable.\nMay be filtered to protect sensitive information.', - example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]', - flat_name: 'process.entry_leader.args', - ignore_above: 1024, - level: 'extended', - name: 'args', - normalize: ['array'], - original_fieldset: 'process', - short: 'Array of process arguments.', - type: 'keyword', - }, - 'process.entry_leader.args_count': { - dashed_name: 'process-entry-leader-args-count', - description: - 'Length of the process.args array.\nThis field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.', - example: 4, - flat_name: 'process.entry_leader.args_count', - level: 'extended', - name: 'args_count', - normalize: [], - original_fieldset: 'process', - short: 'Length of the process.args array.', - type: 'long', - }, - 'process.entry_leader.attested_groups.name': { - dashed_name: 'process-entry-leader-attested-groups-name', - description: 'Name of the group.', - flat_name: 'process.entry_leader.attested_groups.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.entry_leader.attested_user.id': { - dashed_name: 'process-entry-leader-attested-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.entry_leader.attested_user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.entry_leader.attested_user.name': { - dashed_name: 'process-entry-leader-attested-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.entry_leader.attested_user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.entry_leader.attested_user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.entry_leader.command_line': { - dashed_name: 'process-entry-leader-command-line', - description: - 'Full command line that started the process, including the absolute path to the executable, and all arguments.\nSome arguments may be filtered to protect sensitive information.', - example: '/usr/bin/ssh -l user 10.0.0.16', - flat_name: 'process.entry_leader.command_line', - level: 'extended', - multi_fields: [ - { - flat_name: 'process.entry_leader.command_line.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'command_line', - normalize: [], - original_fieldset: 'process', - short: 'Full command line that started the process.', - type: 'wildcard', - }, - 'process.entry_leader.entity_id': { - dashed_name: 'process-entry-leader-entity-id', - description: - 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', - example: 'c2c455d9f99375d', - flat_name: 'process.entry_leader.entity_id', - ignore_above: 1024, - level: 'extended', - name: 'entity_id', - normalize: [], - original_fieldset: 'process', - short: 'Unique identifier for the process.', - type: 'keyword', - }, - 'process.entry_leader.entry_meta.source.ip': { - dashed_name: 'process-entry-leader-entry-meta-source-ip', - description: 'IP address of the source (IPv4 or IPv6).', - flat_name: 'process.entry_leader.entry_meta.source.ip', - level: 'core', - name: 'ip', - normalize: [], - original_fieldset: 'source', - short: 'IP address of the source.', - type: 'ip', - }, - 'process.entry_leader.entry_meta.type': { - dashed_name: 'process-entry-leader-entry-meta-type', - description: - 'The entry type for the entry session leader. Values include: init(e.g systemd), sshd, ssm, kubelet, teleport, terminal, console\nNote: This field is only set on process.session_leader.', - flat_name: 'process.entry_leader.entry_meta.type', - ignore_above: 1024, - level: 'extended', - name: 'entry_meta.type', - normalize: [], - original_fieldset: 'process', - short: 'The entry type for the entry session leader.', - type: 'keyword', - }, - 'process.entry_leader.executable': { - dashed_name: 'process-entry-leader-executable', - description: 'Absolute path to the process executable.', - example: '/usr/bin/ssh', - flat_name: 'process.entry_leader.executable', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.entry_leader.executable.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'executable', - normalize: [], - original_fieldset: 'process', - short: 'Absolute path to the process executable.', - type: 'keyword', - }, - 'process.entry_leader.group.id': { - dashed_name: 'process-entry-leader-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.entry_leader.group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.entry_leader.group.name': { - dashed_name: 'process-entry-leader-group-name', - description: 'Name of the group.', - flat_name: 'process.entry_leader.group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.entry_leader.interactive': { - dashed_name: 'process-entry-leader-interactive', - description: - 'Whether the process is connected to an interactive shell.\nProcess interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.\nNote: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.', - example: true, - flat_name: 'process.entry_leader.interactive', - level: 'extended', - name: 'interactive', - normalize: [], - original_fieldset: 'process', - short: 'Whether the process is connected to an interactive shell.', - type: 'boolean', - }, - 'process.entry_leader.name': { - dashed_name: 'process-entry-leader-name', - description: 'Process name.\nSometimes called program name or similar.', - example: 'ssh', - flat_name: 'process.entry_leader.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.entry_leader.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'process', - short: 'Process name.', - type: 'keyword', - }, - 'process.entry_leader.parent.entity_id': { - dashed_name: 'process-entry-leader-parent-entity-id', - description: - 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', - example: 'c2c455d9f99375d', - flat_name: 'process.entry_leader.parent.entity_id', - ignore_above: 1024, - level: 'extended', - name: 'entity_id', - normalize: [], - original_fieldset: 'process', - short: 'Unique identifier for the process.', - type: 'keyword', - }, - 'process.entry_leader.parent.pid': { - dashed_name: 'process-entry-leader-parent-pid', - description: 'Process id.', - example: 4242, - flat_name: 'process.entry_leader.parent.pid', - format: 'string', - level: 'core', - name: 'pid', - normalize: [], - original_fieldset: 'process', - short: 'Process id.', - type: 'long', - }, - 'process.entry_leader.parent.session_leader.entity_id': { - dashed_name: 'process-entry-leader-parent-session-leader-entity-id', - description: - 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', - example: 'c2c455d9f99375d', - flat_name: 'process.entry_leader.parent.session_leader.entity_id', - ignore_above: 1024, - level: 'extended', - name: 'entity_id', - normalize: [], - original_fieldset: 'process', - short: 'Unique identifier for the process.', - type: 'keyword', - }, - 'process.entry_leader.parent.session_leader.pid': { - dashed_name: 'process-entry-leader-parent-session-leader-pid', - description: 'Process id.', - example: 4242, - flat_name: 'process.entry_leader.parent.session_leader.pid', - format: 'string', - level: 'core', - name: 'pid', - normalize: [], - original_fieldset: 'process', - short: 'Process id.', - type: 'long', - }, - 'process.entry_leader.parent.session_leader.start': { - dashed_name: 'process-entry-leader-parent-session-leader-start', - description: 'The time the process started.', - example: '2016-05-23T08:05:34.853Z', - flat_name: 'process.entry_leader.parent.session_leader.start', - level: 'extended', - name: 'start', - normalize: [], - original_fieldset: 'process', - short: 'The time the process started.', - type: 'date', - }, - 'process.entry_leader.parent.start': { - dashed_name: 'process-entry-leader-parent-start', - description: 'The time the process started.', - example: '2016-05-23T08:05:34.853Z', - flat_name: 'process.entry_leader.parent.start', - level: 'extended', - name: 'start', - normalize: [], - original_fieldset: 'process', - short: 'The time the process started.', - type: 'date', - }, - 'process.entry_leader.pid': { - dashed_name: 'process-entry-leader-pid', - description: 'Process id.', - example: 4242, - flat_name: 'process.entry_leader.pid', - format: 'string', - level: 'core', - name: 'pid', - normalize: [], - original_fieldset: 'process', - short: 'Process id.', - type: 'long', - }, - 'process.entry_leader.real_group.id': { - dashed_name: 'process-entry-leader-real-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.entry_leader.real_group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.entry_leader.real_group.name': { - dashed_name: 'process-entry-leader-real-group-name', - description: 'Name of the group.', - flat_name: 'process.entry_leader.real_group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.entry_leader.real_user.id': { - dashed_name: 'process-entry-leader-real-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.entry_leader.real_user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.entry_leader.real_user.name': { - dashed_name: 'process-entry-leader-real-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.entry_leader.real_user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.entry_leader.real_user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.entry_leader.same_as_process': { - dashed_name: 'process-entry-leader-same-as-process', - description: - "This boolean is used to identify if a leader process is the same as the top level process.\nFor example, if `process.group_leader.same_as_process = true`, it means the process event in question is the leader of its process group. Details under `process.*` like `pid` would be the same under `process.group_leader.*` The same applies for both `process.session_leader` and `process.entry_leader`.\nThis field exists to the benefit of EQL and other rule engines since it's not possible to compare equality between two fields in a single document. e.g `process.entity_id` = `process.group_leader.entity_id` (top level process is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` (top level process is the entry session leader)\nInstead these rules could be written like: `process.group_leader.same_as_process: true` OR `process.entry_leader.same_as_process: true`\nNote: This field is only set on `process.entry_leader`, `process.session_leader` and `process.group_leader`.", - example: true, - flat_name: 'process.entry_leader.same_as_process', - level: 'extended', - name: 'same_as_process', - normalize: [], - original_fieldset: 'process', - short: - 'This boolean is used to identify if a leader process is the same as the top level process.', - type: 'boolean', - }, - 'process.entry_leader.saved_group.id': { - dashed_name: 'process-entry-leader-saved-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.entry_leader.saved_group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.entry_leader.saved_group.name': { - dashed_name: 'process-entry-leader-saved-group-name', - description: 'Name of the group.', - flat_name: 'process.entry_leader.saved_group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.entry_leader.saved_user.id': { - dashed_name: 'process-entry-leader-saved-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.entry_leader.saved_user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.entry_leader.saved_user.name': { - dashed_name: 'process-entry-leader-saved-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.entry_leader.saved_user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.entry_leader.saved_user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.entry_leader.start': { - dashed_name: 'process-entry-leader-start', - description: 'The time the process started.', - example: '2016-05-23T08:05:34.853Z', - flat_name: 'process.entry_leader.start', - level: 'extended', - name: 'start', - normalize: [], - original_fieldset: 'process', - short: 'The time the process started.', - type: 'date', - }, - 'process.entry_leader.supplemental_groups.id': { - dashed_name: 'process-entry-leader-supplemental-groups-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.entry_leader.supplemental_groups.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.entry_leader.supplemental_groups.name': { - dashed_name: 'process-entry-leader-supplemental-groups-name', - description: 'Name of the group.', - flat_name: 'process.entry_leader.supplemental_groups.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.entry_leader.tty': { - dashed_name: 'process-entry-leader-tty', - description: - 'Information about the controlling TTY device. If set, the process belongs to an interactive session.', - flat_name: 'process.entry_leader.tty', - level: 'extended', - name: 'tty', - normalize: [], - original_fieldset: 'process', - short: 'Information about the controlling TTY device.', - type: 'object', - }, - 'process.entry_leader.tty.char_device.major': { - dashed_name: 'process-entry-leader-tty-char-device-major', - description: - 'The major number identifies the driver associated with the device. The character device\'s major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.', - example: 4, - flat_name: 'process.entry_leader.tty.char_device.major', - level: 'extended', - name: 'tty.char_device.major', - normalize: [], - original_fieldset: 'process', - short: "The TTY character device's major number.", - type: 'long', - }, - 'process.entry_leader.tty.char_device.minor': { - dashed_name: 'process-entry-leader-tty-char-device-minor', - description: - 'The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.', - example: 1, - flat_name: 'process.entry_leader.tty.char_device.minor', - level: 'extended', - name: 'tty.char_device.minor', - normalize: [], - original_fieldset: 'process', - short: "The TTY character device's minor number.", - type: 'long', - }, - 'process.entry_leader.user.id': { - dashed_name: 'process-entry-leader-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.entry_leader.user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.entry_leader.user.name': { - dashed_name: 'process-entry-leader-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.entry_leader.user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.entry_leader.user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.entry_leader.working_directory': { - dashed_name: 'process-entry-leader-working-directory', - description: 'The working directory of the process.', - example: '/home/alice', - flat_name: 'process.entry_leader.working_directory', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.entry_leader.working_directory.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'working_directory', - normalize: [], - original_fieldset: 'process', - short: 'The working directory of the process.', - type: 'keyword', - }, - 'process.env_vars': { - beta: 'This field is beta and subject to change.', - dashed_name: 'process-env-vars', - description: - 'Array of environment variable bindings. Captured from a snapshot of the environment at the time of execution.\nMay be filtered to protect sensitive information.', - example: '["PATH=/usr/local/bin:/usr/bin", "USER=ubuntu"]', - flat_name: 'process.env_vars', - ignore_above: 1024, - level: 'extended', - name: 'env_vars', - normalize: ['array'], - short: 'Array of environment variable bindings.', - type: 'keyword', - }, - 'process.executable': { - dashed_name: 'process-executable', - description: 'Absolute path to the process executable.', - example: '/usr/bin/ssh', - flat_name: 'process.executable', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.executable.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'executable', - normalize: [], - short: 'Absolute path to the process executable.', - type: 'keyword', - }, - 'process.exit_code': { - dashed_name: 'process-exit-code', - description: - 'The exit code of the process, if this is a termination event.\nThe field should be absent if there is no exit code for the event (e.g. process start).', - example: 137, - flat_name: 'process.exit_code', - level: 'extended', - name: 'exit_code', - normalize: [], - short: 'The exit code of the process.', - type: 'long', - }, - 'process.group_leader.args': { - dashed_name: 'process-group-leader-args', - description: - 'Array of process arguments, starting with the absolute path to the executable.\nMay be filtered to protect sensitive information.', - example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]', - flat_name: 'process.group_leader.args', - ignore_above: 1024, - level: 'extended', - name: 'args', - normalize: ['array'], - original_fieldset: 'process', - short: 'Array of process arguments.', - type: 'keyword', - }, - 'process.group_leader.args_count': { - dashed_name: 'process-group-leader-args-count', - description: - 'Length of the process.args array.\nThis field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.', - example: 4, - flat_name: 'process.group_leader.args_count', - level: 'extended', - name: 'args_count', - normalize: [], - original_fieldset: 'process', - short: 'Length of the process.args array.', - type: 'long', - }, - 'process.group_leader.command_line': { - dashed_name: 'process-group-leader-command-line', - description: - 'Full command line that started the process, including the absolute path to the executable, and all arguments.\nSome arguments may be filtered to protect sensitive information.', - example: '/usr/bin/ssh -l user 10.0.0.16', - flat_name: 'process.group_leader.command_line', - level: 'extended', - multi_fields: [ - { - flat_name: 'process.group_leader.command_line.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'command_line', - normalize: [], - original_fieldset: 'process', - short: 'Full command line that started the process.', - type: 'wildcard', - }, - 'process.group_leader.entity_id': { - dashed_name: 'process-group-leader-entity-id', - description: - 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', - example: 'c2c455d9f99375d', - flat_name: 'process.group_leader.entity_id', - ignore_above: 1024, - level: 'extended', - name: 'entity_id', - normalize: [], - original_fieldset: 'process', - short: 'Unique identifier for the process.', - type: 'keyword', - }, - 'process.group_leader.executable': { - dashed_name: 'process-group-leader-executable', - description: 'Absolute path to the process executable.', - example: '/usr/bin/ssh', - flat_name: 'process.group_leader.executable', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.group_leader.executable.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'executable', - normalize: [], - original_fieldset: 'process', - short: 'Absolute path to the process executable.', - type: 'keyword', - }, - 'process.group_leader.group.id': { - dashed_name: 'process-group-leader-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.group_leader.group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.group_leader.group.name': { - dashed_name: 'process-group-leader-group-name', - description: 'Name of the group.', - flat_name: 'process.group_leader.group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.group_leader.interactive': { - dashed_name: 'process-group-leader-interactive', - description: - 'Whether the process is connected to an interactive shell.\nProcess interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.\nNote: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.', - example: true, - flat_name: 'process.group_leader.interactive', - level: 'extended', - name: 'interactive', - normalize: [], - original_fieldset: 'process', - short: 'Whether the process is connected to an interactive shell.', - type: 'boolean', - }, - 'process.group_leader.name': { - dashed_name: 'process-group-leader-name', - description: 'Process name.\nSometimes called program name or similar.', - example: 'ssh', - flat_name: 'process.group_leader.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.group_leader.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'process', - short: 'Process name.', - type: 'keyword', - }, - 'process.group_leader.pid': { - dashed_name: 'process-group-leader-pid', - description: 'Process id.', - example: 4242, - flat_name: 'process.group_leader.pid', - format: 'string', - level: 'core', - name: 'pid', - normalize: [], - original_fieldset: 'process', - short: 'Process id.', - type: 'long', - }, - 'process.group_leader.real_group.id': { - dashed_name: 'process-group-leader-real-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.group_leader.real_group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.group_leader.real_group.name': { - dashed_name: 'process-group-leader-real-group-name', - description: 'Name of the group.', - flat_name: 'process.group_leader.real_group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.group_leader.real_user.id': { - dashed_name: 'process-group-leader-real-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.group_leader.real_user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.group_leader.real_user.name': { - dashed_name: 'process-group-leader-real-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.group_leader.real_user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.group_leader.real_user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.group_leader.same_as_process': { - dashed_name: 'process-group-leader-same-as-process', - description: - "This boolean is used to identify if a leader process is the same as the top level process.\nFor example, if `process.group_leader.same_as_process = true`, it means the process event in question is the leader of its process group. Details under `process.*` like `pid` would be the same under `process.group_leader.*` The same applies for both `process.session_leader` and `process.entry_leader`.\nThis field exists to the benefit of EQL and other rule engines since it's not possible to compare equality between two fields in a single document. e.g `process.entity_id` = `process.group_leader.entity_id` (top level process is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` (top level process is the entry session leader)\nInstead these rules could be written like: `process.group_leader.same_as_process: true` OR `process.entry_leader.same_as_process: true`\nNote: This field is only set on `process.entry_leader`, `process.session_leader` and `process.group_leader`.", - example: true, - flat_name: 'process.group_leader.same_as_process', - level: 'extended', - name: 'same_as_process', - normalize: [], - original_fieldset: 'process', - short: - 'This boolean is used to identify if a leader process is the same as the top level process.', - type: 'boolean', - }, - 'process.group_leader.saved_group.id': { - dashed_name: 'process-group-leader-saved-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.group_leader.saved_group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.group_leader.saved_group.name': { - dashed_name: 'process-group-leader-saved-group-name', - description: 'Name of the group.', - flat_name: 'process.group_leader.saved_group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.group_leader.saved_user.id': { - dashed_name: 'process-group-leader-saved-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.group_leader.saved_user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.group_leader.saved_user.name': { - dashed_name: 'process-group-leader-saved-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.group_leader.saved_user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.group_leader.saved_user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.group_leader.start': { - dashed_name: 'process-group-leader-start', - description: 'The time the process started.', - example: '2016-05-23T08:05:34.853Z', - flat_name: 'process.group_leader.start', - level: 'extended', - name: 'start', - normalize: [], - original_fieldset: 'process', - short: 'The time the process started.', - type: 'date', - }, - 'process.group_leader.supplemental_groups.id': { - dashed_name: 'process-group-leader-supplemental-groups-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.group_leader.supplemental_groups.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.group_leader.supplemental_groups.name': { - dashed_name: 'process-group-leader-supplemental-groups-name', - description: 'Name of the group.', - flat_name: 'process.group_leader.supplemental_groups.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.group_leader.tty': { - dashed_name: 'process-group-leader-tty', - description: - 'Information about the controlling TTY device. If set, the process belongs to an interactive session.', - flat_name: 'process.group_leader.tty', - level: 'extended', - name: 'tty', - normalize: [], - original_fieldset: 'process', - short: 'Information about the controlling TTY device.', - type: 'object', - }, - 'process.group_leader.tty.char_device.major': { - dashed_name: 'process-group-leader-tty-char-device-major', - description: - 'The major number identifies the driver associated with the device. The character device\'s major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.', - example: 4, - flat_name: 'process.group_leader.tty.char_device.major', - level: 'extended', - name: 'tty.char_device.major', - normalize: [], - original_fieldset: 'process', - short: "The TTY character device's major number.", - type: 'long', - }, - 'process.group_leader.tty.char_device.minor': { - dashed_name: 'process-group-leader-tty-char-device-minor', - description: - 'The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.', - example: 1, - flat_name: 'process.group_leader.tty.char_device.minor', - level: 'extended', - name: 'tty.char_device.minor', - normalize: [], - original_fieldset: 'process', - short: "The TTY character device's minor number.", - type: 'long', - }, - 'process.group_leader.user.id': { - dashed_name: 'process-group-leader-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.group_leader.user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.group_leader.user.name': { - dashed_name: 'process-group-leader-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.group_leader.user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.group_leader.user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.group_leader.working_directory': { - dashed_name: 'process-group-leader-working-directory', - description: 'The working directory of the process.', - example: '/home/alice', - flat_name: 'process.group_leader.working_directory', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.group_leader.working_directory.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'working_directory', - normalize: [], - original_fieldset: 'process', - short: 'The working directory of the process.', - type: 'keyword', - }, - 'process.hash.md5': { - dashed_name: 'process-hash-md5', - description: 'MD5 hash.', - flat_name: 'process.hash.md5', - ignore_above: 1024, - level: 'extended', - name: 'md5', - normalize: [], - original_fieldset: 'hash', - short: 'MD5 hash.', - type: 'keyword', - }, - 'process.hash.sha1': { - dashed_name: 'process-hash-sha1', - description: 'SHA1 hash.', - flat_name: 'process.hash.sha1', - ignore_above: 1024, - level: 'extended', - name: 'sha1', - normalize: [], - original_fieldset: 'hash', - short: 'SHA1 hash.', - type: 'keyword', - }, - 'process.hash.sha256': { - dashed_name: 'process-hash-sha256', - description: 'SHA256 hash.', - flat_name: 'process.hash.sha256', - ignore_above: 1024, - level: 'extended', - name: 'sha256', - normalize: [], - original_fieldset: 'hash', - short: 'SHA256 hash.', - type: 'keyword', - }, - 'process.hash.sha384': { - dashed_name: 'process-hash-sha384', - description: 'SHA384 hash.', - flat_name: 'process.hash.sha384', - ignore_above: 1024, - level: 'extended', - name: 'sha384', - normalize: [], - original_fieldset: 'hash', - short: 'SHA384 hash.', - type: 'keyword', - }, - 'process.hash.sha512': { - dashed_name: 'process-hash-sha512', - description: 'SHA512 hash.', - flat_name: 'process.hash.sha512', - ignore_above: 1024, - level: 'extended', - name: 'sha512', - normalize: [], - original_fieldset: 'hash', - short: 'SHA512 hash.', - type: 'keyword', - }, - 'process.hash.ssdeep': { - dashed_name: 'process-hash-ssdeep', - description: 'SSDEEP hash.', - flat_name: 'process.hash.ssdeep', - ignore_above: 1024, - level: 'extended', - name: 'ssdeep', - normalize: [], - original_fieldset: 'hash', - short: 'SSDEEP hash.', - type: 'keyword', - }, - 'process.hash.tlsh': { - dashed_name: 'process-hash-tlsh', - description: 'TLSH hash.', - flat_name: 'process.hash.tlsh', - ignore_above: 1024, - level: 'extended', - name: 'tlsh', - normalize: [], - original_fieldset: 'hash', - short: 'TLSH hash.', - type: 'keyword', - }, - 'process.interactive': { - dashed_name: 'process-interactive', - description: - 'Whether the process is connected to an interactive shell.\nProcess interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.\nNote: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.', - example: true, - flat_name: 'process.interactive', - level: 'extended', - name: 'interactive', - normalize: [], - short: 'Whether the process is connected to an interactive shell.', - type: 'boolean', - }, - 'process.io': { - beta: 'This field is beta and subject to change.', - dashed_name: 'process-io', - description: - 'A chunk of input or output (IO) from a single process.\nThis field only appears on the top level process object, which is the process that wrote the output or read the input.', - flat_name: 'process.io', - level: 'extended', - name: 'io', - normalize: [], - short: 'A chunk of input or output (IO) from a single process.', - type: 'object', - }, - 'process.io.bytes_skipped': { - beta: 'This field is beta and subject to change.', - dashed_name: 'process-io-bytes-skipped', - description: - 'An array of byte offsets and lengths denoting where IO data has been skipped.', - flat_name: 'process.io.bytes_skipped', - level: 'extended', - name: 'io.bytes_skipped', - normalize: ['array'], - short: 'An array of byte offsets and lengths denoting where IO data has been skipped.', - type: 'object', - }, - 'process.io.bytes_skipped.length': { - beta: 'This field is beta and subject to change.', - dashed_name: 'process-io-bytes-skipped-length', - description: 'The length of bytes skipped.', - flat_name: 'process.io.bytes_skipped.length', - level: 'extended', - name: 'io.bytes_skipped.length', - normalize: [], - short: 'The length of bytes skipped.', - type: 'long', - }, - 'process.io.bytes_skipped.offset': { - beta: 'This field is beta and subject to change.', - dashed_name: 'process-io-bytes-skipped-offset', - description: - "The byte offset into this event's io.text (or io.bytes in the future) where length bytes were skipped.", - flat_name: 'process.io.bytes_skipped.offset', - level: 'extended', - name: 'io.bytes_skipped.offset', - normalize: [], - short: - "The byte offset into this event's io.text (or io.bytes in the future) where length bytes were skipped.", - type: 'long', - }, - 'process.io.max_bytes_per_process_exceeded': { - beta: 'This field is beta and subject to change.', - dashed_name: 'process-io-max-bytes-per-process-exceeded', - description: - 'If true, the process producing the output has exceeded the max_kilobytes_per_process configuration setting.', - flat_name: 'process.io.max_bytes_per_process_exceeded', - level: 'extended', - name: 'io.max_bytes_per_process_exceeded', - normalize: [], - short: - 'If true, the process producing the output has exceeded the max_kilobytes_per_process configuration setting.', - type: 'boolean', - }, - 'process.io.text': { - beta: 'This field is beta and subject to change.', - dashed_name: 'process-io-text', - description: - 'A chunk of output or input sanitized to UTF-8.\nBest efforts are made to ensure complete lines are captured in these events. Assumptions should NOT be made that multiple lines will appear in the same event. TTY output may contain terminal control codes such as for cursor movement, so some string queries may not match due to terminal codes inserted between characters of a word.', - flat_name: 'process.io.text', - level: 'extended', - name: 'io.text', - normalize: [], - short: 'A chunk of output or input sanitized to UTF-8.', - type: 'wildcard', - }, - 'process.io.total_bytes_captured': { - beta: 'This field is beta and subject to change.', - dashed_name: 'process-io-total-bytes-captured', - description: 'The total number of bytes captured in this event.', - flat_name: 'process.io.total_bytes_captured', - level: 'extended', - name: 'io.total_bytes_captured', - normalize: [], - short: 'The total number of bytes captured in this event.', - type: 'long', - }, - 'process.io.total_bytes_skipped': { - beta: 'This field is beta and subject to change.', - dashed_name: 'process-io-total-bytes-skipped', - description: - 'The total number of bytes that were not captured due to implementation restrictions such as buffer size limits. Implementors should strive to ensure this value is always zero', - flat_name: 'process.io.total_bytes_skipped', - level: 'extended', - name: 'io.total_bytes_skipped', - normalize: [], - short: - 'The total number of bytes that were not captured due to implementation restrictions such as buffer size limits.', - type: 'long', - }, - 'process.io.type': { - beta: 'This field is beta and subject to change.', - dashed_name: 'process-io-type', - description: - "The type of object on which the IO action (read or write) was taken.\nCurrently only 'tty' is supported. Other types may be added in the future for 'file' and 'socket' support.", - flat_name: 'process.io.type', - ignore_above: 1024, - level: 'extended', - name: 'io.type', - normalize: [], - short: 'The type of object on which the IO action (read or write) was taken.', - type: 'keyword', - }, - 'process.name': { - dashed_name: 'process-name', - description: 'Process name.\nSometimes called program name or similar.', - example: 'ssh', - flat_name: 'process.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - short: 'Process name.', - type: 'keyword', - }, - 'process.parent.args': { - dashed_name: 'process-parent-args', - description: - 'Array of process arguments, starting with the absolute path to the executable.\nMay be filtered to protect sensitive information.', - example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]', - flat_name: 'process.parent.args', - ignore_above: 1024, - level: 'extended', - name: 'args', - normalize: ['array'], - original_fieldset: 'process', - short: 'Array of process arguments.', - type: 'keyword', - }, - 'process.parent.args_count': { - dashed_name: 'process-parent-args-count', - description: - 'Length of the process.args array.\nThis field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.', - example: 4, - flat_name: 'process.parent.args_count', - level: 'extended', - name: 'args_count', - normalize: [], - original_fieldset: 'process', - short: 'Length of the process.args array.', - type: 'long', - }, - 'process.parent.code_signature.digest_algorithm': { - dashed_name: 'process-parent-code-signature-digest-algorithm', - description: - 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', - example: 'sha256', - flat_name: 'process.parent.code_signature.digest_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'digest_algorithm', - normalize: [], - original_fieldset: 'code_signature', - short: 'Hashing algorithm used to sign the process.', - type: 'keyword', - }, - 'process.parent.code_signature.exists': { - dashed_name: 'process-parent-code-signature-exists', - description: 'Boolean to capture if a signature is present.', - example: 'true', - flat_name: 'process.parent.code_signature.exists', - level: 'core', - name: 'exists', - normalize: [], - original_fieldset: 'code_signature', - short: 'Boolean to capture if a signature is present.', - type: 'boolean', - }, - 'process.parent.code_signature.signing_id': { - dashed_name: 'process-parent-code-signature-signing-id', - description: - 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', - example: 'com.apple.xpc.proxy', - flat_name: 'process.parent.code_signature.signing_id', - ignore_above: 1024, - level: 'extended', - name: 'signing_id', - normalize: [], - original_fieldset: 'code_signature', - short: 'The identifier used to sign the process.', - type: 'keyword', - }, - 'process.parent.code_signature.status': { - dashed_name: 'process-parent-code-signature-status', - description: - 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', - example: 'ERROR_UNTRUSTED_ROOT', - flat_name: 'process.parent.code_signature.status', - ignore_above: 1024, - level: 'extended', - name: 'status', - normalize: [], - original_fieldset: 'code_signature', - short: 'Additional information about the certificate status.', - type: 'keyword', - }, - 'process.parent.code_signature.subject_name': { - dashed_name: 'process-parent-code-signature-subject-name', - description: 'Subject name of the code signer', - example: 'Microsoft Corporation', - flat_name: 'process.parent.code_signature.subject_name', - ignore_above: 1024, - level: 'core', - name: 'subject_name', - normalize: [], - original_fieldset: 'code_signature', - short: 'Subject name of the code signer', - type: 'keyword', - }, - 'process.parent.code_signature.team_id': { - dashed_name: 'process-parent-code-signature-team-id', - description: - 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', - example: 'EQHXZ8M8AV', - flat_name: 'process.parent.code_signature.team_id', - ignore_above: 1024, - level: 'extended', - name: 'team_id', - normalize: [], - original_fieldset: 'code_signature', - short: 'The team identifier used to sign the process.', - type: 'keyword', - }, - 'process.parent.code_signature.timestamp': { - dashed_name: 'process-parent-code-signature-timestamp', - description: 'Date and time when the code signature was generated and signed.', - example: '2021-01-01T12:10:30Z', - flat_name: 'process.parent.code_signature.timestamp', - level: 'extended', - name: 'timestamp', - normalize: [], - original_fieldset: 'code_signature', - short: 'When the signature was generated and signed.', - type: 'date', - }, - 'process.parent.code_signature.trusted': { - dashed_name: 'process-parent-code-signature-trusted', - description: - 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', - example: 'true', - flat_name: 'process.parent.code_signature.trusted', - level: 'extended', - name: 'trusted', - normalize: [], - original_fieldset: 'code_signature', - short: 'Stores the trust status of the certificate chain.', - type: 'boolean', - }, - 'process.parent.code_signature.valid': { - dashed_name: 'process-parent-code-signature-valid', - description: - 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', - example: 'true', - flat_name: 'process.parent.code_signature.valid', - level: 'extended', - name: 'valid', - normalize: [], - original_fieldset: 'code_signature', - short: - 'Boolean to capture if the digital signature is verified against the binary content.', - type: 'boolean', - }, - 'process.parent.command_line': { - dashed_name: 'process-parent-command-line', - description: - 'Full command line that started the process, including the absolute path to the executable, and all arguments.\nSome arguments may be filtered to protect sensitive information.', - example: '/usr/bin/ssh -l user 10.0.0.16', - flat_name: 'process.parent.command_line', - level: 'extended', - multi_fields: [ - { - flat_name: 'process.parent.command_line.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'command_line', - normalize: [], - original_fieldset: 'process', - short: 'Full command line that started the process.', - type: 'wildcard', - }, - 'process.parent.elf.architecture': { - dashed_name: 'process-parent-elf-architecture', - description: 'Machine architecture of the ELF file.', - example: 'x86-64', - flat_name: 'process.parent.elf.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - original_fieldset: 'elf', - short: 'Machine architecture of the ELF file.', - type: 'keyword', - }, - 'process.parent.elf.byte_order': { - dashed_name: 'process-parent-elf-byte-order', - description: 'Byte sequence of ELF file.', - example: 'Little Endian', - flat_name: 'process.parent.elf.byte_order', - ignore_above: 1024, - level: 'extended', - name: 'byte_order', - normalize: [], - original_fieldset: 'elf', - short: 'Byte sequence of ELF file.', - type: 'keyword', - }, - 'process.parent.elf.cpu_type': { - dashed_name: 'process-parent-elf-cpu-type', - description: 'CPU type of the ELF file.', - example: 'Intel', - flat_name: 'process.parent.elf.cpu_type', - ignore_above: 1024, - level: 'extended', - name: 'cpu_type', - normalize: [], - original_fieldset: 'elf', - short: 'CPU type of the ELF file.', - type: 'keyword', - }, - 'process.parent.elf.creation_date': { - dashed_name: 'process-parent-elf-creation-date', - description: - "Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.", - flat_name: 'process.parent.elf.creation_date', - level: 'extended', - name: 'creation_date', - normalize: [], - original_fieldset: 'elf', - short: 'Build or compile date.', - type: 'date', - }, - 'process.parent.elf.exports': { - dashed_name: 'process-parent-elf-exports', - description: 'List of exported element names and types.', - flat_name: 'process.parent.elf.exports', - level: 'extended', - name: 'exports', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of exported element names and types.', - type: 'flattened', - }, - 'process.parent.elf.header.abi_version': { - dashed_name: 'process-parent-elf-header-abi-version', - description: 'Version of the ELF Application Binary Interface (ABI).', - flat_name: 'process.parent.elf.header.abi_version', - ignore_above: 1024, - level: 'extended', - name: 'header.abi_version', - normalize: [], - original_fieldset: 'elf', - short: 'Version of the ELF Application Binary Interface (ABI).', - type: 'keyword', - }, - 'process.parent.elf.header.class': { - dashed_name: 'process-parent-elf-header-class', - description: 'Header class of the ELF file.', - flat_name: 'process.parent.elf.header.class', - ignore_above: 1024, - level: 'extended', - name: 'header.class', - normalize: [], - original_fieldset: 'elf', - short: 'Header class of the ELF file.', - type: 'keyword', - }, - 'process.parent.elf.header.data': { - dashed_name: 'process-parent-elf-header-data', - description: 'Data table of the ELF header.', - flat_name: 'process.parent.elf.header.data', - ignore_above: 1024, - level: 'extended', - name: 'header.data', - normalize: [], - original_fieldset: 'elf', - short: 'Data table of the ELF header.', - type: 'keyword', - }, - 'process.parent.elf.header.entrypoint': { - dashed_name: 'process-parent-elf-header-entrypoint', - description: 'Header entrypoint of the ELF file.', - flat_name: 'process.parent.elf.header.entrypoint', - format: 'string', - level: 'extended', - name: 'header.entrypoint', - normalize: [], - original_fieldset: 'elf', - short: 'Header entrypoint of the ELF file.', - type: 'long', - }, - 'process.parent.elf.header.object_version': { - dashed_name: 'process-parent-elf-header-object-version', - description: '"0x1" for original ELF files.', - flat_name: 'process.parent.elf.header.object_version', - ignore_above: 1024, - level: 'extended', - name: 'header.object_version', - normalize: [], - original_fieldset: 'elf', - short: '"0x1" for original ELF files.', - type: 'keyword', - }, - 'process.parent.elf.header.os_abi': { - dashed_name: 'process-parent-elf-header-os-abi', - description: 'Application Binary Interface (ABI) of the Linux OS.', - flat_name: 'process.parent.elf.header.os_abi', - ignore_above: 1024, - level: 'extended', - name: 'header.os_abi', - normalize: [], - original_fieldset: 'elf', - short: 'Application Binary Interface (ABI) of the Linux OS.', - type: 'keyword', - }, - 'process.parent.elf.header.type': { - dashed_name: 'process-parent-elf-header-type', - description: 'Header type of the ELF file.', - flat_name: 'process.parent.elf.header.type', - ignore_above: 1024, - level: 'extended', - name: 'header.type', - normalize: [], - original_fieldset: 'elf', - short: 'Header type of the ELF file.', - type: 'keyword', - }, - 'process.parent.elf.header.version': { - dashed_name: 'process-parent-elf-header-version', - description: 'Version of the ELF header.', - flat_name: 'process.parent.elf.header.version', - ignore_above: 1024, - level: 'extended', - name: 'header.version', - normalize: [], - original_fieldset: 'elf', - short: 'Version of the ELF header.', - type: 'keyword', - }, - 'process.parent.elf.imports': { - dashed_name: 'process-parent-elf-imports', - description: 'List of imported element names and types.', - flat_name: 'process.parent.elf.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'process.parent.elf.sections': { - dashed_name: 'process-parent-elf-sections', - description: - 'An array containing an object for each section of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.', - flat_name: 'process.parent.elf.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'elf', - short: 'Section information of the ELF file.', - type: 'nested', - }, - 'process.parent.elf.sections.chi2': { - dashed_name: 'process-parent-elf-sections-chi2', - description: 'Chi-square probability distribution of the section.', - flat_name: 'process.parent.elf.sections.chi2', - format: 'number', - level: 'extended', - name: 'sections.chi2', - normalize: [], - original_fieldset: 'elf', - short: 'Chi-square probability distribution of the section.', - type: 'long', - }, - 'process.parent.elf.sections.entropy': { - dashed_name: 'process-parent-elf-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'process.parent.elf.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.parent.elf.sections.flags': { - dashed_name: 'process-parent-elf-sections-flags', - description: 'ELF Section List flags.', - flat_name: 'process.parent.elf.sections.flags', - ignore_above: 1024, - level: 'extended', - name: 'sections.flags', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List flags.', - type: 'keyword', - }, - 'process.parent.elf.sections.name': { - dashed_name: 'process-parent-elf-sections-name', - description: 'ELF Section List name.', - flat_name: 'process.parent.elf.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List name.', - type: 'keyword', - }, - 'process.parent.elf.sections.physical_offset': { - dashed_name: 'process-parent-elf-sections-physical-offset', - description: 'ELF Section List offset.', - flat_name: 'process.parent.elf.sections.physical_offset', - ignore_above: 1024, - level: 'extended', - name: 'sections.physical_offset', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List offset.', - type: 'keyword', - }, - 'process.parent.elf.sections.physical_size': { - dashed_name: 'process-parent-elf-sections-physical-size', - description: 'ELF Section List physical size.', - flat_name: 'process.parent.elf.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List physical size.', - type: 'long', - }, - 'process.parent.elf.sections.type': { - dashed_name: 'process-parent-elf-sections-type', - description: 'ELF Section List type.', - flat_name: 'process.parent.elf.sections.type', - ignore_above: 1024, - level: 'extended', - name: 'sections.type', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List type.', - type: 'keyword', - }, - 'process.parent.elf.sections.virtual_address': { - dashed_name: 'process-parent-elf-sections-virtual-address', - description: 'ELF Section List virtual address.', - flat_name: 'process.parent.elf.sections.virtual_address', - format: 'string', - level: 'extended', - name: 'sections.virtual_address', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List virtual address.', - type: 'long', - }, - 'process.parent.elf.sections.virtual_size': { - dashed_name: 'process-parent-elf-sections-virtual-size', - description: 'ELF Section List virtual size.', - flat_name: 'process.parent.elf.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List virtual size.', - type: 'long', - }, - 'process.parent.elf.segments': { - dashed_name: 'process-parent-elf-segments', - description: - 'An array containing an object for each segment of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.', - flat_name: 'process.parent.elf.segments', - level: 'extended', - name: 'segments', - normalize: ['array'], - original_fieldset: 'elf', - short: 'ELF object segment list.', - type: 'nested', - }, - 'process.parent.elf.segments.sections': { - dashed_name: 'process-parent-elf-segments-sections', - description: 'ELF object segment sections.', - flat_name: 'process.parent.elf.segments.sections', - ignore_above: 1024, - level: 'extended', - name: 'segments.sections', - normalize: [], - original_fieldset: 'elf', - short: 'ELF object segment sections.', - type: 'keyword', - }, - 'process.parent.elf.segments.type': { - dashed_name: 'process-parent-elf-segments-type', - description: 'ELF object segment type.', - flat_name: 'process.parent.elf.segments.type', - ignore_above: 1024, - level: 'extended', - name: 'segments.type', - normalize: [], - original_fieldset: 'elf', - short: 'ELF object segment type.', - type: 'keyword', - }, - 'process.parent.elf.shared_libraries': { - dashed_name: 'process-parent-elf-shared-libraries', - description: 'List of shared libraries used by this ELF object.', - flat_name: 'process.parent.elf.shared_libraries', - ignore_above: 1024, - level: 'extended', - name: 'shared_libraries', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of shared libraries used by this ELF object.', - type: 'keyword', - }, - 'process.parent.elf.telfhash': { - dashed_name: 'process-parent-elf-telfhash', - description: 'telfhash symbol hash for ELF file.', - flat_name: 'process.parent.elf.telfhash', - ignore_above: 1024, - level: 'extended', - name: 'telfhash', - normalize: [], - original_fieldset: 'elf', - short: 'telfhash hash for ELF file.', - type: 'keyword', - }, - 'process.parent.end': { - dashed_name: 'process-parent-end', - description: 'The time the process ended.', - example: '2016-05-23T08:05:34.853Z', - flat_name: 'process.parent.end', - level: 'extended', - name: 'end', - normalize: [], - original_fieldset: 'process', - short: 'The time the process ended.', - type: 'date', - }, - 'process.parent.entity_id': { - dashed_name: 'process-parent-entity-id', - description: - 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', - example: 'c2c455d9f99375d', - flat_name: 'process.parent.entity_id', - ignore_above: 1024, - level: 'extended', - name: 'entity_id', - normalize: [], - original_fieldset: 'process', - short: 'Unique identifier for the process.', - type: 'keyword', - }, - 'process.parent.executable': { - dashed_name: 'process-parent-executable', - description: 'Absolute path to the process executable.', - example: '/usr/bin/ssh', - flat_name: 'process.parent.executable', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.parent.executable.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'executable', - normalize: [], - original_fieldset: 'process', - short: 'Absolute path to the process executable.', - type: 'keyword', - }, - 'process.parent.exit_code': { - dashed_name: 'process-parent-exit-code', - description: - 'The exit code of the process, if this is a termination event.\nThe field should be absent if there is no exit code for the event (e.g. process start).', - example: 137, - flat_name: 'process.parent.exit_code', - level: 'extended', - name: 'exit_code', - normalize: [], - original_fieldset: 'process', - short: 'The exit code of the process.', - type: 'long', - }, - 'process.parent.group.id': { - dashed_name: 'process-parent-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.parent.group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.parent.group.name': { - dashed_name: 'process-parent-group-name', - description: 'Name of the group.', - flat_name: 'process.parent.group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.parent.group_leader.entity_id': { - dashed_name: 'process-parent-group-leader-entity-id', - description: - 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', - example: 'c2c455d9f99375d', - flat_name: 'process.parent.group_leader.entity_id', - ignore_above: 1024, - level: 'extended', - name: 'entity_id', - normalize: [], - original_fieldset: 'process', - short: 'Unique identifier for the process.', - type: 'keyword', - }, - 'process.parent.group_leader.pid': { - dashed_name: 'process-parent-group-leader-pid', - description: 'Process id.', - example: 4242, - flat_name: 'process.parent.group_leader.pid', - format: 'string', - level: 'core', - name: 'pid', - normalize: [], - original_fieldset: 'process', - short: 'Process id.', - type: 'long', - }, - 'process.parent.group_leader.start': { - dashed_name: 'process-parent-group-leader-start', - description: 'The time the process started.', - example: '2016-05-23T08:05:34.853Z', - flat_name: 'process.parent.group_leader.start', - level: 'extended', - name: 'start', - normalize: [], - original_fieldset: 'process', - short: 'The time the process started.', - type: 'date', - }, - 'process.parent.hash.md5': { - dashed_name: 'process-parent-hash-md5', - description: 'MD5 hash.', - flat_name: 'process.parent.hash.md5', - ignore_above: 1024, - level: 'extended', - name: 'md5', - normalize: [], - original_fieldset: 'hash', - short: 'MD5 hash.', - type: 'keyword', - }, - 'process.parent.hash.sha1': { - dashed_name: 'process-parent-hash-sha1', - description: 'SHA1 hash.', - flat_name: 'process.parent.hash.sha1', - ignore_above: 1024, - level: 'extended', - name: 'sha1', - normalize: [], - original_fieldset: 'hash', - short: 'SHA1 hash.', - type: 'keyword', - }, - 'process.parent.hash.sha256': { - dashed_name: 'process-parent-hash-sha256', - description: 'SHA256 hash.', - flat_name: 'process.parent.hash.sha256', - ignore_above: 1024, - level: 'extended', - name: 'sha256', - normalize: [], - original_fieldset: 'hash', - short: 'SHA256 hash.', - type: 'keyword', - }, - 'process.parent.hash.sha384': { - dashed_name: 'process-parent-hash-sha384', - description: 'SHA384 hash.', - flat_name: 'process.parent.hash.sha384', - ignore_above: 1024, - level: 'extended', - name: 'sha384', - normalize: [], - original_fieldset: 'hash', - short: 'SHA384 hash.', - type: 'keyword', - }, - 'process.parent.hash.sha512': { - dashed_name: 'process-parent-hash-sha512', - description: 'SHA512 hash.', - flat_name: 'process.parent.hash.sha512', - ignore_above: 1024, - level: 'extended', - name: 'sha512', - normalize: [], - original_fieldset: 'hash', - short: 'SHA512 hash.', - type: 'keyword', - }, - 'process.parent.hash.ssdeep': { - dashed_name: 'process-parent-hash-ssdeep', - description: 'SSDEEP hash.', - flat_name: 'process.parent.hash.ssdeep', - ignore_above: 1024, - level: 'extended', - name: 'ssdeep', - normalize: [], - original_fieldset: 'hash', - short: 'SSDEEP hash.', - type: 'keyword', - }, - 'process.parent.hash.tlsh': { - dashed_name: 'process-parent-hash-tlsh', - description: 'TLSH hash.', - flat_name: 'process.parent.hash.tlsh', - ignore_above: 1024, - level: 'extended', - name: 'tlsh', - normalize: [], - original_fieldset: 'hash', - short: 'TLSH hash.', - type: 'keyword', - }, - 'process.parent.interactive': { - dashed_name: 'process-parent-interactive', - description: - 'Whether the process is connected to an interactive shell.\nProcess interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.\nNote: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.', - example: true, - flat_name: 'process.parent.interactive', - level: 'extended', - name: 'interactive', - normalize: [], - original_fieldset: 'process', - short: 'Whether the process is connected to an interactive shell.', - type: 'boolean', - }, - 'process.parent.name': { - dashed_name: 'process-parent-name', - description: 'Process name.\nSometimes called program name or similar.', - example: 'ssh', - flat_name: 'process.parent.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.parent.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'process', - short: 'Process name.', - type: 'keyword', - }, - 'process.parent.pe.architecture': { - dashed_name: 'process-parent-pe-architecture', - description: 'CPU architecture target for the file.', - example: 'x64', - flat_name: 'process.parent.pe.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - original_fieldset: 'pe', - short: 'CPU architecture target for the file.', - type: 'keyword', - }, - 'process.parent.pe.company': { - dashed_name: 'process-parent-pe-company', - description: 'Internal company name of the file, provided at compile-time.', - example: 'Microsoft Corporation', - flat_name: 'process.parent.pe.company', - ignore_above: 1024, - level: 'extended', - name: 'company', - normalize: [], - original_fieldset: 'pe', - short: 'Internal company name of the file, provided at compile-time.', - type: 'keyword', - }, - 'process.parent.pe.description': { - dashed_name: 'process-parent-pe-description', - description: 'Internal description of the file, provided at compile-time.', - example: 'Paint', - flat_name: 'process.parent.pe.description', - ignore_above: 1024, - level: 'extended', - name: 'description', - normalize: [], - original_fieldset: 'pe', - short: 'Internal description of the file, provided at compile-time.', - type: 'keyword', - }, - 'process.parent.pe.file_version': { - dashed_name: 'process-parent-pe-file-version', - description: 'Internal version of the file, provided at compile-time.', - example: '6.3.9600.17415', - flat_name: 'process.parent.pe.file_version', - ignore_above: 1024, - level: 'extended', - name: 'file_version', - normalize: [], - original_fieldset: 'pe', - short: 'Process name.', - type: 'keyword', - }, - 'process.parent.pe.imphash': { - dashed_name: 'process-parent-pe-imphash', - description: - 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', - example: '0c6803c4e922103c4dca5963aad36ddf', - flat_name: 'process.parent.pe.imphash', - ignore_above: 1024, - level: 'extended', - name: 'imphash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'process.parent.pe.original_file_name': { - dashed_name: 'process-parent-pe-original-file-name', - description: 'Internal name of the file, provided at compile-time.', - example: 'MSPAINT.EXE', - flat_name: 'process.parent.pe.original_file_name', - ignore_above: 1024, - level: 'extended', - name: 'original_file_name', - normalize: [], - original_fieldset: 'pe', - short: 'Internal name of the file, provided at compile-time.', - type: 'keyword', - }, - 'process.parent.pe.pehash': { - dashed_name: 'process-parent-pe-pehash', - description: - 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', - example: '73ff189b63cd6be375a7ff25179a38d347651975', - flat_name: 'process.parent.pe.pehash', - ignore_above: 1024, - level: 'extended', - name: 'pehash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the PE header and data from one or more PE sections.', - type: 'keyword', - }, - 'process.parent.pe.product': { - dashed_name: 'process-parent-pe-product', - description: 'Internal product name of the file, provided at compile-time.', - example: 'Microsoft® Windows® Operating System', - flat_name: 'process.parent.pe.product', - ignore_above: 1024, - level: 'extended', - name: 'product', - normalize: [], - original_fieldset: 'pe', - short: 'Internal product name of the file, provided at compile-time.', - type: 'keyword', - }, - 'process.parent.pgid': { - dashed_name: 'process-parent-pgid', - description: - 'Deprecated for removal in next major version release. This field is superseded by `process.group_leader.pid`.\nIdentifier of the group of processes the process belongs to.', - flat_name: 'process.parent.pgid', - format: 'string', - level: 'extended', - name: 'pgid', - normalize: [], - original_fieldset: 'process', - short: 'Deprecated identifier of the group of processes the process belongs to.', - type: 'long', - }, - 'process.parent.pid': { - dashed_name: 'process-parent-pid', - description: 'Process id.', - example: 4242, - flat_name: 'process.parent.pid', - format: 'string', - level: 'core', - name: 'pid', - normalize: [], - original_fieldset: 'process', - short: 'Process id.', - type: 'long', - }, - 'process.parent.real_group.id': { - dashed_name: 'process-parent-real-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.parent.real_group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.parent.real_group.name': { - dashed_name: 'process-parent-real-group-name', - description: 'Name of the group.', - flat_name: 'process.parent.real_group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.parent.real_user.id': { - dashed_name: 'process-parent-real-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.parent.real_user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.parent.real_user.name': { - dashed_name: 'process-parent-real-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.parent.real_user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.parent.real_user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.parent.saved_group.id': { - dashed_name: 'process-parent-saved-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.parent.saved_group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.parent.saved_group.name': { - dashed_name: 'process-parent-saved-group-name', - description: 'Name of the group.', - flat_name: 'process.parent.saved_group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.parent.saved_user.id': { - dashed_name: 'process-parent-saved-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.parent.saved_user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.parent.saved_user.name': { - dashed_name: 'process-parent-saved-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.parent.saved_user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.parent.saved_user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.parent.start': { - dashed_name: 'process-parent-start', - description: 'The time the process started.', - example: '2016-05-23T08:05:34.853Z', - flat_name: 'process.parent.start', - level: 'extended', - name: 'start', - normalize: [], - original_fieldset: 'process', - short: 'The time the process started.', - type: 'date', - }, - 'process.parent.supplemental_groups.id': { - dashed_name: 'process-parent-supplemental-groups-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.parent.supplemental_groups.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.parent.supplemental_groups.name': { - dashed_name: 'process-parent-supplemental-groups-name', - description: 'Name of the group.', - flat_name: 'process.parent.supplemental_groups.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.parent.thread.id': { - dashed_name: 'process-parent-thread-id', - description: 'Thread ID.', - example: 4242, - flat_name: 'process.parent.thread.id', - format: 'string', - level: 'extended', - name: 'thread.id', - normalize: [], - original_fieldset: 'process', - short: 'Thread ID.', - type: 'long', - }, - 'process.parent.thread.name': { - dashed_name: 'process-parent-thread-name', - description: 'Thread name.', - example: 'thread-0', - flat_name: 'process.parent.thread.name', - ignore_above: 1024, - level: 'extended', - name: 'thread.name', - normalize: [], - original_fieldset: 'process', - short: 'Thread name.', - type: 'keyword', - }, - 'process.parent.title': { - dashed_name: 'process-parent-title', - description: - 'Process title.\nThe proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened.', - flat_name: 'process.parent.title', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.parent.title.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'title', - normalize: [], - original_fieldset: 'process', - short: 'Process title.', - type: 'keyword', - }, - 'process.parent.tty': { - dashed_name: 'process-parent-tty', - description: - 'Information about the controlling TTY device. If set, the process belongs to an interactive session.', - flat_name: 'process.parent.tty', - level: 'extended', - name: 'tty', - normalize: [], - original_fieldset: 'process', - short: 'Information about the controlling TTY device.', - type: 'object', - }, - 'process.parent.tty.char_device.major': { - dashed_name: 'process-parent-tty-char-device-major', - description: - 'The major number identifies the driver associated with the device. The character device\'s major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.', - example: 4, - flat_name: 'process.parent.tty.char_device.major', - level: 'extended', - name: 'tty.char_device.major', - normalize: [], - original_fieldset: 'process', - short: "The TTY character device's major number.", - type: 'long', - }, - 'process.parent.tty.char_device.minor': { - dashed_name: 'process-parent-tty-char-device-minor', - description: - 'The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.', - example: 1, - flat_name: 'process.parent.tty.char_device.minor', - level: 'extended', - name: 'tty.char_device.minor', - normalize: [], - original_fieldset: 'process', - short: "The TTY character device's minor number.", - type: 'long', - }, - 'process.parent.uptime': { - dashed_name: 'process-parent-uptime', - description: 'Seconds the process has been up.', - example: 1325, - flat_name: 'process.parent.uptime', - level: 'extended', - name: 'uptime', - normalize: [], - original_fieldset: 'process', - short: 'Seconds the process has been up.', - type: 'long', - }, - 'process.parent.user.id': { - dashed_name: 'process-parent-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.parent.user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.parent.user.name': { - dashed_name: 'process-parent-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.parent.user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.parent.user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.parent.working_directory': { - dashed_name: 'process-parent-working-directory', - description: 'The working directory of the process.', - example: '/home/alice', - flat_name: 'process.parent.working_directory', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.parent.working_directory.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'working_directory', - normalize: [], - original_fieldset: 'process', - short: 'The working directory of the process.', - type: 'keyword', - }, - 'process.pe.architecture': { - dashed_name: 'process-pe-architecture', - description: 'CPU architecture target for the file.', - example: 'x64', - flat_name: 'process.pe.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - original_fieldset: 'pe', - short: 'CPU architecture target for the file.', - type: 'keyword', - }, - 'process.pe.company': { - dashed_name: 'process-pe-company', - description: 'Internal company name of the file, provided at compile-time.', - example: 'Microsoft Corporation', - flat_name: 'process.pe.company', - ignore_above: 1024, - level: 'extended', - name: 'company', - normalize: [], - original_fieldset: 'pe', - short: 'Internal company name of the file, provided at compile-time.', - type: 'keyword', - }, - 'process.pe.description': { - dashed_name: 'process-pe-description', - description: 'Internal description of the file, provided at compile-time.', - example: 'Paint', - flat_name: 'process.pe.description', - ignore_above: 1024, - level: 'extended', - name: 'description', - normalize: [], - original_fieldset: 'pe', - short: 'Internal description of the file, provided at compile-time.', - type: 'keyword', - }, - 'process.pe.file_version': { - dashed_name: 'process-pe-file-version', - description: 'Internal version of the file, provided at compile-time.', - example: '6.3.9600.17415', - flat_name: 'process.pe.file_version', - ignore_above: 1024, - level: 'extended', - name: 'file_version', - normalize: [], - original_fieldset: 'pe', - short: 'Process name.', - type: 'keyword', - }, - 'process.pe.imphash': { - dashed_name: 'process-pe-imphash', - description: - 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', - example: '0c6803c4e922103c4dca5963aad36ddf', - flat_name: 'process.pe.imphash', - ignore_above: 1024, - level: 'extended', - name: 'imphash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'process.pe.original_file_name': { - dashed_name: 'process-pe-original-file-name', - description: 'Internal name of the file, provided at compile-time.', - example: 'MSPAINT.EXE', - flat_name: 'process.pe.original_file_name', - ignore_above: 1024, - level: 'extended', - name: 'original_file_name', - normalize: [], - original_fieldset: 'pe', - short: 'Internal name of the file, provided at compile-time.', - type: 'keyword', - }, - 'process.pe.pehash': { - dashed_name: 'process-pe-pehash', - description: - 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', - example: '73ff189b63cd6be375a7ff25179a38d347651975', - flat_name: 'process.pe.pehash', - ignore_above: 1024, - level: 'extended', - name: 'pehash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the PE header and data from one or more PE sections.', - type: 'keyword', - }, - 'process.pe.product': { - dashed_name: 'process-pe-product', - description: 'Internal product name of the file, provided at compile-time.', - example: 'Microsoft® Windows® Operating System', - flat_name: 'process.pe.product', - ignore_above: 1024, - level: 'extended', - name: 'product', - normalize: [], - original_fieldset: 'pe', - short: 'Internal product name of the file, provided at compile-time.', - type: 'keyword', - }, - 'process.pgid': { - dashed_name: 'process-pgid', - description: - 'Deprecated for removal in next major version release. This field is superseded by `process.group_leader.pid`.\nIdentifier of the group of processes the process belongs to.', - flat_name: 'process.pgid', - format: 'string', - level: 'extended', - name: 'pgid', - normalize: [], - short: 'Deprecated identifier of the group of processes the process belongs to.', - type: 'long', - }, - 'process.pid': { - dashed_name: 'process-pid', - description: 'Process id.', - example: 4242, - flat_name: 'process.pid', - format: 'string', - level: 'core', - name: 'pid', - normalize: [], - short: 'Process id.', - type: 'long', - }, - 'process.previous.args': { - dashed_name: 'process-previous-args', - description: - 'Array of process arguments, starting with the absolute path to the executable.\nMay be filtered to protect sensitive information.', - example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]', - flat_name: 'process.previous.args', - ignore_above: 1024, - level: 'extended', - name: 'args', - normalize: ['array'], - original_fieldset: 'process', - short: 'Array of process arguments.', - type: 'keyword', - }, - 'process.previous.args_count': { - dashed_name: 'process-previous-args-count', - description: - 'Length of the process.args array.\nThis field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.', - example: 4, - flat_name: 'process.previous.args_count', - level: 'extended', - name: 'args_count', - normalize: [], - original_fieldset: 'process', - short: 'Length of the process.args array.', - type: 'long', - }, - 'process.previous.executable': { - dashed_name: 'process-previous-executable', - description: 'Absolute path to the process executable.', - example: '/usr/bin/ssh', - flat_name: 'process.previous.executable', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.previous.executable.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'executable', - normalize: [], - original_fieldset: 'process', - short: 'Absolute path to the process executable.', - type: 'keyword', - }, - 'process.real_group.id': { - dashed_name: 'process-real-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.real_group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.real_group.name': { - dashed_name: 'process-real-group-name', - description: 'Name of the group.', - flat_name: 'process.real_group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.real_user.id': { - dashed_name: 'process-real-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.real_user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.real_user.name': { - dashed_name: 'process-real-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.real_user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.real_user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.saved_group.id': { - dashed_name: 'process-saved-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.saved_group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.saved_group.name': { - dashed_name: 'process-saved-group-name', - description: 'Name of the group.', - flat_name: 'process.saved_group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.saved_user.id': { - dashed_name: 'process-saved-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.saved_user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.saved_user.name': { - dashed_name: 'process-saved-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.saved_user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.saved_user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.session_leader.args': { - dashed_name: 'process-session-leader-args', - description: - 'Array of process arguments, starting with the absolute path to the executable.\nMay be filtered to protect sensitive information.', - example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]', - flat_name: 'process.session_leader.args', - ignore_above: 1024, - level: 'extended', - name: 'args', - normalize: ['array'], - original_fieldset: 'process', - short: 'Array of process arguments.', - type: 'keyword', - }, - 'process.session_leader.args_count': { - dashed_name: 'process-session-leader-args-count', - description: - 'Length of the process.args array.\nThis field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.', - example: 4, - flat_name: 'process.session_leader.args_count', - level: 'extended', - name: 'args_count', - normalize: [], - original_fieldset: 'process', - short: 'Length of the process.args array.', - type: 'long', - }, - 'process.session_leader.command_line': { - dashed_name: 'process-session-leader-command-line', - description: - 'Full command line that started the process, including the absolute path to the executable, and all arguments.\nSome arguments may be filtered to protect sensitive information.', - example: '/usr/bin/ssh -l user 10.0.0.16', - flat_name: 'process.session_leader.command_line', - level: 'extended', - multi_fields: [ - { - flat_name: 'process.session_leader.command_line.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'command_line', - normalize: [], - original_fieldset: 'process', - short: 'Full command line that started the process.', - type: 'wildcard', - }, - 'process.session_leader.entity_id': { - dashed_name: 'process-session-leader-entity-id', - description: - 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', - example: 'c2c455d9f99375d', - flat_name: 'process.session_leader.entity_id', - ignore_above: 1024, - level: 'extended', - name: 'entity_id', - normalize: [], - original_fieldset: 'process', - short: 'Unique identifier for the process.', - type: 'keyword', - }, - 'process.session_leader.executable': { - dashed_name: 'process-session-leader-executable', - description: 'Absolute path to the process executable.', - example: '/usr/bin/ssh', - flat_name: 'process.session_leader.executable', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.session_leader.executable.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'executable', - normalize: [], - original_fieldset: 'process', - short: 'Absolute path to the process executable.', - type: 'keyword', - }, - 'process.session_leader.group.id': { - dashed_name: 'process-session-leader-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.session_leader.group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.session_leader.group.name': { - dashed_name: 'process-session-leader-group-name', - description: 'Name of the group.', - flat_name: 'process.session_leader.group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.session_leader.interactive': { - dashed_name: 'process-session-leader-interactive', - description: - 'Whether the process is connected to an interactive shell.\nProcess interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.\nNote: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.', - example: true, - flat_name: 'process.session_leader.interactive', - level: 'extended', - name: 'interactive', - normalize: [], - original_fieldset: 'process', - short: 'Whether the process is connected to an interactive shell.', - type: 'boolean', - }, - 'process.session_leader.name': { - dashed_name: 'process-session-leader-name', - description: 'Process name.\nSometimes called program name or similar.', - example: 'ssh', - flat_name: 'process.session_leader.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.session_leader.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'process', - short: 'Process name.', - type: 'keyword', - }, - 'process.session_leader.parent.entity_id': { - dashed_name: 'process-session-leader-parent-entity-id', - description: - 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', - example: 'c2c455d9f99375d', - flat_name: 'process.session_leader.parent.entity_id', - ignore_above: 1024, - level: 'extended', - name: 'entity_id', - normalize: [], - original_fieldset: 'process', - short: 'Unique identifier for the process.', - type: 'keyword', - }, - 'process.session_leader.parent.pid': { - dashed_name: 'process-session-leader-parent-pid', - description: 'Process id.', - example: 4242, - flat_name: 'process.session_leader.parent.pid', - format: 'string', - level: 'core', - name: 'pid', - normalize: [], - original_fieldset: 'process', - short: 'Process id.', - type: 'long', - }, - 'process.session_leader.parent.session_leader.entity_id': { - dashed_name: 'process-session-leader-parent-session-leader-entity-id', - description: - 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', - example: 'c2c455d9f99375d', - flat_name: 'process.session_leader.parent.session_leader.entity_id', - ignore_above: 1024, - level: 'extended', - name: 'entity_id', - normalize: [], - original_fieldset: 'process', - short: 'Unique identifier for the process.', - type: 'keyword', - }, - 'process.session_leader.parent.session_leader.pid': { - dashed_name: 'process-session-leader-parent-session-leader-pid', - description: 'Process id.', - example: 4242, - flat_name: 'process.session_leader.parent.session_leader.pid', - format: 'string', - level: 'core', - name: 'pid', - normalize: [], - original_fieldset: 'process', - short: 'Process id.', - type: 'long', - }, - 'process.session_leader.parent.session_leader.start': { - dashed_name: 'process-session-leader-parent-session-leader-start', - description: 'The time the process started.', - example: '2016-05-23T08:05:34.853Z', - flat_name: 'process.session_leader.parent.session_leader.start', - level: 'extended', - name: 'start', - normalize: [], - original_fieldset: 'process', - short: 'The time the process started.', - type: 'date', - }, - 'process.session_leader.parent.start': { - dashed_name: 'process-session-leader-parent-start', - description: 'The time the process started.', - example: '2016-05-23T08:05:34.853Z', - flat_name: 'process.session_leader.parent.start', - level: 'extended', - name: 'start', - normalize: [], - original_fieldset: 'process', - short: 'The time the process started.', - type: 'date', - }, - 'process.session_leader.pid': { - dashed_name: 'process-session-leader-pid', - description: 'Process id.', - example: 4242, - flat_name: 'process.session_leader.pid', - format: 'string', - level: 'core', - name: 'pid', - normalize: [], - original_fieldset: 'process', - short: 'Process id.', - type: 'long', - }, - 'process.session_leader.real_group.id': { - dashed_name: 'process-session-leader-real-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.session_leader.real_group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.session_leader.real_group.name': { - dashed_name: 'process-session-leader-real-group-name', - description: 'Name of the group.', - flat_name: 'process.session_leader.real_group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.session_leader.real_user.id': { - dashed_name: 'process-session-leader-real-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.session_leader.real_user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.session_leader.real_user.name': { - dashed_name: 'process-session-leader-real-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.session_leader.real_user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.session_leader.real_user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.session_leader.same_as_process': { - dashed_name: 'process-session-leader-same-as-process', - description: - "This boolean is used to identify if a leader process is the same as the top level process.\nFor example, if `process.group_leader.same_as_process = true`, it means the process event in question is the leader of its process group. Details under `process.*` like `pid` would be the same under `process.group_leader.*` The same applies for both `process.session_leader` and `process.entry_leader`.\nThis field exists to the benefit of EQL and other rule engines since it's not possible to compare equality between two fields in a single document. e.g `process.entity_id` = `process.group_leader.entity_id` (top level process is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` (top level process is the entry session leader)\nInstead these rules could be written like: `process.group_leader.same_as_process: true` OR `process.entry_leader.same_as_process: true`\nNote: This field is only set on `process.entry_leader`, `process.session_leader` and `process.group_leader`.", - example: true, - flat_name: 'process.session_leader.same_as_process', - level: 'extended', - name: 'same_as_process', - normalize: [], - original_fieldset: 'process', - short: - 'This boolean is used to identify if a leader process is the same as the top level process.', - type: 'boolean', - }, - 'process.session_leader.saved_group.id': { - dashed_name: 'process-session-leader-saved-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.session_leader.saved_group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.session_leader.saved_group.name': { - dashed_name: 'process-session-leader-saved-group-name', - description: 'Name of the group.', - flat_name: 'process.session_leader.saved_group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.session_leader.saved_user.id': { - dashed_name: 'process-session-leader-saved-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.session_leader.saved_user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.session_leader.saved_user.name': { - dashed_name: 'process-session-leader-saved-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.session_leader.saved_user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.session_leader.saved_user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.session_leader.start': { - dashed_name: 'process-session-leader-start', - description: 'The time the process started.', - example: '2016-05-23T08:05:34.853Z', - flat_name: 'process.session_leader.start', - level: 'extended', - name: 'start', - normalize: [], - original_fieldset: 'process', - short: 'The time the process started.', - type: 'date', - }, - 'process.session_leader.supplemental_groups.id': { - dashed_name: 'process-session-leader-supplemental-groups-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.session_leader.supplemental_groups.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.session_leader.supplemental_groups.name': { - dashed_name: 'process-session-leader-supplemental-groups-name', - description: 'Name of the group.', - flat_name: 'process.session_leader.supplemental_groups.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.session_leader.tty': { - dashed_name: 'process-session-leader-tty', - description: - 'Information about the controlling TTY device. If set, the process belongs to an interactive session.', - flat_name: 'process.session_leader.tty', - level: 'extended', - name: 'tty', - normalize: [], - original_fieldset: 'process', - short: 'Information about the controlling TTY device.', - type: 'object', - }, - 'process.session_leader.tty.char_device.major': { - dashed_name: 'process-session-leader-tty-char-device-major', - description: - 'The major number identifies the driver associated with the device. The character device\'s major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.', - example: 4, - flat_name: 'process.session_leader.tty.char_device.major', - level: 'extended', - name: 'tty.char_device.major', - normalize: [], - original_fieldset: 'process', - short: "The TTY character device's major number.", - type: 'long', - }, - 'process.session_leader.tty.char_device.minor': { - dashed_name: 'process-session-leader-tty-char-device-minor', - description: - 'The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.', - example: 1, - flat_name: 'process.session_leader.tty.char_device.minor', - level: 'extended', - name: 'tty.char_device.minor', - normalize: [], - original_fieldset: 'process', - short: "The TTY character device's minor number.", - type: 'long', - }, - 'process.session_leader.user.id': { - dashed_name: 'process-session-leader-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.session_leader.user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.session_leader.user.name': { - dashed_name: 'process-session-leader-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.session_leader.user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.session_leader.user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.session_leader.working_directory': { - dashed_name: 'process-session-leader-working-directory', - description: 'The working directory of the process.', - example: '/home/alice', - flat_name: 'process.session_leader.working_directory', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.session_leader.working_directory.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'working_directory', - normalize: [], - original_fieldset: 'process', - short: 'The working directory of the process.', - type: 'keyword', - }, - 'process.start': { - dashed_name: 'process-start', - description: 'The time the process started.', - example: '2016-05-23T08:05:34.853Z', - flat_name: 'process.start', - level: 'extended', - name: 'start', - normalize: [], - short: 'The time the process started.', - type: 'date', - }, - 'process.supplemental_groups.id': { - dashed_name: 'process-supplemental-groups-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'process.supplemental_groups.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'process.supplemental_groups.name': { - dashed_name: 'process-supplemental-groups-name', - description: 'Name of the group.', - flat_name: 'process.supplemental_groups.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.thread.id': { - dashed_name: 'process-thread-id', - description: 'Thread ID.', - example: 4242, - flat_name: 'process.thread.id', - format: 'string', - level: 'extended', - name: 'thread.id', - normalize: [], - short: 'Thread ID.', - type: 'long', - }, - 'process.thread.name': { - dashed_name: 'process-thread-name', - description: 'Thread name.', - example: 'thread-0', - flat_name: 'process.thread.name', - ignore_above: 1024, - level: 'extended', - name: 'thread.name', - normalize: [], - short: 'Thread name.', - type: 'keyword', - }, - 'process.title': { - dashed_name: 'process-title', - description: - 'Process title.\nThe proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened.', - flat_name: 'process.title', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.title.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'title', - normalize: [], - short: 'Process title.', - type: 'keyword', - }, - 'process.tty': { - dashed_name: 'process-tty', - description: - 'Information about the controlling TTY device. If set, the process belongs to an interactive session.', - flat_name: 'process.tty', - level: 'extended', - name: 'tty', - normalize: [], - short: 'Information about the controlling TTY device.', - type: 'object', - }, - 'process.tty.char_device.major': { - dashed_name: 'process-tty-char-device-major', - description: - 'The major number identifies the driver associated with the device. The character device\'s major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.', - example: 4, - flat_name: 'process.tty.char_device.major', - level: 'extended', - name: 'tty.char_device.major', - normalize: [], - short: "The TTY character device's major number.", - type: 'long', - }, - 'process.tty.char_device.minor': { - dashed_name: 'process-tty-char-device-minor', - description: - 'The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.', - example: 1, - flat_name: 'process.tty.char_device.minor', - level: 'extended', - name: 'tty.char_device.minor', - normalize: [], - short: "The TTY character device's minor number.", - type: 'long', - }, - 'process.tty.columns': { - beta: 'This field is beta and subject to change.', - dashed_name: 'process-tty-columns', - description: - "The number of character columns per line. e.g terminal width\nTerminal sizes can change, so this value reflects the maximum value for a given IO event. i.e. where event.action = 'text_output'", - example: 80, - flat_name: 'process.tty.columns', - level: 'extended', - name: 'tty.columns', - normalize: [], - short: 'The number of character columns per line. e.g terminal width', - type: 'long', - }, - 'process.tty.rows': { - beta: 'This field is beta and subject to change.', - dashed_name: 'process-tty-rows', - description: - "The number of character rows in the terminal. e.g terminal height\nTerminal sizes can change, so this value reflects the maximum value for a given IO event. i.e. where event.action = 'text_output'", - example: 24, - flat_name: 'process.tty.rows', - level: 'extended', - name: 'tty.rows', - normalize: [], - short: 'The number of character rows in the terminal. e.g terminal height', - type: 'long', - }, - 'process.uptime': { - dashed_name: 'process-uptime', - description: 'Seconds the process has been up.', - example: 1325, - flat_name: 'process.uptime', - level: 'extended', - name: 'uptime', - normalize: [], - short: 'Seconds the process has been up.', - type: 'long', - }, - 'process.user.id': { - dashed_name: 'process-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'process.user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'process.user.name': { - dashed_name: 'process-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'process.user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'process.user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'process.working_directory': { - dashed_name: 'process-working-directory', - description: 'The working directory of the process.', - example: '/home/alice', - flat_name: 'process.working_directory', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'process.working_directory.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'working_directory', - normalize: [], - short: 'The working directory of the process.', - type: 'keyword', - }, - }, - group: 2, - name: 'process', - nestings: [ - 'process.attested_groups', - 'process.attested_user', - 'process.code_signature', - 'process.elf', - 'process.entry_leader', - 'process.entry_leader.parent', - 'process.entry_leader.parent.session_leader', - 'process.entry_meta.source', - 'process.group', - 'process.group_leader', - 'process.hash', - 'process.parent', - 'process.parent.group_leader', - 'process.pe', - 'process.previous', - 'process.real_group', - 'process.real_user', - 'process.saved_group', - 'process.saved_user', - 'process.session_leader', - 'process.session_leader.parent', - 'process.session_leader.parent.session_leader', - 'process.supplemental_groups', - 'process.user', - ], - prefix: 'process.', - reusable: { - expected: [ - { - as: 'parent', - at: 'process', - full: 'process.parent', - short_override: 'Information about the parent process.', - }, - { - as: 'entry_leader', - at: 'process', - full: 'process.entry_leader', - short_override: - 'First process from terminal or remote access via SSH, SSM, etc OR a service directly started by the init process.', - }, - { - as: 'session_leader', - at: 'process', - full: 'process.session_leader', - short_override: - 'Often the same as entry_leader. When it differs, it represents a session started within another session. e.g. using tmux', - }, - { - as: 'group_leader', - at: 'process', - full: 'process.group_leader', - short_override: - 'Information about the process group leader. In some cases this may be the same as the top level process.', - }, - { - as: 'group_leader', - at: 'process.parent', - full: 'process.parent.group_leader', - short_override: - "Information about the parent's process group leader. Only pid, start and entity_id fields are set.", - }, - { - as: 'parent', - at: 'process.entry_leader', - full: 'process.entry_leader.parent', - short_override: - "Information about the entry leader's parent process. Only pid, start and entity_id fields are set.", - }, - { - as: 'parent', - at: 'process.session_leader', - full: 'process.session_leader.parent', - short_override: - "Information about the session leader's parent process. Only pid, start and entity_id fields are set.", - }, - { - as: 'session_leader', - at: 'process.entry_leader.parent', - full: 'process.entry_leader.parent.session_leader', - short_override: - 'Information about the parent session of the entry leader. Only pid, start and entity_id fields are set.', - }, - { - as: 'session_leader', - at: 'process.session_leader.parent', - full: 'process.session_leader.parent.session_leader', - short_override: - 'Information about the parent session of the session leader. Only pid, start and entity_id fields are set.', - }, - { - as: 'previous', - at: 'process', - full: 'process.previous', - normalize: ['array'], - short_override: - 'An array of previous executions for the process, including the initial fork. Only executable and args are set.', - }, - ], - top_level: true, - }, - reused_here: [ - { - full: 'process.group', - schema_name: 'group', - short: 'The effective group (egid).', - }, - { - full: 'process.real_group', - schema_name: 'group', - short: 'The real group (rgid).', - }, - { - full: 'process.saved_group', - schema_name: 'group', - short: 'The saved group (sgid).', - }, - { - full: 'process.supplemental_groups', - normalize: ['array'], - schema_name: 'group', - short: 'An array of supplemental groups.', - }, - { - beta: 'Reusing the `group` fields in this location is currently considered beta.', - full: 'process.attested_groups', - normalize: ['array'], - schema_name: 'group', - short: 'The externally attested groups based on an external source such as the Kube API.', - }, - { - full: 'process.hash', - schema_name: 'hash', - short: 'Hashes, usually file hashes.', - }, - { - full: 'process.pe', - schema_name: 'pe', - short: 'These fields contain Windows Portable Executable (PE) metadata.', - }, - { - full: 'process.code_signature', - schema_name: 'code_signature', - short: 'These fields contain information about binary code signatures.', - }, - { - beta: 'This field reuse is beta and subject to change.', - full: 'process.elf', - schema_name: 'elf', - short: 'These fields contain Linux Executable Linkable Format (ELF) metadata.', - }, - { - full: 'process.entry_meta.source', - schema_name: 'source', - short: 'Remote client information such as ip, port and geo location.', - }, - { - full: 'process.user', - schema_name: 'user', - short: 'The effective user (euid).', - }, - { - full: 'process.saved_user', - schema_name: 'user', - short: 'The saved user (suid).', - }, - { - full: 'process.real_user', - schema_name: 'user', - short: 'The real user (ruid). Identifies the real owner of the process.', - }, - { - beta: 'Reusing the `user` fields in this location is currently considered beta.', - full: 'process.attested_user', - schema_name: 'user', - short: 'The externally attested user based on an external source such as the Kube API.', - }, - { - full: 'process.parent', - schema_name: 'process', - short: 'Information about the parent process.', - }, - { - full: 'process.entry_leader', - schema_name: 'process', - short: - 'First process from terminal or remote access via SSH, SSM, etc OR a service directly started by the init process.', - }, - { - full: 'process.session_leader', - schema_name: 'process', - short: - 'Often the same as entry_leader. When it differs, it represents a session started within another session. e.g. using tmux', - }, - { - full: 'process.group_leader', - schema_name: 'process', - short: - 'Information about the process group leader. In some cases this may be the same as the top level process.', - }, - { - full: 'process.parent.group_leader', - schema_name: 'process', - short: - "Information about the parent's process group leader. Only pid, start and entity_id fields are set.", - }, - { - full: 'process.entry_leader.parent', - schema_name: 'process', - short: - "Information about the entry leader's parent process. Only pid, start and entity_id fields are set.", - }, - { - full: 'process.session_leader.parent', - schema_name: 'process', - short: - "Information about the session leader's parent process. Only pid, start and entity_id fields are set.", - }, - { - full: 'process.entry_leader.parent.session_leader', - schema_name: 'process', - short: - 'Information about the parent session of the entry leader. Only pid, start and entity_id fields are set.', - }, - { - full: 'process.session_leader.parent.session_leader', - schema_name: 'process', - short: - 'Information about the parent session of the session leader. Only pid, start and entity_id fields are set.', - }, - { - full: 'process.previous', - normalize: ['array'], - schema_name: 'process', - short: - 'An array of previous executions for the process, including the initial fork. Only executable and args are set.', - }, - ], - short: 'These fields contain information about a process.', - title: 'Process', - type: 'group', - }, - registry: { - description: 'Fields related to Windows Registry operations.', - fields: { - 'registry.data.bytes': { - dashed_name: 'registry-data-bytes', - description: - 'Original bytes written with base64 encoding.\nFor Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values.', - example: 'ZQBuAC0AVQBTAAAAZQBuAAAAAAA=', - flat_name: 'registry.data.bytes', - ignore_above: 1024, - level: 'extended', - name: 'data.bytes', - normalize: [], - short: 'Original bytes written with base64 encoding.', - type: 'keyword', - }, - 'registry.data.strings': { - dashed_name: 'registry-data-strings', - description: - 'Content when writing string types.\nPopulated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`).', - example: '["C:\\rta\\red_ttp\\bin\\myapp.exe"]', - flat_name: 'registry.data.strings', - level: 'core', - name: 'data.strings', - normalize: ['array'], - short: 'List of strings representing what was written to the registry.', - type: 'wildcard', - }, - 'registry.data.type': { - dashed_name: 'registry-data-type', - description: 'Standard registry type for encoding contents', - example: 'REG_SZ', - flat_name: 'registry.data.type', - ignore_above: 1024, - level: 'core', - name: 'data.type', - normalize: [], - short: 'Standard registry type for encoding contents', - type: 'keyword', - }, - 'registry.hive': { - dashed_name: 'registry-hive', - description: 'Abbreviated name for the hive.', - example: 'HKLM', - flat_name: 'registry.hive', - ignore_above: 1024, - level: 'core', - name: 'hive', - normalize: [], - short: 'Abbreviated name for the hive.', - type: 'keyword', - }, - 'registry.key': { - dashed_name: 'registry-key', - description: 'Hive-relative path of keys.', - example: - 'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\winword.exe', - flat_name: 'registry.key', - ignore_above: 1024, - level: 'core', - name: 'key', - normalize: [], - short: 'Hive-relative path of keys.', - type: 'keyword', - }, - 'registry.path': { - dashed_name: 'registry-path', - description: 'Full path, including hive, key and value', - example: - 'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\winword.exe\\Debugger', - flat_name: 'registry.path', - ignore_above: 1024, - level: 'core', - name: 'path', - normalize: [], - short: 'Full path, including hive, key and value', - type: 'keyword', - }, - 'registry.value': { - dashed_name: 'registry-value', - description: 'Name of the value written.', - example: 'Debugger', - flat_name: 'registry.value', - ignore_above: 1024, - level: 'core', - name: 'value', - normalize: [], - short: 'Name of the value written.', - type: 'keyword', - }, - }, - group: 2, - name: 'registry', - prefix: 'registry.', - reusable: { - expected: [ - { - as: 'registry', - at: 'threat.indicator', - full: 'threat.indicator.registry', - }, - { - as: 'registry', - at: 'threat.enrichments.indicator', - full: 'threat.enrichments.indicator.registry', - }, - ], - top_level: true, - }, - short: 'Fields related to Windows Registry operations.', - title: 'Registry', - type: 'group', - }, - related: { - description: - 'This field set is meant to facilitate pivoting around a piece of data.\nSome pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`.\nA concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:192.0.2.15`.', - fields: { - 'related.hash': { - dashed_name: 'related-hash', - description: - "All the hashes seen on your event. Populating this field, then using it to search for hashes can help in situations where you're unsure what the hash algorithm is (and therefore which key name to search).", - flat_name: 'related.hash', - ignore_above: 1024, - level: 'extended', - name: 'hash', - normalize: ['array'], - short: 'All the hashes seen on your event.', - type: 'keyword', - }, - 'related.hosts': { - dashed_name: 'related-hosts', - description: - 'All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases.', - flat_name: 'related.hosts', - ignore_above: 1024, - level: 'extended', - name: 'hosts', - normalize: ['array'], - short: 'All the host identifiers seen on your event.', - type: 'keyword', - }, - 'related.ip': { - dashed_name: 'related-ip', - description: 'All of the IPs seen on your event.', - flat_name: 'related.ip', - level: 'extended', - name: 'ip', - normalize: ['array'], - short: 'All of the IPs seen on your event.', - type: 'ip', - }, - 'related.user': { - dashed_name: 'related-user', - description: 'All the user names or other user identifiers seen on the event.', - flat_name: 'related.user', - ignore_above: 1024, - level: 'extended', - name: 'user', - normalize: ['array'], - short: 'All the user names or other user identifiers seen on the event.', - type: 'keyword', - }, - }, - group: 2, - name: 'related', - prefix: 'related.', - short: 'Fields meant to facilitate pivoting around a piece of data.', - title: 'Related', - type: 'group', - }, - risk: { - beta: 'These fields are in beta and are subject to change.', - description: - 'Fields for describing risk score and risk level of entities such as hosts and users. These fields are not allowed to be nested under `event.*`. Please continue to use `event.risk_score` and `event.risk_score_norm` for event risk.', - fields: { - 'risk.calculated_level': { - dashed_name: 'risk-calculated-level', - description: - 'A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.', - example: 'High', - flat_name: 'risk.calculated_level', - ignore_above: 1024, - level: 'extended', - name: 'calculated_level', - normalize: [], - short: - 'A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.', - type: 'keyword', - }, - 'risk.calculated_score': { - dashed_name: 'risk-calculated-score', - description: - 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.', - example: 880.73, - flat_name: 'risk.calculated_score', - level: 'extended', - name: 'calculated_score', - normalize: [], - short: - 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.', - type: 'float', - }, - 'risk.calculated_score_norm': { - dashed_name: 'risk-calculated-score-norm', - description: - 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring, and normalized to a range of 0 to 100.', - example: 88.73, - flat_name: 'risk.calculated_score_norm', - level: 'extended', - name: 'calculated_score_norm', - normalize: [], - short: 'A normalized risk score calculated by an internal system.', - type: 'float', - }, - 'risk.static_level': { - dashed_name: 'risk-static-level', - description: - 'A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.', - example: 'High', - flat_name: 'risk.static_level', - ignore_above: 1024, - level: 'extended', - name: 'static_level', - normalize: [], - short: - 'A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.', - type: 'keyword', - }, - 'risk.static_score': { - dashed_name: 'risk-static-score', - description: - 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.', - example: 830, - flat_name: 'risk.static_score', - level: 'extended', - name: 'static_score', - normalize: [], - short: - 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.', - type: 'float', - }, - 'risk.static_score_norm': { - dashed_name: 'risk-static-score-norm', - description: - 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform, and normalized to a range of 0 to 100.', - example: 83, - flat_name: 'risk.static_score_norm', - level: 'extended', - name: 'static_score_norm', - normalize: [], - short: 'A normalized risk score calculated by an external system.', - type: 'float', - }, - }, - group: 2, - name: 'risk', - prefix: 'risk.', - reusable: { - expected: [ - { as: 'risk', at: 'host', full: 'host.risk' }, - { as: 'risk', at: 'user', full: 'user.risk' }, - ], - top_level: false, - }, - short: 'Fields for describing risk score and level.', - title: 'Risk information', - type: 'group', - }, - rule: { - description: - 'Rule fields are used to capture the specifics of any observer or agent rules that generate alerts or other notable events.\nExamples of data sources that would populate the rule fields include: network admission control platforms, network or host IDS/IPS, network firewalls, web application firewalls, url filters, endpoint detection and response (EDR) systems, etc.', - fields: { - 'rule.author': { - dashed_name: 'rule-author', - description: - 'Name, organization, or pseudonym of the author or authors who created the rule used to generate this event.', - example: '["Star-Lord"]', - flat_name: 'rule.author', - ignore_above: 1024, - level: 'extended', - name: 'author', - normalize: ['array'], - short: 'Rule author', - type: 'keyword', - }, - 'rule.category': { - dashed_name: 'rule-category', - description: - 'A categorization value keyword used by the entity using the rule for detection of this event.', - example: 'Attempted Information Leak', - flat_name: 'rule.category', - ignore_above: 1024, - level: 'extended', - name: 'category', - normalize: [], - short: 'Rule category', - type: 'keyword', - }, - 'rule.description': { - dashed_name: 'rule-description', - description: 'The description of the rule generating the event.', - example: 'Block requests to public DNS over HTTPS / TLS protocols', - flat_name: 'rule.description', - ignore_above: 1024, - level: 'extended', - name: 'description', - normalize: [], - short: 'Rule description', - type: 'keyword', - }, - 'rule.id': { - dashed_name: 'rule-id', - description: - 'A rule ID that is unique within the scope of an agent, observer, or other entity using the rule for detection of this event.', - example: 101, - flat_name: 'rule.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - short: 'Rule ID', - type: 'keyword', - }, - 'rule.license': { - dashed_name: 'rule-license', - description: - 'Name of the license under which the rule used to generate this event is made available.', - example: 'Apache 2.0', - flat_name: 'rule.license', - ignore_above: 1024, - level: 'extended', - name: 'license', - normalize: [], - short: 'Rule license', - type: 'keyword', - }, - 'rule.name': { - dashed_name: 'rule-name', - description: 'The name of the rule or signature generating the event.', - example: 'BLOCK_DNS_over_TLS', - flat_name: 'rule.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'Rule name', - type: 'keyword', - }, - 'rule.reference': { - dashed_name: 'rule-reference', - description: - "Reference URL to additional information about the rule used to generate this event.\nThe URL can point to the vendor's documentation about the rule. If that's not available, it can also be a link to a more general page describing this type of alert.", - example: 'https://en.wikipedia.org/wiki/DNS_over_TLS', - flat_name: 'rule.reference', - ignore_above: 1024, - level: 'extended', - name: 'reference', - normalize: [], - short: 'Rule reference URL', - type: 'keyword', - }, - 'rule.ruleset': { - dashed_name: 'rule-ruleset', - description: - 'Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member.', - example: 'Standard_Protocol_Filters', - flat_name: 'rule.ruleset', - ignore_above: 1024, - level: 'extended', - name: 'ruleset', - normalize: [], - short: 'Rule ruleset', - type: 'keyword', - }, - 'rule.uuid': { - dashed_name: 'rule-uuid', - description: - 'A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event.', - example: 1100110011, - flat_name: 'rule.uuid', - ignore_above: 1024, - level: 'extended', - name: 'uuid', - normalize: [], - short: 'Rule UUID', - type: 'keyword', - }, - 'rule.version': { - dashed_name: 'rule-version', - description: 'The version / revision of the rule being used for analysis.', - example: 1.1, - flat_name: 'rule.version', - ignore_above: 1024, - level: 'extended', - name: 'version', - normalize: [], - short: 'Rule version', - type: 'keyword', - }, - }, - group: 2, - name: 'rule', - prefix: 'rule.', - short: 'Fields to capture details about rules used to generate alerts or other notable events.', - title: 'Rule', - type: 'group', - }, - server: { - description: - 'A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records.\nFor TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events.\nClient / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately.', - fields: { - 'server.address': { - dashed_name: 'server-address', - description: - 'Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field.\nThen it should be duplicated to `.ip` or `.domain`, depending on which one it is.', - flat_name: 'server.address', - ignore_above: 1024, - level: 'extended', - name: 'address', - normalize: [], - short: 'Server network address.', - type: 'keyword', - }, - 'server.as.number': { - dashed_name: 'server-as-number', - description: - 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', - example: 15169, - flat_name: 'server.as.number', - level: 'extended', - name: 'number', - normalize: [], - original_fieldset: 'as', - short: 'Unique number allocated to the autonomous system.', - type: 'long', - }, - 'server.as.organization.name': { - dashed_name: 'server-as-organization-name', - description: 'Organization name.', - example: 'Google LLC', - flat_name: 'server.as.organization.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'server.as.organization.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'organization.name', - normalize: [], - original_fieldset: 'as', - short: 'Organization name.', - type: 'keyword', - }, - 'server.bytes': { - dashed_name: 'server-bytes', - description: 'Bytes sent from the server to the client.', - example: 184, - flat_name: 'server.bytes', - format: 'bytes', - level: 'core', - name: 'bytes', - normalize: [], - short: 'Bytes sent from the server to the client.', - type: 'long', - }, - 'server.domain': { - dashed_name: 'server-domain', - description: - 'The domain name of the server system.\nThis value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.', - example: 'foo.example.com', - flat_name: 'server.domain', - ignore_above: 1024, - level: 'core', - name: 'domain', - normalize: [], - short: 'The domain name of the server.', - type: 'keyword', - }, - 'server.geo.city_name': { - dashed_name: 'server-geo-city-name', - description: 'City name.', - example: 'Montreal', - flat_name: 'server.geo.city_name', - ignore_above: 1024, - level: 'core', - name: 'city_name', - normalize: [], - original_fieldset: 'geo', - short: 'City name.', - type: 'keyword', - }, - 'server.geo.continent_code': { - dashed_name: 'server-geo-continent-code', - description: "Two-letter code representing continent's name.", - example: 'NA', - flat_name: 'server.geo.continent_code', - ignore_above: 1024, - level: 'core', - name: 'continent_code', - normalize: [], - original_fieldset: 'geo', - short: 'Continent code.', - type: 'keyword', - }, - 'server.geo.continent_name': { - dashed_name: 'server-geo-continent-name', - description: 'Name of the continent.', - example: 'North America', - flat_name: 'server.geo.continent_name', - ignore_above: 1024, - level: 'core', - name: 'continent_name', - normalize: [], - original_fieldset: 'geo', - short: 'Name of the continent.', - type: 'keyword', - }, - 'server.geo.country_iso_code': { - dashed_name: 'server-geo-country-iso-code', - description: 'Country ISO code.', - example: 'CA', - flat_name: 'server.geo.country_iso_code', - ignore_above: 1024, - level: 'core', - name: 'country_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Country ISO code.', - type: 'keyword', - }, - 'server.geo.country_name': { - dashed_name: 'server-geo-country-name', - description: 'Country name.', - example: 'Canada', - flat_name: 'server.geo.country_name', - ignore_above: 1024, - level: 'core', - name: 'country_name', - normalize: [], - original_fieldset: 'geo', - short: 'Country name.', - type: 'keyword', - }, - 'server.geo.location': { - dashed_name: 'server-geo-location', - description: 'Longitude and latitude.', - example: '{ "lon": -73.614830, "lat": 45.505918 }', - flat_name: 'server.geo.location', - level: 'core', - name: 'location', - normalize: [], - original_fieldset: 'geo', - short: 'Longitude and latitude.', - type: 'geo_point', - }, - 'server.geo.name': { - dashed_name: 'server-geo-name', - description: - 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', - example: 'boston-dc', - flat_name: 'server.geo.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'geo', - short: 'User-defined description of a location.', - type: 'keyword', - }, - 'server.geo.postal_code': { - dashed_name: 'server-geo-postal-code', - description: - 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', - example: 94040, - flat_name: 'server.geo.postal_code', - ignore_above: 1024, - level: 'core', - name: 'postal_code', - normalize: [], - original_fieldset: 'geo', - short: 'Postal code.', - type: 'keyword', - }, - 'server.geo.region_iso_code': { - dashed_name: 'server-geo-region-iso-code', - description: 'Region ISO code.', - example: 'CA-QC', - flat_name: 'server.geo.region_iso_code', - ignore_above: 1024, - level: 'core', - name: 'region_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Region ISO code.', - type: 'keyword', - }, - 'server.geo.region_name': { - dashed_name: 'server-geo-region-name', - description: 'Region name.', - example: 'Quebec', - flat_name: 'server.geo.region_name', - ignore_above: 1024, - level: 'core', - name: 'region_name', - normalize: [], - original_fieldset: 'geo', - short: 'Region name.', - type: 'keyword', - }, - 'server.geo.timezone': { - dashed_name: 'server-geo-timezone', - description: 'The time zone of the location, such as IANA time zone name.', - example: 'America/Argentina/Buenos_Aires', - flat_name: 'server.geo.timezone', - ignore_above: 1024, - level: 'core', - name: 'timezone', - normalize: [], - original_fieldset: 'geo', - short: 'Time zone.', - type: 'keyword', - }, - 'server.ip': { - dashed_name: 'server-ip', - description: 'IP address of the server (IPv4 or IPv6).', - flat_name: 'server.ip', - level: 'core', - name: 'ip', - normalize: [], - short: 'IP address of the server.', - type: 'ip', - }, - 'server.mac': { - dashed_name: 'server-mac', - description: - 'MAC address of the server.\nThe notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.', - example: '00-00-5E-00-53-23', - flat_name: 'server.mac', - ignore_above: 1024, - level: 'core', - name: 'mac', - normalize: [], - pattern: '^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$', - short: 'MAC address of the server.', - type: 'keyword', - }, - 'server.nat.ip': { - dashed_name: 'server-nat-ip', - description: - 'Translated ip of destination based NAT sessions (e.g. internet to private DMZ)\nTypically used with load balancers, firewalls, or routers.', - flat_name: 'server.nat.ip', - level: 'extended', - name: 'nat.ip', - normalize: [], - short: 'Server NAT ip', - type: 'ip', - }, - 'server.nat.port': { - dashed_name: 'server-nat-port', - description: - 'Translated port of destination based NAT sessions (e.g. internet to private DMZ)\nTypically used with load balancers, firewalls, or routers.', - flat_name: 'server.nat.port', - format: 'string', - level: 'extended', - name: 'nat.port', - normalize: [], - short: 'Server NAT port', - type: 'long', - }, - 'server.packets': { - dashed_name: 'server-packets', - description: 'Packets sent from the server to the client.', - example: 12, - flat_name: 'server.packets', - level: 'core', - name: 'packets', - normalize: [], - short: 'Packets sent from the server to the client.', - type: 'long', - }, - 'server.port': { - dashed_name: 'server-port', - description: 'Port of the server.', - flat_name: 'server.port', - format: 'string', - level: 'core', - name: 'port', - normalize: [], - short: 'Port of the server.', - type: 'long', - }, - 'server.registered_domain': { - dashed_name: 'server-registered-domain', - description: - 'The highest registered server domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', - example: 'example.com', - flat_name: 'server.registered_domain', - ignore_above: 1024, - level: 'extended', - name: 'registered_domain', - normalize: [], - short: 'The highest registered server domain, stripped of the subdomain.', - type: 'keyword', - }, - 'server.subdomain': { - dashed_name: 'server-subdomain', - description: - 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', - example: 'east', - flat_name: 'server.subdomain', - ignore_above: 1024, - level: 'extended', - name: 'subdomain', - normalize: [], - short: 'The subdomain of the domain.', - type: 'keyword', - }, - 'server.top_level_domain': { - dashed_name: 'server-top-level-domain', - description: - 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', - example: 'co.uk', - flat_name: 'server.top_level_domain', - ignore_above: 1024, - level: 'extended', - name: 'top_level_domain', - normalize: [], - short: 'The effective top level domain (com, org, net, co.uk).', - type: 'keyword', - }, - 'server.user.domain': { - dashed_name: 'server-user-domain', - description: - 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'server.user.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'user', - short: 'Name of the directory the user is a member of.', - type: 'keyword', - }, - 'server.user.email': { - dashed_name: 'server-user-email', - description: 'User email address.', - flat_name: 'server.user.email', - ignore_above: 1024, - level: 'extended', - name: 'email', - normalize: [], - original_fieldset: 'user', - short: 'User email address.', - type: 'keyword', - }, - 'server.user.full_name': { - dashed_name: 'server-user-full-name', - description: "User's full name, if available.", - example: 'Albert Einstein', - flat_name: 'server.user.full_name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'server.user.full_name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full_name', - normalize: [], - original_fieldset: 'user', - short: "User's full name, if available.", - type: 'keyword', - }, - 'server.user.group.domain': { - dashed_name: 'server-user-group-domain', - description: - 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'server.user.group.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'group', - short: 'Name of the directory the group is a member of.', - type: 'keyword', - }, - 'server.user.group.id': { - dashed_name: 'server-user-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'server.user.group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'server.user.group.name': { - dashed_name: 'server-user-group-name', - description: 'Name of the group.', - flat_name: 'server.user.group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'server.user.hash': { - dashed_name: 'server-user-hash', - description: - 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', - flat_name: 'server.user.hash', - ignore_above: 1024, - level: 'extended', - name: 'hash', - normalize: [], - original_fieldset: 'user', - short: 'Unique user hash to correlate information for a user in anonymized form.', - type: 'keyword', - }, - 'server.user.id': { - dashed_name: 'server-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'server.user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'server.user.name': { - dashed_name: 'server-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'server.user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'server.user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'server.user.roles': { - dashed_name: 'server-user-roles', - description: 'Array of user roles at the time of the event.', - example: '["kibana_admin", "reporting_user"]', - flat_name: 'server.user.roles', - ignore_above: 1024, - level: 'extended', - name: 'roles', - normalize: ['array'], - original_fieldset: 'user', - short: 'Array of user roles at the time of the event.', - type: 'keyword', - }, - }, - group: 2, - name: 'server', - nestings: ['server.as', 'server.geo', 'server.user'], - prefix: 'server.', - reused_here: [ - { - full: 'server.as', - schema_name: 'as', - short: 'Fields describing an Autonomous System (Internet routing prefix).', - }, - { - full: 'server.geo', - schema_name: 'geo', - short: 'Fields describing a location.', - }, - { - full: 'server.user', - schema_name: 'user', - short: 'Fields to describe the user relevant to the event.', - }, - ], - short: 'Fields about the server side of a network connection, used with client.', - title: 'Server', - type: 'group', - }, - service: { - description: - 'The service fields describe the service for or from which the data was collected.\nThese fields help you find and correlate logs for a specific service and version.', - fields: { - 'service.address': { - dashed_name: 'service-address', - description: - 'Address where data about this service was collected from.\nThis should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets).', - example: '172.26.0.2:5432', - flat_name: 'service.address', - ignore_above: 1024, - level: 'extended', - name: 'address', - normalize: [], - short: 'Address of this service.', - type: 'keyword', - }, - 'service.environment': { - beta: 'This field is beta and subject to change.', - dashed_name: 'service-environment', - description: - 'Identifies the environment where the service is running.\nIf the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment.', - example: 'production', - flat_name: 'service.environment', - ignore_above: 1024, - level: 'extended', - name: 'environment', - normalize: [], - short: 'Environment of the service.', - type: 'keyword', - }, - 'service.ephemeral_id': { - dashed_name: 'service-ephemeral-id', - description: - 'Ephemeral identifier of this service (if one exists).\nThis id normally changes across restarts, but `service.id` does not.', - example: '8a4f500f', - flat_name: 'service.ephemeral_id', - ignore_above: 1024, - level: 'extended', - name: 'ephemeral_id', - normalize: [], - short: 'Ephemeral identifier of this service.', - type: 'keyword', - }, - 'service.id': { - dashed_name: 'service-id', - description: - 'Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes.\nThis id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event.\nNote that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead.', - example: 'd37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6', - flat_name: 'service.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - short: 'Unique identifier of the running service.', - type: 'keyword', - }, - 'service.name': { - dashed_name: 'service-name', - description: - 'Name of the service data is collected from.\nThe name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name.\nIn the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified.', - example: 'elasticsearch-metrics', - flat_name: 'service.name', - ignore_above: 1024, - level: 'core', - name: 'name', - normalize: [], - short: 'Name of the service.', - type: 'keyword', - }, - 'service.node.name': { - dashed_name: 'service-node-name', - description: - "Name of a service node.\nThis allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service.\nIn the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set.", - example: 'instance-0000000016', - flat_name: 'service.node.name', - ignore_above: 1024, - level: 'extended', - name: 'node.name', - normalize: [], - short: 'Name of the service node.', - type: 'keyword', - }, - 'service.node.role': { - dashed_name: 'service-node-role', - description: - 'Deprecated for removal in next major version release. This field will be superseded by `node.roles`.\nRole of a service node.\nThis allows for distinction between different running roles of the same service.\nIn the case of Kibana, the `service.node.role` could be `ui` or `background_tasks`.\nIn the case of Elasticsearch, the `service.node.role` could be `master` or `data`.\nOther services could use this to distinguish between a `web` and `worker` role running as part of the service.', - example: 'background_tasks', - flat_name: 'service.node.role', - ignore_above: 1024, - level: 'extended', - name: 'node.role', - normalize: [], - short: 'Deprecated role (singular) of the service node.', - type: 'keyword', - }, - 'service.node.roles': { - dashed_name: 'service-node-roles', - description: - 'Roles of a service node.\nThis allows for distinction between different running roles of the same service.\nIn the case of Kibana, the `service.node.role` could be `ui` or `background_tasks` or both.\nIn the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both.\nOther services could use this to distinguish between a `web` and `worker` role running as part of the service.', - example: '["ui", "background_tasks"]', - flat_name: 'service.node.roles', - ignore_above: 1024, - level: 'extended', - name: 'node.roles', - normalize: ['array'], - short: 'Roles of the service node.', - type: 'keyword', - }, - 'service.origin.address': { - dashed_name: 'service-origin-address', - description: - 'Address where data about this service was collected from.\nThis should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets).', - example: '172.26.0.2:5432', - flat_name: 'service.origin.address', - ignore_above: 1024, - level: 'extended', - name: 'address', - normalize: [], - original_fieldset: 'service', - short: 'Address of this service.', - type: 'keyword', - }, - 'service.origin.environment': { - beta: 'This field is beta and subject to change.', - dashed_name: 'service-origin-environment', - description: - 'Identifies the environment where the service is running.\nIf the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment.', - example: 'production', - flat_name: 'service.origin.environment', - ignore_above: 1024, - level: 'extended', - name: 'environment', - normalize: [], - original_fieldset: 'service', - short: 'Environment of the service.', - type: 'keyword', - }, - 'service.origin.ephemeral_id': { - dashed_name: 'service-origin-ephemeral-id', - description: - 'Ephemeral identifier of this service (if one exists).\nThis id normally changes across restarts, but `service.id` does not.', - example: '8a4f500f', - flat_name: 'service.origin.ephemeral_id', - ignore_above: 1024, - level: 'extended', - name: 'ephemeral_id', - normalize: [], - original_fieldset: 'service', - short: 'Ephemeral identifier of this service.', - type: 'keyword', - }, - 'service.origin.id': { - dashed_name: 'service-origin-id', - description: - 'Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes.\nThis id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event.\nNote that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead.', - example: 'd37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6', - flat_name: 'service.origin.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'service', - short: 'Unique identifier of the running service.', - type: 'keyword', - }, - 'service.origin.name': { - dashed_name: 'service-origin-name', - description: - 'Name of the service data is collected from.\nThe name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name.\nIn the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified.', - example: 'elasticsearch-metrics', - flat_name: 'service.origin.name', - ignore_above: 1024, - level: 'core', - name: 'name', - normalize: [], - original_fieldset: 'service', - short: 'Name of the service.', - type: 'keyword', - }, - 'service.origin.node.name': { - dashed_name: 'service-origin-node-name', - description: - "Name of a service node.\nThis allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service.\nIn the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set.", - example: 'instance-0000000016', - flat_name: 'service.origin.node.name', - ignore_above: 1024, - level: 'extended', - name: 'node.name', - normalize: [], - original_fieldset: 'service', - short: 'Name of the service node.', - type: 'keyword', - }, - 'service.origin.node.role': { - dashed_name: 'service-origin-node-role', - description: - 'Deprecated for removal in next major version release. This field will be superseded by `node.roles`.\nRole of a service node.\nThis allows for distinction between different running roles of the same service.\nIn the case of Kibana, the `service.node.role` could be `ui` or `background_tasks`.\nIn the case of Elasticsearch, the `service.node.role` could be `master` or `data`.\nOther services could use this to distinguish between a `web` and `worker` role running as part of the service.', - example: 'background_tasks', - flat_name: 'service.origin.node.role', - ignore_above: 1024, - level: 'extended', - name: 'node.role', - normalize: [], - original_fieldset: 'service', - short: 'Deprecated role (singular) of the service node.', - type: 'keyword', - }, - 'service.origin.node.roles': { - dashed_name: 'service-origin-node-roles', - description: - 'Roles of a service node.\nThis allows for distinction between different running roles of the same service.\nIn the case of Kibana, the `service.node.role` could be `ui` or `background_tasks` or both.\nIn the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both.\nOther services could use this to distinguish between a `web` and `worker` role running as part of the service.', - example: '["ui", "background_tasks"]', - flat_name: 'service.origin.node.roles', - ignore_above: 1024, - level: 'extended', - name: 'node.roles', - normalize: ['array'], - original_fieldset: 'service', - short: 'Roles of the service node.', - type: 'keyword', - }, - 'service.origin.state': { - dashed_name: 'service-origin-state', - description: 'Current state of the service.', - flat_name: 'service.origin.state', - ignore_above: 1024, - level: 'core', - name: 'state', - normalize: [], - original_fieldset: 'service', - short: 'Current state of the service.', - type: 'keyword', - }, - 'service.origin.type': { - dashed_name: 'service-origin-type', - description: - 'The type of the service data is collected from.\nThe type can be used to group and correlate logs and metrics from one service type.\nExample: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`.', - example: 'elasticsearch', - flat_name: 'service.origin.type', - ignore_above: 1024, - level: 'core', - name: 'type', - normalize: [], - original_fieldset: 'service', - short: 'The type of the service.', - type: 'keyword', - }, - 'service.origin.version': { - dashed_name: 'service-origin-version', - description: - 'Version of the service the data was collected from.\nThis allows to look at a data set only for a specific version of a service.', - example: '3.2.4', - flat_name: 'service.origin.version', - ignore_above: 1024, - level: 'core', - name: 'version', - normalize: [], - original_fieldset: 'service', - short: 'Version of the service.', - type: 'keyword', - }, - 'service.state': { - dashed_name: 'service-state', - description: 'Current state of the service.', - flat_name: 'service.state', - ignore_above: 1024, - level: 'core', - name: 'state', - normalize: [], - short: 'Current state of the service.', - type: 'keyword', - }, - 'service.target.address': { - dashed_name: 'service-target-address', - description: - 'Address where data about this service was collected from.\nThis should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets).', - example: '172.26.0.2:5432', - flat_name: 'service.target.address', - ignore_above: 1024, - level: 'extended', - name: 'address', - normalize: [], - original_fieldset: 'service', - short: 'Address of this service.', - type: 'keyword', - }, - 'service.target.environment': { - beta: 'This field is beta and subject to change.', - dashed_name: 'service-target-environment', - description: - 'Identifies the environment where the service is running.\nIf the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment.', - example: 'production', - flat_name: 'service.target.environment', - ignore_above: 1024, - level: 'extended', - name: 'environment', - normalize: [], - original_fieldset: 'service', - short: 'Environment of the service.', - type: 'keyword', - }, - 'service.target.ephemeral_id': { - dashed_name: 'service-target-ephemeral-id', - description: - 'Ephemeral identifier of this service (if one exists).\nThis id normally changes across restarts, but `service.id` does not.', - example: '8a4f500f', - flat_name: 'service.target.ephemeral_id', - ignore_above: 1024, - level: 'extended', - name: 'ephemeral_id', - normalize: [], - original_fieldset: 'service', - short: 'Ephemeral identifier of this service.', - type: 'keyword', - }, - 'service.target.id': { - dashed_name: 'service-target-id', - description: - 'Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes.\nThis id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event.\nNote that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead.', - example: 'd37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6', - flat_name: 'service.target.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'service', - short: 'Unique identifier of the running service.', - type: 'keyword', - }, - 'service.target.name': { - dashed_name: 'service-target-name', - description: - 'Name of the service data is collected from.\nThe name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name.\nIn the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified.', - example: 'elasticsearch-metrics', - flat_name: 'service.target.name', - ignore_above: 1024, - level: 'core', - name: 'name', - normalize: [], - original_fieldset: 'service', - short: 'Name of the service.', - type: 'keyword', - }, - 'service.target.node.name': { - dashed_name: 'service-target-node-name', - description: - "Name of a service node.\nThis allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service.\nIn the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set.", - example: 'instance-0000000016', - flat_name: 'service.target.node.name', - ignore_above: 1024, - level: 'extended', - name: 'node.name', - normalize: [], - original_fieldset: 'service', - short: 'Name of the service node.', - type: 'keyword', - }, - 'service.target.node.role': { - dashed_name: 'service-target-node-role', - description: - 'Deprecated for removal in next major version release. This field will be superseded by `node.roles`.\nRole of a service node.\nThis allows for distinction between different running roles of the same service.\nIn the case of Kibana, the `service.node.role` could be `ui` or `background_tasks`.\nIn the case of Elasticsearch, the `service.node.role` could be `master` or `data`.\nOther services could use this to distinguish between a `web` and `worker` role running as part of the service.', - example: 'background_tasks', - flat_name: 'service.target.node.role', - ignore_above: 1024, - level: 'extended', - name: 'node.role', - normalize: [], - original_fieldset: 'service', - short: 'Deprecated role (singular) of the service node.', - type: 'keyword', - }, - 'service.target.node.roles': { - dashed_name: 'service-target-node-roles', - description: - 'Roles of a service node.\nThis allows for distinction between different running roles of the same service.\nIn the case of Kibana, the `service.node.role` could be `ui` or `background_tasks` or both.\nIn the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both.\nOther services could use this to distinguish between a `web` and `worker` role running as part of the service.', - example: '["ui", "background_tasks"]', - flat_name: 'service.target.node.roles', - ignore_above: 1024, - level: 'extended', - name: 'node.roles', - normalize: ['array'], - original_fieldset: 'service', - short: 'Roles of the service node.', - type: 'keyword', - }, - 'service.target.state': { - dashed_name: 'service-target-state', - description: 'Current state of the service.', - flat_name: 'service.target.state', - ignore_above: 1024, - level: 'core', - name: 'state', - normalize: [], - original_fieldset: 'service', - short: 'Current state of the service.', - type: 'keyword', - }, - 'service.target.type': { - dashed_name: 'service-target-type', - description: - 'The type of the service data is collected from.\nThe type can be used to group and correlate logs and metrics from one service type.\nExample: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`.', - example: 'elasticsearch', - flat_name: 'service.target.type', - ignore_above: 1024, - level: 'core', - name: 'type', - normalize: [], - original_fieldset: 'service', - short: 'The type of the service.', - type: 'keyword', - }, - 'service.target.version': { - dashed_name: 'service-target-version', - description: - 'Version of the service the data was collected from.\nThis allows to look at a data set only for a specific version of a service.', - example: '3.2.4', - flat_name: 'service.target.version', - ignore_above: 1024, - level: 'core', - name: 'version', - normalize: [], - original_fieldset: 'service', - short: 'Version of the service.', - type: 'keyword', - }, - 'service.type': { - dashed_name: 'service-type', - description: - 'The type of the service data is collected from.\nThe type can be used to group and correlate logs and metrics from one service type.\nExample: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`.', - example: 'elasticsearch', - flat_name: 'service.type', - ignore_above: 1024, - level: 'core', - name: 'type', - normalize: [], - short: 'The type of the service.', - type: 'keyword', - }, - 'service.version': { - dashed_name: 'service-version', - description: - 'Version of the service the data was collected from.\nThis allows to look at a data set only for a specific version of a service.', - example: '3.2.4', - flat_name: 'service.version', - ignore_above: 1024, - level: 'core', - name: 'version', - normalize: [], - short: 'Version of the service.', - type: 'keyword', - }, - }, - footnote: - 'The service fields may be self-nested under service.origin.* and service.target.* to describe origin or target services in the context of incoming or outgoing requests, respectively. However, the fieldsets service.origin.* and service.target.* must not be confused with the root service fieldset that is used to describe the actual service under observation. The fieldset service.origin.* may only be used in the context of incoming requests or events to describe the originating service of the request. The fieldset service.target.* may only be used in the context of outgoing requests or events to describe the target service of the request.', - group: 2, - name: 'service', - nestings: ['service.origin', 'service.target'], - prefix: 'service.', - reusable: { - expected: [ - { - as: 'origin', - at: 'service', - beta: 'Reusing the `service` fields in this location is currently considered beta.', - full: 'service.origin', - short_override: 'Describes the origin service in case of an incoming request or event.', - }, - { - as: 'target', - at: 'service', - beta: 'Reusing the `service` fields in this location is currently considered beta.', - full: 'service.target', - short_override: 'Describes the target service in case of an outgoing request or event.', - }, - ], - top_level: true, - }, - reused_here: [ - { - beta: 'Reusing the `service` fields in this location is currently considered beta.', - full: 'service.origin', - schema_name: 'service', - short: 'Describes the origin service in case of an incoming request or event.', - }, - { - beta: 'Reusing the `service` fields in this location is currently considered beta.', - full: 'service.target', - schema_name: 'service', - short: 'Describes the target service in case of an outgoing request or event.', - }, - ], - short: 'Fields describing the service for or from which the data was collected.', - title: 'Service', - type: 'group', - }, - source: { - description: - 'Source fields capture details about the sender of a network exchange/packet. These fields are populated from a network event, packet, or other event containing details of a network transaction.\nSource fields are usually populated in conjunction with destination fields. The source and destination fields are considered the baseline and should always be filled if an event contains source and destination details from a network transaction. If the event also contains identification of the client and server roles, then the client and server fields should also be populated.', - fields: { - 'source.address': { - dashed_name: 'source-address', - description: - 'Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field.\nThen it should be duplicated to `.ip` or `.domain`, depending on which one it is.', - flat_name: 'source.address', - ignore_above: 1024, - level: 'extended', - name: 'address', - normalize: [], - short: 'Source network address.', - type: 'keyword', - }, - 'source.as.number': { - dashed_name: 'source-as-number', - description: - 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', - example: 15169, - flat_name: 'source.as.number', - level: 'extended', - name: 'number', - normalize: [], - original_fieldset: 'as', - short: 'Unique number allocated to the autonomous system.', - type: 'long', - }, - 'source.as.organization.name': { - dashed_name: 'source-as-organization-name', - description: 'Organization name.', - example: 'Google LLC', - flat_name: 'source.as.organization.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'source.as.organization.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'organization.name', - normalize: [], - original_fieldset: 'as', - short: 'Organization name.', - type: 'keyword', - }, - 'source.bytes': { - dashed_name: 'source-bytes', - description: 'Bytes sent from the source to the destination.', - example: 184, - flat_name: 'source.bytes', - format: 'bytes', - level: 'core', - name: 'bytes', - normalize: [], - short: 'Bytes sent from the source to the destination.', - type: 'long', - }, - 'source.domain': { - dashed_name: 'source-domain', - description: - 'The domain name of the source system.\nThis value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.', - example: 'foo.example.com', - flat_name: 'source.domain', - ignore_above: 1024, - level: 'core', - name: 'domain', - normalize: [], - short: 'The domain name of the source.', - type: 'keyword', - }, - 'source.geo.city_name': { - dashed_name: 'source-geo-city-name', - description: 'City name.', - example: 'Montreal', - flat_name: 'source.geo.city_name', - ignore_above: 1024, - level: 'core', - name: 'city_name', - normalize: [], - original_fieldset: 'geo', - short: 'City name.', - type: 'keyword', - }, - 'source.geo.continent_code': { - dashed_name: 'source-geo-continent-code', - description: "Two-letter code representing continent's name.", - example: 'NA', - flat_name: 'source.geo.continent_code', - ignore_above: 1024, - level: 'core', - name: 'continent_code', - normalize: [], - original_fieldset: 'geo', - short: 'Continent code.', - type: 'keyword', - }, - 'source.geo.continent_name': { - dashed_name: 'source-geo-continent-name', - description: 'Name of the continent.', - example: 'North America', - flat_name: 'source.geo.continent_name', - ignore_above: 1024, - level: 'core', - name: 'continent_name', - normalize: [], - original_fieldset: 'geo', - short: 'Name of the continent.', - type: 'keyword', - }, - 'source.geo.country_iso_code': { - dashed_name: 'source-geo-country-iso-code', - description: 'Country ISO code.', - example: 'CA', - flat_name: 'source.geo.country_iso_code', - ignore_above: 1024, - level: 'core', - name: 'country_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Country ISO code.', - type: 'keyword', - }, - 'source.geo.country_name': { - dashed_name: 'source-geo-country-name', - description: 'Country name.', - example: 'Canada', - flat_name: 'source.geo.country_name', - ignore_above: 1024, - level: 'core', - name: 'country_name', - normalize: [], - original_fieldset: 'geo', - short: 'Country name.', - type: 'keyword', - }, - 'source.geo.location': { - dashed_name: 'source-geo-location', - description: 'Longitude and latitude.', - example: '{ "lon": -73.614830, "lat": 45.505918 }', - flat_name: 'source.geo.location', - level: 'core', - name: 'location', - normalize: [], - original_fieldset: 'geo', - short: 'Longitude and latitude.', - type: 'geo_point', - }, - 'source.geo.name': { - dashed_name: 'source-geo-name', - description: - 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', - example: 'boston-dc', - flat_name: 'source.geo.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'geo', - short: 'User-defined description of a location.', - type: 'keyword', - }, - 'source.geo.postal_code': { - dashed_name: 'source-geo-postal-code', - description: - 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', - example: 94040, - flat_name: 'source.geo.postal_code', - ignore_above: 1024, - level: 'core', - name: 'postal_code', - normalize: [], - original_fieldset: 'geo', - short: 'Postal code.', - type: 'keyword', - }, - 'source.geo.region_iso_code': { - dashed_name: 'source-geo-region-iso-code', - description: 'Region ISO code.', - example: 'CA-QC', - flat_name: 'source.geo.region_iso_code', - ignore_above: 1024, - level: 'core', - name: 'region_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Region ISO code.', - type: 'keyword', - }, - 'source.geo.region_name': { - dashed_name: 'source-geo-region-name', - description: 'Region name.', - example: 'Quebec', - flat_name: 'source.geo.region_name', - ignore_above: 1024, - level: 'core', - name: 'region_name', - normalize: [], - original_fieldset: 'geo', - short: 'Region name.', - type: 'keyword', - }, - 'source.geo.timezone': { - dashed_name: 'source-geo-timezone', - description: 'The time zone of the location, such as IANA time zone name.', - example: 'America/Argentina/Buenos_Aires', - flat_name: 'source.geo.timezone', - ignore_above: 1024, - level: 'core', - name: 'timezone', - normalize: [], - original_fieldset: 'geo', - short: 'Time zone.', - type: 'keyword', - }, - 'source.ip': { - dashed_name: 'source-ip', - description: 'IP address of the source (IPv4 or IPv6).', - flat_name: 'source.ip', - level: 'core', - name: 'ip', - normalize: [], - short: 'IP address of the source.', - type: 'ip', - }, - 'source.mac': { - dashed_name: 'source-mac', - description: - 'MAC address of the source.\nThe notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.', - example: '00-00-5E-00-53-23', - flat_name: 'source.mac', - ignore_above: 1024, - level: 'core', - name: 'mac', - normalize: [], - pattern: '^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$', - short: 'MAC address of the source.', - type: 'keyword', - }, - 'source.nat.ip': { - dashed_name: 'source-nat-ip', - description: - 'Translated ip of source based NAT sessions (e.g. internal client to internet)\nTypically connections traversing load balancers, firewalls, or routers.', - flat_name: 'source.nat.ip', - level: 'extended', - name: 'nat.ip', - normalize: [], - short: 'Source NAT ip', - type: 'ip', - }, - 'source.nat.port': { - dashed_name: 'source-nat-port', - description: - 'Translated port of source based NAT sessions. (e.g. internal client to internet)\nTypically used with load balancers, firewalls, or routers.', - flat_name: 'source.nat.port', - format: 'string', - level: 'extended', - name: 'nat.port', - normalize: [], - short: 'Source NAT port', - type: 'long', - }, - 'source.packets': { - dashed_name: 'source-packets', - description: 'Packets sent from the source to the destination.', - example: 12, - flat_name: 'source.packets', - level: 'core', - name: 'packets', - normalize: [], - short: 'Packets sent from the source to the destination.', - type: 'long', - }, - 'source.port': { - dashed_name: 'source-port', - description: 'Port of the source.', - flat_name: 'source.port', - format: 'string', - level: 'core', - name: 'port', - normalize: [], - short: 'Port of the source.', - type: 'long', - }, - 'source.registered_domain': { - dashed_name: 'source-registered-domain', - description: - 'The highest registered source domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', - example: 'example.com', - flat_name: 'source.registered_domain', - ignore_above: 1024, - level: 'extended', - name: 'registered_domain', - normalize: [], - short: 'The highest registered source domain, stripped of the subdomain.', - type: 'keyword', - }, - 'source.subdomain': { - dashed_name: 'source-subdomain', - description: - 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', - example: 'east', - flat_name: 'source.subdomain', - ignore_above: 1024, - level: 'extended', - name: 'subdomain', - normalize: [], - short: 'The subdomain of the domain.', - type: 'keyword', - }, - 'source.top_level_domain': { - dashed_name: 'source-top-level-domain', - description: - 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', - example: 'co.uk', - flat_name: 'source.top_level_domain', - ignore_above: 1024, - level: 'extended', - name: 'top_level_domain', - normalize: [], - short: 'The effective top level domain (com, org, net, co.uk).', - type: 'keyword', - }, - 'source.user.domain': { - dashed_name: 'source-user-domain', - description: - 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'source.user.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'user', - short: 'Name of the directory the user is a member of.', - type: 'keyword', - }, - 'source.user.email': { - dashed_name: 'source-user-email', - description: 'User email address.', - flat_name: 'source.user.email', - ignore_above: 1024, - level: 'extended', - name: 'email', - normalize: [], - original_fieldset: 'user', - short: 'User email address.', - type: 'keyword', - }, - 'source.user.full_name': { - dashed_name: 'source-user-full-name', - description: "User's full name, if available.", - example: 'Albert Einstein', - flat_name: 'source.user.full_name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'source.user.full_name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full_name', - normalize: [], - original_fieldset: 'user', - short: "User's full name, if available.", - type: 'keyword', - }, - 'source.user.group.domain': { - dashed_name: 'source-user-group-domain', - description: - 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'source.user.group.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'group', - short: 'Name of the directory the group is a member of.', - type: 'keyword', - }, - 'source.user.group.id': { - dashed_name: 'source-user-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'source.user.group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'source.user.group.name': { - dashed_name: 'source-user-group-name', - description: 'Name of the group.', - flat_name: 'source.user.group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'source.user.hash': { - dashed_name: 'source-user-hash', - description: - 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', - flat_name: 'source.user.hash', - ignore_above: 1024, - level: 'extended', - name: 'hash', - normalize: [], - original_fieldset: 'user', - short: 'Unique user hash to correlate information for a user in anonymized form.', - type: 'keyword', - }, - 'source.user.id': { - dashed_name: 'source-user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'source.user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'source.user.name': { - dashed_name: 'source-user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'source.user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'source.user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'source.user.roles': { - dashed_name: 'source-user-roles', - description: 'Array of user roles at the time of the event.', - example: '["kibana_admin", "reporting_user"]', - flat_name: 'source.user.roles', - ignore_above: 1024, - level: 'extended', - name: 'roles', - normalize: ['array'], - original_fieldset: 'user', - short: 'Array of user roles at the time of the event.', - type: 'keyword', - }, - }, - group: 2, - name: 'source', - nestings: ['source.as', 'source.geo', 'source.user'], - prefix: 'source.', - reusable: { - expected: [ - { - as: 'source', - at: 'process.entry_meta', - full: 'process.entry_meta.source', - short_override: 'Remote client information such as ip, port and geo location.', - }, - ], - top_level: true, - }, - reused_here: [ - { - full: 'source.as', - schema_name: 'as', - short: 'Fields describing an Autonomous System (Internet routing prefix).', - }, - { - full: 'source.geo', - schema_name: 'geo', - short: 'Fields describing a location.', - }, - { - full: 'source.user', - schema_name: 'user', - short: 'Fields to describe the user relevant to the event.', - }, - ], - short: 'Fields about the source side of a network connection, used with destination.', - title: 'Source', - type: 'group', - }, - threat: { - description: - 'Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework.\nThese fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* fields are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service").', - fields: { - 'threat.enrichments': { - dashed_name: 'threat-enrichments', - description: - 'A list of associated indicators objects enriching the event, and the context of that association/enrichment.', - flat_name: 'threat.enrichments', - level: 'extended', - name: 'enrichments', - normalize: ['array'], - short: 'List of objects containing indicators enriching the event.', - type: 'nested', - }, - 'threat.enrichments.indicator': { - dashed_name: 'threat-enrichments-indicator', - description: 'Object containing associated indicators enriching the event.', - flat_name: 'threat.enrichments.indicator', - level: 'extended', - name: 'enrichments.indicator', - normalize: [], - short: 'Object containing indicators enriching the event.', - type: 'object', - }, - 'threat.enrichments.indicator.as.number': { - dashed_name: 'threat-enrichments-indicator-as-number', - description: - 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', - example: 15169, - flat_name: 'threat.enrichments.indicator.as.number', - level: 'extended', - name: 'number', - normalize: [], - original_fieldset: 'as', - short: 'Unique number allocated to the autonomous system.', - type: 'long', - }, - 'threat.enrichments.indicator.as.organization.name': { - dashed_name: 'threat-enrichments-indicator-as-organization-name', - description: 'Organization name.', - example: 'Google LLC', - flat_name: 'threat.enrichments.indicator.as.organization.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'threat.enrichments.indicator.as.organization.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'organization.name', - normalize: [], - original_fieldset: 'as', - short: 'Organization name.', - type: 'keyword', - }, - 'threat.enrichments.indicator.confidence': { - dashed_name: 'threat-enrichments-indicator-confidence', - description: - 'Identifies the vendor-neutral confidence rating using the None/Low/Medium/High scale defined in Appendix A of the STIX 2.1 framework. Vendor-specific confidence scales may be added as custom fields.', - example: 'Medium', - expected_values: ['Not Specified', 'None', 'Low', 'Medium', 'High'], - flat_name: 'threat.enrichments.indicator.confidence', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.indicator.confidence', - normalize: [], - short: 'Indicator confidence rating', - type: 'keyword', - }, - 'threat.enrichments.indicator.description': { - dashed_name: 'threat-enrichments-indicator-description', - description: 'Describes the type of action conducted by the threat.', - example: 'IP x.x.x.x was observed delivering the Angler EK.', - flat_name: 'threat.enrichments.indicator.description', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.indicator.description', - normalize: [], - short: 'Indicator description', - type: 'keyword', - }, - 'threat.enrichments.indicator.email.address': { - dashed_name: 'threat-enrichments-indicator-email-address', - description: - 'Identifies a threat indicator as an email address (irrespective of direction).', - example: 'phish@example.com', - flat_name: 'threat.enrichments.indicator.email.address', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.indicator.email.address', - normalize: [], - short: 'Indicator email address', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.accessed': { - dashed_name: 'threat-enrichments-indicator-file-accessed', - description: - 'Last time the file was accessed.\nNote that not all filesystems keep track of access time.', - flat_name: 'threat.enrichments.indicator.file.accessed', - level: 'extended', - name: 'accessed', - normalize: [], - original_fieldset: 'file', - short: 'Last time the file was accessed.', - type: 'date', - }, - 'threat.enrichments.indicator.file.attributes': { - dashed_name: 'threat-enrichments-indicator-file-attributes', - description: - "Array of file attributes.\nAttributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write.", - example: '["readonly", "system"]', - flat_name: 'threat.enrichments.indicator.file.attributes', - ignore_above: 1024, - level: 'extended', - name: 'attributes', - normalize: ['array'], - original_fieldset: 'file', - short: 'Array of file attributes.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.code_signature.digest_algorithm': { - dashed_name: 'threat-enrichments-indicator-file-code-signature-digest-algorithm', - description: - 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', - example: 'sha256', - flat_name: 'threat.enrichments.indicator.file.code_signature.digest_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'digest_algorithm', - normalize: [], - original_fieldset: 'code_signature', - short: 'Hashing algorithm used to sign the process.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.code_signature.exists': { - dashed_name: 'threat-enrichments-indicator-file-code-signature-exists', - description: 'Boolean to capture if a signature is present.', - example: 'true', - flat_name: 'threat.enrichments.indicator.file.code_signature.exists', - level: 'core', - name: 'exists', - normalize: [], - original_fieldset: 'code_signature', - short: 'Boolean to capture if a signature is present.', - type: 'boolean', - }, - 'threat.enrichments.indicator.file.code_signature.signing_id': { - dashed_name: 'threat-enrichments-indicator-file-code-signature-signing-id', - description: - 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', - example: 'com.apple.xpc.proxy', - flat_name: 'threat.enrichments.indicator.file.code_signature.signing_id', - ignore_above: 1024, - level: 'extended', - name: 'signing_id', - normalize: [], - original_fieldset: 'code_signature', - short: 'The identifier used to sign the process.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.code_signature.status': { - dashed_name: 'threat-enrichments-indicator-file-code-signature-status', - description: - 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', - example: 'ERROR_UNTRUSTED_ROOT', - flat_name: 'threat.enrichments.indicator.file.code_signature.status', - ignore_above: 1024, - level: 'extended', - name: 'status', - normalize: [], - original_fieldset: 'code_signature', - short: 'Additional information about the certificate status.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.code_signature.subject_name': { - dashed_name: 'threat-enrichments-indicator-file-code-signature-subject-name', - description: 'Subject name of the code signer', - example: 'Microsoft Corporation', - flat_name: 'threat.enrichments.indicator.file.code_signature.subject_name', - ignore_above: 1024, - level: 'core', - name: 'subject_name', - normalize: [], - original_fieldset: 'code_signature', - short: 'Subject name of the code signer', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.code_signature.team_id': { - dashed_name: 'threat-enrichments-indicator-file-code-signature-team-id', - description: - 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', - example: 'EQHXZ8M8AV', - flat_name: 'threat.enrichments.indicator.file.code_signature.team_id', - ignore_above: 1024, - level: 'extended', - name: 'team_id', - normalize: [], - original_fieldset: 'code_signature', - short: 'The team identifier used to sign the process.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.code_signature.timestamp': { - dashed_name: 'threat-enrichments-indicator-file-code-signature-timestamp', - description: 'Date and time when the code signature was generated and signed.', - example: '2021-01-01T12:10:30Z', - flat_name: 'threat.enrichments.indicator.file.code_signature.timestamp', - level: 'extended', - name: 'timestamp', - normalize: [], - original_fieldset: 'code_signature', - short: 'When the signature was generated and signed.', - type: 'date', - }, - 'threat.enrichments.indicator.file.code_signature.trusted': { - dashed_name: 'threat-enrichments-indicator-file-code-signature-trusted', - description: - 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', - example: 'true', - flat_name: 'threat.enrichments.indicator.file.code_signature.trusted', - level: 'extended', - name: 'trusted', - normalize: [], - original_fieldset: 'code_signature', - short: 'Stores the trust status of the certificate chain.', - type: 'boolean', - }, - 'threat.enrichments.indicator.file.code_signature.valid': { - dashed_name: 'threat-enrichments-indicator-file-code-signature-valid', - description: - 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', - example: 'true', - flat_name: 'threat.enrichments.indicator.file.code_signature.valid', - level: 'extended', - name: 'valid', - normalize: [], - original_fieldset: 'code_signature', - short: - 'Boolean to capture if the digital signature is verified against the binary content.', - type: 'boolean', - }, - 'threat.enrichments.indicator.file.created': { - dashed_name: 'threat-enrichments-indicator-file-created', - description: 'File creation time.\nNote that not all filesystems store the creation time.', - flat_name: 'threat.enrichments.indicator.file.created', - level: 'extended', - name: 'created', - normalize: [], - original_fieldset: 'file', - short: 'File creation time.', - type: 'date', - }, - 'threat.enrichments.indicator.file.ctime': { - dashed_name: 'threat-enrichments-indicator-file-ctime', - description: - 'Last time the file attributes or metadata changed.\nNote that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file.', - flat_name: 'threat.enrichments.indicator.file.ctime', - level: 'extended', - name: 'ctime', - normalize: [], - original_fieldset: 'file', - short: 'Last time the file attributes or metadata changed.', - type: 'date', - }, - 'threat.enrichments.indicator.file.device': { - dashed_name: 'threat-enrichments-indicator-file-device', - description: 'Device that is the source of the file.', - example: 'sda', - flat_name: 'threat.enrichments.indicator.file.device', - ignore_above: 1024, - level: 'extended', - name: 'device', - normalize: [], - original_fieldset: 'file', - short: 'Device that is the source of the file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.directory': { - dashed_name: 'threat-enrichments-indicator-file-directory', - description: - 'Directory where the file is located. It should include the drive letter, when appropriate.', - example: '/home/alice', - flat_name: 'threat.enrichments.indicator.file.directory', - ignore_above: 1024, - level: 'extended', - name: 'directory', - normalize: [], - original_fieldset: 'file', - short: 'Directory where the file is located.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.drive_letter': { - dashed_name: 'threat-enrichments-indicator-file-drive-letter', - description: - 'Drive letter where the file is located. This field is only relevant on Windows.\nThe value should be uppercase, and not include the colon.', - example: 'C', - flat_name: 'threat.enrichments.indicator.file.drive_letter', - ignore_above: 1, - level: 'extended', - name: 'drive_letter', - normalize: [], - original_fieldset: 'file', - short: 'Drive letter where the file is located.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.architecture': { - dashed_name: 'threat-enrichments-indicator-file-elf-architecture', - description: 'Machine architecture of the ELF file.', - example: 'x86-64', - flat_name: 'threat.enrichments.indicator.file.elf.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - original_fieldset: 'elf', - short: 'Machine architecture of the ELF file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.byte_order': { - dashed_name: 'threat-enrichments-indicator-file-elf-byte-order', - description: 'Byte sequence of ELF file.', - example: 'Little Endian', - flat_name: 'threat.enrichments.indicator.file.elf.byte_order', - ignore_above: 1024, - level: 'extended', - name: 'byte_order', - normalize: [], - original_fieldset: 'elf', - short: 'Byte sequence of ELF file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.cpu_type': { - dashed_name: 'threat-enrichments-indicator-file-elf-cpu-type', - description: 'CPU type of the ELF file.', - example: 'Intel', - flat_name: 'threat.enrichments.indicator.file.elf.cpu_type', - ignore_above: 1024, - level: 'extended', - name: 'cpu_type', - normalize: [], - original_fieldset: 'elf', - short: 'CPU type of the ELF file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.creation_date': { - dashed_name: 'threat-enrichments-indicator-file-elf-creation-date', - description: - "Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.", - flat_name: 'threat.enrichments.indicator.file.elf.creation_date', - level: 'extended', - name: 'creation_date', - normalize: [], - original_fieldset: 'elf', - short: 'Build or compile date.', - type: 'date', - }, - 'threat.enrichments.indicator.file.elf.exports': { - dashed_name: 'threat-enrichments-indicator-file-elf-exports', - description: 'List of exported element names and types.', - flat_name: 'threat.enrichments.indicator.file.elf.exports', - level: 'extended', - name: 'exports', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of exported element names and types.', - type: 'flattened', - }, - 'threat.enrichments.indicator.file.elf.header.abi_version': { - dashed_name: 'threat-enrichments-indicator-file-elf-header-abi-version', - description: 'Version of the ELF Application Binary Interface (ABI).', - flat_name: 'threat.enrichments.indicator.file.elf.header.abi_version', - ignore_above: 1024, - level: 'extended', - name: 'header.abi_version', - normalize: [], - original_fieldset: 'elf', - short: 'Version of the ELF Application Binary Interface (ABI).', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.header.class': { - dashed_name: 'threat-enrichments-indicator-file-elf-header-class', - description: 'Header class of the ELF file.', - flat_name: 'threat.enrichments.indicator.file.elf.header.class', - ignore_above: 1024, - level: 'extended', - name: 'header.class', - normalize: [], - original_fieldset: 'elf', - short: 'Header class of the ELF file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.header.data': { - dashed_name: 'threat-enrichments-indicator-file-elf-header-data', - description: 'Data table of the ELF header.', - flat_name: 'threat.enrichments.indicator.file.elf.header.data', - ignore_above: 1024, - level: 'extended', - name: 'header.data', - normalize: [], - original_fieldset: 'elf', - short: 'Data table of the ELF header.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.header.entrypoint': { - dashed_name: 'threat-enrichments-indicator-file-elf-header-entrypoint', - description: 'Header entrypoint of the ELF file.', - flat_name: 'threat.enrichments.indicator.file.elf.header.entrypoint', - format: 'string', - level: 'extended', - name: 'header.entrypoint', - normalize: [], - original_fieldset: 'elf', - short: 'Header entrypoint of the ELF file.', - type: 'long', - }, - 'threat.enrichments.indicator.file.elf.header.object_version': { - dashed_name: 'threat-enrichments-indicator-file-elf-header-object-version', - description: '"0x1" for original ELF files.', - flat_name: 'threat.enrichments.indicator.file.elf.header.object_version', - ignore_above: 1024, - level: 'extended', - name: 'header.object_version', - normalize: [], - original_fieldset: 'elf', - short: '"0x1" for original ELF files.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.header.os_abi': { - dashed_name: 'threat-enrichments-indicator-file-elf-header-os-abi', - description: 'Application Binary Interface (ABI) of the Linux OS.', - flat_name: 'threat.enrichments.indicator.file.elf.header.os_abi', - ignore_above: 1024, - level: 'extended', - name: 'header.os_abi', - normalize: [], - original_fieldset: 'elf', - short: 'Application Binary Interface (ABI) of the Linux OS.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.header.type': { - dashed_name: 'threat-enrichments-indicator-file-elf-header-type', - description: 'Header type of the ELF file.', - flat_name: 'threat.enrichments.indicator.file.elf.header.type', - ignore_above: 1024, - level: 'extended', - name: 'header.type', - normalize: [], - original_fieldset: 'elf', - short: 'Header type of the ELF file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.header.version': { - dashed_name: 'threat-enrichments-indicator-file-elf-header-version', - description: 'Version of the ELF header.', - flat_name: 'threat.enrichments.indicator.file.elf.header.version', - ignore_above: 1024, - level: 'extended', - name: 'header.version', - normalize: [], - original_fieldset: 'elf', - short: 'Version of the ELF header.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.imports': { - dashed_name: 'threat-enrichments-indicator-file-elf-imports', - description: 'List of imported element names and types.', - flat_name: 'threat.enrichments.indicator.file.elf.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'threat.enrichments.indicator.file.elf.sections': { - dashed_name: 'threat-enrichments-indicator-file-elf-sections', - description: - 'An array containing an object for each section of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.', - flat_name: 'threat.enrichments.indicator.file.elf.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'elf', - short: 'Section information of the ELF file.', - type: 'nested', - }, - 'threat.enrichments.indicator.file.elf.sections.chi2': { - dashed_name: 'threat-enrichments-indicator-file-elf-sections-chi2', - description: 'Chi-square probability distribution of the section.', - flat_name: 'threat.enrichments.indicator.file.elf.sections.chi2', - format: 'number', - level: 'extended', - name: 'sections.chi2', - normalize: [], - original_fieldset: 'elf', - short: 'Chi-square probability distribution of the section.', - type: 'long', - }, - 'threat.enrichments.indicator.file.elf.sections.entropy': { - dashed_name: 'threat-enrichments-indicator-file-elf-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'threat.enrichments.indicator.file.elf.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'threat.enrichments.indicator.file.elf.sections.flags': { - dashed_name: 'threat-enrichments-indicator-file-elf-sections-flags', - description: 'ELF Section List flags.', - flat_name: 'threat.enrichments.indicator.file.elf.sections.flags', - ignore_above: 1024, - level: 'extended', - name: 'sections.flags', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List flags.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.sections.name': { - dashed_name: 'threat-enrichments-indicator-file-elf-sections-name', - description: 'ELF Section List name.', - flat_name: 'threat.enrichments.indicator.file.elf.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List name.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.sections.physical_offset': { - dashed_name: 'threat-enrichments-indicator-file-elf-sections-physical-offset', - description: 'ELF Section List offset.', - flat_name: 'threat.enrichments.indicator.file.elf.sections.physical_offset', - ignore_above: 1024, - level: 'extended', - name: 'sections.physical_offset', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List offset.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.sections.physical_size': { - dashed_name: 'threat-enrichments-indicator-file-elf-sections-physical-size', - description: 'ELF Section List physical size.', - flat_name: 'threat.enrichments.indicator.file.elf.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List physical size.', - type: 'long', - }, - 'threat.enrichments.indicator.file.elf.sections.type': { - dashed_name: 'threat-enrichments-indicator-file-elf-sections-type', - description: 'ELF Section List type.', - flat_name: 'threat.enrichments.indicator.file.elf.sections.type', - ignore_above: 1024, - level: 'extended', - name: 'sections.type', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List type.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.sections.virtual_address': { - dashed_name: 'threat-enrichments-indicator-file-elf-sections-virtual-address', - description: 'ELF Section List virtual address.', - flat_name: 'threat.enrichments.indicator.file.elf.sections.virtual_address', - format: 'string', - level: 'extended', - name: 'sections.virtual_address', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List virtual address.', - type: 'long', - }, - 'threat.enrichments.indicator.file.elf.sections.virtual_size': { - dashed_name: 'threat-enrichments-indicator-file-elf-sections-virtual-size', - description: 'ELF Section List virtual size.', - flat_name: 'threat.enrichments.indicator.file.elf.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List virtual size.', - type: 'long', - }, - 'threat.enrichments.indicator.file.elf.segments': { - dashed_name: 'threat-enrichments-indicator-file-elf-segments', - description: - 'An array containing an object for each segment of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.', - flat_name: 'threat.enrichments.indicator.file.elf.segments', - level: 'extended', - name: 'segments', - normalize: ['array'], - original_fieldset: 'elf', - short: 'ELF object segment list.', - type: 'nested', - }, - 'threat.enrichments.indicator.file.elf.segments.sections': { - dashed_name: 'threat-enrichments-indicator-file-elf-segments-sections', - description: 'ELF object segment sections.', - flat_name: 'threat.enrichments.indicator.file.elf.segments.sections', - ignore_above: 1024, - level: 'extended', - name: 'segments.sections', - normalize: [], - original_fieldset: 'elf', - short: 'ELF object segment sections.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.segments.type': { - dashed_name: 'threat-enrichments-indicator-file-elf-segments-type', - description: 'ELF object segment type.', - flat_name: 'threat.enrichments.indicator.file.elf.segments.type', - ignore_above: 1024, - level: 'extended', - name: 'segments.type', - normalize: [], - original_fieldset: 'elf', - short: 'ELF object segment type.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.shared_libraries': { - dashed_name: 'threat-enrichments-indicator-file-elf-shared-libraries', - description: 'List of shared libraries used by this ELF object.', - flat_name: 'threat.enrichments.indicator.file.elf.shared_libraries', - ignore_above: 1024, - level: 'extended', - name: 'shared_libraries', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of shared libraries used by this ELF object.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.telfhash': { - dashed_name: 'threat-enrichments-indicator-file-elf-telfhash', - description: 'telfhash symbol hash for ELF file.', - flat_name: 'threat.enrichments.indicator.file.elf.telfhash', - ignore_above: 1024, - level: 'extended', - name: 'telfhash', - normalize: [], - original_fieldset: 'elf', - short: 'telfhash hash for ELF file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.extension': { - dashed_name: 'threat-enrichments-indicator-file-extension', - description: - 'File extension, excluding the leading dot.\nNote that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").', - example: 'png', - flat_name: 'threat.enrichments.indicator.file.extension', - ignore_above: 1024, - level: 'extended', - name: 'extension', - normalize: [], - original_fieldset: 'file', - short: 'File extension, excluding the leading dot.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.fork_name': { - dashed_name: 'threat-enrichments-indicator-file-fork-name', - description: - 'A fork is additional data associated with a filesystem object.\nOn Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.\nOn NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\\path\\to\\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.', - example: 'Zone.Identifer', - flat_name: 'threat.enrichments.indicator.file.fork_name', - ignore_above: 1024, - level: 'extended', - name: 'fork_name', - normalize: [], - original_fieldset: 'file', - short: 'A fork is additional data associated with a filesystem object.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.gid': { - dashed_name: 'threat-enrichments-indicator-file-gid', - description: 'Primary group ID (GID) of the file.', - example: '1001', - flat_name: 'threat.enrichments.indicator.file.gid', - ignore_above: 1024, - level: 'extended', - name: 'gid', - normalize: [], - original_fieldset: 'file', - short: 'Primary group ID (GID) of the file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.group': { - dashed_name: 'threat-enrichments-indicator-file-group', - description: 'Primary group name of the file.', - example: 'alice', - flat_name: 'threat.enrichments.indicator.file.group', - ignore_above: 1024, - level: 'extended', - name: 'group', - normalize: [], - original_fieldset: 'file', - short: 'Primary group name of the file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.hash.md5': { - dashed_name: 'threat-enrichments-indicator-file-hash-md5', - description: 'MD5 hash.', - flat_name: 'threat.enrichments.indicator.file.hash.md5', - ignore_above: 1024, - level: 'extended', - name: 'md5', - normalize: [], - original_fieldset: 'hash', - short: 'MD5 hash.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.hash.sha1': { - dashed_name: 'threat-enrichments-indicator-file-hash-sha1', - description: 'SHA1 hash.', - flat_name: 'threat.enrichments.indicator.file.hash.sha1', - ignore_above: 1024, - level: 'extended', - name: 'sha1', - normalize: [], - original_fieldset: 'hash', - short: 'SHA1 hash.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.hash.sha256': { - dashed_name: 'threat-enrichments-indicator-file-hash-sha256', - description: 'SHA256 hash.', - flat_name: 'threat.enrichments.indicator.file.hash.sha256', - ignore_above: 1024, - level: 'extended', - name: 'sha256', - normalize: [], - original_fieldset: 'hash', - short: 'SHA256 hash.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.hash.sha384': { - dashed_name: 'threat-enrichments-indicator-file-hash-sha384', - description: 'SHA384 hash.', - flat_name: 'threat.enrichments.indicator.file.hash.sha384', - ignore_above: 1024, - level: 'extended', - name: 'sha384', - normalize: [], - original_fieldset: 'hash', - short: 'SHA384 hash.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.hash.sha512': { - dashed_name: 'threat-enrichments-indicator-file-hash-sha512', - description: 'SHA512 hash.', - flat_name: 'threat.enrichments.indicator.file.hash.sha512', - ignore_above: 1024, - level: 'extended', - name: 'sha512', - normalize: [], - original_fieldset: 'hash', - short: 'SHA512 hash.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.hash.ssdeep': { - dashed_name: 'threat-enrichments-indicator-file-hash-ssdeep', - description: 'SSDEEP hash.', - flat_name: 'threat.enrichments.indicator.file.hash.ssdeep', - ignore_above: 1024, - level: 'extended', - name: 'ssdeep', - normalize: [], - original_fieldset: 'hash', - short: 'SSDEEP hash.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.hash.tlsh': { - dashed_name: 'threat-enrichments-indicator-file-hash-tlsh', - description: 'TLSH hash.', - flat_name: 'threat.enrichments.indicator.file.hash.tlsh', - ignore_above: 1024, - level: 'extended', - name: 'tlsh', - normalize: [], - original_fieldset: 'hash', - short: 'TLSH hash.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.inode': { - dashed_name: 'threat-enrichments-indicator-file-inode', - description: 'Inode representing the file in the filesystem.', - example: '256383', - flat_name: 'threat.enrichments.indicator.file.inode', - ignore_above: 1024, - level: 'extended', - name: 'inode', - normalize: [], - original_fieldset: 'file', - short: 'Inode representing the file in the filesystem.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.mime_type': { - dashed_name: 'threat-enrichments-indicator-file-mime-type', - description: - 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', - flat_name: 'threat.enrichments.indicator.file.mime_type', - ignore_above: 1024, - level: 'extended', - name: 'mime_type', - normalize: [], - original_fieldset: 'file', - short: 'Media type of file, document, or arrangement of bytes.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.mode': { - dashed_name: 'threat-enrichments-indicator-file-mode', - description: 'Mode of the file in octal representation.', - example: '0640', - flat_name: 'threat.enrichments.indicator.file.mode', - ignore_above: 1024, - level: 'extended', - name: 'mode', - normalize: [], - original_fieldset: 'file', - short: 'Mode of the file in octal representation.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.mtime': { - dashed_name: 'threat-enrichments-indicator-file-mtime', - description: 'Last time the file content was modified.', - flat_name: 'threat.enrichments.indicator.file.mtime', - level: 'extended', - name: 'mtime', - normalize: [], - original_fieldset: 'file', - short: 'Last time the file content was modified.', - type: 'date', - }, - 'threat.enrichments.indicator.file.name': { - dashed_name: 'threat-enrichments-indicator-file-name', - description: 'Name of the file including the extension, without the directory.', - example: 'example.png', - flat_name: 'threat.enrichments.indicator.file.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'file', - short: 'Name of the file including the extension, without the directory.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.owner': { - dashed_name: 'threat-enrichments-indicator-file-owner', - description: "File owner's username.", - example: 'alice', - flat_name: 'threat.enrichments.indicator.file.owner', - ignore_above: 1024, - level: 'extended', - name: 'owner', - normalize: [], - original_fieldset: 'file', - short: "File owner's username.", - type: 'keyword', - }, - 'threat.enrichments.indicator.file.path': { - dashed_name: 'threat-enrichments-indicator-file-path', - description: - 'Full path to the file, including the file name. It should include the drive letter, when appropriate.', - example: '/home/alice/example.png', - flat_name: 'threat.enrichments.indicator.file.path', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'threat.enrichments.indicator.file.path.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'path', - normalize: [], - original_fieldset: 'file', - short: 'Full path to the file, including the file name.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.architecture': { - dashed_name: 'threat-enrichments-indicator-file-pe-architecture', - description: 'CPU architecture target for the file.', - example: 'x64', - flat_name: 'threat.enrichments.indicator.file.pe.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - original_fieldset: 'pe', - short: 'CPU architecture target for the file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.company': { - dashed_name: 'threat-enrichments-indicator-file-pe-company', - description: 'Internal company name of the file, provided at compile-time.', - example: 'Microsoft Corporation', - flat_name: 'threat.enrichments.indicator.file.pe.company', - ignore_above: 1024, - level: 'extended', - name: 'company', - normalize: [], - original_fieldset: 'pe', - short: 'Internal company name of the file, provided at compile-time.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.description': { - dashed_name: 'threat-enrichments-indicator-file-pe-description', - description: 'Internal description of the file, provided at compile-time.', - example: 'Paint', - flat_name: 'threat.enrichments.indicator.file.pe.description', - ignore_above: 1024, - level: 'extended', - name: 'description', - normalize: [], - original_fieldset: 'pe', - short: 'Internal description of the file, provided at compile-time.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.file_version': { - dashed_name: 'threat-enrichments-indicator-file-pe-file-version', - description: 'Internal version of the file, provided at compile-time.', - example: '6.3.9600.17415', - flat_name: 'threat.enrichments.indicator.file.pe.file_version', - ignore_above: 1024, - level: 'extended', - name: 'file_version', - normalize: [], - original_fieldset: 'pe', - short: 'Process name.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.imphash': { - dashed_name: 'threat-enrichments-indicator-file-pe-imphash', - description: - 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', - example: '0c6803c4e922103c4dca5963aad36ddf', - flat_name: 'threat.enrichments.indicator.file.pe.imphash', - ignore_above: 1024, - level: 'extended', - name: 'imphash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.original_file_name': { - dashed_name: 'threat-enrichments-indicator-file-pe-original-file-name', - description: 'Internal name of the file, provided at compile-time.', - example: 'MSPAINT.EXE', - flat_name: 'threat.enrichments.indicator.file.pe.original_file_name', - ignore_above: 1024, - level: 'extended', - name: 'original_file_name', - normalize: [], - original_fieldset: 'pe', - short: 'Internal name of the file, provided at compile-time.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.pehash': { - dashed_name: 'threat-enrichments-indicator-file-pe-pehash', - description: - 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', - example: '73ff189b63cd6be375a7ff25179a38d347651975', - flat_name: 'threat.enrichments.indicator.file.pe.pehash', - ignore_above: 1024, - level: 'extended', - name: 'pehash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the PE header and data from one or more PE sections.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.product': { - dashed_name: 'threat-enrichments-indicator-file-pe-product', - description: 'Internal product name of the file, provided at compile-time.', - example: 'Microsoft® Windows® Operating System', - flat_name: 'threat.enrichments.indicator.file.pe.product', - ignore_above: 1024, - level: 'extended', - name: 'product', - normalize: [], - original_fieldset: 'pe', - short: 'Internal product name of the file, provided at compile-time.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.size': { - dashed_name: 'threat-enrichments-indicator-file-size', - description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', - example: 16384, - flat_name: 'threat.enrichments.indicator.file.size', - level: 'extended', - name: 'size', - normalize: [], - original_fieldset: 'file', - short: 'File size in bytes.', - type: 'long', - }, - 'threat.enrichments.indicator.file.target_path': { - dashed_name: 'threat-enrichments-indicator-file-target-path', - description: 'Target path for symlinks.', - flat_name: 'threat.enrichments.indicator.file.target_path', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'threat.enrichments.indicator.file.target_path.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'target_path', - normalize: [], - original_fieldset: 'file', - short: 'Target path for symlinks.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.type': { - dashed_name: 'threat-enrichments-indicator-file-type', - description: 'File type (file, dir, or symlink).', - example: 'file', - flat_name: 'threat.enrichments.indicator.file.type', - ignore_above: 1024, - level: 'extended', - name: 'type', - normalize: [], - original_fieldset: 'file', - short: 'File type (file, dir, or symlink).', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.uid': { - dashed_name: 'threat-enrichments-indicator-file-uid', - description: 'The user ID (UID) or security identifier (SID) of the file owner.', - example: '1001', - flat_name: 'threat.enrichments.indicator.file.uid', - ignore_above: 1024, - level: 'extended', - name: 'uid', - normalize: [], - original_fieldset: 'file', - short: 'The user ID (UID) or security identifier (SID) of the file owner.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.alternative_names': { - dashed_name: 'threat-enrichments-indicator-file-x509-alternative-names', - description: - 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', - example: '*.elastic.co', - flat_name: 'threat.enrichments.indicator.file.x509.alternative_names', - ignore_above: 1024, - level: 'extended', - name: 'alternative_names', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of subject alternative names (SAN).', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.issuer.common_name': { - dashed_name: 'threat-enrichments-indicator-file-x509-issuer-common-name', - description: 'List of common name (CN) of issuing certificate authority.', - example: 'Example SHA2 High Assurance Server CA', - flat_name: 'threat.enrichments.indicator.file.x509.issuer.common_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common name (CN) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.issuer.country': { - dashed_name: 'threat-enrichments-indicator-file-x509-issuer-country', - description: 'List of country \\(C) codes', - example: 'US', - flat_name: 'threat.enrichments.indicator.file.x509.issuer.country', - ignore_above: 1024, - level: 'extended', - name: 'issuer.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) codes', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.issuer.distinguished_name': { - dashed_name: 'threat-enrichments-indicator-file-x509-issuer-distinguished-name', - description: 'Distinguished name (DN) of issuing certificate authority.', - example: - 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', - flat_name: 'threat.enrichments.indicator.file.x509.issuer.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.issuer.locality': { - dashed_name: 'threat-enrichments-indicator-file-x509-issuer-locality', - description: 'List of locality names (L)', - example: 'Mountain View', - flat_name: 'threat.enrichments.indicator.file.x509.issuer.locality', - ignore_above: 1024, - level: 'extended', - name: 'issuer.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.issuer.organization': { - dashed_name: 'threat-enrichments-indicator-file-x509-issuer-organization', - description: 'List of organizations (O) of issuing certificate authority.', - example: 'Example Inc', - flat_name: 'threat.enrichments.indicator.file.x509.issuer.organization', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.issuer.organizational_unit': { - dashed_name: 'threat-enrichments-indicator-file-x509-issuer-organizational-unit', - description: 'List of organizational units (OU) of issuing certificate authority.', - example: 'www.example.com', - flat_name: 'threat.enrichments.indicator.file.x509.issuer.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.issuer.state_or_province': { - dashed_name: 'threat-enrichments-indicator-file-x509-issuer-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'threat.enrichments.indicator.file.x509.issuer.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'issuer.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.not_after': { - dashed_name: 'threat-enrichments-indicator-file-x509-not-after', - description: 'Time at which the certificate is no longer considered valid.', - example: '2020-07-16T03:15:39Z', - flat_name: 'threat.enrichments.indicator.file.x509.not_after', - level: 'extended', - name: 'not_after', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is no longer considered valid.', - type: 'date', - }, - 'threat.enrichments.indicator.file.x509.not_before': { - dashed_name: 'threat-enrichments-indicator-file-x509-not-before', - description: 'Time at which the certificate is first considered valid.', - example: '2019-08-16T01:40:25Z', - flat_name: 'threat.enrichments.indicator.file.x509.not_before', - level: 'extended', - name: 'not_before', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is first considered valid.', - type: 'date', - }, - 'threat.enrichments.indicator.file.x509.public_key_algorithm': { - dashed_name: 'threat-enrichments-indicator-file-x509-public-key-algorithm', - description: 'Algorithm used to generate the public key.', - example: 'RSA', - flat_name: 'threat.enrichments.indicator.file.x509.public_key_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'public_key_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Algorithm used to generate the public key.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.public_key_curve': { - dashed_name: 'threat-enrichments-indicator-file-x509-public-key-curve', - description: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - example: 'nistp521', - flat_name: 'threat.enrichments.indicator.file.x509.public_key_curve', - ignore_above: 1024, - level: 'extended', - name: 'public_key_curve', - normalize: [], - original_fieldset: 'x509', - short: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.public_key_exponent': { - dashed_name: 'threat-enrichments-indicator-file-x509-public-key-exponent', - description: 'Exponent used to derive the public key. This is algorithm specific.', - doc_values: false, - example: 65537, - flat_name: 'threat.enrichments.indicator.file.x509.public_key_exponent', - index: false, - level: 'extended', - name: 'public_key_exponent', - normalize: [], - original_fieldset: 'x509', - short: 'Exponent used to derive the public key. This is algorithm specific.', - type: 'long', - }, - 'threat.enrichments.indicator.file.x509.public_key_size': { - dashed_name: 'threat-enrichments-indicator-file-x509-public-key-size', - description: 'The size of the public key space in bits.', - example: 2048, - flat_name: 'threat.enrichments.indicator.file.x509.public_key_size', - level: 'extended', - name: 'public_key_size', - normalize: [], - original_fieldset: 'x509', - short: 'The size of the public key space in bits.', - type: 'long', - }, - 'threat.enrichments.indicator.file.x509.serial_number': { - dashed_name: 'threat-enrichments-indicator-file-x509-serial-number', - description: - 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', - example: '55FBB9C7DEBF09809D12CCAA', - flat_name: 'threat.enrichments.indicator.file.x509.serial_number', - ignore_above: 1024, - level: 'extended', - name: 'serial_number', - normalize: [], - original_fieldset: 'x509', - short: 'Unique serial number issued by the certificate authority.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.signature_algorithm': { - dashed_name: 'threat-enrichments-indicator-file-x509-signature-algorithm', - description: - 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', - example: 'SHA256-RSA', - flat_name: 'threat.enrichments.indicator.file.x509.signature_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'signature_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Identifier for certificate signature algorithm.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.subject.common_name': { - dashed_name: 'threat-enrichments-indicator-file-x509-subject-common-name', - description: 'List of common names (CN) of subject.', - example: 'shared.global.example.net', - flat_name: 'threat.enrichments.indicator.file.x509.subject.common_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common names (CN) of subject.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.subject.country': { - dashed_name: 'threat-enrichments-indicator-file-x509-subject-country', - description: 'List of country \\(C) code', - example: 'US', - flat_name: 'threat.enrichments.indicator.file.x509.subject.country', - ignore_above: 1024, - level: 'extended', - name: 'subject.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) code', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.subject.distinguished_name': { - dashed_name: 'threat-enrichments-indicator-file-x509-subject-distinguished-name', - description: 'Distinguished name (DN) of the certificate subject entity.', - example: - 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', - flat_name: 'threat.enrichments.indicator.file.x509.subject.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of the certificate subject entity.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.subject.locality': { - dashed_name: 'threat-enrichments-indicator-file-x509-subject-locality', - description: 'List of locality names (L)', - example: 'San Francisco', - flat_name: 'threat.enrichments.indicator.file.x509.subject.locality', - ignore_above: 1024, - level: 'extended', - name: 'subject.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.subject.organization': { - dashed_name: 'threat-enrichments-indicator-file-x509-subject-organization', - description: 'List of organizations (O) of subject.', - example: 'Example, Inc.', - flat_name: 'threat.enrichments.indicator.file.x509.subject.organization', - ignore_above: 1024, - level: 'extended', - name: 'subject.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of subject.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.subject.organizational_unit': { - dashed_name: 'threat-enrichments-indicator-file-x509-subject-organizational-unit', - description: 'List of organizational units (OU) of subject.', - flat_name: 'threat.enrichments.indicator.file.x509.subject.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'subject.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of subject.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.subject.state_or_province': { - dashed_name: 'threat-enrichments-indicator-file-x509-subject-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'threat.enrichments.indicator.file.x509.subject.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'subject.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.x509.version_number': { - dashed_name: 'threat-enrichments-indicator-file-x509-version-number', - description: 'Version of x509 format.', - example: 3, - flat_name: 'threat.enrichments.indicator.file.x509.version_number', - ignore_above: 1024, - level: 'extended', - name: 'version_number', - normalize: [], - original_fieldset: 'x509', - short: 'Version of x509 format.', - type: 'keyword', - }, - 'threat.enrichments.indicator.first_seen': { - dashed_name: 'threat-enrichments-indicator-first-seen', - description: - 'The date and time when intelligence source first reported sighting this indicator.', - example: '2020-11-05T17:25:47.000Z', - flat_name: 'threat.enrichments.indicator.first_seen', - level: 'extended', - name: 'enrichments.indicator.first_seen', - normalize: [], - short: 'Date/time indicator was first reported.', - type: 'date', - }, - 'threat.enrichments.indicator.geo.city_name': { - dashed_name: 'threat-enrichments-indicator-geo-city-name', - description: 'City name.', - example: 'Montreal', - flat_name: 'threat.enrichments.indicator.geo.city_name', - ignore_above: 1024, - level: 'core', - name: 'city_name', - normalize: [], - original_fieldset: 'geo', - short: 'City name.', - type: 'keyword', - }, - 'threat.enrichments.indicator.geo.continent_code': { - dashed_name: 'threat-enrichments-indicator-geo-continent-code', - description: "Two-letter code representing continent's name.", - example: 'NA', - flat_name: 'threat.enrichments.indicator.geo.continent_code', - ignore_above: 1024, - level: 'core', - name: 'continent_code', - normalize: [], - original_fieldset: 'geo', - short: 'Continent code.', - type: 'keyword', - }, - 'threat.enrichments.indicator.geo.continent_name': { - dashed_name: 'threat-enrichments-indicator-geo-continent-name', - description: 'Name of the continent.', - example: 'North America', - flat_name: 'threat.enrichments.indicator.geo.continent_name', - ignore_above: 1024, - level: 'core', - name: 'continent_name', - normalize: [], - original_fieldset: 'geo', - short: 'Name of the continent.', - type: 'keyword', - }, - 'threat.enrichments.indicator.geo.country_iso_code': { - dashed_name: 'threat-enrichments-indicator-geo-country-iso-code', - description: 'Country ISO code.', - example: 'CA', - flat_name: 'threat.enrichments.indicator.geo.country_iso_code', - ignore_above: 1024, - level: 'core', - name: 'country_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Country ISO code.', - type: 'keyword', - }, - 'threat.enrichments.indicator.geo.country_name': { - dashed_name: 'threat-enrichments-indicator-geo-country-name', - description: 'Country name.', - example: 'Canada', - flat_name: 'threat.enrichments.indicator.geo.country_name', - ignore_above: 1024, - level: 'core', - name: 'country_name', - normalize: [], - original_fieldset: 'geo', - short: 'Country name.', - type: 'keyword', - }, - 'threat.enrichments.indicator.geo.location': { - dashed_name: 'threat-enrichments-indicator-geo-location', - description: 'Longitude and latitude.', - example: '{ "lon": -73.614830, "lat": 45.505918 }', - flat_name: 'threat.enrichments.indicator.geo.location', - level: 'core', - name: 'location', - normalize: [], - original_fieldset: 'geo', - short: 'Longitude and latitude.', - type: 'geo_point', - }, - 'threat.enrichments.indicator.geo.name': { - dashed_name: 'threat-enrichments-indicator-geo-name', - description: - 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', - example: 'boston-dc', - flat_name: 'threat.enrichments.indicator.geo.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'geo', - short: 'User-defined description of a location.', - type: 'keyword', - }, - 'threat.enrichments.indicator.geo.postal_code': { - dashed_name: 'threat-enrichments-indicator-geo-postal-code', - description: - 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', - example: 94040, - flat_name: 'threat.enrichments.indicator.geo.postal_code', - ignore_above: 1024, - level: 'core', - name: 'postal_code', - normalize: [], - original_fieldset: 'geo', - short: 'Postal code.', - type: 'keyword', - }, - 'threat.enrichments.indicator.geo.region_iso_code': { - dashed_name: 'threat-enrichments-indicator-geo-region-iso-code', - description: 'Region ISO code.', - example: 'CA-QC', - flat_name: 'threat.enrichments.indicator.geo.region_iso_code', - ignore_above: 1024, - level: 'core', - name: 'region_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Region ISO code.', - type: 'keyword', - }, - 'threat.enrichments.indicator.geo.region_name': { - dashed_name: 'threat-enrichments-indicator-geo-region-name', - description: 'Region name.', - example: 'Quebec', - flat_name: 'threat.enrichments.indicator.geo.region_name', - ignore_above: 1024, - level: 'core', - name: 'region_name', - normalize: [], - original_fieldset: 'geo', - short: 'Region name.', - type: 'keyword', - }, - 'threat.enrichments.indicator.geo.timezone': { - dashed_name: 'threat-enrichments-indicator-geo-timezone', - description: 'The time zone of the location, such as IANA time zone name.', - example: 'America/Argentina/Buenos_Aires', - flat_name: 'threat.enrichments.indicator.geo.timezone', - ignore_above: 1024, - level: 'core', - name: 'timezone', - normalize: [], - original_fieldset: 'geo', - short: 'Time zone.', - type: 'keyword', - }, - 'threat.enrichments.indicator.ip': { - dashed_name: 'threat-enrichments-indicator-ip', - description: 'Identifies a threat indicator as an IP address (irrespective of direction).', - example: '1.2.3.4', - flat_name: 'threat.enrichments.indicator.ip', - level: 'extended', - name: 'enrichments.indicator.ip', - normalize: [], - short: 'Indicator IP address', - type: 'ip', - }, - 'threat.enrichments.indicator.last_seen': { - dashed_name: 'threat-enrichments-indicator-last-seen', - description: - 'The date and time when intelligence source last reported sighting this indicator.', - example: '2020-11-05T17:25:47.000Z', - flat_name: 'threat.enrichments.indicator.last_seen', - level: 'extended', - name: 'enrichments.indicator.last_seen', - normalize: [], - short: 'Date/time indicator was last reported.', - type: 'date', - }, - 'threat.enrichments.indicator.marking.tlp.version': { - dashed_name: 'threat-enrichments-indicator-marking-tlp-version', - description: 'Traffic Light Protocol version.', - example: 2, - flat_name: 'threat.enrichments.indicator.marking.tlp.version', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.indicator.marking.tlp.version', - normalize: [], - short: 'Indicator TLP version', - type: 'keyword', - }, - 'threat.enrichments.indicator.modified_at': { - dashed_name: 'threat-enrichments-indicator-modified-at', - description: - 'The date and time when intelligence source last modified information for this indicator.', - example: '2020-11-05T17:25:47.000Z', - flat_name: 'threat.enrichments.indicator.modified_at', - level: 'extended', - name: 'enrichments.indicator.modified_at', - normalize: [], - short: 'Date/time indicator was last updated.', - type: 'date', - }, - 'threat.enrichments.indicator.port': { - dashed_name: 'threat-enrichments-indicator-port', - description: 'Identifies a threat indicator as a port number (irrespective of direction).', - example: 443, - flat_name: 'threat.enrichments.indicator.port', - level: 'extended', - name: 'enrichments.indicator.port', - normalize: [], - short: 'Indicator port', - type: 'long', - }, - 'threat.enrichments.indicator.provider': { - dashed_name: 'threat-enrichments-indicator-provider', - description: "The name of the indicator's provider.", - example: 'lrz_urlhaus', - flat_name: 'threat.enrichments.indicator.provider', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.indicator.provider', - normalize: [], - short: 'Indicator provider', - type: 'keyword', - }, - 'threat.enrichments.indicator.reference': { - dashed_name: 'threat-enrichments-indicator-reference', - description: 'Reference URL linking to additional information about this indicator.', - example: 'https://system.example.com/indicator/0001234', - flat_name: 'threat.enrichments.indicator.reference', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.indicator.reference', - normalize: [], - short: 'Indicator reference URL', - type: 'keyword', - }, - 'threat.enrichments.indicator.registry.data.bytes': { - dashed_name: 'threat-enrichments-indicator-registry-data-bytes', - description: - 'Original bytes written with base64 encoding.\nFor Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values.', - example: 'ZQBuAC0AVQBTAAAAZQBuAAAAAAA=', - flat_name: 'threat.enrichments.indicator.registry.data.bytes', - ignore_above: 1024, - level: 'extended', - name: 'data.bytes', - normalize: [], - original_fieldset: 'registry', - short: 'Original bytes written with base64 encoding.', - type: 'keyword', - }, - 'threat.enrichments.indicator.registry.data.strings': { - dashed_name: 'threat-enrichments-indicator-registry-data-strings', - description: - 'Content when writing string types.\nPopulated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`).', - example: '["C:\\rta\\red_ttp\\bin\\myapp.exe"]', - flat_name: 'threat.enrichments.indicator.registry.data.strings', - level: 'core', - name: 'data.strings', - normalize: ['array'], - original_fieldset: 'registry', - short: 'List of strings representing what was written to the registry.', - type: 'wildcard', - }, - 'threat.enrichments.indicator.registry.data.type': { - dashed_name: 'threat-enrichments-indicator-registry-data-type', - description: 'Standard registry type for encoding contents', - example: 'REG_SZ', - flat_name: 'threat.enrichments.indicator.registry.data.type', - ignore_above: 1024, - level: 'core', - name: 'data.type', - normalize: [], - original_fieldset: 'registry', - short: 'Standard registry type for encoding contents', - type: 'keyword', - }, - 'threat.enrichments.indicator.registry.hive': { - dashed_name: 'threat-enrichments-indicator-registry-hive', - description: 'Abbreviated name for the hive.', - example: 'HKLM', - flat_name: 'threat.enrichments.indicator.registry.hive', - ignore_above: 1024, - level: 'core', - name: 'hive', - normalize: [], - original_fieldset: 'registry', - short: 'Abbreviated name for the hive.', - type: 'keyword', - }, - 'threat.enrichments.indicator.registry.key': { - dashed_name: 'threat-enrichments-indicator-registry-key', - description: 'Hive-relative path of keys.', - example: - 'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\winword.exe', - flat_name: 'threat.enrichments.indicator.registry.key', - ignore_above: 1024, - level: 'core', - name: 'key', - normalize: [], - original_fieldset: 'registry', - short: 'Hive-relative path of keys.', - type: 'keyword', - }, - 'threat.enrichments.indicator.registry.path': { - dashed_name: 'threat-enrichments-indicator-registry-path', - description: 'Full path, including hive, key and value', - example: - 'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\winword.exe\\Debugger', - flat_name: 'threat.enrichments.indicator.registry.path', - ignore_above: 1024, - level: 'core', - name: 'path', - normalize: [], - original_fieldset: 'registry', - short: 'Full path, including hive, key and value', - type: 'keyword', - }, - 'threat.enrichments.indicator.registry.value': { - dashed_name: 'threat-enrichments-indicator-registry-value', - description: 'Name of the value written.', - example: 'Debugger', - flat_name: 'threat.enrichments.indicator.registry.value', - ignore_above: 1024, - level: 'core', - name: 'value', - normalize: [], - original_fieldset: 'registry', - short: 'Name of the value written.', - type: 'keyword', - }, - 'threat.enrichments.indicator.scanner_stats': { - dashed_name: 'threat-enrichments-indicator-scanner-stats', - description: 'Count of AV/EDR vendors that successfully detected malicious file or URL.', - example: 4, - flat_name: 'threat.enrichments.indicator.scanner_stats', - level: 'extended', - name: 'enrichments.indicator.scanner_stats', - normalize: [], - short: 'Scanner statistics', - type: 'long', - }, - 'threat.enrichments.indicator.sightings': { - dashed_name: 'threat-enrichments-indicator-sightings', - description: 'Number of times this indicator was observed conducting threat activity.', - example: 20, - flat_name: 'threat.enrichments.indicator.sightings', - level: 'extended', - name: 'enrichments.indicator.sightings', - normalize: [], - short: 'Number of times indicator observed', - type: 'long', - }, - 'threat.enrichments.indicator.type': { - dashed_name: 'threat-enrichments-indicator-type', - description: 'Type of indicator as represented by Cyber Observable in STIX 2.0.', - example: 'ipv4-addr', - expected_values: [ - 'autonomous-system', - 'artifact', - 'directory', - 'domain-name', - 'email-addr', - 'file', - 'ipv4-addr', - 'ipv6-addr', - 'mac-addr', - 'mutex', - 'port', - 'process', - 'software', - 'url', - 'user-account', - 'windows-registry-key', - 'x509-certificate', - ], - flat_name: 'threat.enrichments.indicator.type', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.indicator.type', - normalize: [], - short: 'Type of indicator', - type: 'keyword', - }, - 'threat.enrichments.indicator.url.domain': { - dashed_name: 'threat-enrichments-indicator-url-domain', - description: - 'Domain of the url, such as "www.elastic.co".\nIn some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field.\nIf the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field.', - example: 'www.elastic.co', - flat_name: 'threat.enrichments.indicator.url.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'url', - short: 'Domain of the url.', - type: 'keyword', - }, - 'threat.enrichments.indicator.url.extension': { - dashed_name: 'threat-enrichments-indicator-url-extension', - description: - 'The field contains the file extension from the original request url, excluding the leading dot.\nThe file extension is only set if it exists, as not every url has a file extension.\nThe leading period must not be included. For example, the value must be "png", not ".png".\nNote that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").', - example: 'png', - flat_name: 'threat.enrichments.indicator.url.extension', - ignore_above: 1024, - level: 'extended', - name: 'extension', - normalize: [], - original_fieldset: 'url', - short: 'File extension from the request url, excluding the leading dot.', - type: 'keyword', - }, - 'threat.enrichments.indicator.url.fragment': { - dashed_name: 'threat-enrichments-indicator-url-fragment', - description: - 'Portion of the url after the `#`, such as "top".\nThe `#` is not part of the fragment.', - flat_name: 'threat.enrichments.indicator.url.fragment', - ignore_above: 1024, - level: 'extended', - name: 'fragment', - normalize: [], - original_fieldset: 'url', - short: 'Portion of the url after the `#`.', - type: 'keyword', - }, - 'threat.enrichments.indicator.url.full': { - dashed_name: 'threat-enrichments-indicator-url-full', - description: - 'If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source.', - example: 'https://www.elastic.co:443/search?q=elasticsearch#top', - flat_name: 'threat.enrichments.indicator.url.full', - level: 'extended', - multi_fields: [ - { - flat_name: 'threat.enrichments.indicator.url.full.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full', - normalize: [], - original_fieldset: 'url', - short: 'Full unparsed URL.', - type: 'wildcard', - }, - 'threat.enrichments.indicator.url.original': { - dashed_name: 'threat-enrichments-indicator-url-original', - description: - 'Unmodified original url as seen in the event source.\nNote that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path.\nThis field is meant to represent the URL as it was observed, complete or not.', - example: 'https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch', - flat_name: 'threat.enrichments.indicator.url.original', - level: 'extended', - multi_fields: [ - { - flat_name: 'threat.enrichments.indicator.url.original.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'original', - normalize: [], - original_fieldset: 'url', - short: 'Unmodified original url as seen in the event source.', - type: 'wildcard', - }, - 'threat.enrichments.indicator.url.password': { - dashed_name: 'threat-enrichments-indicator-url-password', - description: 'Password of the request.', - flat_name: 'threat.enrichments.indicator.url.password', - ignore_above: 1024, - level: 'extended', - name: 'password', - normalize: [], - original_fieldset: 'url', - short: 'Password of the request.', - type: 'keyword', - }, - 'threat.enrichments.indicator.url.path': { - dashed_name: 'threat-enrichments-indicator-url-path', - description: 'Path of the request, such as "/search".', - flat_name: 'threat.enrichments.indicator.url.path', - level: 'extended', - name: 'path', - normalize: [], - original_fieldset: 'url', - short: 'Path of the request, such as "/search".', - type: 'wildcard', - }, - 'threat.enrichments.indicator.url.port': { - dashed_name: 'threat-enrichments-indicator-url-port', - description: 'Port of the request, such as 443.', - example: 443, - flat_name: 'threat.enrichments.indicator.url.port', - format: 'string', - level: 'extended', - name: 'port', - normalize: [], - original_fieldset: 'url', - short: 'Port of the request, such as 443.', - type: 'long', - }, - 'threat.enrichments.indicator.url.query': { - dashed_name: 'threat-enrichments-indicator-url-query', - description: - 'The query field describes the query string of the request, such as "q=elasticsearch".\nThe `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases.', - flat_name: 'threat.enrichments.indicator.url.query', - ignore_above: 1024, - level: 'extended', - name: 'query', - normalize: [], - original_fieldset: 'url', - short: 'Query string of the request.', - type: 'keyword', - }, - 'threat.enrichments.indicator.url.registered_domain': { - dashed_name: 'threat-enrichments-indicator-url-registered-domain', - description: - 'The highest registered url domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', - example: 'example.com', - flat_name: 'threat.enrichments.indicator.url.registered_domain', - ignore_above: 1024, - level: 'extended', - name: 'registered_domain', - normalize: [], - original_fieldset: 'url', - short: 'The highest registered url domain, stripped of the subdomain.', - type: 'keyword', - }, - 'threat.enrichments.indicator.url.scheme': { - dashed_name: 'threat-enrichments-indicator-url-scheme', - description: - 'Scheme of the request, such as "https".\nNote: The `:` is not part of the scheme.', - example: 'https', - flat_name: 'threat.enrichments.indicator.url.scheme', - ignore_above: 1024, - level: 'extended', - name: 'scheme', - normalize: [], - original_fieldset: 'url', - short: 'Scheme of the url.', - type: 'keyword', - }, - 'threat.enrichments.indicator.url.subdomain': { - dashed_name: 'threat-enrichments-indicator-url-subdomain', - description: - 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', - example: 'east', - flat_name: 'threat.enrichments.indicator.url.subdomain', - ignore_above: 1024, - level: 'extended', - name: 'subdomain', - normalize: [], - original_fieldset: 'url', - short: 'The subdomain of the domain.', - type: 'keyword', - }, - 'threat.enrichments.indicator.url.top_level_domain': { - dashed_name: 'threat-enrichments-indicator-url-top-level-domain', - description: - 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', - example: 'co.uk', - flat_name: 'threat.enrichments.indicator.url.top_level_domain', - ignore_above: 1024, - level: 'extended', - name: 'top_level_domain', - normalize: [], - original_fieldset: 'url', - short: 'The effective top level domain (com, org, net, co.uk).', - type: 'keyword', - }, - 'threat.enrichments.indicator.url.username': { - dashed_name: 'threat-enrichments-indicator-url-username', - description: 'Username of the request.', - flat_name: 'threat.enrichments.indicator.url.username', - ignore_above: 1024, - level: 'extended', - name: 'username', - normalize: [], - original_fieldset: 'url', - short: 'Username of the request.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.alternative_names': { - dashed_name: 'threat-enrichments-indicator-x509-alternative-names', - description: - 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', - example: '*.elastic.co', - flat_name: 'threat.enrichments.indicator.x509.alternative_names', - ignore_above: 1024, - level: 'extended', - name: 'alternative_names', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of subject alternative names (SAN).', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.issuer.common_name': { - dashed_name: 'threat-enrichments-indicator-x509-issuer-common-name', - description: 'List of common name (CN) of issuing certificate authority.', - example: 'Example SHA2 High Assurance Server CA', - flat_name: 'threat.enrichments.indicator.x509.issuer.common_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common name (CN) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.issuer.country': { - dashed_name: 'threat-enrichments-indicator-x509-issuer-country', - description: 'List of country \\(C) codes', - example: 'US', - flat_name: 'threat.enrichments.indicator.x509.issuer.country', - ignore_above: 1024, - level: 'extended', - name: 'issuer.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) codes', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.issuer.distinguished_name': { - dashed_name: 'threat-enrichments-indicator-x509-issuer-distinguished-name', - description: 'Distinguished name (DN) of issuing certificate authority.', - example: - 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', - flat_name: 'threat.enrichments.indicator.x509.issuer.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.issuer.locality': { - dashed_name: 'threat-enrichments-indicator-x509-issuer-locality', - description: 'List of locality names (L)', - example: 'Mountain View', - flat_name: 'threat.enrichments.indicator.x509.issuer.locality', - ignore_above: 1024, - level: 'extended', - name: 'issuer.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.issuer.organization': { - dashed_name: 'threat-enrichments-indicator-x509-issuer-organization', - description: 'List of organizations (O) of issuing certificate authority.', - example: 'Example Inc', - flat_name: 'threat.enrichments.indicator.x509.issuer.organization', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.issuer.organizational_unit': { - dashed_name: 'threat-enrichments-indicator-x509-issuer-organizational-unit', - description: 'List of organizational units (OU) of issuing certificate authority.', - example: 'www.example.com', - flat_name: 'threat.enrichments.indicator.x509.issuer.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.issuer.state_or_province': { - dashed_name: 'threat-enrichments-indicator-x509-issuer-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'threat.enrichments.indicator.x509.issuer.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'issuer.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.not_after': { - dashed_name: 'threat-enrichments-indicator-x509-not-after', - description: 'Time at which the certificate is no longer considered valid.', - example: '2020-07-16T03:15:39Z', - flat_name: 'threat.enrichments.indicator.x509.not_after', - level: 'extended', - name: 'not_after', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is no longer considered valid.', - type: 'date', - }, - 'threat.enrichments.indicator.x509.not_before': { - dashed_name: 'threat-enrichments-indicator-x509-not-before', - description: 'Time at which the certificate is first considered valid.', - example: '2019-08-16T01:40:25Z', - flat_name: 'threat.enrichments.indicator.x509.not_before', - level: 'extended', - name: 'not_before', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is first considered valid.', - type: 'date', - }, - 'threat.enrichments.indicator.x509.public_key_algorithm': { - dashed_name: 'threat-enrichments-indicator-x509-public-key-algorithm', - description: 'Algorithm used to generate the public key.', - example: 'RSA', - flat_name: 'threat.enrichments.indicator.x509.public_key_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'public_key_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Algorithm used to generate the public key.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.public_key_curve': { - dashed_name: 'threat-enrichments-indicator-x509-public-key-curve', - description: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - example: 'nistp521', - flat_name: 'threat.enrichments.indicator.x509.public_key_curve', - ignore_above: 1024, - level: 'extended', - name: 'public_key_curve', - normalize: [], - original_fieldset: 'x509', - short: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.public_key_exponent': { - dashed_name: 'threat-enrichments-indicator-x509-public-key-exponent', - description: 'Exponent used to derive the public key. This is algorithm specific.', - doc_values: false, - example: 65537, - flat_name: 'threat.enrichments.indicator.x509.public_key_exponent', - index: false, - level: 'extended', - name: 'public_key_exponent', - normalize: [], - original_fieldset: 'x509', - short: 'Exponent used to derive the public key. This is algorithm specific.', - type: 'long', - }, - 'threat.enrichments.indicator.x509.public_key_size': { - dashed_name: 'threat-enrichments-indicator-x509-public-key-size', - description: 'The size of the public key space in bits.', - example: 2048, - flat_name: 'threat.enrichments.indicator.x509.public_key_size', - level: 'extended', - name: 'public_key_size', - normalize: [], - original_fieldset: 'x509', - short: 'The size of the public key space in bits.', - type: 'long', - }, - 'threat.enrichments.indicator.x509.serial_number': { - dashed_name: 'threat-enrichments-indicator-x509-serial-number', - description: - 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', - example: '55FBB9C7DEBF09809D12CCAA', - flat_name: 'threat.enrichments.indicator.x509.serial_number', - ignore_above: 1024, - level: 'extended', - name: 'serial_number', - normalize: [], - original_fieldset: 'x509', - short: 'Unique serial number issued by the certificate authority.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.signature_algorithm': { - dashed_name: 'threat-enrichments-indicator-x509-signature-algorithm', - description: - 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', - example: 'SHA256-RSA', - flat_name: 'threat.enrichments.indicator.x509.signature_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'signature_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Identifier for certificate signature algorithm.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.subject.common_name': { - dashed_name: 'threat-enrichments-indicator-x509-subject-common-name', - description: 'List of common names (CN) of subject.', - example: 'shared.global.example.net', - flat_name: 'threat.enrichments.indicator.x509.subject.common_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common names (CN) of subject.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.subject.country': { - dashed_name: 'threat-enrichments-indicator-x509-subject-country', - description: 'List of country \\(C) code', - example: 'US', - flat_name: 'threat.enrichments.indicator.x509.subject.country', - ignore_above: 1024, - level: 'extended', - name: 'subject.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) code', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.subject.distinguished_name': { - dashed_name: 'threat-enrichments-indicator-x509-subject-distinguished-name', - description: 'Distinguished name (DN) of the certificate subject entity.', - example: - 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', - flat_name: 'threat.enrichments.indicator.x509.subject.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of the certificate subject entity.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.subject.locality': { - dashed_name: 'threat-enrichments-indicator-x509-subject-locality', - description: 'List of locality names (L)', - example: 'San Francisco', - flat_name: 'threat.enrichments.indicator.x509.subject.locality', - ignore_above: 1024, - level: 'extended', - name: 'subject.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.subject.organization': { - dashed_name: 'threat-enrichments-indicator-x509-subject-organization', - description: 'List of organizations (O) of subject.', - example: 'Example, Inc.', - flat_name: 'threat.enrichments.indicator.x509.subject.organization', - ignore_above: 1024, - level: 'extended', - name: 'subject.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of subject.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.subject.organizational_unit': { - dashed_name: 'threat-enrichments-indicator-x509-subject-organizational-unit', - description: 'List of organizational units (OU) of subject.', - flat_name: 'threat.enrichments.indicator.x509.subject.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'subject.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of subject.', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.subject.state_or_province': { - dashed_name: 'threat-enrichments-indicator-x509-subject-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'threat.enrichments.indicator.x509.subject.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'subject.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'threat.enrichments.indicator.x509.version_number': { - dashed_name: 'threat-enrichments-indicator-x509-version-number', - description: 'Version of x509 format.', - example: 3, - flat_name: 'threat.enrichments.indicator.x509.version_number', - ignore_above: 1024, - level: 'extended', - name: 'version_number', - normalize: [], - original_fieldset: 'x509', - short: 'Version of x509 format.', - type: 'keyword', - }, - 'threat.enrichments.matched.atomic': { - dashed_name: 'threat-enrichments-matched-atomic', - description: - 'Identifies the atomic indicator value that matched a local environment endpoint or network event.', - example: 'bad-domain.com', - flat_name: 'threat.enrichments.matched.atomic', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.matched.atomic', - normalize: [], - short: 'Matched indicator value', - type: 'keyword', - }, - 'threat.enrichments.matched.field': { - dashed_name: 'threat-enrichments-matched-field', - description: - 'Identifies the field of the atomic indicator that matched a local environment endpoint or network event.', - example: 'file.hash.sha256', - flat_name: 'threat.enrichments.matched.field', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.matched.field', - normalize: [], - short: 'Matched indicator field', - type: 'keyword', - }, - 'threat.enrichments.matched.id': { - dashed_name: 'threat-enrichments-matched-id', - description: 'Identifies the _id of the indicator document enriching the event.', - example: 'ff93aee5-86a1-4a61-b0e6-0cdc313d01b5', - flat_name: 'threat.enrichments.matched.id', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.matched.id', - normalize: [], - short: 'Matched indicator identifier', - type: 'keyword', - }, - 'threat.enrichments.matched.index': { - dashed_name: 'threat-enrichments-matched-index', - description: 'Identifies the _index of the indicator document enriching the event.', - example: 'filebeat-8.0.0-2021.05.23-000011', - flat_name: 'threat.enrichments.matched.index', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.matched.index', - normalize: [], - short: 'Matched indicator index', - type: 'keyword', - }, - 'threat.enrichments.matched.occurred': { - dashed_name: 'threat-enrichments-matched-occurred', - description: 'Indicates when the indicator match was generated', - example: '2021-10-05T17:00:58.326Z', - flat_name: 'threat.enrichments.matched.occurred', - level: 'extended', - name: 'enrichments.matched.occurred', - normalize: [], - short: 'Date of match', - type: 'date', - }, - 'threat.enrichments.matched.type': { - dashed_name: 'threat-enrichments-matched-type', - description: - 'Identifies the type of match that caused the event to be enriched with the given indicator', - example: 'indicator_match_rule', - flat_name: 'threat.enrichments.matched.type', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.matched.type', - normalize: [], - short: 'Type of indicator match', - type: 'keyword', - }, - 'threat.feed.dashboard_id': { - dashed_name: 'threat-feed-dashboard-id', - description: - 'The saved object ID of the dashboard belonging to the threat feed for displaying dashboard links to threat feeds in Kibana.', - example: '5ba16340-72e6-11eb-a3e3-b3cc7c78a70f', - flat_name: 'threat.feed.dashboard_id', - ignore_above: 1024, - level: 'extended', - name: 'feed.dashboard_id', - normalize: [], - short: 'Feed dashboard ID.', - type: 'keyword', - }, - 'threat.feed.description': { - dashed_name: 'threat-feed-description', - description: 'Description of the threat feed in a UI friendly format.', - example: 'Threat feed from the AlienVault Open Threat eXchange network.', - flat_name: 'threat.feed.description', - ignore_above: 1024, - level: 'extended', - name: 'feed.description', - normalize: [], - short: 'Description of the threat feed.', - type: 'keyword', - }, - 'threat.feed.name': { - dashed_name: 'threat-feed-name', - description: 'The name of the threat feed in UI friendly format.', - example: 'AlienVault OTX', - flat_name: 'threat.feed.name', - ignore_above: 1024, - level: 'extended', - name: 'feed.name', - normalize: [], - short: 'Name of the threat feed.', - type: 'keyword', - }, - 'threat.feed.reference': { - dashed_name: 'threat-feed-reference', - description: 'Reference information for the threat feed in a UI friendly format.', - example: 'https://otx.alienvault.com', - flat_name: 'threat.feed.reference', - ignore_above: 1024, - level: 'extended', - name: 'feed.reference', - normalize: [], - short: 'Reference for the threat feed.', - type: 'keyword', - }, - 'threat.framework': { - dashed_name: 'threat-framework', - description: - 'Name of the threat framework used to further categorize and classify the tactic and technique of the reported threat. Framework classification can be provided by detecting systems, evaluated at ingest time, or retrospectively tagged to events.', - example: 'MITRE ATT&CK', - flat_name: 'threat.framework', - ignore_above: 1024, - level: 'extended', - name: 'framework', - normalize: [], - short: 'Threat classification framework.', - type: 'keyword', - }, - 'threat.group.alias': { - dashed_name: 'threat-group-alias', - description: - 'The alias(es) of the group for a set of related intrusion activity that are tracked by a common name in the security community.\nWhile not required, you can use a MITRE ATT&CK® group alias(es).', - example: '[ "Magecart Group 6" ]', - flat_name: 'threat.group.alias', - ignore_above: 1024, - level: 'extended', - name: 'group.alias', - normalize: ['array'], - short: 'Alias of the group.', - type: 'keyword', - }, - 'threat.group.id': { - dashed_name: 'threat-group-id', - description: - 'The id of the group for a set of related intrusion activity that are tracked by a common name in the security community.\nWhile not required, you can use a MITRE ATT&CK® group id.', - example: 'G0037', - flat_name: 'threat.group.id', - ignore_above: 1024, - level: 'extended', - name: 'group.id', - normalize: [], - short: 'ID of the group.', - type: 'keyword', - }, - 'threat.group.name': { - dashed_name: 'threat-group-name', - description: - 'The name of the group for a set of related intrusion activity that are tracked by a common name in the security community.\nWhile not required, you can use a MITRE ATT&CK® group name.', - example: 'FIN6', - flat_name: 'threat.group.name', - ignore_above: 1024, - level: 'extended', - name: 'group.name', - normalize: [], - short: 'Name of the group.', - type: 'keyword', - }, - 'threat.group.reference': { - dashed_name: 'threat-group-reference', - description: - 'The reference URL of the group for a set of related intrusion activity that are tracked by a common name in the security community.\nWhile not required, you can use a MITRE ATT&CK® group reference URL.', - example: 'https://attack.mitre.org/groups/G0037/', - flat_name: 'threat.group.reference', - ignore_above: 1024, - level: 'extended', - name: 'group.reference', - normalize: [], - short: 'Reference URL of the group.', - type: 'keyword', - }, - 'threat.indicator.as.number': { - dashed_name: 'threat-indicator-as-number', - description: - 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', - example: 15169, - flat_name: 'threat.indicator.as.number', - level: 'extended', - name: 'number', - normalize: [], - original_fieldset: 'as', - short: 'Unique number allocated to the autonomous system.', - type: 'long', - }, - 'threat.indicator.as.organization.name': { - dashed_name: 'threat-indicator-as-organization-name', - description: 'Organization name.', - example: 'Google LLC', - flat_name: 'threat.indicator.as.organization.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'threat.indicator.as.organization.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'organization.name', - normalize: [], - original_fieldset: 'as', - short: 'Organization name.', - type: 'keyword', - }, - 'threat.indicator.confidence': { - dashed_name: 'threat-indicator-confidence', - description: - 'Identifies the vendor-neutral confidence rating using the None/Low/Medium/High scale defined in Appendix A of the STIX 2.1 framework. Vendor-specific confidence scales may be added as custom fields.', - example: 'Medium', - expected_values: ['Not Specified', 'None', 'Low', 'Medium', 'High'], - flat_name: 'threat.indicator.confidence', - ignore_above: 1024, - level: 'extended', - name: 'indicator.confidence', - normalize: [], - short: 'Indicator confidence rating', - type: 'keyword', - }, - 'threat.indicator.description': { - dashed_name: 'threat-indicator-description', - description: 'Describes the type of action conducted by the threat.', - example: 'IP x.x.x.x was observed delivering the Angler EK.', - flat_name: 'threat.indicator.description', - ignore_above: 1024, - level: 'extended', - name: 'indicator.description', - normalize: [], - short: 'Indicator description', - type: 'keyword', - }, - 'threat.indicator.email.address': { - dashed_name: 'threat-indicator-email-address', - description: - 'Identifies a threat indicator as an email address (irrespective of direction).', - example: 'phish@example.com', - flat_name: 'threat.indicator.email.address', - ignore_above: 1024, - level: 'extended', - name: 'indicator.email.address', - normalize: [], - short: 'Indicator email address', - type: 'keyword', - }, - 'threat.indicator.file.accessed': { - dashed_name: 'threat-indicator-file-accessed', - description: - 'Last time the file was accessed.\nNote that not all filesystems keep track of access time.', - flat_name: 'threat.indicator.file.accessed', - level: 'extended', - name: 'accessed', - normalize: [], - original_fieldset: 'file', - short: 'Last time the file was accessed.', - type: 'date', - }, - 'threat.indicator.file.attributes': { - dashed_name: 'threat-indicator-file-attributes', - description: - "Array of file attributes.\nAttributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write.", - example: '["readonly", "system"]', - flat_name: 'threat.indicator.file.attributes', - ignore_above: 1024, - level: 'extended', - name: 'attributes', - normalize: ['array'], - original_fieldset: 'file', - short: 'Array of file attributes.', - type: 'keyword', - }, - 'threat.indicator.file.code_signature.digest_algorithm': { - dashed_name: 'threat-indicator-file-code-signature-digest-algorithm', - description: - 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', - example: 'sha256', - flat_name: 'threat.indicator.file.code_signature.digest_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'digest_algorithm', - normalize: [], - original_fieldset: 'code_signature', - short: 'Hashing algorithm used to sign the process.', - type: 'keyword', - }, - 'threat.indicator.file.code_signature.exists': { - dashed_name: 'threat-indicator-file-code-signature-exists', - description: 'Boolean to capture if a signature is present.', - example: 'true', - flat_name: 'threat.indicator.file.code_signature.exists', - level: 'core', - name: 'exists', - normalize: [], - original_fieldset: 'code_signature', - short: 'Boolean to capture if a signature is present.', - type: 'boolean', - }, - 'threat.indicator.file.code_signature.signing_id': { - dashed_name: 'threat-indicator-file-code-signature-signing-id', - description: - 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', - example: 'com.apple.xpc.proxy', - flat_name: 'threat.indicator.file.code_signature.signing_id', - ignore_above: 1024, - level: 'extended', - name: 'signing_id', - normalize: [], - original_fieldset: 'code_signature', - short: 'The identifier used to sign the process.', - type: 'keyword', - }, - 'threat.indicator.file.code_signature.status': { - dashed_name: 'threat-indicator-file-code-signature-status', - description: - 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', - example: 'ERROR_UNTRUSTED_ROOT', - flat_name: 'threat.indicator.file.code_signature.status', - ignore_above: 1024, - level: 'extended', - name: 'status', - normalize: [], - original_fieldset: 'code_signature', - short: 'Additional information about the certificate status.', - type: 'keyword', - }, - 'threat.indicator.file.code_signature.subject_name': { - dashed_name: 'threat-indicator-file-code-signature-subject-name', - description: 'Subject name of the code signer', - example: 'Microsoft Corporation', - flat_name: 'threat.indicator.file.code_signature.subject_name', - ignore_above: 1024, - level: 'core', - name: 'subject_name', - normalize: [], - original_fieldset: 'code_signature', - short: 'Subject name of the code signer', - type: 'keyword', - }, - 'threat.indicator.file.code_signature.team_id': { - dashed_name: 'threat-indicator-file-code-signature-team-id', - description: - 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', - example: 'EQHXZ8M8AV', - flat_name: 'threat.indicator.file.code_signature.team_id', - ignore_above: 1024, - level: 'extended', - name: 'team_id', - normalize: [], - original_fieldset: 'code_signature', - short: 'The team identifier used to sign the process.', - type: 'keyword', - }, - 'threat.indicator.file.code_signature.timestamp': { - dashed_name: 'threat-indicator-file-code-signature-timestamp', - description: 'Date and time when the code signature was generated and signed.', - example: '2021-01-01T12:10:30Z', - flat_name: 'threat.indicator.file.code_signature.timestamp', - level: 'extended', - name: 'timestamp', - normalize: [], - original_fieldset: 'code_signature', - short: 'When the signature was generated and signed.', - type: 'date', - }, - 'threat.indicator.file.code_signature.trusted': { - dashed_name: 'threat-indicator-file-code-signature-trusted', - description: - 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', - example: 'true', - flat_name: 'threat.indicator.file.code_signature.trusted', - level: 'extended', - name: 'trusted', - normalize: [], - original_fieldset: 'code_signature', - short: 'Stores the trust status of the certificate chain.', - type: 'boolean', - }, - 'threat.indicator.file.code_signature.valid': { - dashed_name: 'threat-indicator-file-code-signature-valid', - description: - 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', - example: 'true', - flat_name: 'threat.indicator.file.code_signature.valid', - level: 'extended', - name: 'valid', - normalize: [], - original_fieldset: 'code_signature', - short: - 'Boolean to capture if the digital signature is verified against the binary content.', - type: 'boolean', - }, - 'threat.indicator.file.created': { - dashed_name: 'threat-indicator-file-created', - description: 'File creation time.\nNote that not all filesystems store the creation time.', - flat_name: 'threat.indicator.file.created', - level: 'extended', - name: 'created', - normalize: [], - original_fieldset: 'file', - short: 'File creation time.', - type: 'date', - }, - 'threat.indicator.file.ctime': { - dashed_name: 'threat-indicator-file-ctime', - description: - 'Last time the file attributes or metadata changed.\nNote that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file.', - flat_name: 'threat.indicator.file.ctime', - level: 'extended', - name: 'ctime', - normalize: [], - original_fieldset: 'file', - short: 'Last time the file attributes or metadata changed.', - type: 'date', - }, - 'threat.indicator.file.device': { - dashed_name: 'threat-indicator-file-device', - description: 'Device that is the source of the file.', - example: 'sda', - flat_name: 'threat.indicator.file.device', - ignore_above: 1024, - level: 'extended', - name: 'device', - normalize: [], - original_fieldset: 'file', - short: 'Device that is the source of the file.', - type: 'keyword', - }, - 'threat.indicator.file.directory': { - dashed_name: 'threat-indicator-file-directory', - description: - 'Directory where the file is located. It should include the drive letter, when appropriate.', - example: '/home/alice', - flat_name: 'threat.indicator.file.directory', - ignore_above: 1024, - level: 'extended', - name: 'directory', - normalize: [], - original_fieldset: 'file', - short: 'Directory where the file is located.', - type: 'keyword', - }, - 'threat.indicator.file.drive_letter': { - dashed_name: 'threat-indicator-file-drive-letter', - description: - 'Drive letter where the file is located. This field is only relevant on Windows.\nThe value should be uppercase, and not include the colon.', - example: 'C', - flat_name: 'threat.indicator.file.drive_letter', - ignore_above: 1, - level: 'extended', - name: 'drive_letter', - normalize: [], - original_fieldset: 'file', - short: 'Drive letter where the file is located.', - type: 'keyword', - }, - 'threat.indicator.file.elf.architecture': { - dashed_name: 'threat-indicator-file-elf-architecture', - description: 'Machine architecture of the ELF file.', - example: 'x86-64', - flat_name: 'threat.indicator.file.elf.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - original_fieldset: 'elf', - short: 'Machine architecture of the ELF file.', - type: 'keyword', - }, - 'threat.indicator.file.elf.byte_order': { - dashed_name: 'threat-indicator-file-elf-byte-order', - description: 'Byte sequence of ELF file.', - example: 'Little Endian', - flat_name: 'threat.indicator.file.elf.byte_order', - ignore_above: 1024, - level: 'extended', - name: 'byte_order', - normalize: [], - original_fieldset: 'elf', - short: 'Byte sequence of ELF file.', - type: 'keyword', - }, - 'threat.indicator.file.elf.cpu_type': { - dashed_name: 'threat-indicator-file-elf-cpu-type', - description: 'CPU type of the ELF file.', - example: 'Intel', - flat_name: 'threat.indicator.file.elf.cpu_type', - ignore_above: 1024, - level: 'extended', - name: 'cpu_type', - normalize: [], - original_fieldset: 'elf', - short: 'CPU type of the ELF file.', - type: 'keyword', - }, - 'threat.indicator.file.elf.creation_date': { - dashed_name: 'threat-indicator-file-elf-creation-date', - description: - "Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.", - flat_name: 'threat.indicator.file.elf.creation_date', - level: 'extended', - name: 'creation_date', - normalize: [], - original_fieldset: 'elf', - short: 'Build or compile date.', - type: 'date', - }, - 'threat.indicator.file.elf.exports': { - dashed_name: 'threat-indicator-file-elf-exports', - description: 'List of exported element names and types.', - flat_name: 'threat.indicator.file.elf.exports', - level: 'extended', - name: 'exports', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of exported element names and types.', - type: 'flattened', - }, - 'threat.indicator.file.elf.header.abi_version': { - dashed_name: 'threat-indicator-file-elf-header-abi-version', - description: 'Version of the ELF Application Binary Interface (ABI).', - flat_name: 'threat.indicator.file.elf.header.abi_version', - ignore_above: 1024, - level: 'extended', - name: 'header.abi_version', - normalize: [], - original_fieldset: 'elf', - short: 'Version of the ELF Application Binary Interface (ABI).', - type: 'keyword', - }, - 'threat.indicator.file.elf.header.class': { - dashed_name: 'threat-indicator-file-elf-header-class', - description: 'Header class of the ELF file.', - flat_name: 'threat.indicator.file.elf.header.class', - ignore_above: 1024, - level: 'extended', - name: 'header.class', - normalize: [], - original_fieldset: 'elf', - short: 'Header class of the ELF file.', - type: 'keyword', - }, - 'threat.indicator.file.elf.header.data': { - dashed_name: 'threat-indicator-file-elf-header-data', - description: 'Data table of the ELF header.', - flat_name: 'threat.indicator.file.elf.header.data', - ignore_above: 1024, - level: 'extended', - name: 'header.data', - normalize: [], - original_fieldset: 'elf', - short: 'Data table of the ELF header.', - type: 'keyword', - }, - 'threat.indicator.file.elf.header.entrypoint': { - dashed_name: 'threat-indicator-file-elf-header-entrypoint', - description: 'Header entrypoint of the ELF file.', - flat_name: 'threat.indicator.file.elf.header.entrypoint', - format: 'string', - level: 'extended', - name: 'header.entrypoint', - normalize: [], - original_fieldset: 'elf', - short: 'Header entrypoint of the ELF file.', - type: 'long', - }, - 'threat.indicator.file.elf.header.object_version': { - dashed_name: 'threat-indicator-file-elf-header-object-version', - description: '"0x1" for original ELF files.', - flat_name: 'threat.indicator.file.elf.header.object_version', - ignore_above: 1024, - level: 'extended', - name: 'header.object_version', - normalize: [], - original_fieldset: 'elf', - short: '"0x1" for original ELF files.', - type: 'keyword', - }, - 'threat.indicator.file.elf.header.os_abi': { - dashed_name: 'threat-indicator-file-elf-header-os-abi', - description: 'Application Binary Interface (ABI) of the Linux OS.', - flat_name: 'threat.indicator.file.elf.header.os_abi', - ignore_above: 1024, - level: 'extended', - name: 'header.os_abi', - normalize: [], - original_fieldset: 'elf', - short: 'Application Binary Interface (ABI) of the Linux OS.', - type: 'keyword', - }, - 'threat.indicator.file.elf.header.type': { - dashed_name: 'threat-indicator-file-elf-header-type', - description: 'Header type of the ELF file.', - flat_name: 'threat.indicator.file.elf.header.type', - ignore_above: 1024, - level: 'extended', - name: 'header.type', - normalize: [], - original_fieldset: 'elf', - short: 'Header type of the ELF file.', - type: 'keyword', - }, - 'threat.indicator.file.elf.header.version': { - dashed_name: 'threat-indicator-file-elf-header-version', - description: 'Version of the ELF header.', - flat_name: 'threat.indicator.file.elf.header.version', - ignore_above: 1024, - level: 'extended', - name: 'header.version', - normalize: [], - original_fieldset: 'elf', - short: 'Version of the ELF header.', - type: 'keyword', - }, - 'threat.indicator.file.elf.imports': { - dashed_name: 'threat-indicator-file-elf-imports', - description: 'List of imported element names and types.', - flat_name: 'threat.indicator.file.elf.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'threat.indicator.file.elf.sections': { - dashed_name: 'threat-indicator-file-elf-sections', - description: - 'An array containing an object for each section of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.', - flat_name: 'threat.indicator.file.elf.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'elf', - short: 'Section information of the ELF file.', - type: 'nested', - }, - 'threat.indicator.file.elf.sections.chi2': { - dashed_name: 'threat-indicator-file-elf-sections-chi2', - description: 'Chi-square probability distribution of the section.', - flat_name: 'threat.indicator.file.elf.sections.chi2', - format: 'number', - level: 'extended', - name: 'sections.chi2', - normalize: [], - original_fieldset: 'elf', - short: 'Chi-square probability distribution of the section.', - type: 'long', - }, - 'threat.indicator.file.elf.sections.entropy': { - dashed_name: 'threat-indicator-file-elf-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'threat.indicator.file.elf.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'threat.indicator.file.elf.sections.flags': { - dashed_name: 'threat-indicator-file-elf-sections-flags', - description: 'ELF Section List flags.', - flat_name: 'threat.indicator.file.elf.sections.flags', - ignore_above: 1024, - level: 'extended', - name: 'sections.flags', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List flags.', - type: 'keyword', - }, - 'threat.indicator.file.elf.sections.name': { - dashed_name: 'threat-indicator-file-elf-sections-name', - description: 'ELF Section List name.', - flat_name: 'threat.indicator.file.elf.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List name.', - type: 'keyword', - }, - 'threat.indicator.file.elf.sections.physical_offset': { - dashed_name: 'threat-indicator-file-elf-sections-physical-offset', - description: 'ELF Section List offset.', - flat_name: 'threat.indicator.file.elf.sections.physical_offset', - ignore_above: 1024, - level: 'extended', - name: 'sections.physical_offset', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List offset.', - type: 'keyword', - }, - 'threat.indicator.file.elf.sections.physical_size': { - dashed_name: 'threat-indicator-file-elf-sections-physical-size', - description: 'ELF Section List physical size.', - flat_name: 'threat.indicator.file.elf.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List physical size.', - type: 'long', - }, - 'threat.indicator.file.elf.sections.type': { - dashed_name: 'threat-indicator-file-elf-sections-type', - description: 'ELF Section List type.', - flat_name: 'threat.indicator.file.elf.sections.type', - ignore_above: 1024, - level: 'extended', - name: 'sections.type', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List type.', - type: 'keyword', - }, - 'threat.indicator.file.elf.sections.virtual_address': { - dashed_name: 'threat-indicator-file-elf-sections-virtual-address', - description: 'ELF Section List virtual address.', - flat_name: 'threat.indicator.file.elf.sections.virtual_address', - format: 'string', - level: 'extended', - name: 'sections.virtual_address', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List virtual address.', - type: 'long', - }, - 'threat.indicator.file.elf.sections.virtual_size': { - dashed_name: 'threat-indicator-file-elf-sections-virtual-size', - description: 'ELF Section List virtual size.', - flat_name: 'threat.indicator.file.elf.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'elf', - short: 'ELF Section List virtual size.', - type: 'long', - }, - 'threat.indicator.file.elf.segments': { - dashed_name: 'threat-indicator-file-elf-segments', - description: - 'An array containing an object for each segment of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.', - flat_name: 'threat.indicator.file.elf.segments', - level: 'extended', - name: 'segments', - normalize: ['array'], - original_fieldset: 'elf', - short: 'ELF object segment list.', - type: 'nested', - }, - 'threat.indicator.file.elf.segments.sections': { - dashed_name: 'threat-indicator-file-elf-segments-sections', - description: 'ELF object segment sections.', - flat_name: 'threat.indicator.file.elf.segments.sections', - ignore_above: 1024, - level: 'extended', - name: 'segments.sections', - normalize: [], - original_fieldset: 'elf', - short: 'ELF object segment sections.', - type: 'keyword', - }, - 'threat.indicator.file.elf.segments.type': { - dashed_name: 'threat-indicator-file-elf-segments-type', - description: 'ELF object segment type.', - flat_name: 'threat.indicator.file.elf.segments.type', - ignore_above: 1024, - level: 'extended', - name: 'segments.type', - normalize: [], - original_fieldset: 'elf', - short: 'ELF object segment type.', - type: 'keyword', - }, - 'threat.indicator.file.elf.shared_libraries': { - dashed_name: 'threat-indicator-file-elf-shared-libraries', - description: 'List of shared libraries used by this ELF object.', - flat_name: 'threat.indicator.file.elf.shared_libraries', - ignore_above: 1024, - level: 'extended', - name: 'shared_libraries', - normalize: ['array'], - original_fieldset: 'elf', - short: 'List of shared libraries used by this ELF object.', - type: 'keyword', - }, - 'threat.indicator.file.elf.telfhash': { - dashed_name: 'threat-indicator-file-elf-telfhash', - description: 'telfhash symbol hash for ELF file.', - flat_name: 'threat.indicator.file.elf.telfhash', - ignore_above: 1024, - level: 'extended', - name: 'telfhash', - normalize: [], - original_fieldset: 'elf', - short: 'telfhash hash for ELF file.', - type: 'keyword', - }, - 'threat.indicator.file.extension': { - dashed_name: 'threat-indicator-file-extension', - description: - 'File extension, excluding the leading dot.\nNote that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").', - example: 'png', - flat_name: 'threat.indicator.file.extension', - ignore_above: 1024, - level: 'extended', - name: 'extension', - normalize: [], - original_fieldset: 'file', - short: 'File extension, excluding the leading dot.', - type: 'keyword', - }, - 'threat.indicator.file.fork_name': { - dashed_name: 'threat-indicator-file-fork-name', - description: - 'A fork is additional data associated with a filesystem object.\nOn Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.\nOn NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\\path\\to\\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.', - example: 'Zone.Identifer', - flat_name: 'threat.indicator.file.fork_name', - ignore_above: 1024, - level: 'extended', - name: 'fork_name', - normalize: [], - original_fieldset: 'file', - short: 'A fork is additional data associated with a filesystem object.', - type: 'keyword', - }, - 'threat.indicator.file.gid': { - dashed_name: 'threat-indicator-file-gid', - description: 'Primary group ID (GID) of the file.', - example: '1001', - flat_name: 'threat.indicator.file.gid', - ignore_above: 1024, - level: 'extended', - name: 'gid', - normalize: [], - original_fieldset: 'file', - short: 'Primary group ID (GID) of the file.', - type: 'keyword', - }, - 'threat.indicator.file.group': { - dashed_name: 'threat-indicator-file-group', - description: 'Primary group name of the file.', - example: 'alice', - flat_name: 'threat.indicator.file.group', - ignore_above: 1024, - level: 'extended', - name: 'group', - normalize: [], - original_fieldset: 'file', - short: 'Primary group name of the file.', - type: 'keyword', - }, - 'threat.indicator.file.hash.md5': { - dashed_name: 'threat-indicator-file-hash-md5', - description: 'MD5 hash.', - flat_name: 'threat.indicator.file.hash.md5', - ignore_above: 1024, - level: 'extended', - name: 'md5', - normalize: [], - original_fieldset: 'hash', - short: 'MD5 hash.', - type: 'keyword', - }, - 'threat.indicator.file.hash.sha1': { - dashed_name: 'threat-indicator-file-hash-sha1', - description: 'SHA1 hash.', - flat_name: 'threat.indicator.file.hash.sha1', - ignore_above: 1024, - level: 'extended', - name: 'sha1', - normalize: [], - original_fieldset: 'hash', - short: 'SHA1 hash.', - type: 'keyword', - }, - 'threat.indicator.file.hash.sha256': { - dashed_name: 'threat-indicator-file-hash-sha256', - description: 'SHA256 hash.', - flat_name: 'threat.indicator.file.hash.sha256', - ignore_above: 1024, - level: 'extended', - name: 'sha256', - normalize: [], - original_fieldset: 'hash', - short: 'SHA256 hash.', - type: 'keyword', - }, - 'threat.indicator.file.hash.sha384': { - dashed_name: 'threat-indicator-file-hash-sha384', - description: 'SHA384 hash.', - flat_name: 'threat.indicator.file.hash.sha384', - ignore_above: 1024, - level: 'extended', - name: 'sha384', - normalize: [], - original_fieldset: 'hash', - short: 'SHA384 hash.', - type: 'keyword', - }, - 'threat.indicator.file.hash.sha512': { - dashed_name: 'threat-indicator-file-hash-sha512', - description: 'SHA512 hash.', - flat_name: 'threat.indicator.file.hash.sha512', - ignore_above: 1024, - level: 'extended', - name: 'sha512', - normalize: [], - original_fieldset: 'hash', - short: 'SHA512 hash.', - type: 'keyword', - }, - 'threat.indicator.file.hash.ssdeep': { - dashed_name: 'threat-indicator-file-hash-ssdeep', - description: 'SSDEEP hash.', - flat_name: 'threat.indicator.file.hash.ssdeep', - ignore_above: 1024, - level: 'extended', - name: 'ssdeep', - normalize: [], - original_fieldset: 'hash', - short: 'SSDEEP hash.', - type: 'keyword', - }, - 'threat.indicator.file.hash.tlsh': { - dashed_name: 'threat-indicator-file-hash-tlsh', - description: 'TLSH hash.', - flat_name: 'threat.indicator.file.hash.tlsh', - ignore_above: 1024, - level: 'extended', - name: 'tlsh', - normalize: [], - original_fieldset: 'hash', - short: 'TLSH hash.', - type: 'keyword', - }, - 'threat.indicator.file.inode': { - dashed_name: 'threat-indicator-file-inode', - description: 'Inode representing the file in the filesystem.', - example: '256383', - flat_name: 'threat.indicator.file.inode', - ignore_above: 1024, - level: 'extended', - name: 'inode', - normalize: [], - original_fieldset: 'file', - short: 'Inode representing the file in the filesystem.', - type: 'keyword', - }, - 'threat.indicator.file.mime_type': { - dashed_name: 'threat-indicator-file-mime-type', - description: - 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', - flat_name: 'threat.indicator.file.mime_type', - ignore_above: 1024, - level: 'extended', - name: 'mime_type', - normalize: [], - original_fieldset: 'file', - short: 'Media type of file, document, or arrangement of bytes.', - type: 'keyword', - }, - 'threat.indicator.file.mode': { - dashed_name: 'threat-indicator-file-mode', - description: 'Mode of the file in octal representation.', - example: '0640', - flat_name: 'threat.indicator.file.mode', - ignore_above: 1024, - level: 'extended', - name: 'mode', - normalize: [], - original_fieldset: 'file', - short: 'Mode of the file in octal representation.', - type: 'keyword', - }, - 'threat.indicator.file.mtime': { - dashed_name: 'threat-indicator-file-mtime', - description: 'Last time the file content was modified.', - flat_name: 'threat.indicator.file.mtime', - level: 'extended', - name: 'mtime', - normalize: [], - original_fieldset: 'file', - short: 'Last time the file content was modified.', - type: 'date', - }, - 'threat.indicator.file.name': { - dashed_name: 'threat-indicator-file-name', - description: 'Name of the file including the extension, without the directory.', - example: 'example.png', - flat_name: 'threat.indicator.file.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'file', - short: 'Name of the file including the extension, without the directory.', - type: 'keyword', - }, - 'threat.indicator.file.owner': { - dashed_name: 'threat-indicator-file-owner', - description: "File owner's username.", - example: 'alice', - flat_name: 'threat.indicator.file.owner', - ignore_above: 1024, - level: 'extended', - name: 'owner', - normalize: [], - original_fieldset: 'file', - short: "File owner's username.", - type: 'keyword', - }, - 'threat.indicator.file.path': { - dashed_name: 'threat-indicator-file-path', - description: - 'Full path to the file, including the file name. It should include the drive letter, when appropriate.', - example: '/home/alice/example.png', - flat_name: 'threat.indicator.file.path', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'threat.indicator.file.path.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'path', - normalize: [], - original_fieldset: 'file', - short: 'Full path to the file, including the file name.', - type: 'keyword', - }, - 'threat.indicator.file.pe.architecture': { - dashed_name: 'threat-indicator-file-pe-architecture', - description: 'CPU architecture target for the file.', - example: 'x64', - flat_name: 'threat.indicator.file.pe.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', - normalize: [], - original_fieldset: 'pe', - short: 'CPU architecture target for the file.', - type: 'keyword', - }, - 'threat.indicator.file.pe.company': { - dashed_name: 'threat-indicator-file-pe-company', - description: 'Internal company name of the file, provided at compile-time.', - example: 'Microsoft Corporation', - flat_name: 'threat.indicator.file.pe.company', - ignore_above: 1024, - level: 'extended', - name: 'company', - normalize: [], - original_fieldset: 'pe', - short: 'Internal company name of the file, provided at compile-time.', - type: 'keyword', - }, - 'threat.indicator.file.pe.description': { - dashed_name: 'threat-indicator-file-pe-description', - description: 'Internal description of the file, provided at compile-time.', - example: 'Paint', - flat_name: 'threat.indicator.file.pe.description', - ignore_above: 1024, - level: 'extended', - name: 'description', - normalize: [], - original_fieldset: 'pe', - short: 'Internal description of the file, provided at compile-time.', - type: 'keyword', - }, - 'threat.indicator.file.pe.file_version': { - dashed_name: 'threat-indicator-file-pe-file-version', - description: 'Internal version of the file, provided at compile-time.', - example: '6.3.9600.17415', - flat_name: 'threat.indicator.file.pe.file_version', - ignore_above: 1024, - level: 'extended', - name: 'file_version', - normalize: [], - original_fieldset: 'pe', - short: 'Process name.', - type: 'keyword', - }, - 'threat.indicator.file.pe.imphash': { - dashed_name: 'threat-indicator-file-pe-imphash', - description: - 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', - example: '0c6803c4e922103c4dca5963aad36ddf', - flat_name: 'threat.indicator.file.pe.imphash', - ignore_above: 1024, - level: 'extended', - name: 'imphash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'threat.indicator.file.pe.original_file_name': { - dashed_name: 'threat-indicator-file-pe-original-file-name', - description: 'Internal name of the file, provided at compile-time.', - example: 'MSPAINT.EXE', - flat_name: 'threat.indicator.file.pe.original_file_name', - ignore_above: 1024, - level: 'extended', - name: 'original_file_name', - normalize: [], - original_fieldset: 'pe', - short: 'Internal name of the file, provided at compile-time.', - type: 'keyword', - }, - 'threat.indicator.file.pe.pehash': { - dashed_name: 'threat-indicator-file-pe-pehash', - description: - 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', - example: '73ff189b63cd6be375a7ff25179a38d347651975', - flat_name: 'threat.indicator.file.pe.pehash', - ignore_above: 1024, - level: 'extended', - name: 'pehash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the PE header and data from one or more PE sections.', - type: 'keyword', - }, - 'threat.indicator.file.pe.product': { - dashed_name: 'threat-indicator-file-pe-product', - description: 'Internal product name of the file, provided at compile-time.', - example: 'Microsoft® Windows® Operating System', - flat_name: 'threat.indicator.file.pe.product', - ignore_above: 1024, - level: 'extended', - name: 'product', - normalize: [], - original_fieldset: 'pe', - short: 'Internal product name of the file, provided at compile-time.', - type: 'keyword', - }, - 'threat.indicator.file.size': { - dashed_name: 'threat-indicator-file-size', - description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', - example: 16384, - flat_name: 'threat.indicator.file.size', - level: 'extended', - name: 'size', - normalize: [], - original_fieldset: 'file', - short: 'File size in bytes.', - type: 'long', - }, - 'threat.indicator.file.target_path': { - dashed_name: 'threat-indicator-file-target-path', - description: 'Target path for symlinks.', - flat_name: 'threat.indicator.file.target_path', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'threat.indicator.file.target_path.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'target_path', - normalize: [], - original_fieldset: 'file', - short: 'Target path for symlinks.', - type: 'keyword', - }, - 'threat.indicator.file.type': { - dashed_name: 'threat-indicator-file-type', - description: 'File type (file, dir, or symlink).', - example: 'file', - flat_name: 'threat.indicator.file.type', - ignore_above: 1024, - level: 'extended', - name: 'type', - normalize: [], - original_fieldset: 'file', - short: 'File type (file, dir, or symlink).', - type: 'keyword', - }, - 'threat.indicator.file.uid': { - dashed_name: 'threat-indicator-file-uid', - description: 'The user ID (UID) or security identifier (SID) of the file owner.', - example: '1001', - flat_name: 'threat.indicator.file.uid', - ignore_above: 1024, - level: 'extended', - name: 'uid', - normalize: [], - original_fieldset: 'file', - short: 'The user ID (UID) or security identifier (SID) of the file owner.', - type: 'keyword', - }, - 'threat.indicator.file.x509.alternative_names': { - dashed_name: 'threat-indicator-file-x509-alternative-names', - description: - 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', - example: '*.elastic.co', - flat_name: 'threat.indicator.file.x509.alternative_names', - ignore_above: 1024, - level: 'extended', - name: 'alternative_names', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of subject alternative names (SAN).', - type: 'keyword', - }, - 'threat.indicator.file.x509.issuer.common_name': { - dashed_name: 'threat-indicator-file-x509-issuer-common-name', - description: 'List of common name (CN) of issuing certificate authority.', - example: 'Example SHA2 High Assurance Server CA', - flat_name: 'threat.indicator.file.x509.issuer.common_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common name (CN) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.indicator.file.x509.issuer.country': { - dashed_name: 'threat-indicator-file-x509-issuer-country', - description: 'List of country \\(C) codes', - example: 'US', - flat_name: 'threat.indicator.file.x509.issuer.country', - ignore_above: 1024, - level: 'extended', - name: 'issuer.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) codes', - type: 'keyword', - }, - 'threat.indicator.file.x509.issuer.distinguished_name': { - dashed_name: 'threat-indicator-file-x509-issuer-distinguished-name', - description: 'Distinguished name (DN) of issuing certificate authority.', - example: - 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', - flat_name: 'threat.indicator.file.x509.issuer.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.indicator.file.x509.issuer.locality': { - dashed_name: 'threat-indicator-file-x509-issuer-locality', - description: 'List of locality names (L)', - example: 'Mountain View', - flat_name: 'threat.indicator.file.x509.issuer.locality', - ignore_above: 1024, - level: 'extended', - name: 'issuer.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'threat.indicator.file.x509.issuer.organization': { - dashed_name: 'threat-indicator-file-x509-issuer-organization', - description: 'List of organizations (O) of issuing certificate authority.', - example: 'Example Inc', - flat_name: 'threat.indicator.file.x509.issuer.organization', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.indicator.file.x509.issuer.organizational_unit': { - dashed_name: 'threat-indicator-file-x509-issuer-organizational-unit', - description: 'List of organizational units (OU) of issuing certificate authority.', - example: 'www.example.com', - flat_name: 'threat.indicator.file.x509.issuer.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.indicator.file.x509.issuer.state_or_province': { - dashed_name: 'threat-indicator-file-x509-issuer-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'threat.indicator.file.x509.issuer.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'issuer.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'threat.indicator.file.x509.not_after': { - dashed_name: 'threat-indicator-file-x509-not-after', - description: 'Time at which the certificate is no longer considered valid.', - example: '2020-07-16T03:15:39Z', - flat_name: 'threat.indicator.file.x509.not_after', - level: 'extended', - name: 'not_after', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is no longer considered valid.', - type: 'date', - }, - 'threat.indicator.file.x509.not_before': { - dashed_name: 'threat-indicator-file-x509-not-before', - description: 'Time at which the certificate is first considered valid.', - example: '2019-08-16T01:40:25Z', - flat_name: 'threat.indicator.file.x509.not_before', - level: 'extended', - name: 'not_before', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is first considered valid.', - type: 'date', - }, - 'threat.indicator.file.x509.public_key_algorithm': { - dashed_name: 'threat-indicator-file-x509-public-key-algorithm', - description: 'Algorithm used to generate the public key.', - example: 'RSA', - flat_name: 'threat.indicator.file.x509.public_key_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'public_key_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Algorithm used to generate the public key.', - type: 'keyword', - }, - 'threat.indicator.file.x509.public_key_curve': { - dashed_name: 'threat-indicator-file-x509-public-key-curve', - description: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - example: 'nistp521', - flat_name: 'threat.indicator.file.x509.public_key_curve', - ignore_above: 1024, - level: 'extended', - name: 'public_key_curve', - normalize: [], - original_fieldset: 'x509', - short: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - type: 'keyword', - }, - 'threat.indicator.file.x509.public_key_exponent': { - dashed_name: 'threat-indicator-file-x509-public-key-exponent', - description: 'Exponent used to derive the public key. This is algorithm specific.', - doc_values: false, - example: 65537, - flat_name: 'threat.indicator.file.x509.public_key_exponent', - index: false, - level: 'extended', - name: 'public_key_exponent', - normalize: [], - original_fieldset: 'x509', - short: 'Exponent used to derive the public key. This is algorithm specific.', - type: 'long', - }, - 'threat.indicator.file.x509.public_key_size': { - dashed_name: 'threat-indicator-file-x509-public-key-size', - description: 'The size of the public key space in bits.', - example: 2048, - flat_name: 'threat.indicator.file.x509.public_key_size', - level: 'extended', - name: 'public_key_size', - normalize: [], - original_fieldset: 'x509', - short: 'The size of the public key space in bits.', - type: 'long', - }, - 'threat.indicator.file.x509.serial_number': { - dashed_name: 'threat-indicator-file-x509-serial-number', - description: - 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', - example: '55FBB9C7DEBF09809D12CCAA', - flat_name: 'threat.indicator.file.x509.serial_number', - ignore_above: 1024, - level: 'extended', - name: 'serial_number', - normalize: [], - original_fieldset: 'x509', - short: 'Unique serial number issued by the certificate authority.', - type: 'keyword', - }, - 'threat.indicator.file.x509.signature_algorithm': { - dashed_name: 'threat-indicator-file-x509-signature-algorithm', - description: - 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', - example: 'SHA256-RSA', - flat_name: 'threat.indicator.file.x509.signature_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'signature_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Identifier for certificate signature algorithm.', - type: 'keyword', - }, - 'threat.indicator.file.x509.subject.common_name': { - dashed_name: 'threat-indicator-file-x509-subject-common-name', - description: 'List of common names (CN) of subject.', - example: 'shared.global.example.net', - flat_name: 'threat.indicator.file.x509.subject.common_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common names (CN) of subject.', - type: 'keyword', - }, - 'threat.indicator.file.x509.subject.country': { - dashed_name: 'threat-indicator-file-x509-subject-country', - description: 'List of country \\(C) code', - example: 'US', - flat_name: 'threat.indicator.file.x509.subject.country', - ignore_above: 1024, - level: 'extended', - name: 'subject.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) code', - type: 'keyword', - }, - 'threat.indicator.file.x509.subject.distinguished_name': { - dashed_name: 'threat-indicator-file-x509-subject-distinguished-name', - description: 'Distinguished name (DN) of the certificate subject entity.', - example: - 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', - flat_name: 'threat.indicator.file.x509.subject.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of the certificate subject entity.', - type: 'keyword', - }, - 'threat.indicator.file.x509.subject.locality': { - dashed_name: 'threat-indicator-file-x509-subject-locality', - description: 'List of locality names (L)', - example: 'San Francisco', - flat_name: 'threat.indicator.file.x509.subject.locality', - ignore_above: 1024, - level: 'extended', - name: 'subject.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'threat.indicator.file.x509.subject.organization': { - dashed_name: 'threat-indicator-file-x509-subject-organization', - description: 'List of organizations (O) of subject.', - example: 'Example, Inc.', - flat_name: 'threat.indicator.file.x509.subject.organization', - ignore_above: 1024, - level: 'extended', - name: 'subject.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of subject.', - type: 'keyword', - }, - 'threat.indicator.file.x509.subject.organizational_unit': { - dashed_name: 'threat-indicator-file-x509-subject-organizational-unit', - description: 'List of organizational units (OU) of subject.', - flat_name: 'threat.indicator.file.x509.subject.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'subject.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of subject.', - type: 'keyword', - }, - 'threat.indicator.file.x509.subject.state_or_province': { - dashed_name: 'threat-indicator-file-x509-subject-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'threat.indicator.file.x509.subject.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'subject.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'threat.indicator.file.x509.version_number': { - dashed_name: 'threat-indicator-file-x509-version-number', - description: 'Version of x509 format.', - example: 3, - flat_name: 'threat.indicator.file.x509.version_number', - ignore_above: 1024, - level: 'extended', - name: 'version_number', - normalize: [], - original_fieldset: 'x509', - short: 'Version of x509 format.', - type: 'keyword', - }, - 'threat.indicator.first_seen': { - dashed_name: 'threat-indicator-first-seen', - description: - 'The date and time when intelligence source first reported sighting this indicator.', - example: '2020-11-05T17:25:47.000Z', - flat_name: 'threat.indicator.first_seen', - level: 'extended', - name: 'indicator.first_seen', - normalize: [], - short: 'Date/time indicator was first reported.', - type: 'date', - }, - 'threat.indicator.geo.city_name': { - dashed_name: 'threat-indicator-geo-city-name', - description: 'City name.', - example: 'Montreal', - flat_name: 'threat.indicator.geo.city_name', - ignore_above: 1024, - level: 'core', - name: 'city_name', - normalize: [], - original_fieldset: 'geo', - short: 'City name.', - type: 'keyword', - }, - 'threat.indicator.geo.continent_code': { - dashed_name: 'threat-indicator-geo-continent-code', - description: "Two-letter code representing continent's name.", - example: 'NA', - flat_name: 'threat.indicator.geo.continent_code', - ignore_above: 1024, - level: 'core', - name: 'continent_code', - normalize: [], - original_fieldset: 'geo', - short: 'Continent code.', - type: 'keyword', - }, - 'threat.indicator.geo.continent_name': { - dashed_name: 'threat-indicator-geo-continent-name', - description: 'Name of the continent.', - example: 'North America', - flat_name: 'threat.indicator.geo.continent_name', - ignore_above: 1024, - level: 'core', - name: 'continent_name', - normalize: [], - original_fieldset: 'geo', - short: 'Name of the continent.', - type: 'keyword', - }, - 'threat.indicator.geo.country_iso_code': { - dashed_name: 'threat-indicator-geo-country-iso-code', - description: 'Country ISO code.', - example: 'CA', - flat_name: 'threat.indicator.geo.country_iso_code', - ignore_above: 1024, - level: 'core', - name: 'country_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Country ISO code.', - type: 'keyword', - }, - 'threat.indicator.geo.country_name': { - dashed_name: 'threat-indicator-geo-country-name', - description: 'Country name.', - example: 'Canada', - flat_name: 'threat.indicator.geo.country_name', - ignore_above: 1024, - level: 'core', - name: 'country_name', - normalize: [], - original_fieldset: 'geo', - short: 'Country name.', - type: 'keyword', - }, - 'threat.indicator.geo.location': { - dashed_name: 'threat-indicator-geo-location', - description: 'Longitude and latitude.', - example: '{ "lon": -73.614830, "lat": 45.505918 }', - flat_name: 'threat.indicator.geo.location', - level: 'core', - name: 'location', - normalize: [], - original_fieldset: 'geo', - short: 'Longitude and latitude.', - type: 'geo_point', - }, - 'threat.indicator.geo.name': { - dashed_name: 'threat-indicator-geo-name', - description: - 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', - example: 'boston-dc', - flat_name: 'threat.indicator.geo.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'geo', - short: 'User-defined description of a location.', - type: 'keyword', - }, - 'threat.indicator.geo.postal_code': { - dashed_name: 'threat-indicator-geo-postal-code', - description: - 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', - example: 94040, - flat_name: 'threat.indicator.geo.postal_code', - ignore_above: 1024, - level: 'core', - name: 'postal_code', - normalize: [], - original_fieldset: 'geo', - short: 'Postal code.', - type: 'keyword', - }, - 'threat.indicator.geo.region_iso_code': { - dashed_name: 'threat-indicator-geo-region-iso-code', - description: 'Region ISO code.', - example: 'CA-QC', - flat_name: 'threat.indicator.geo.region_iso_code', - ignore_above: 1024, - level: 'core', - name: 'region_iso_code', - normalize: [], - original_fieldset: 'geo', - short: 'Region ISO code.', - type: 'keyword', - }, - 'threat.indicator.geo.region_name': { - dashed_name: 'threat-indicator-geo-region-name', - description: 'Region name.', - example: 'Quebec', - flat_name: 'threat.indicator.geo.region_name', - ignore_above: 1024, - level: 'core', - name: 'region_name', - normalize: [], - original_fieldset: 'geo', - short: 'Region name.', - type: 'keyword', - }, - 'threat.indicator.geo.timezone': { - dashed_name: 'threat-indicator-geo-timezone', - description: 'The time zone of the location, such as IANA time zone name.', - example: 'America/Argentina/Buenos_Aires', - flat_name: 'threat.indicator.geo.timezone', - ignore_above: 1024, - level: 'core', - name: 'timezone', - normalize: [], - original_fieldset: 'geo', - short: 'Time zone.', - type: 'keyword', - }, - 'threat.indicator.ip': { - dashed_name: 'threat-indicator-ip', - description: 'Identifies a threat indicator as an IP address (irrespective of direction).', - example: '1.2.3.4', - flat_name: 'threat.indicator.ip', - level: 'extended', - name: 'indicator.ip', - normalize: [], - short: 'Indicator IP address', - type: 'ip', - }, - 'threat.indicator.last_seen': { - dashed_name: 'threat-indicator-last-seen', - description: - 'The date and time when intelligence source last reported sighting this indicator.', - example: '2020-11-05T17:25:47.000Z', - flat_name: 'threat.indicator.last_seen', - level: 'extended', - name: 'indicator.last_seen', - normalize: [], - short: 'Date/time indicator was last reported.', - type: 'date', - }, - 'threat.indicator.marking.tlp': { - dashed_name: 'threat-indicator-marking-tlp', - description: 'Traffic Light Protocol sharing markings.', - example: 'CLEAR', - expected_values: ['WHITE', 'CLEAR', 'GREEN', 'AMBER', 'AMBER+STRICT', 'RED'], - flat_name: 'threat.indicator.marking.tlp', - ignore_above: 1024, - level: 'extended', - name: 'indicator.marking.tlp', - normalize: [], - short: 'Indicator TLP marking', - type: 'keyword', - }, - 'threat.indicator.modified_at': { - dashed_name: 'threat-indicator-modified-at', - description: - 'The date and time when intelligence source last modified information for this indicator.', - example: '2020-11-05T17:25:47.000Z', - flat_name: 'threat.indicator.modified_at', - level: 'extended', - name: 'indicator.modified_at', - normalize: [], - short: 'Date/time indicator was last updated.', - type: 'date', - }, - 'threat.indicator.port': { - dashed_name: 'threat-indicator-port', - description: 'Identifies a threat indicator as a port number (irrespective of direction).', - example: 443, - flat_name: 'threat.indicator.port', - level: 'extended', - name: 'indicator.port', - normalize: [], - short: 'Indicator port', - type: 'long', - }, - 'threat.indicator.provider': { - dashed_name: 'threat-indicator-provider', - description: "The name of the indicator's provider.", - example: 'lrz_urlhaus', - flat_name: 'threat.indicator.provider', - ignore_above: 1024, - level: 'extended', - name: 'indicator.provider', - normalize: [], - short: 'Indicator provider', - type: 'keyword', - }, - 'threat.indicator.reference': { - dashed_name: 'threat-indicator-reference', - description: 'Reference URL linking to additional information about this indicator.', - example: 'https://system.example.com/indicator/0001234', - flat_name: 'threat.indicator.reference', - ignore_above: 1024, - level: 'extended', - name: 'indicator.reference', - normalize: [], - short: 'Indicator reference URL', - type: 'keyword', - }, - 'threat.indicator.registry.data.bytes': { - dashed_name: 'threat-indicator-registry-data-bytes', - description: - 'Original bytes written with base64 encoding.\nFor Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values.', - example: 'ZQBuAC0AVQBTAAAAZQBuAAAAAAA=', - flat_name: 'threat.indicator.registry.data.bytes', - ignore_above: 1024, - level: 'extended', - name: 'data.bytes', - normalize: [], - original_fieldset: 'registry', - short: 'Original bytes written with base64 encoding.', - type: 'keyword', - }, - 'threat.indicator.registry.data.strings': { - dashed_name: 'threat-indicator-registry-data-strings', - description: - 'Content when writing string types.\nPopulated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`).', - example: '["C:\\rta\\red_ttp\\bin\\myapp.exe"]', - flat_name: 'threat.indicator.registry.data.strings', - level: 'core', - name: 'data.strings', - normalize: ['array'], - original_fieldset: 'registry', - short: 'List of strings representing what was written to the registry.', - type: 'wildcard', - }, - 'threat.indicator.registry.data.type': { - dashed_name: 'threat-indicator-registry-data-type', - description: 'Standard registry type for encoding contents', - example: 'REG_SZ', - flat_name: 'threat.indicator.registry.data.type', - ignore_above: 1024, - level: 'core', - name: 'data.type', - normalize: [], - original_fieldset: 'registry', - short: 'Standard registry type for encoding contents', - type: 'keyword', - }, - 'threat.indicator.registry.hive': { - dashed_name: 'threat-indicator-registry-hive', - description: 'Abbreviated name for the hive.', - example: 'HKLM', - flat_name: 'threat.indicator.registry.hive', - ignore_above: 1024, - level: 'core', - name: 'hive', - normalize: [], - original_fieldset: 'registry', - short: 'Abbreviated name for the hive.', - type: 'keyword', - }, - 'threat.indicator.registry.key': { - dashed_name: 'threat-indicator-registry-key', - description: 'Hive-relative path of keys.', - example: - 'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\winword.exe', - flat_name: 'threat.indicator.registry.key', - ignore_above: 1024, - level: 'core', - name: 'key', - normalize: [], - original_fieldset: 'registry', - short: 'Hive-relative path of keys.', - type: 'keyword', - }, - 'threat.indicator.registry.path': { - dashed_name: 'threat-indicator-registry-path', - description: 'Full path, including hive, key and value', - example: - 'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\winword.exe\\Debugger', - flat_name: 'threat.indicator.registry.path', - ignore_above: 1024, - level: 'core', - name: 'path', - normalize: [], - original_fieldset: 'registry', - short: 'Full path, including hive, key and value', - type: 'keyword', - }, - 'threat.indicator.registry.value': { - dashed_name: 'threat-indicator-registry-value', - description: 'Name of the value written.', - example: 'Debugger', - flat_name: 'threat.indicator.registry.value', - ignore_above: 1024, - level: 'core', - name: 'value', - normalize: [], - original_fieldset: 'registry', - short: 'Name of the value written.', - type: 'keyword', - }, - 'threat.indicator.scanner_stats': { - dashed_name: 'threat-indicator-scanner-stats', - description: 'Count of AV/EDR vendors that successfully detected malicious file or URL.', - example: 4, - flat_name: 'threat.indicator.scanner_stats', - level: 'extended', - name: 'indicator.scanner_stats', - normalize: [], - short: 'Scanner statistics', - type: 'long', - }, - 'threat.indicator.sightings': { - dashed_name: 'threat-indicator-sightings', - description: 'Number of times this indicator was observed conducting threat activity.', - example: 20, - flat_name: 'threat.indicator.sightings', - level: 'extended', - name: 'indicator.sightings', - normalize: [], - short: 'Number of times indicator observed', - type: 'long', - }, - 'threat.indicator.type': { - dashed_name: 'threat-indicator-type', - description: 'Type of indicator as represented by Cyber Observable in STIX 2.0.', - example: 'ipv4-addr', - expected_values: [ - 'autonomous-system', - 'artifact', - 'directory', - 'domain-name', - 'email-addr', - 'file', - 'ipv4-addr', - 'ipv6-addr', - 'mac-addr', - 'mutex', - 'port', - 'process', - 'software', - 'url', - 'user-account', - 'windows-registry-key', - 'x509-certificate', - ], - flat_name: 'threat.indicator.type', - ignore_above: 1024, - level: 'extended', - name: 'indicator.type', - normalize: [], - short: 'Type of indicator', - type: 'keyword', - }, - 'threat.indicator.url.domain': { - dashed_name: 'threat-indicator-url-domain', - description: - 'Domain of the url, such as "www.elastic.co".\nIn some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field.\nIf the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field.', - example: 'www.elastic.co', - flat_name: 'threat.indicator.url.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'url', - short: 'Domain of the url.', - type: 'keyword', - }, - 'threat.indicator.url.extension': { - dashed_name: 'threat-indicator-url-extension', - description: - 'The field contains the file extension from the original request url, excluding the leading dot.\nThe file extension is only set if it exists, as not every url has a file extension.\nThe leading period must not be included. For example, the value must be "png", not ".png".\nNote that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").', - example: 'png', - flat_name: 'threat.indicator.url.extension', - ignore_above: 1024, - level: 'extended', - name: 'extension', - normalize: [], - original_fieldset: 'url', - short: 'File extension from the request url, excluding the leading dot.', - type: 'keyword', - }, - 'threat.indicator.url.fragment': { - dashed_name: 'threat-indicator-url-fragment', - description: - 'Portion of the url after the `#`, such as "top".\nThe `#` is not part of the fragment.', - flat_name: 'threat.indicator.url.fragment', - ignore_above: 1024, - level: 'extended', - name: 'fragment', - normalize: [], - original_fieldset: 'url', - short: 'Portion of the url after the `#`.', - type: 'keyword', - }, - 'threat.indicator.url.full': { - dashed_name: 'threat-indicator-url-full', - description: - 'If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source.', - example: 'https://www.elastic.co:443/search?q=elasticsearch#top', - flat_name: 'threat.indicator.url.full', - level: 'extended', - multi_fields: [ - { - flat_name: 'threat.indicator.url.full.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full', - normalize: [], - original_fieldset: 'url', - short: 'Full unparsed URL.', - type: 'wildcard', - }, - 'threat.indicator.url.original': { - dashed_name: 'threat-indicator-url-original', - description: - 'Unmodified original url as seen in the event source.\nNote that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path.\nThis field is meant to represent the URL as it was observed, complete or not.', - example: 'https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch', - flat_name: 'threat.indicator.url.original', - level: 'extended', - multi_fields: [ - { - flat_name: 'threat.indicator.url.original.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'original', - normalize: [], - original_fieldset: 'url', - short: 'Unmodified original url as seen in the event source.', - type: 'wildcard', - }, - 'threat.indicator.url.password': { - dashed_name: 'threat-indicator-url-password', - description: 'Password of the request.', - flat_name: 'threat.indicator.url.password', - ignore_above: 1024, - level: 'extended', - name: 'password', - normalize: [], - original_fieldset: 'url', - short: 'Password of the request.', - type: 'keyword', - }, - 'threat.indicator.url.path': { - dashed_name: 'threat-indicator-url-path', - description: 'Path of the request, such as "/search".', - flat_name: 'threat.indicator.url.path', - level: 'extended', - name: 'path', - normalize: [], - original_fieldset: 'url', - short: 'Path of the request, such as "/search".', - type: 'wildcard', - }, - 'threat.indicator.url.port': { - dashed_name: 'threat-indicator-url-port', - description: 'Port of the request, such as 443.', - example: 443, - flat_name: 'threat.indicator.url.port', - format: 'string', - level: 'extended', - name: 'port', - normalize: [], - original_fieldset: 'url', - short: 'Port of the request, such as 443.', - type: 'long', - }, - 'threat.indicator.url.query': { - dashed_name: 'threat-indicator-url-query', - description: - 'The query field describes the query string of the request, such as "q=elasticsearch".\nThe `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases.', - flat_name: 'threat.indicator.url.query', - ignore_above: 1024, - level: 'extended', - name: 'query', - normalize: [], - original_fieldset: 'url', - short: 'Query string of the request.', - type: 'keyword', - }, - 'threat.indicator.url.registered_domain': { - dashed_name: 'threat-indicator-url-registered-domain', - description: - 'The highest registered url domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', - example: 'example.com', - flat_name: 'threat.indicator.url.registered_domain', - ignore_above: 1024, - level: 'extended', - name: 'registered_domain', - normalize: [], - original_fieldset: 'url', - short: 'The highest registered url domain, stripped of the subdomain.', - type: 'keyword', - }, - 'threat.indicator.url.scheme': { - dashed_name: 'threat-indicator-url-scheme', - description: - 'Scheme of the request, such as "https".\nNote: The `:` is not part of the scheme.', - example: 'https', - flat_name: 'threat.indicator.url.scheme', - ignore_above: 1024, - level: 'extended', - name: 'scheme', - normalize: [], - original_fieldset: 'url', - short: 'Scheme of the url.', - type: 'keyword', - }, - 'threat.indicator.url.subdomain': { - dashed_name: 'threat-indicator-url-subdomain', - description: - 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', - example: 'east', - flat_name: 'threat.indicator.url.subdomain', - ignore_above: 1024, - level: 'extended', - name: 'subdomain', - normalize: [], - original_fieldset: 'url', - short: 'The subdomain of the domain.', - type: 'keyword', - }, - 'threat.indicator.url.top_level_domain': { - dashed_name: 'threat-indicator-url-top-level-domain', - description: - 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', - example: 'co.uk', - flat_name: 'threat.indicator.url.top_level_domain', - ignore_above: 1024, - level: 'extended', - name: 'top_level_domain', - normalize: [], - original_fieldset: 'url', - short: 'The effective top level domain (com, org, net, co.uk).', - type: 'keyword', - }, - 'threat.indicator.url.username': { - dashed_name: 'threat-indicator-url-username', - description: 'Username of the request.', - flat_name: 'threat.indicator.url.username', - ignore_above: 1024, - level: 'extended', - name: 'username', - normalize: [], - original_fieldset: 'url', - short: 'Username of the request.', - type: 'keyword', - }, - 'threat.indicator.x509.alternative_names': { - dashed_name: 'threat-indicator-x509-alternative-names', - description: - 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', - example: '*.elastic.co', - flat_name: 'threat.indicator.x509.alternative_names', - ignore_above: 1024, - level: 'extended', - name: 'alternative_names', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of subject alternative names (SAN).', - type: 'keyword', - }, - 'threat.indicator.x509.issuer.common_name': { - dashed_name: 'threat-indicator-x509-issuer-common-name', - description: 'List of common name (CN) of issuing certificate authority.', - example: 'Example SHA2 High Assurance Server CA', - flat_name: 'threat.indicator.x509.issuer.common_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common name (CN) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.indicator.x509.issuer.country': { - dashed_name: 'threat-indicator-x509-issuer-country', - description: 'List of country \\(C) codes', - example: 'US', - flat_name: 'threat.indicator.x509.issuer.country', - ignore_above: 1024, - level: 'extended', - name: 'issuer.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) codes', - type: 'keyword', - }, - 'threat.indicator.x509.issuer.distinguished_name': { - dashed_name: 'threat-indicator-x509-issuer-distinguished-name', - description: 'Distinguished name (DN) of issuing certificate authority.', - example: - 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', - flat_name: 'threat.indicator.x509.issuer.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.indicator.x509.issuer.locality': { - dashed_name: 'threat-indicator-x509-issuer-locality', - description: 'List of locality names (L)', - example: 'Mountain View', - flat_name: 'threat.indicator.x509.issuer.locality', - ignore_above: 1024, - level: 'extended', - name: 'issuer.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'threat.indicator.x509.issuer.organization': { - dashed_name: 'threat-indicator-x509-issuer-organization', - description: 'List of organizations (O) of issuing certificate authority.', - example: 'Example Inc', - flat_name: 'threat.indicator.x509.issuer.organization', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.indicator.x509.issuer.organizational_unit': { - dashed_name: 'threat-indicator-x509-issuer-organizational-unit', - description: 'List of organizational units (OU) of issuing certificate authority.', - example: 'www.example.com', - flat_name: 'threat.indicator.x509.issuer.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of issuing certificate authority.', - type: 'keyword', - }, - 'threat.indicator.x509.issuer.state_or_province': { - dashed_name: 'threat-indicator-x509-issuer-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'threat.indicator.x509.issuer.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'issuer.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'threat.indicator.x509.not_after': { - dashed_name: 'threat-indicator-x509-not-after', - description: 'Time at which the certificate is no longer considered valid.', - example: '2020-07-16T03:15:39Z', - flat_name: 'threat.indicator.x509.not_after', - level: 'extended', - name: 'not_after', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is no longer considered valid.', - type: 'date', - }, - 'threat.indicator.x509.not_before': { - dashed_name: 'threat-indicator-x509-not-before', - description: 'Time at which the certificate is first considered valid.', - example: '2019-08-16T01:40:25Z', - flat_name: 'threat.indicator.x509.not_before', - level: 'extended', - name: 'not_before', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is first considered valid.', - type: 'date', - }, - 'threat.indicator.x509.public_key_algorithm': { - dashed_name: 'threat-indicator-x509-public-key-algorithm', - description: 'Algorithm used to generate the public key.', - example: 'RSA', - flat_name: 'threat.indicator.x509.public_key_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'public_key_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Algorithm used to generate the public key.', - type: 'keyword', - }, - 'threat.indicator.x509.public_key_curve': { - dashed_name: 'threat-indicator-x509-public-key-curve', - description: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - example: 'nistp521', - flat_name: 'threat.indicator.x509.public_key_curve', - ignore_above: 1024, - level: 'extended', - name: 'public_key_curve', - normalize: [], - original_fieldset: 'x509', - short: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - type: 'keyword', - }, - 'threat.indicator.x509.public_key_exponent': { - dashed_name: 'threat-indicator-x509-public-key-exponent', - description: 'Exponent used to derive the public key. This is algorithm specific.', - doc_values: false, - example: 65537, - flat_name: 'threat.indicator.x509.public_key_exponent', - index: false, - level: 'extended', - name: 'public_key_exponent', - normalize: [], - original_fieldset: 'x509', - short: 'Exponent used to derive the public key. This is algorithm specific.', - type: 'long', - }, - 'threat.indicator.x509.public_key_size': { - dashed_name: 'threat-indicator-x509-public-key-size', - description: 'The size of the public key space in bits.', - example: 2048, - flat_name: 'threat.indicator.x509.public_key_size', - level: 'extended', - name: 'public_key_size', - normalize: [], - original_fieldset: 'x509', - short: 'The size of the public key space in bits.', - type: 'long', - }, - 'threat.indicator.x509.serial_number': { - dashed_name: 'threat-indicator-x509-serial-number', - description: - 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', - example: '55FBB9C7DEBF09809D12CCAA', - flat_name: 'threat.indicator.x509.serial_number', - ignore_above: 1024, - level: 'extended', - name: 'serial_number', - normalize: [], - original_fieldset: 'x509', - short: 'Unique serial number issued by the certificate authority.', - type: 'keyword', - }, - 'threat.indicator.x509.signature_algorithm': { - dashed_name: 'threat-indicator-x509-signature-algorithm', - description: - 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', - example: 'SHA256-RSA', - flat_name: 'threat.indicator.x509.signature_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'signature_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Identifier for certificate signature algorithm.', - type: 'keyword', - }, - 'threat.indicator.x509.subject.common_name': { - dashed_name: 'threat-indicator-x509-subject-common-name', - description: 'List of common names (CN) of subject.', - example: 'shared.global.example.net', - flat_name: 'threat.indicator.x509.subject.common_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common names (CN) of subject.', - type: 'keyword', - }, - 'threat.indicator.x509.subject.country': { - dashed_name: 'threat-indicator-x509-subject-country', - description: 'List of country \\(C) code', - example: 'US', - flat_name: 'threat.indicator.x509.subject.country', - ignore_above: 1024, - level: 'extended', - name: 'subject.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) code', - type: 'keyword', - }, - 'threat.indicator.x509.subject.distinguished_name': { - dashed_name: 'threat-indicator-x509-subject-distinguished-name', - description: 'Distinguished name (DN) of the certificate subject entity.', - example: - 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', - flat_name: 'threat.indicator.x509.subject.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of the certificate subject entity.', - type: 'keyword', - }, - 'threat.indicator.x509.subject.locality': { - dashed_name: 'threat-indicator-x509-subject-locality', - description: 'List of locality names (L)', - example: 'San Francisco', - flat_name: 'threat.indicator.x509.subject.locality', - ignore_above: 1024, - level: 'extended', - name: 'subject.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'threat.indicator.x509.subject.organization': { - dashed_name: 'threat-indicator-x509-subject-organization', - description: 'List of organizations (O) of subject.', - example: 'Example, Inc.', - flat_name: 'threat.indicator.x509.subject.organization', - ignore_above: 1024, - level: 'extended', - name: 'subject.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of subject.', - type: 'keyword', - }, - 'threat.indicator.x509.subject.organizational_unit': { - dashed_name: 'threat-indicator-x509-subject-organizational-unit', - description: 'List of organizational units (OU) of subject.', - flat_name: 'threat.indicator.x509.subject.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'subject.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of subject.', - type: 'keyword', - }, - 'threat.indicator.x509.subject.state_or_province': { - dashed_name: 'threat-indicator-x509-subject-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'threat.indicator.x509.subject.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'subject.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'threat.indicator.x509.version_number': { - dashed_name: 'threat-indicator-x509-version-number', - description: 'Version of x509 format.', - example: 3, - flat_name: 'threat.indicator.x509.version_number', - ignore_above: 1024, - level: 'extended', - name: 'version_number', - normalize: [], - original_fieldset: 'x509', - short: 'Version of x509 format.', - type: 'keyword', - }, - 'threat.software.alias': { - dashed_name: 'threat-software-alias', - description: - 'The alias(es) of the software for a set of related intrusion activity that are tracked by a common name in the security community.\nWhile not required, you can use a MITRE ATT&CK® associated software description.', - example: '[ "X-Agent" ]', - flat_name: 'threat.software.alias', - ignore_above: 1024, - level: 'extended', - name: 'software.alias', - normalize: ['array'], - short: 'Alias of the software', - type: 'keyword', - }, - 'threat.software.id': { - dashed_name: 'threat-software-id', - description: - 'The id of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.\nWhile not required, you can use a MITRE ATT&CK® software id.', - example: 'S0552', - flat_name: 'threat.software.id', - ignore_above: 1024, - level: 'extended', - name: 'software.id', - normalize: [], - short: 'ID of the software', - type: 'keyword', - }, - 'threat.software.name': { - dashed_name: 'threat-software-name', - description: - 'The name of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.\nWhile not required, you can use a MITRE ATT&CK® software name.', - example: 'AdFind', - flat_name: 'threat.software.name', - ignore_above: 1024, - level: 'extended', - name: 'software.name', - normalize: [], - short: 'Name of the software.', - type: 'keyword', - }, - 'threat.software.platforms': { - dashed_name: 'threat-software-platforms', - description: - 'The platforms of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.\nWhile not required, you can use MITRE ATT&CK® software platform values.', - example: '[ "Windows" ]', - expected_values: [ - 'AWS', - 'Azure', - 'Azure AD', - 'GCP', - 'Linux', - 'macOS', - 'Network', - 'Office 365', - 'SaaS', - 'Windows', - ], - flat_name: 'threat.software.platforms', - ignore_above: 1024, - level: 'extended', - name: 'software.platforms', - normalize: ['array'], - short: 'Platforms of the software.', - type: 'keyword', - }, - 'threat.software.reference': { - dashed_name: 'threat-software-reference', - description: - 'The reference URL of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.\nWhile not required, you can use a MITRE ATT&CK® software reference URL.', - example: 'https://attack.mitre.org/software/S0552/', - flat_name: 'threat.software.reference', - ignore_above: 1024, - level: 'extended', - name: 'software.reference', - normalize: [], - short: 'Software reference URL.', - type: 'keyword', - }, - 'threat.software.type': { - dashed_name: 'threat-software-type', - description: - 'The type of software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.\nWhile not required, you can use a MITRE ATT&CK® software type.', - example: 'Tool', - expected_values: ['Malware', 'Tool'], - flat_name: 'threat.software.type', - ignore_above: 1024, - level: 'extended', - name: 'software.type', - normalize: [], - short: 'Software type.', - type: 'keyword', - }, - 'threat.tactic.id': { - dashed_name: 'threat-tactic-id', - description: - 'The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ )', - example: 'TA0002', - flat_name: 'threat.tactic.id', - ignore_above: 1024, - level: 'extended', - name: 'tactic.id', - normalize: ['array'], - short: 'Threat tactic id.', - type: 'keyword', - }, - 'threat.tactic.name': { - dashed_name: 'threat-tactic-name', - description: - 'Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/)', - example: 'Execution', - flat_name: 'threat.tactic.name', - ignore_above: 1024, - level: 'extended', - name: 'tactic.name', - normalize: ['array'], - short: 'Threat tactic.', - type: 'keyword', - }, - 'threat.tactic.reference': { - dashed_name: 'threat-tactic-reference', - description: - 'The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ )', - example: 'https://attack.mitre.org/tactics/TA0002/', - flat_name: 'threat.tactic.reference', - ignore_above: 1024, - level: 'extended', - name: 'tactic.reference', - normalize: ['array'], - short: 'Threat tactic URL reference.', - type: 'keyword', - }, - 'threat.technique.id': { - dashed_name: 'threat-technique-id', - description: - 'The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)', - example: 'T1059', - flat_name: 'threat.technique.id', - ignore_above: 1024, - level: 'extended', - name: 'technique.id', - normalize: ['array'], - short: 'Threat technique id.', - type: 'keyword', - }, - 'threat.technique.name': { - dashed_name: 'threat-technique-name', - description: - 'The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)', - example: 'Command and Scripting Interpreter', - flat_name: 'threat.technique.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'threat.technique.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'technique.name', - normalize: ['array'], - short: 'Threat technique name.', - type: 'keyword', - }, - 'threat.technique.reference': { - dashed_name: 'threat-technique-reference', - description: - 'The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)', - example: 'https://attack.mitre.org/techniques/T1059/', - flat_name: 'threat.technique.reference', - ignore_above: 1024, - level: 'extended', - name: 'technique.reference', - normalize: ['array'], - short: 'Threat technique URL reference.', - type: 'keyword', - }, - 'threat.technique.subtechnique.id': { - dashed_name: 'threat-technique-subtechnique-id', - description: - 'The full id of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)', - example: 'T1059.001', - flat_name: 'threat.technique.subtechnique.id', - ignore_above: 1024, - level: 'extended', - name: 'technique.subtechnique.id', - normalize: ['array'], - short: 'Threat subtechnique id.', - type: 'keyword', - }, - 'threat.technique.subtechnique.name': { - dashed_name: 'threat-technique-subtechnique-name', - description: - 'The name of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)', - example: 'PowerShell', - flat_name: 'threat.technique.subtechnique.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'threat.technique.subtechnique.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'technique.subtechnique.name', - normalize: ['array'], - short: 'Threat subtechnique name.', - type: 'keyword', - }, - 'threat.technique.subtechnique.reference': { - dashed_name: 'threat-technique-subtechnique-reference', - description: - 'The reference url of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)', - example: 'https://attack.mitre.org/techniques/T1059/001/', - flat_name: 'threat.technique.subtechnique.reference', - ignore_above: 1024, - level: 'extended', - name: 'technique.subtechnique.reference', - normalize: ['array'], - short: 'Threat subtechnique URL reference.', - type: 'keyword', - }, - 'threat.threat.indicator.marking.tlp.version': { - dashed_name: 'threat-threat-indicator-marking-tlp-version', - description: 'Traffic Light Protocol version.', - example: 2, - flat_name: 'threat.threat.indicator.marking.tlp.version', - ignore_above: 1024, - level: 'extended', - name: 'threat.indicator.marking.tlp.version', - normalize: [], - short: 'Indicator TLP version', - type: 'keyword', - }, - }, - group: 2, - name: 'threat', - nestings: [ - 'threat.enrichments.indicator.as', - 'threat.enrichments.indicator.file', - 'threat.enrichments.indicator.geo', - 'threat.enrichments.indicator.registry', - 'threat.enrichments.indicator.url', - 'threat.enrichments.indicator.x509', - 'threat.indicator.as', - 'threat.indicator.file', - 'threat.indicator.geo', - 'threat.indicator.registry', - 'threat.indicator.url', - 'threat.indicator.x509', - ], - prefix: 'threat.', - reused_here: [ - { - full: 'threat.indicator.x509', - schema_name: 'x509', - short: 'These fields contain x509 certificate metadata.', - }, - { - full: 'threat.enrichments.indicator.x509', - schema_name: 'x509', - short: 'These fields contain x509 certificate metadata.', - }, - { - full: 'threat.indicator.as', - schema_name: 'as', - short: 'Fields describing an Autonomous System (Internet routing prefix).', - }, - { - full: 'threat.enrichments.indicator.as', - schema_name: 'as', - short: 'Fields describing an Autonomous System (Internet routing prefix).', - }, - { - full: 'threat.indicator.file', - schema_name: 'file', - short: 'Fields describing files.', - }, - { - full: 'threat.enrichments.indicator.file', - schema_name: 'file', - short: 'Fields describing files.', - }, - { - full: 'threat.indicator.geo', - schema_name: 'geo', - short: 'Fields describing a location.', - }, - { - full: 'threat.enrichments.indicator.geo', - schema_name: 'geo', - short: 'Fields describing a location.', - }, - { - full: 'threat.indicator.registry', - schema_name: 'registry', - short: 'Fields related to Windows Registry operations.', - }, - { - full: 'threat.enrichments.indicator.registry', - schema_name: 'registry', - short: 'Fields related to Windows Registry operations.', - }, - { - full: 'threat.indicator.url', - schema_name: 'url', - short: 'Fields that let you store URLs in various forms.', - }, - { - full: 'threat.enrichments.indicator.url', - schema_name: 'url', - short: 'Fields that let you store URLs in various forms.', - }, - ], - short: 'Fields to classify events and alerts according to a threat taxonomy.', - title: 'Threat', - type: 'group', - }, - tls: { - description: - 'Fields related to a TLS connection. These fields focus on the TLS protocol itself and intentionally avoids in-depth analysis of the related x.509 certificate files.', - fields: { - 'tls.cipher': { - dashed_name: 'tls-cipher', - description: 'String indicating the cipher used during the current connection.', - example: 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256', - flat_name: 'tls.cipher', - ignore_above: 1024, - level: 'extended', - name: 'cipher', - normalize: [], - short: 'String indicating the cipher used during the current connection.', - type: 'keyword', - }, - 'tls.client.certificate': { - dashed_name: 'tls-client-certificate', - description: - 'PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list.', - example: 'MII...', - flat_name: 'tls.client.certificate', - ignore_above: 1024, - level: 'extended', - name: 'client.certificate', - normalize: [], - short: 'PEM-encoded stand-alone certificate offered by the client.', - type: 'keyword', - }, - 'tls.client.certificate_chain': { - dashed_name: 'tls-client-certificate-chain', - description: - 'Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain.', - example: '["MII...", "MII..."]', - flat_name: 'tls.client.certificate_chain', - ignore_above: 1024, - level: 'extended', - name: 'client.certificate_chain', - normalize: ['array'], - short: - 'Array of PEM-encoded certificates that make up the certificate chain offered by the client.', - type: 'keyword', - }, - 'tls.client.hash.md5': { - dashed_name: 'tls-client-hash-md5', - description: - 'Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.', - example: '0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC', - flat_name: 'tls.client.hash.md5', - ignore_above: 1024, - level: 'extended', - name: 'client.hash.md5', - normalize: [], - short: - 'Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client.', - type: 'keyword', - }, - 'tls.client.hash.sha1': { - dashed_name: 'tls-client-hash-sha1', - description: - 'Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.', - example: '9E393D93138888D288266C2D915214D1D1CCEB2A', - flat_name: 'tls.client.hash.sha1', - ignore_above: 1024, - level: 'extended', - name: 'client.hash.sha1', - normalize: [], - short: - 'Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client.', - type: 'keyword', - }, - 'tls.client.hash.sha256': { - dashed_name: 'tls-client-hash-sha256', - description: - 'Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.', - example: '0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0', - flat_name: 'tls.client.hash.sha256', - ignore_above: 1024, - level: 'extended', - name: 'client.hash.sha256', - normalize: [], - short: - 'Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client.', - type: 'keyword', - }, - 'tls.client.issuer': { - dashed_name: 'tls-client-issuer', - description: - 'Distinguished name of subject of the issuer of the x.509 certificate presented by the client.', - example: 'CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com', - flat_name: 'tls.client.issuer', - ignore_above: 1024, - level: 'extended', - name: 'client.issuer', - normalize: [], - short: - 'Distinguished name of subject of the issuer of the x.509 certificate presented by the client.', - type: 'keyword', - }, - 'tls.client.ja3': { - dashed_name: 'tls-client-ja3', - description: - 'A hash that identifies clients based on how they perform an SSL/TLS handshake.', - example: 'd4e5b18d6b55c71272893221c96ba240', - flat_name: 'tls.client.ja3', - ignore_above: 1024, - level: 'extended', - name: 'client.ja3', - normalize: [], - short: 'A hash that identifies clients based on how they perform an SSL/TLS handshake.', - type: 'keyword', - }, - 'tls.client.not_after': { - dashed_name: 'tls-client-not-after', - description: 'Date/Time indicating when client certificate is no longer considered valid.', - example: '2021-01-01T00:00:00.000Z', - flat_name: 'tls.client.not_after', - level: 'extended', - name: 'client.not_after', - normalize: [], - short: 'Date/Time indicating when client certificate is no longer considered valid.', - type: 'date', - }, - 'tls.client.not_before': { - dashed_name: 'tls-client-not-before', - description: 'Date/Time indicating when client certificate is first considered valid.', - example: '1970-01-01T00:00:00.000Z', - flat_name: 'tls.client.not_before', - level: 'extended', - name: 'client.not_before', - normalize: [], - short: 'Date/Time indicating when client certificate is first considered valid.', - type: 'date', - }, - 'tls.client.server_name': { - dashed_name: 'tls-client-server-name', - description: - 'Also called an SNI, this tells the server which hostname to which the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`.', - example: 'www.elastic.co', - flat_name: 'tls.client.server_name', - ignore_above: 1024, - level: 'extended', - name: 'client.server_name', - normalize: [], - short: 'Hostname the client is trying to connect to. Also called the SNI.', - type: 'keyword', - }, - 'tls.client.subject': { - dashed_name: 'tls-client-subject', - description: - 'Distinguished name of subject of the x.509 certificate presented by the client.', - example: 'CN=myclient, OU=Documentation Team, DC=example, DC=com', - flat_name: 'tls.client.subject', - ignore_above: 1024, - level: 'extended', - name: 'client.subject', - normalize: [], - short: 'Distinguished name of subject of the x.509 certificate presented by the client.', - type: 'keyword', - }, - 'tls.client.supported_ciphers': { - dashed_name: 'tls-client-supported-ciphers', - description: 'Array of ciphers offered by the client during the client hello.', - example: - '["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "..."]', - flat_name: 'tls.client.supported_ciphers', - ignore_above: 1024, - level: 'extended', - name: 'client.supported_ciphers', - normalize: ['array'], - short: 'Array of ciphers offered by the client during the client hello.', - type: 'keyword', - }, - 'tls.client.x509.alternative_names': { - dashed_name: 'tls-client-x509-alternative-names', - description: - 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', - example: '*.elastic.co', - flat_name: 'tls.client.x509.alternative_names', - ignore_above: 1024, - level: 'extended', - name: 'alternative_names', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of subject alternative names (SAN).', - type: 'keyword', - }, - 'tls.client.x509.issuer.common_name': { - dashed_name: 'tls-client-x509-issuer-common-name', - description: 'List of common name (CN) of issuing certificate authority.', - example: 'Example SHA2 High Assurance Server CA', - flat_name: 'tls.client.x509.issuer.common_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common name (CN) of issuing certificate authority.', - type: 'keyword', - }, - 'tls.client.x509.issuer.country': { - dashed_name: 'tls-client-x509-issuer-country', - description: 'List of country \\(C) codes', - example: 'US', - flat_name: 'tls.client.x509.issuer.country', - ignore_above: 1024, - level: 'extended', - name: 'issuer.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) codes', - type: 'keyword', - }, - 'tls.client.x509.issuer.distinguished_name': { - dashed_name: 'tls-client-x509-issuer-distinguished-name', - description: 'Distinguished name (DN) of issuing certificate authority.', - example: - 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', - flat_name: 'tls.client.x509.issuer.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of issuing certificate authority.', - type: 'keyword', - }, - 'tls.client.x509.issuer.locality': { - dashed_name: 'tls-client-x509-issuer-locality', - description: 'List of locality names (L)', - example: 'Mountain View', - flat_name: 'tls.client.x509.issuer.locality', - ignore_above: 1024, - level: 'extended', - name: 'issuer.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'tls.client.x509.issuer.organization': { - dashed_name: 'tls-client-x509-issuer-organization', - description: 'List of organizations (O) of issuing certificate authority.', - example: 'Example Inc', - flat_name: 'tls.client.x509.issuer.organization', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of issuing certificate authority.', - type: 'keyword', - }, - 'tls.client.x509.issuer.organizational_unit': { - dashed_name: 'tls-client-x509-issuer-organizational-unit', - description: 'List of organizational units (OU) of issuing certificate authority.', - example: 'www.example.com', - flat_name: 'tls.client.x509.issuer.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of issuing certificate authority.', - type: 'keyword', - }, - 'tls.client.x509.issuer.state_or_province': { - dashed_name: 'tls-client-x509-issuer-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'tls.client.x509.issuer.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'issuer.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'tls.client.x509.not_after': { - dashed_name: 'tls-client-x509-not-after', - description: 'Time at which the certificate is no longer considered valid.', - example: '2020-07-16T03:15:39Z', - flat_name: 'tls.client.x509.not_after', - level: 'extended', - name: 'not_after', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is no longer considered valid.', - type: 'date', - }, - 'tls.client.x509.not_before': { - dashed_name: 'tls-client-x509-not-before', - description: 'Time at which the certificate is first considered valid.', - example: '2019-08-16T01:40:25Z', - flat_name: 'tls.client.x509.not_before', - level: 'extended', - name: 'not_before', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is first considered valid.', - type: 'date', - }, - 'tls.client.x509.public_key_algorithm': { - dashed_name: 'tls-client-x509-public-key-algorithm', - description: 'Algorithm used to generate the public key.', - example: 'RSA', - flat_name: 'tls.client.x509.public_key_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'public_key_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Algorithm used to generate the public key.', - type: 'keyword', - }, - 'tls.client.x509.public_key_curve': { - dashed_name: 'tls-client-x509-public-key-curve', - description: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - example: 'nistp521', - flat_name: 'tls.client.x509.public_key_curve', - ignore_above: 1024, - level: 'extended', - name: 'public_key_curve', - normalize: [], - original_fieldset: 'x509', - short: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - type: 'keyword', - }, - 'tls.client.x509.public_key_exponent': { - dashed_name: 'tls-client-x509-public-key-exponent', - description: 'Exponent used to derive the public key. This is algorithm specific.', - doc_values: false, - example: 65537, - flat_name: 'tls.client.x509.public_key_exponent', - index: false, - level: 'extended', - name: 'public_key_exponent', - normalize: [], - original_fieldset: 'x509', - short: 'Exponent used to derive the public key. This is algorithm specific.', - type: 'long', - }, - 'tls.client.x509.public_key_size': { - dashed_name: 'tls-client-x509-public-key-size', - description: 'The size of the public key space in bits.', - example: 2048, - flat_name: 'tls.client.x509.public_key_size', - level: 'extended', - name: 'public_key_size', - normalize: [], - original_fieldset: 'x509', - short: 'The size of the public key space in bits.', - type: 'long', - }, - 'tls.client.x509.serial_number': { - dashed_name: 'tls-client-x509-serial-number', - description: - 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', - example: '55FBB9C7DEBF09809D12CCAA', - flat_name: 'tls.client.x509.serial_number', - ignore_above: 1024, - level: 'extended', - name: 'serial_number', - normalize: [], - original_fieldset: 'x509', - short: 'Unique serial number issued by the certificate authority.', - type: 'keyword', - }, - 'tls.client.x509.signature_algorithm': { - dashed_name: 'tls-client-x509-signature-algorithm', - description: - 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', - example: 'SHA256-RSA', - flat_name: 'tls.client.x509.signature_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'signature_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Identifier for certificate signature algorithm.', - type: 'keyword', - }, - 'tls.client.x509.subject.common_name': { - dashed_name: 'tls-client-x509-subject-common-name', - description: 'List of common names (CN) of subject.', - example: 'shared.global.example.net', - flat_name: 'tls.client.x509.subject.common_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common names (CN) of subject.', - type: 'keyword', - }, - 'tls.client.x509.subject.country': { - dashed_name: 'tls-client-x509-subject-country', - description: 'List of country \\(C) code', - example: 'US', - flat_name: 'tls.client.x509.subject.country', - ignore_above: 1024, - level: 'extended', - name: 'subject.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) code', - type: 'keyword', - }, - 'tls.client.x509.subject.distinguished_name': { - dashed_name: 'tls-client-x509-subject-distinguished-name', - description: 'Distinguished name (DN) of the certificate subject entity.', - example: - 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', - flat_name: 'tls.client.x509.subject.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of the certificate subject entity.', - type: 'keyword', - }, - 'tls.client.x509.subject.locality': { - dashed_name: 'tls-client-x509-subject-locality', - description: 'List of locality names (L)', - example: 'San Francisco', - flat_name: 'tls.client.x509.subject.locality', - ignore_above: 1024, - level: 'extended', - name: 'subject.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'tls.client.x509.subject.organization': { - dashed_name: 'tls-client-x509-subject-organization', - description: 'List of organizations (O) of subject.', - example: 'Example, Inc.', - flat_name: 'tls.client.x509.subject.organization', - ignore_above: 1024, - level: 'extended', - name: 'subject.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of subject.', - type: 'keyword', - }, - 'tls.client.x509.subject.organizational_unit': { - dashed_name: 'tls-client-x509-subject-organizational-unit', - description: 'List of organizational units (OU) of subject.', - flat_name: 'tls.client.x509.subject.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'subject.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of subject.', - type: 'keyword', - }, - 'tls.client.x509.subject.state_or_province': { - dashed_name: 'tls-client-x509-subject-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'tls.client.x509.subject.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'subject.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'tls.client.x509.version_number': { - dashed_name: 'tls-client-x509-version-number', - description: 'Version of x509 format.', - example: 3, - flat_name: 'tls.client.x509.version_number', - ignore_above: 1024, - level: 'extended', - name: 'version_number', - normalize: [], - original_fieldset: 'x509', - short: 'Version of x509 format.', - type: 'keyword', - }, - 'tls.curve': { - dashed_name: 'tls-curve', - description: 'String indicating the curve used for the given cipher, when applicable.', - example: 'secp256r1', - flat_name: 'tls.curve', - ignore_above: 1024, - level: 'extended', - name: 'curve', - normalize: [], - short: 'String indicating the curve used for the given cipher, when applicable.', - type: 'keyword', - }, - 'tls.established': { - dashed_name: 'tls-established', - description: - 'Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel.', - flat_name: 'tls.established', - level: 'extended', - name: 'established', - normalize: [], - short: - 'Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel.', - type: 'boolean', - }, - 'tls.next_protocol': { - dashed_name: 'tls-next-protocol', - description: - 'String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case.', - example: 'http/1.1', - flat_name: 'tls.next_protocol', - ignore_above: 1024, - level: 'extended', - name: 'next_protocol', - normalize: [], - short: 'String indicating the protocol being tunneled.', - type: 'keyword', - }, - 'tls.resumed': { - dashed_name: 'tls-resumed', - description: - 'Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation.', - flat_name: 'tls.resumed', - level: 'extended', - name: 'resumed', - normalize: [], - short: - 'Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation.', - type: 'boolean', - }, - 'tls.server.certificate': { - dashed_name: 'tls-server-certificate', - description: - 'PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list.', - example: 'MII...', - flat_name: 'tls.server.certificate', - ignore_above: 1024, - level: 'extended', - name: 'server.certificate', - normalize: [], - short: 'PEM-encoded stand-alone certificate offered by the server.', - type: 'keyword', - }, - 'tls.server.certificate_chain': { - dashed_name: 'tls-server-certificate-chain', - description: - 'Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain.', - example: '["MII...", "MII..."]', - flat_name: 'tls.server.certificate_chain', - ignore_above: 1024, - level: 'extended', - name: 'server.certificate_chain', - normalize: ['array'], - short: - 'Array of PEM-encoded certificates that make up the certificate chain offered by the server.', - type: 'keyword', - }, - 'tls.server.hash.md5': { - dashed_name: 'tls-server-hash-md5', - description: - 'Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.', - example: '0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC', - flat_name: 'tls.server.hash.md5', - ignore_above: 1024, - level: 'extended', - name: 'server.hash.md5', - normalize: [], - short: - 'Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server.', - type: 'keyword', - }, - 'tls.server.hash.sha1': { - dashed_name: 'tls-server-hash-sha1', - description: - 'Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.', - example: '9E393D93138888D288266C2D915214D1D1CCEB2A', - flat_name: 'tls.server.hash.sha1', - ignore_above: 1024, - level: 'extended', - name: 'server.hash.sha1', - normalize: [], - short: - 'Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server.', - type: 'keyword', - }, - 'tls.server.hash.sha256': { - dashed_name: 'tls-server-hash-sha256', - description: - 'Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.', - example: '0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0', - flat_name: 'tls.server.hash.sha256', - ignore_above: 1024, - level: 'extended', - name: 'server.hash.sha256', - normalize: [], - short: - 'Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server.', - type: 'keyword', - }, - 'tls.server.issuer': { - dashed_name: 'tls-server-issuer', - description: 'Subject of the issuer of the x.509 certificate presented by the server.', - example: 'CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com', - flat_name: 'tls.server.issuer', - ignore_above: 1024, - level: 'extended', - name: 'server.issuer', - normalize: [], - short: 'Subject of the issuer of the x.509 certificate presented by the server.', - type: 'keyword', - }, - 'tls.server.ja3s': { - dashed_name: 'tls-server-ja3s', - description: - 'A hash that identifies servers based on how they perform an SSL/TLS handshake.', - example: '394441ab65754e2207b1e1b457b3641d', - flat_name: 'tls.server.ja3s', - ignore_above: 1024, - level: 'extended', - name: 'server.ja3s', - normalize: [], - short: 'A hash that identifies servers based on how they perform an SSL/TLS handshake.', - type: 'keyword', - }, - 'tls.server.not_after': { - dashed_name: 'tls-server-not-after', - description: 'Timestamp indicating when server certificate is no longer considered valid.', - example: '2021-01-01T00:00:00.000Z', - flat_name: 'tls.server.not_after', - level: 'extended', - name: 'server.not_after', - normalize: [], - short: 'Timestamp indicating when server certificate is no longer considered valid.', - type: 'date', - }, - 'tls.server.not_before': { - dashed_name: 'tls-server-not-before', - description: 'Timestamp indicating when server certificate is first considered valid.', - example: '1970-01-01T00:00:00.000Z', - flat_name: 'tls.server.not_before', - level: 'extended', - name: 'server.not_before', - normalize: [], - short: 'Timestamp indicating when server certificate is first considered valid.', - type: 'date', - }, - 'tls.server.subject': { - dashed_name: 'tls-server-subject', - description: 'Subject of the x.509 certificate presented by the server.', - example: 'CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com', - flat_name: 'tls.server.subject', - ignore_above: 1024, - level: 'extended', - name: 'server.subject', - normalize: [], - short: 'Subject of the x.509 certificate presented by the server.', - type: 'keyword', - }, - 'tls.server.x509.alternative_names': { - dashed_name: 'tls-server-x509-alternative-names', - description: - 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', - example: '*.elastic.co', - flat_name: 'tls.server.x509.alternative_names', - ignore_above: 1024, - level: 'extended', - name: 'alternative_names', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of subject alternative names (SAN).', - type: 'keyword', - }, - 'tls.server.x509.issuer.common_name': { - dashed_name: 'tls-server-x509-issuer-common-name', - description: 'List of common name (CN) of issuing certificate authority.', - example: 'Example SHA2 High Assurance Server CA', - flat_name: 'tls.server.x509.issuer.common_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common name (CN) of issuing certificate authority.', - type: 'keyword', - }, - 'tls.server.x509.issuer.country': { - dashed_name: 'tls-server-x509-issuer-country', - description: 'List of country \\(C) codes', - example: 'US', - flat_name: 'tls.server.x509.issuer.country', - ignore_above: 1024, - level: 'extended', - name: 'issuer.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) codes', - type: 'keyword', - }, - 'tls.server.x509.issuer.distinguished_name': { - dashed_name: 'tls-server-x509-issuer-distinguished-name', - description: 'Distinguished name (DN) of issuing certificate authority.', - example: - 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', - flat_name: 'tls.server.x509.issuer.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of issuing certificate authority.', - type: 'keyword', - }, - 'tls.server.x509.issuer.locality': { - dashed_name: 'tls-server-x509-issuer-locality', - description: 'List of locality names (L)', - example: 'Mountain View', - flat_name: 'tls.server.x509.issuer.locality', - ignore_above: 1024, - level: 'extended', - name: 'issuer.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'tls.server.x509.issuer.organization': { - dashed_name: 'tls-server-x509-issuer-organization', - description: 'List of organizations (O) of issuing certificate authority.', - example: 'Example Inc', - flat_name: 'tls.server.x509.issuer.organization', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of issuing certificate authority.', - type: 'keyword', - }, - 'tls.server.x509.issuer.organizational_unit': { - dashed_name: 'tls-server-x509-issuer-organizational-unit', - description: 'List of organizational units (OU) of issuing certificate authority.', - example: 'www.example.com', - flat_name: 'tls.server.x509.issuer.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of issuing certificate authority.', - type: 'keyword', - }, - 'tls.server.x509.issuer.state_or_province': { - dashed_name: 'tls-server-x509-issuer-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'tls.server.x509.issuer.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'issuer.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'tls.server.x509.not_after': { - dashed_name: 'tls-server-x509-not-after', - description: 'Time at which the certificate is no longer considered valid.', - example: '2020-07-16T03:15:39Z', - flat_name: 'tls.server.x509.not_after', - level: 'extended', - name: 'not_after', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is no longer considered valid.', - type: 'date', - }, - 'tls.server.x509.not_before': { - dashed_name: 'tls-server-x509-not-before', - description: 'Time at which the certificate is first considered valid.', - example: '2019-08-16T01:40:25Z', - flat_name: 'tls.server.x509.not_before', - level: 'extended', - name: 'not_before', - normalize: [], - original_fieldset: 'x509', - short: 'Time at which the certificate is first considered valid.', - type: 'date', - }, - 'tls.server.x509.public_key_algorithm': { - dashed_name: 'tls-server-x509-public-key-algorithm', - description: 'Algorithm used to generate the public key.', - example: 'RSA', - flat_name: 'tls.server.x509.public_key_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'public_key_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Algorithm used to generate the public key.', - type: 'keyword', - }, - 'tls.server.x509.public_key_curve': { - dashed_name: 'tls-server-x509-public-key-curve', - description: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - example: 'nistp521', - flat_name: 'tls.server.x509.public_key_curve', - ignore_above: 1024, - level: 'extended', - name: 'public_key_curve', - normalize: [], - original_fieldset: 'x509', - short: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - type: 'keyword', - }, - 'tls.server.x509.public_key_exponent': { - dashed_name: 'tls-server-x509-public-key-exponent', - description: 'Exponent used to derive the public key. This is algorithm specific.', - doc_values: false, - example: 65537, - flat_name: 'tls.server.x509.public_key_exponent', - index: false, - level: 'extended', - name: 'public_key_exponent', - normalize: [], - original_fieldset: 'x509', - short: 'Exponent used to derive the public key. This is algorithm specific.', - type: 'long', - }, - 'tls.server.x509.public_key_size': { - dashed_name: 'tls-server-x509-public-key-size', - description: 'The size of the public key space in bits.', - example: 2048, - flat_name: 'tls.server.x509.public_key_size', - level: 'extended', - name: 'public_key_size', - normalize: [], - original_fieldset: 'x509', - short: 'The size of the public key space in bits.', - type: 'long', - }, - 'tls.server.x509.serial_number': { - dashed_name: 'tls-server-x509-serial-number', - description: - 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', - example: '55FBB9C7DEBF09809D12CCAA', - flat_name: 'tls.server.x509.serial_number', - ignore_above: 1024, - level: 'extended', - name: 'serial_number', - normalize: [], - original_fieldset: 'x509', - short: 'Unique serial number issued by the certificate authority.', - type: 'keyword', - }, - 'tls.server.x509.signature_algorithm': { - dashed_name: 'tls-server-x509-signature-algorithm', - description: - 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', - example: 'SHA256-RSA', - flat_name: 'tls.server.x509.signature_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'signature_algorithm', - normalize: [], - original_fieldset: 'x509', - short: 'Identifier for certificate signature algorithm.', - type: 'keyword', - }, - 'tls.server.x509.subject.common_name': { - dashed_name: 'tls-server-x509-subject-common-name', - description: 'List of common names (CN) of subject.', - example: 'shared.global.example.net', - flat_name: 'tls.server.x509.subject.common_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.common_name', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of common names (CN) of subject.', - type: 'keyword', - }, - 'tls.server.x509.subject.country': { - dashed_name: 'tls-server-x509-subject-country', - description: 'List of country \\(C) code', - example: 'US', - flat_name: 'tls.server.x509.subject.country', - ignore_above: 1024, - level: 'extended', - name: 'subject.country', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of country \\(C) code', - type: 'keyword', - }, - 'tls.server.x509.subject.distinguished_name': { - dashed_name: 'tls-server-x509-subject-distinguished-name', - description: 'Distinguished name (DN) of the certificate subject entity.', - example: - 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', - flat_name: 'tls.server.x509.subject.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.distinguished_name', - normalize: [], - original_fieldset: 'x509', - short: 'Distinguished name (DN) of the certificate subject entity.', - type: 'keyword', - }, - 'tls.server.x509.subject.locality': { - dashed_name: 'tls-server-x509-subject-locality', - description: 'List of locality names (L)', - example: 'San Francisco', - flat_name: 'tls.server.x509.subject.locality', - ignore_above: 1024, - level: 'extended', - name: 'subject.locality', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of locality names (L)', - type: 'keyword', - }, - 'tls.server.x509.subject.organization': { - dashed_name: 'tls-server-x509-subject-organization', - description: 'List of organizations (O) of subject.', - example: 'Example, Inc.', - flat_name: 'tls.server.x509.subject.organization', - ignore_above: 1024, - level: 'extended', - name: 'subject.organization', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizations (O) of subject.', - type: 'keyword', - }, - 'tls.server.x509.subject.organizational_unit': { - dashed_name: 'tls-server-x509-subject-organizational-unit', - description: 'List of organizational units (OU) of subject.', - flat_name: 'tls.server.x509.subject.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'subject.organizational_unit', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of organizational units (OU) of subject.', - type: 'keyword', - }, - 'tls.server.x509.subject.state_or_province': { - dashed_name: 'tls-server-x509-subject-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'tls.server.x509.subject.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'subject.state_or_province', - normalize: ['array'], - original_fieldset: 'x509', - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'tls.server.x509.version_number': { - dashed_name: 'tls-server-x509-version-number', - description: 'Version of x509 format.', - example: 3, - flat_name: 'tls.server.x509.version_number', - ignore_above: 1024, - level: 'extended', - name: 'version_number', - normalize: [], - original_fieldset: 'x509', - short: 'Version of x509 format.', - type: 'keyword', - }, - 'tls.version': { - dashed_name: 'tls-version', - description: 'Numeric part of the version parsed from the original string.', - example: '1.2', - flat_name: 'tls.version', - ignore_above: 1024, - level: 'extended', - name: 'version', - normalize: [], - short: 'Numeric part of the version parsed from the original string.', - type: 'keyword', - }, - 'tls.version_protocol': { - dashed_name: 'tls-version-protocol', - description: 'Normalized lowercase protocol name parsed from original string.', - example: 'tls', - flat_name: 'tls.version_protocol', - ignore_above: 1024, - level: 'extended', - name: 'version_protocol', - normalize: [], - short: 'Normalized lowercase protocol name parsed from original string.', - type: 'keyword', - }, - }, - group: 2, - name: 'tls', - nestings: ['tls.client.x509', 'tls.server.x509'], - prefix: 'tls.', - reused_here: [ - { - full: 'tls.client.x509', - schema_name: 'x509', - short: 'These fields contain x509 certificate metadata.', - }, - { - full: 'tls.server.x509', - schema_name: 'x509', - short: 'These fields contain x509 certificate metadata.', - }, - ], - short: 'Fields describing a TLS connection.', - title: 'TLS', - type: 'group', - }, - tracing: { - description: - 'Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services.\nUnlike most field sets in ECS, the tracing fields are *not* nested under the field set name. In other words, the correct field name is `trace.id`, not `tracing.trace.id`, and so on.', - fields: { - 'span.id': { - dashed_name: 'span-id', - description: - 'Unique identifier of the span within the scope of its trace.\nA span represents an operation within a transaction, such as a request to another service, or a database query.', - example: '3ff9a8981b7ccd5a', - flat_name: 'span.id', - ignore_above: 1024, - level: 'extended', - name: 'span.id', - normalize: [], - short: 'Unique identifier of the span within the scope of its trace.', - type: 'keyword', - }, - 'trace.id': { - dashed_name: 'trace-id', - description: - 'Unique identifier of the trace.\nA trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services.', - example: '4bf92f3577b34da6a3ce929d0e0e4736', - flat_name: 'trace.id', - ignore_above: 1024, - level: 'extended', - name: 'trace.id', - normalize: [], - short: 'Unique identifier of the trace.', - type: 'keyword', - }, - 'transaction.id': { - dashed_name: 'transaction-id', - description: - 'Unique identifier of the transaction within the scope of its trace.\nA transaction is the highest level of work measured within a service, such as a request to a server.', - example: '00f067aa0ba902b7', - flat_name: 'transaction.id', - ignore_above: 1024, - level: 'extended', - name: 'transaction.id', - normalize: [], - short: 'Unique identifier of the transaction within the scope of its trace.', - type: 'keyword', - }, - }, - group: 2, - name: 'tracing', - prefix: '', - root: true, - short: 'Fields related to distributed tracing.', - title: 'Tracing', - type: 'group', - }, - url: { - description: - 'URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on.', - fields: { - 'url.domain': { - dashed_name: 'url-domain', - description: - 'Domain of the url, such as "www.elastic.co".\nIn some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field.\nIf the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field.', - example: 'www.elastic.co', - flat_name: 'url.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - short: 'Domain of the url.', - type: 'keyword', - }, - 'url.extension': { - dashed_name: 'url-extension', - description: - 'The field contains the file extension from the original request url, excluding the leading dot.\nThe file extension is only set if it exists, as not every url has a file extension.\nThe leading period must not be included. For example, the value must be "png", not ".png".\nNote that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").', - example: 'png', - flat_name: 'url.extension', - ignore_above: 1024, - level: 'extended', - name: 'extension', - normalize: [], - short: 'File extension from the request url, excluding the leading dot.', - type: 'keyword', - }, - 'url.fragment': { - dashed_name: 'url-fragment', - description: - 'Portion of the url after the `#`, such as "top".\nThe `#` is not part of the fragment.', - flat_name: 'url.fragment', - ignore_above: 1024, - level: 'extended', - name: 'fragment', - normalize: [], - short: 'Portion of the url after the `#`.', - type: 'keyword', - }, - 'url.full': { - dashed_name: 'url-full', - description: - 'If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source.', - example: 'https://www.elastic.co:443/search?q=elasticsearch#top', - flat_name: 'url.full', - level: 'extended', - multi_fields: [{ flat_name: 'url.full.text', name: 'text', type: 'match_only_text' }], - name: 'full', - normalize: [], - short: 'Full unparsed URL.', - type: 'wildcard', - }, - 'url.original': { - dashed_name: 'url-original', - description: - 'Unmodified original url as seen in the event source.\nNote that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path.\nThis field is meant to represent the URL as it was observed, complete or not.', - example: 'https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch', - flat_name: 'url.original', - level: 'extended', - multi_fields: [ - { - flat_name: 'url.original.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'original', - normalize: [], - short: 'Unmodified original url as seen in the event source.', - type: 'wildcard', - }, - 'url.password': { - dashed_name: 'url-password', - description: 'Password of the request.', - flat_name: 'url.password', - ignore_above: 1024, - level: 'extended', - name: 'password', - normalize: [], - short: 'Password of the request.', - type: 'keyword', - }, - 'url.path': { - dashed_name: 'url-path', - description: 'Path of the request, such as "/search".', - flat_name: 'url.path', - level: 'extended', - name: 'path', - normalize: [], - short: 'Path of the request, such as "/search".', - type: 'wildcard', - }, - 'url.port': { - dashed_name: 'url-port', - description: 'Port of the request, such as 443.', - example: 443, - flat_name: 'url.port', - format: 'string', - level: 'extended', - name: 'port', - normalize: [], - short: 'Port of the request, such as 443.', - type: 'long', - }, - 'url.query': { - dashed_name: 'url-query', - description: - 'The query field describes the query string of the request, such as "q=elasticsearch".\nThe `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases.', - flat_name: 'url.query', - ignore_above: 1024, - level: 'extended', - name: 'query', - normalize: [], - short: 'Query string of the request.', - type: 'keyword', - }, - 'url.registered_domain': { - dashed_name: 'url-registered-domain', - description: - 'The highest registered url domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', - example: 'example.com', - flat_name: 'url.registered_domain', - ignore_above: 1024, - level: 'extended', - name: 'registered_domain', - normalize: [], - short: 'The highest registered url domain, stripped of the subdomain.', - type: 'keyword', - }, - 'url.scheme': { - dashed_name: 'url-scheme', - description: - 'Scheme of the request, such as "https".\nNote: The `:` is not part of the scheme.', - example: 'https', - flat_name: 'url.scheme', - ignore_above: 1024, - level: 'extended', - name: 'scheme', - normalize: [], - short: 'Scheme of the url.', - type: 'keyword', - }, - 'url.subdomain': { - dashed_name: 'url-subdomain', - description: - 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', - example: 'east', - flat_name: 'url.subdomain', - ignore_above: 1024, - level: 'extended', - name: 'subdomain', - normalize: [], - short: 'The subdomain of the domain.', - type: 'keyword', - }, - 'url.top_level_domain': { - dashed_name: 'url-top-level-domain', - description: - 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', - example: 'co.uk', - flat_name: 'url.top_level_domain', - ignore_above: 1024, - level: 'extended', - name: 'top_level_domain', - normalize: [], - short: 'The effective top level domain (com, org, net, co.uk).', - type: 'keyword', - }, - 'url.username': { - dashed_name: 'url-username', - description: 'Username of the request.', - flat_name: 'url.username', - ignore_above: 1024, - level: 'extended', - name: 'username', - normalize: [], - short: 'Username of the request.', - type: 'keyword', - }, - }, - group: 2, - name: 'url', - prefix: 'url.', - reusable: { - expected: [ - { as: 'url', at: 'threat.indicator', full: 'threat.indicator.url' }, - { - as: 'url', - at: 'threat.enrichments.indicator', - full: 'threat.enrichments.indicator.url', - }, - ], - top_level: true, - }, - short: 'Fields that let you store URLs in various forms.', - title: 'URL', - type: 'group', - }, - user: { - description: - 'The user fields describe information about the user that is relevant to the event.\nFields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them.', - fields: { - 'user.changes.domain': { - dashed_name: 'user-changes-domain', - description: - 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'user.changes.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'user', - short: 'Name of the directory the user is a member of.', - type: 'keyword', - }, - 'user.changes.email': { - dashed_name: 'user-changes-email', - description: 'User email address.', - flat_name: 'user.changes.email', - ignore_above: 1024, - level: 'extended', - name: 'email', - normalize: [], - original_fieldset: 'user', - short: 'User email address.', - type: 'keyword', - }, - 'user.changes.full_name': { - dashed_name: 'user-changes-full-name', - description: "User's full name, if available.", - example: 'Albert Einstein', - flat_name: 'user.changes.full_name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'user.changes.full_name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full_name', - normalize: [], - original_fieldset: 'user', - short: "User's full name, if available.", - type: 'keyword', - }, - 'user.changes.group.domain': { - dashed_name: 'user-changes-group-domain', - description: - 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'user.changes.group.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'group', - short: 'Name of the directory the group is a member of.', - type: 'keyword', - }, - 'user.changes.group.id': { - dashed_name: 'user-changes-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'user.changes.group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'user.changes.group.name': { - dashed_name: 'user-changes-group-name', - description: 'Name of the group.', - flat_name: 'user.changes.group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'user.changes.hash': { - dashed_name: 'user-changes-hash', - description: - 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', - flat_name: 'user.changes.hash', - ignore_above: 1024, - level: 'extended', - name: 'hash', - normalize: [], - original_fieldset: 'user', - short: 'Unique user hash to correlate information for a user in anonymized form.', - type: 'keyword', - }, - 'user.changes.id': { - dashed_name: 'user-changes-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'user.changes.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'user.changes.name': { - dashed_name: 'user-changes-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'user.changes.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'user.changes.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'user.changes.roles': { - dashed_name: 'user-changes-roles', - description: 'Array of user roles at the time of the event.', - example: '["kibana_admin", "reporting_user"]', - flat_name: 'user.changes.roles', - ignore_above: 1024, - level: 'extended', - name: 'roles', - normalize: ['array'], - original_fieldset: 'user', - short: 'Array of user roles at the time of the event.', - type: 'keyword', - }, - 'user.domain': { - dashed_name: 'user-domain', - description: - 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'user.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - short: 'Name of the directory the user is a member of.', - type: 'keyword', - }, - 'user.effective.domain': { - dashed_name: 'user-effective-domain', - description: - 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'user.effective.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'user', - short: 'Name of the directory the user is a member of.', - type: 'keyword', - }, - 'user.effective.email': { - dashed_name: 'user-effective-email', - description: 'User email address.', - flat_name: 'user.effective.email', - ignore_above: 1024, - level: 'extended', - name: 'email', - normalize: [], - original_fieldset: 'user', - short: 'User email address.', - type: 'keyword', - }, - 'user.effective.full_name': { - dashed_name: 'user-effective-full-name', - description: "User's full name, if available.", - example: 'Albert Einstein', - flat_name: 'user.effective.full_name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'user.effective.full_name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full_name', - normalize: [], - original_fieldset: 'user', - short: "User's full name, if available.", - type: 'keyword', - }, - 'user.effective.group.domain': { - dashed_name: 'user-effective-group-domain', - description: - 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'user.effective.group.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'group', - short: 'Name of the directory the group is a member of.', - type: 'keyword', - }, - 'user.effective.group.id': { - dashed_name: 'user-effective-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'user.effective.group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'user.effective.group.name': { - dashed_name: 'user-effective-group-name', - description: 'Name of the group.', - flat_name: 'user.effective.group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'user.effective.hash': { - dashed_name: 'user-effective-hash', - description: - 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', - flat_name: 'user.effective.hash', - ignore_above: 1024, - level: 'extended', - name: 'hash', - normalize: [], - original_fieldset: 'user', - short: 'Unique user hash to correlate information for a user in anonymized form.', - type: 'keyword', - }, - 'user.effective.id': { - dashed_name: 'user-effective-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'user.effective.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'user.effective.name': { - dashed_name: 'user-effective-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'user.effective.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'user.effective.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'user.effective.roles': { - dashed_name: 'user-effective-roles', - description: 'Array of user roles at the time of the event.', - example: '["kibana_admin", "reporting_user"]', - flat_name: 'user.effective.roles', - ignore_above: 1024, - level: 'extended', - name: 'roles', - normalize: ['array'], - original_fieldset: 'user', - short: 'Array of user roles at the time of the event.', - type: 'keyword', - }, - 'user.email': { - dashed_name: 'user-email', - description: 'User email address.', - flat_name: 'user.email', - ignore_above: 1024, - level: 'extended', - name: 'email', - normalize: [], - short: 'User email address.', - type: 'keyword', - }, - 'user.full_name': { - dashed_name: 'user-full-name', - description: "User's full name, if available.", - example: 'Albert Einstein', - flat_name: 'user.full_name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'user.full_name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full_name', - normalize: [], - short: "User's full name, if available.", - type: 'keyword', - }, - 'user.group.domain': { - dashed_name: 'user-group-domain', - description: - 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'user.group.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'group', - short: 'Name of the directory the group is a member of.', - type: 'keyword', - }, - 'user.group.id': { - dashed_name: 'user-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'user.group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'user.group.name': { - dashed_name: 'user-group-name', - description: 'Name of the group.', - flat_name: 'user.group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'user.hash': { - dashed_name: 'user-hash', - description: - 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', - flat_name: 'user.hash', - ignore_above: 1024, - level: 'extended', - name: 'hash', - normalize: [], - short: 'Unique user hash to correlate information for a user in anonymized form.', - type: 'keyword', - }, - 'user.id': { - dashed_name: 'user-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'user.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'user.name': { - dashed_name: 'user-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'user.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'user.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'user.risk.calculated_level': { - dashed_name: 'user-risk-calculated-level', - description: - 'A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.', - example: 'High', - flat_name: 'user.risk.calculated_level', - ignore_above: 1024, - level: 'extended', - name: 'calculated_level', - normalize: [], - original_fieldset: 'risk', - short: - 'A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.', - type: 'keyword', - }, - 'user.risk.calculated_score': { - dashed_name: 'user-risk-calculated-score', - description: - 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.', - example: 880.73, - flat_name: 'user.risk.calculated_score', - level: 'extended', - name: 'calculated_score', - normalize: [], - original_fieldset: 'risk', - short: - 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.', - type: 'float', - }, - 'user.risk.calculated_score_norm': { - dashed_name: 'user-risk-calculated-score-norm', - description: - 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring, and normalized to a range of 0 to 100.', - example: 88.73, - flat_name: 'user.risk.calculated_score_norm', - level: 'extended', - name: 'calculated_score_norm', - normalize: [], - original_fieldset: 'risk', - short: 'A normalized risk score calculated by an internal system.', - type: 'float', - }, - 'user.risk.static_level': { - dashed_name: 'user-risk-static-level', - description: - 'A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.', - example: 'High', - flat_name: 'user.risk.static_level', - ignore_above: 1024, - level: 'extended', - name: 'static_level', - normalize: [], - original_fieldset: 'risk', - short: - 'A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.', - type: 'keyword', - }, - 'user.risk.static_score': { - dashed_name: 'user-risk-static-score', - description: - 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.', - example: 830, - flat_name: 'user.risk.static_score', - level: 'extended', - name: 'static_score', - normalize: [], - original_fieldset: 'risk', - short: - 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.', - type: 'float', - }, - 'user.risk.static_score_norm': { - dashed_name: 'user-risk-static-score-norm', - description: - 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform, and normalized to a range of 0 to 100.', - example: 83, - flat_name: 'user.risk.static_score_norm', - level: 'extended', - name: 'static_score_norm', - normalize: [], - original_fieldset: 'risk', - short: 'A normalized risk score calculated by an external system.', - type: 'float', - }, - 'user.roles': { - dashed_name: 'user-roles', - description: 'Array of user roles at the time of the event.', - example: '["kibana_admin", "reporting_user"]', - flat_name: 'user.roles', - ignore_above: 1024, - level: 'extended', - name: 'roles', - normalize: ['array'], - short: 'Array of user roles at the time of the event.', - type: 'keyword', - }, - 'user.target.domain': { - dashed_name: 'user-target-domain', - description: - 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'user.target.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'user', - short: 'Name of the directory the user is a member of.', - type: 'keyword', - }, - 'user.target.email': { - dashed_name: 'user-target-email', - description: 'User email address.', - flat_name: 'user.target.email', - ignore_above: 1024, - level: 'extended', - name: 'email', - normalize: [], - original_fieldset: 'user', - short: 'User email address.', - type: 'keyword', - }, - 'user.target.full_name': { - dashed_name: 'user-target-full-name', - description: "User's full name, if available.", - example: 'Albert Einstein', - flat_name: 'user.target.full_name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'user.target.full_name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full_name', - normalize: [], - original_fieldset: 'user', - short: "User's full name, if available.", - type: 'keyword', - }, - 'user.target.group.domain': { - dashed_name: 'user-target-group-domain', - description: - 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', - flat_name: 'user.target.group.domain', - ignore_above: 1024, - level: 'extended', - name: 'domain', - normalize: [], - original_fieldset: 'group', - short: 'Name of the directory the group is a member of.', - type: 'keyword', - }, - 'user.target.group.id': { - dashed_name: 'user-target-group-id', - description: 'Unique identifier for the group on the system/platform.', - flat_name: 'user.target.group.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - original_fieldset: 'group', - short: 'Unique identifier for the group on the system/platform.', - type: 'keyword', - }, - 'user.target.group.name': { - dashed_name: 'user-target-group-name', - description: 'Name of the group.', - flat_name: 'user.target.group.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'user.target.hash': { - dashed_name: 'user-target-hash', - description: - 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', - flat_name: 'user.target.hash', - ignore_above: 1024, - level: 'extended', - name: 'hash', - normalize: [], - original_fieldset: 'user', - short: 'Unique user hash to correlate information for a user in anonymized form.', - type: 'keyword', - }, - 'user.target.id': { - dashed_name: 'user-target-id', - description: 'Unique identifier of the user.', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - flat_name: 'user.target.id', - ignore_above: 1024, - level: 'core', - name: 'id', - normalize: [], - original_fieldset: 'user', - short: 'Unique identifier of the user.', - type: 'keyword', - }, - 'user.target.name': { - dashed_name: 'user-target-name', - description: 'Short name or login of the user.', - example: 'a.einstein', - flat_name: 'user.target.name', - ignore_above: 1024, - level: 'core', - multi_fields: [ - { - flat_name: 'user.target.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'user', - short: 'Short name or login of the user.', - type: 'keyword', - }, - 'user.target.roles': { - dashed_name: 'user-target-roles', - description: 'Array of user roles at the time of the event.', - example: '["kibana_admin", "reporting_user"]', - flat_name: 'user.target.roles', - ignore_above: 1024, - level: 'extended', - name: 'roles', - normalize: ['array'], - original_fieldset: 'user', - short: 'Array of user roles at the time of the event.', - type: 'keyword', - }, - }, - group: 2, - name: 'user', - nestings: ['user.changes', 'user.effective', 'user.group', 'user.risk', 'user.target'], - prefix: 'user.', - reusable: { - expected: [ - { as: 'user', at: 'client', full: 'client.user' }, - { as: 'user', at: 'destination', full: 'destination.user' }, - { as: 'user', at: 'server', full: 'server.user' }, - { as: 'user', at: 'source', full: 'source.user' }, - { - as: 'target', - at: 'user', - full: 'user.target', - short_override: 'Targeted user of action taken.', - }, - { - as: 'effective', - at: 'user', - full: 'user.effective', - short_override: 'User whose privileges were assumed.', - }, - { - as: 'changes', - at: 'user', - full: 'user.changes', - short_override: 'Captures changes made to a user.', - }, - { - as: 'user', - at: 'process', - full: 'process.user', - short_override: 'The effective user (euid).', - }, - { - as: 'saved_user', - at: 'process', - full: 'process.saved_user', - short_override: 'The saved user (suid).', - }, - { - as: 'real_user', - at: 'process', - full: 'process.real_user', - short_override: 'The real user (ruid). Identifies the real owner of the process.', - }, - { - as: 'attested_user', - at: 'process', - beta: 'Reusing the `user` fields in this location is currently considered beta.', - full: 'process.attested_user', - short_override: - 'The externally attested user based on an external source such as the Kube API.', - }, - ], - top_level: true, - }, - reused_here: [ - { - full: 'user.group', - schema_name: 'group', - short: "User's group relevant to the event.", - }, - { - full: 'user.risk', - schema_name: 'risk', - short: 'Fields for describing risk score and level.', - }, - { - full: 'user.target', - schema_name: 'user', - short: 'Targeted user of action taken.', - }, - { - full: 'user.effective', - schema_name: 'user', - short: 'User whose privileges were assumed.', - }, - { - full: 'user.changes', - schema_name: 'user', - short: 'Captures changes made to a user.', - }, - ], - short: 'Fields to describe the user relevant to the event.', - title: 'User', - type: 'group', - }, - user_agent: { - description: - 'The user_agent fields normally come from a browser request.\nThey often show up in web service logs coming from the parsed user agent string.', - fields: { - 'user_agent.device.name': { - dashed_name: 'user-agent-device-name', - description: 'Name of the device.', - example: 'iPhone', - flat_name: 'user_agent.device.name', - ignore_above: 1024, - level: 'extended', - name: 'device.name', - normalize: [], - short: 'Name of the device.', - type: 'keyword', - }, - 'user_agent.name': { - dashed_name: 'user-agent-name', - description: 'Name of the user agent.', - example: 'Safari', - flat_name: 'user_agent.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'Name of the user agent.', - type: 'keyword', - }, - 'user_agent.original': { - dashed_name: 'user-agent-original', - description: 'Unparsed user_agent string.', - example: - 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1', - flat_name: 'user_agent.original', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'user_agent.original.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'original', - normalize: [], - short: 'Unparsed user_agent string.', - type: 'keyword', - }, - 'user_agent.os.family': { - dashed_name: 'user-agent-os-family', - description: 'OS family (such as redhat, debian, freebsd, windows).', - example: 'debian', - flat_name: 'user_agent.os.family', - ignore_above: 1024, - level: 'extended', - name: 'family', - normalize: [], - original_fieldset: 'os', - short: 'OS family (such as redhat, debian, freebsd, windows).', - type: 'keyword', - }, - 'user_agent.os.full': { - dashed_name: 'user-agent-os-full', - description: 'Operating system name, including the version or code name.', - example: 'Mac OS Mojave', - flat_name: 'user_agent.os.full', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'user_agent.os.full.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'full', - normalize: [], - original_fieldset: 'os', - short: 'Operating system name, including the version or code name.', - type: 'keyword', - }, - 'user_agent.os.kernel': { - dashed_name: 'user-agent-os-kernel', - description: 'Operating system kernel version as a raw string.', - example: '4.4.0-112-generic', - flat_name: 'user_agent.os.kernel', - ignore_above: 1024, - level: 'extended', - name: 'kernel', - normalize: [], - original_fieldset: 'os', - short: 'Operating system kernel version as a raw string.', - type: 'keyword', - }, - 'user_agent.os.name': { - dashed_name: 'user-agent-os-name', - description: 'Operating system name, without the version.', - example: 'Mac OS X', - flat_name: 'user_agent.os.name', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'user_agent.os.name.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'name', - normalize: [], - original_fieldset: 'os', - short: 'Operating system name, without the version.', - type: 'keyword', - }, - 'user_agent.os.platform': { - dashed_name: 'user-agent-os-platform', - description: 'Operating system platform (such centos, ubuntu, windows).', - example: 'darwin', - flat_name: 'user_agent.os.platform', - ignore_above: 1024, - level: 'extended', - name: 'platform', - normalize: [], - original_fieldset: 'os', - short: 'Operating system platform (such centos, ubuntu, windows).', - type: 'keyword', - }, - 'user_agent.os.type': { - dashed_name: 'user-agent-os-type', - description: - "Use the `os.type` field to categorize the operating system into one of the broad commercial families.\nIf the OS you're dealing with is not listed as an expected value, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition.", - example: 'macos', - expected_values: ['linux', 'macos', 'unix', 'windows', 'ios', 'android'], - flat_name: 'user_agent.os.type', - ignore_above: 1024, - level: 'extended', - name: 'type', - normalize: [], - original_fieldset: 'os', - short: 'Which commercial OS family (one of: linux, macos, unix, windows, ios or android).', - type: 'keyword', - }, - 'user_agent.os.version': { - dashed_name: 'user-agent-os-version', - description: 'Operating system version as a raw string.', - example: '10.14.1', - flat_name: 'user_agent.os.version', - ignore_above: 1024, - level: 'extended', - name: 'version', - normalize: [], - original_fieldset: 'os', - short: 'Operating system version as a raw string.', - type: 'keyword', - }, - 'user_agent.version': { - dashed_name: 'user-agent-version', - description: 'Version of the user agent.', - example: 12, - flat_name: 'user_agent.version', - ignore_above: 1024, - level: 'extended', - name: 'version', - normalize: [], - short: 'Version of the user agent.', - type: 'keyword', - }, - }, - group: 2, - name: 'user_agent', - nestings: ['user_agent.os'], - prefix: 'user_agent.', - reused_here: [ - { - full: 'user_agent.os', - schema_name: 'os', - short: 'OS fields contain information about the operating system.', - }, - ], - short: 'Fields to describe a browser user_agent string.', - title: 'User agent', - type: 'group', - }, - vlan: { - description: - 'The VLAN fields are used to identify 802.1q tag(s) of a packet, as well as ingress and egress VLAN associations of an observer in relation to a specific packet or connection.\nNetwork.vlan fields are used to record a single VLAN tag, or the outer tag in the case of q-in-q encapsulations, for a packet or connection as observed, typically provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic.\nNetwork.inner VLAN fields are used to report inner q-in-q 802.1q tags (multiple 802.1q encapsulations) as observed, typically provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic. Network.inner VLAN fields should only be used in addition to network.vlan fields to indicate q-in-q tagging.\nObserver.ingress and observer.egress VLAN values are used to record observer specific information when observer events contain discrete ingress and egress VLAN information, typically provided by firewalls, routers, or load balancers.', - fields: { - 'vlan.id': { - dashed_name: 'vlan-id', - description: 'VLAN ID as reported by the observer.', - example: 10, - flat_name: 'vlan.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - short: 'VLAN ID as reported by the observer.', - type: 'keyword', - }, - 'vlan.name': { - dashed_name: 'vlan-name', - description: 'Optional VLAN name as reported by the observer.', - example: 'outside', - flat_name: 'vlan.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'Optional VLAN name as reported by the observer.', - type: 'keyword', - }, - }, - group: 2, - name: 'vlan', - prefix: 'vlan.', - reusable: { - expected: [ - { as: 'vlan', at: 'observer.ingress', full: 'observer.ingress.vlan' }, - { as: 'vlan', at: 'observer.egress', full: 'observer.egress.vlan' }, - { as: 'vlan', at: 'network', full: 'network.vlan' }, - { as: 'vlan', at: 'network.inner', full: 'network.inner.vlan' }, - ], - top_level: false, - }, - short: 'Fields to describe observed VLAN information.', - title: 'VLAN', - type: 'group', - }, - vulnerability: { - description: - 'The vulnerability fields describe information about a vulnerability that is relevant to an event.', - fields: { - 'vulnerability.category': { - dashed_name: 'vulnerability-category', - description: - 'The type of system or architecture that the vulnerability affects. These may be platform-specific (for example, Debian or SUSE) or general (for example, Database or Firewall). For example (https://qualysguard.qualys.com/qwebhelp/fo_portal/knowledgebase/vulnerability_categories.htm[Qualys vulnerability categories])\nThis field must be an array.', - example: '["Firewall"]', - flat_name: 'vulnerability.category', - ignore_above: 1024, - level: 'extended', - name: 'category', - normalize: ['array'], - short: 'Category of a vulnerability.', - type: 'keyword', - }, - 'vulnerability.classification': { - dashed_name: 'vulnerability-classification', - description: - 'The classification of the vulnerability scoring system. For example (https://www.first.org/cvss/)', - example: 'CVSS', - flat_name: 'vulnerability.classification', - ignore_above: 1024, - level: 'extended', - name: 'classification', - normalize: [], - short: 'Classification of the vulnerability.', - type: 'keyword', - }, - 'vulnerability.description': { - dashed_name: 'vulnerability-description', - description: - 'The description of the vulnerability that provides additional context of the vulnerability. For example (https://cve.mitre.org/about/faqs.html#cve_entry_descriptions_created[Common Vulnerabilities and Exposure CVE description])', - example: 'In macOS before 2.12.6, there is a vulnerability in the RPC...', - flat_name: 'vulnerability.description', - ignore_above: 1024, - level: 'extended', - multi_fields: [ - { - flat_name: 'vulnerability.description.text', - name: 'text', - type: 'match_only_text', - }, - ], - name: 'description', - normalize: [], - short: 'Description of the vulnerability.', - type: 'keyword', - }, - 'vulnerability.enumeration': { - dashed_name: 'vulnerability-enumeration', - description: - 'The type of identifier used for this vulnerability. For example (https://cve.mitre.org/about/)', - example: 'CVE', - flat_name: 'vulnerability.enumeration', - ignore_above: 1024, - level: 'extended', - name: 'enumeration', - normalize: [], - short: 'Identifier of the vulnerability.', - type: 'keyword', - }, - 'vulnerability.id': { - dashed_name: 'vulnerability-id', - description: - 'The identification (ID) is the number portion of a vulnerability entry. It includes a unique identification number for the vulnerability. For example (https://cve.mitre.org/about/faqs.html#what_is_cve_id)[Common Vulnerabilities and Exposure CVE ID]', - example: 'CVE-2019-00001', - flat_name: 'vulnerability.id', - ignore_above: 1024, - level: 'extended', - name: 'id', - normalize: [], - short: 'ID of the vulnerability.', - type: 'keyword', - }, - 'vulnerability.reference': { - dashed_name: 'vulnerability-reference', - description: - 'A resource that provides additional information, context, and mitigations for the identified vulnerability.', - example: 'https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111', - flat_name: 'vulnerability.reference', - ignore_above: 1024, - level: 'extended', - name: 'reference', - normalize: [], - short: 'Reference of the vulnerability.', - type: 'keyword', - }, - 'vulnerability.report_id': { - dashed_name: 'vulnerability-report-id', - description: 'The report or scan identification number.', - example: 20191018.0001, - flat_name: 'vulnerability.report_id', - ignore_above: 1024, - level: 'extended', - name: 'report_id', - normalize: [], - short: 'Scan identification number.', - type: 'keyword', - }, - 'vulnerability.scanner.vendor': { - dashed_name: 'vulnerability-scanner-vendor', - description: 'The name of the vulnerability scanner vendor.', - example: 'Tenable', - flat_name: 'vulnerability.scanner.vendor', - ignore_above: 1024, - level: 'extended', - name: 'scanner.vendor', - normalize: [], - short: 'Name of the scanner vendor.', - type: 'keyword', - }, - 'vulnerability.score.base': { - dashed_name: 'vulnerability-score-base', - description: - 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe.\nBase scores cover an assessment for exploitability metrics (attack vector, complexity, privileges, and user interaction), impact metrics (confidentiality, integrity, and availability), and scope. For example (https://www.first.org/cvss/specification-document)', - example: 5.5, - flat_name: 'vulnerability.score.base', - level: 'extended', - name: 'score.base', - normalize: [], - short: 'Vulnerability Base score.', - type: 'float', - }, - 'vulnerability.score.environmental': { - dashed_name: 'vulnerability-score-environmental', - description: - 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe.\nEnvironmental scores cover an assessment for any modified Base metrics, confidentiality, integrity, and availability requirements. For example (https://www.first.org/cvss/specification-document)', - example: 5.5, - flat_name: 'vulnerability.score.environmental', - level: 'extended', - name: 'score.environmental', - normalize: [], - short: 'Vulnerability Environmental score.', - type: 'float', - }, - 'vulnerability.score.temporal': { - dashed_name: 'vulnerability-score-temporal', - description: - 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe.\nTemporal scores cover an assessment for code maturity, remediation level, and confidence. For example (https://www.first.org/cvss/specification-document)', - flat_name: 'vulnerability.score.temporal', - level: 'extended', - name: 'score.temporal', - normalize: [], - short: 'Vulnerability Temporal score.', - type: 'float', - }, - 'vulnerability.score.version': { - dashed_name: 'vulnerability-score-version', - description: - 'The National Vulnerability Database (NVD) provides qualitative severity rankings of "Low", "Medium", and "High" for CVSS v2.0 base score ranges in addition to the severity ratings for CVSS v3.0 as they are defined in the CVSS v3.0 specification.\nCVSS is owned and managed by FIRST.Org, Inc. (FIRST), a US-based non-profit organization, whose mission is to help computer security incident response teams across the world. For example (https://nvd.nist.gov/vuln-metrics/cvss)', - example: 2, - flat_name: 'vulnerability.score.version', - ignore_above: 1024, - level: 'extended', - name: 'score.version', - normalize: [], - short: 'CVSS version.', - type: 'keyword', - }, - 'vulnerability.severity': { - dashed_name: 'vulnerability-severity', - description: - 'The severity of the vulnerability can help with metrics and internal prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss)', - example: 'Critical', - flat_name: 'vulnerability.severity', - ignore_above: 1024, - level: 'extended', - name: 'severity', - normalize: [], - short: 'Severity of the vulnerability.', - type: 'keyword', - }, - }, - group: 2, - name: 'vulnerability', - prefix: 'vulnerability.', - short: 'Fields to describe the vulnerability relevant to an event.', - title: 'Vulnerability', - type: 'group', - }, - x509: { - description: - 'This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk.\nWhen the certificate relates to a file, use the fields at `file.x509`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`).\nEvents that contain certificate information about network connections, should use the x509 fields under the relevant TLS fields: `tls.server.x509` and/or `tls.client.x509`.', - fields: { - 'x509.alternative_names': { - dashed_name: 'x509-alternative-names', - description: - 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', - example: '*.elastic.co', - flat_name: 'x509.alternative_names', - ignore_above: 1024, - level: 'extended', - name: 'alternative_names', - normalize: ['array'], - short: 'List of subject alternative names (SAN).', - type: 'keyword', - }, - 'x509.issuer.common_name': { - dashed_name: 'x509-issuer-common-name', - description: 'List of common name (CN) of issuing certificate authority.', - example: 'Example SHA2 High Assurance Server CA', - flat_name: 'x509.issuer.common_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.common_name', - normalize: ['array'], - short: 'List of common name (CN) of issuing certificate authority.', - type: 'keyword', - }, - 'x509.issuer.country': { - dashed_name: 'x509-issuer-country', - description: 'List of country \\(C) codes', - example: 'US', - flat_name: 'x509.issuer.country', - ignore_above: 1024, - level: 'extended', - name: 'issuer.country', - normalize: ['array'], - short: 'List of country \\(C) codes', - type: 'keyword', - }, - 'x509.issuer.distinguished_name': { - dashed_name: 'x509-issuer-distinguished-name', - description: 'Distinguished name (DN) of issuing certificate authority.', - example: - 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', - flat_name: 'x509.issuer.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'issuer.distinguished_name', - normalize: [], - short: 'Distinguished name (DN) of issuing certificate authority.', - type: 'keyword', - }, - 'x509.issuer.locality': { - dashed_name: 'x509-issuer-locality', - description: 'List of locality names (L)', - example: 'Mountain View', - flat_name: 'x509.issuer.locality', - ignore_above: 1024, - level: 'extended', - name: 'issuer.locality', - normalize: ['array'], - short: 'List of locality names (L)', - type: 'keyword', - }, - 'x509.issuer.organization': { - dashed_name: 'x509-issuer-organization', - description: 'List of organizations (O) of issuing certificate authority.', - example: 'Example Inc', - flat_name: 'x509.issuer.organization', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organization', - normalize: ['array'], - short: 'List of organizations (O) of issuing certificate authority.', - type: 'keyword', - }, - 'x509.issuer.organizational_unit': { - dashed_name: 'x509-issuer-organizational-unit', - description: 'List of organizational units (OU) of issuing certificate authority.', - example: 'www.example.com', - flat_name: 'x509.issuer.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'issuer.organizational_unit', - normalize: ['array'], - short: 'List of organizational units (OU) of issuing certificate authority.', - type: 'keyword', - }, - 'x509.issuer.state_or_province': { - dashed_name: 'x509-issuer-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'x509.issuer.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'issuer.state_or_province', - normalize: ['array'], - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'x509.not_after': { - dashed_name: 'x509-not-after', - description: 'Time at which the certificate is no longer considered valid.', - example: '2020-07-16T03:15:39Z', - flat_name: 'x509.not_after', - level: 'extended', - name: 'not_after', - normalize: [], - short: 'Time at which the certificate is no longer considered valid.', - type: 'date', - }, - 'x509.not_before': { - dashed_name: 'x509-not-before', - description: 'Time at which the certificate is first considered valid.', - example: '2019-08-16T01:40:25Z', - flat_name: 'x509.not_before', - level: 'extended', - name: 'not_before', - normalize: [], - short: 'Time at which the certificate is first considered valid.', - type: 'date', - }, - 'x509.public_key_algorithm': { - dashed_name: 'x509-public-key-algorithm', - description: 'Algorithm used to generate the public key.', - example: 'RSA', - flat_name: 'x509.public_key_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'public_key_algorithm', - normalize: [], - short: 'Algorithm used to generate the public key.', - type: 'keyword', - }, - 'x509.public_key_curve': { - dashed_name: 'x509-public-key-curve', - description: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - example: 'nistp521', - flat_name: 'x509.public_key_curve', - ignore_above: 1024, - level: 'extended', - name: 'public_key_curve', - normalize: [], - short: - 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', - type: 'keyword', - }, - 'x509.public_key_exponent': { - dashed_name: 'x509-public-key-exponent', - description: 'Exponent used to derive the public key. This is algorithm specific.', - doc_values: false, - example: 65537, - flat_name: 'x509.public_key_exponent', - index: false, - level: 'extended', - name: 'public_key_exponent', - normalize: [], - short: 'Exponent used to derive the public key. This is algorithm specific.', - type: 'long', - }, - 'x509.public_key_size': { - dashed_name: 'x509-public-key-size', - description: 'The size of the public key space in bits.', - example: 2048, - flat_name: 'x509.public_key_size', - level: 'extended', - name: 'public_key_size', - normalize: [], - short: 'The size of the public key space in bits.', - type: 'long', - }, - 'x509.serial_number': { - dashed_name: 'x509-serial-number', - description: - 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', - example: '55FBB9C7DEBF09809D12CCAA', - flat_name: 'x509.serial_number', - ignore_above: 1024, - level: 'extended', - name: 'serial_number', - normalize: [], - short: 'Unique serial number issued by the certificate authority.', - type: 'keyword', - }, - 'x509.signature_algorithm': { - dashed_name: 'x509-signature-algorithm', - description: - 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', - example: 'SHA256-RSA', - flat_name: 'x509.signature_algorithm', - ignore_above: 1024, - level: 'extended', - name: 'signature_algorithm', - normalize: [], - short: 'Identifier for certificate signature algorithm.', - type: 'keyword', - }, - 'x509.subject.common_name': { - dashed_name: 'x509-subject-common-name', - description: 'List of common names (CN) of subject.', - example: 'shared.global.example.net', - flat_name: 'x509.subject.common_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.common_name', - normalize: ['array'], - short: 'List of common names (CN) of subject.', - type: 'keyword', - }, - 'x509.subject.country': { - dashed_name: 'x509-subject-country', - description: 'List of country \\(C) code', - example: 'US', - flat_name: 'x509.subject.country', - ignore_above: 1024, - level: 'extended', - name: 'subject.country', - normalize: ['array'], - short: 'List of country \\(C) code', - type: 'keyword', - }, - 'x509.subject.distinguished_name': { - dashed_name: 'x509-subject-distinguished-name', - description: 'Distinguished name (DN) of the certificate subject entity.', - example: - 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', - flat_name: 'x509.subject.distinguished_name', - ignore_above: 1024, - level: 'extended', - name: 'subject.distinguished_name', - normalize: [], - short: 'Distinguished name (DN) of the certificate subject entity.', - type: 'keyword', - }, - 'x509.subject.locality': { - dashed_name: 'x509-subject-locality', - description: 'List of locality names (L)', - example: 'San Francisco', - flat_name: 'x509.subject.locality', - ignore_above: 1024, - level: 'extended', - name: 'subject.locality', - normalize: ['array'], - short: 'List of locality names (L)', - type: 'keyword', - }, - 'x509.subject.organization': { - dashed_name: 'x509-subject-organization', - description: 'List of organizations (O) of subject.', - example: 'Example, Inc.', - flat_name: 'x509.subject.organization', - ignore_above: 1024, - level: 'extended', - name: 'subject.organization', - normalize: ['array'], - short: 'List of organizations (O) of subject.', - type: 'keyword', - }, - 'x509.subject.organizational_unit': { - dashed_name: 'x509-subject-organizational-unit', - description: 'List of organizational units (OU) of subject.', - flat_name: 'x509.subject.organizational_unit', - ignore_above: 1024, - level: 'extended', - name: 'subject.organizational_unit', - normalize: ['array'], - short: 'List of organizational units (OU) of subject.', - type: 'keyword', - }, - 'x509.subject.state_or_province': { - dashed_name: 'x509-subject-state-or-province', - description: 'List of state or province names (ST, S, or P)', - example: 'California', - flat_name: 'x509.subject.state_or_province', - ignore_above: 1024, - level: 'extended', - name: 'subject.state_or_province', - normalize: ['array'], - short: 'List of state or province names (ST, S, or P)', - type: 'keyword', - }, - 'x509.version_number': { - dashed_name: 'x509-version-number', - description: 'Version of x509 format.', - example: 3, - flat_name: 'x509.version_number', - ignore_above: 1024, - level: 'extended', - name: 'version_number', - normalize: [], - short: 'Version of x509 format.', - type: 'keyword', - }, - }, - group: 2, - name: 'x509', - prefix: 'x509.', - reusable: { - expected: [ - { as: 'x509', at: 'file', full: 'file.x509' }, - { as: 'x509', at: 'threat.indicator', full: 'threat.indicator.x509' }, - { - as: 'x509', - at: 'threat.enrichments.indicator', - full: 'threat.enrichments.indicator.x509', - }, - { as: 'x509', at: 'tls.client', full: 'tls.client.x509' }, - { as: 'x509', at: 'tls.server', full: 'tls.server.x509' }, - ], - top_level: false, - }, - short: 'These fields contain x509 certificate metadata.', - title: 'x509 Certificate', - type: 'group', - }, -}; diff --git a/packages/kbn-ecs/generated/server.ts b/packages/kbn-ecs/generated/server.ts index 182eaca274a6d..34a665a221be3 100644 --- a/packages/kbn-ecs/generated/server.ts +++ b/packages/kbn-ecs/generated/server.ts @@ -181,6 +181,6 @@ export interface EcsServer { /** * Array of user roles at the time of the event. */ - roles?: string[]; + roles?: string | string[]; }; } diff --git a/packages/kbn-ecs/generated/service.ts b/packages/kbn-ecs/generated/service.ts index b25c422473fe5..24a08f1224b2f 100644 --- a/packages/kbn-ecs/generated/service.ts +++ b/packages/kbn-ecs/generated/service.ts @@ -61,7 +61,7 @@ export interface EcsService { * In the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both. * Other services could use this to distinguish between a `web` and `worker` role running as part of the service. */ - roles?: string[]; + roles?: string | string[]; }; origin?: { @@ -115,7 +115,7 @@ export interface EcsService { * In the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both. * Other services could use this to distinguish between a `web` and `worker` role running as part of the service. */ - roles?: string[]; + roles?: string | string[]; }; /** @@ -190,7 +190,7 @@ export interface EcsService { * In the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both. * Other services could use this to distinguish between a `web` and `worker` role running as part of the service. */ - roles?: string[]; + roles?: string | string[]; }; /** diff --git a/packages/kbn-ecs/generated/source.ts b/packages/kbn-ecs/generated/source.ts index fbdb54009d999..fdfd4ed38b576 100644 --- a/packages/kbn-ecs/generated/source.ts +++ b/packages/kbn-ecs/generated/source.ts @@ -180,6 +180,6 @@ export interface EcsSource { /** * Array of user roles at the time of the event. */ - roles?: string[]; + roles?: string | string[]; }; } diff --git a/packages/kbn-ecs/generated/threat.ts b/packages/kbn-ecs/generated/threat.ts index 4f3072236008a..04c6a5758ea28 100644 --- a/packages/kbn-ecs/generated/threat.ts +++ b/packages/kbn-ecs/generated/threat.ts @@ -14,7 +14,7 @@ export interface EcsThreat { /** * A list of associated indicators objects enriching the event, and the context of that association/enrichment. */ - enrichments?: Array>; + enrichments?: Record | Array>; feed?: { /** * The saved object ID of the dashboard belonging to the threat feed for displaying dashboard links to threat feeds in Kibana. @@ -43,7 +43,7 @@ export interface EcsThreat { * The alias(es) of the group for a set of related intrusion activity that are tracked by a common name in the security community. * While not required, you can use a MITRE ATT&CK® group alias(es). */ - alias?: string[]; + alias?: string | string[]; /** * The id of the group for a set of related intrusion activity that are tracked by a common name in the security community. * While not required, you can use a MITRE ATT&CK® group id. @@ -100,7 +100,7 @@ export interface EcsThreat { * Array of file attributes. * Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write. */ - attributes?: string[]; + attributes?: string | string[]; code_signature?: { /** * The hashing algorithm used to sign the process. @@ -189,7 +189,28 @@ export interface EcsThreat { /** * List of exported element names and types. */ - exports?: Array>; + exports?: Record | Array>; + /** + * A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; header?: { /** * Version of the ELF Application Binary Interface (ABI). @@ -225,24 +246,37 @@ export interface EcsThreat { version?: string; }; + /** + * A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is an ELF implementation of the Windows PE imphash. + */ + import_hash?: string; /** * List of imported element names and types. */ - imports?: Array>; + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; /** * An array containing an object for each section of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. */ - sections?: Array>; + sections?: Record | Array>; /** * An array containing an object for each segment of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. */ - segments?: Array>; + segments?: Record | Array>; /** * List of shared libraries used by this ELF object. */ - shared_libraries?: string[]; + shared_libraries?: string | string[]; /** * telfhash symbol hash for ELF file. */ @@ -344,11 +378,49 @@ export interface EcsThreat { * Internal version of the file, provided at compile-time. */ file_version?: string; + /** + * A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). + */ + go_import_hash?: string; + /** + * List of imported Go language element names and types. + */ + go_imports?: Record; + /** + * Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of Go imports. + */ + go_imports_names_var_entropy?: number; + /** + * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. + */ + go_stripped?: boolean; /** * A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. */ imphash?: string; + /** + * A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. + * This is a synonym for imphash. + */ + import_hash?: string; + /** + * List of imported element names and types. + */ + imports?: Record | Array>; + /** + * Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_entropy?: number; + /** + * Variance for Shannon entropy calculation from the list of imported element names and types. + */ + imports_names_var_entropy?: number; /** * Internal name of the file, provided at compile-time. */ @@ -362,6 +434,11 @@ export interface EcsThreat { * Internal product name of the file, provided at compile-time. */ product?: string; + /** + * An array containing an object for each section of the PE file. + * The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`. + */ + sections?: Record | Array>; }; /** @@ -385,16 +462,16 @@ export interface EcsThreat { /** * List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. */ - alternative_names?: string[]; + alternative_names?: string | string[]; issuer?: { /** * List of common name (CN) of issuing certificate authority. */ - common_name?: string[]; + common_name?: string | string[]; /** * List of country \(C) codes */ - country?: string[]; + country?: string | string[]; /** * Distinguished name (DN) of issuing certificate authority. */ @@ -402,19 +479,19 @@ export interface EcsThreat { /** * List of locality names (L) */ - locality?: string[]; + locality?: string | string[]; /** * List of organizations (O) of issuing certificate authority. */ - organization?: string[]; + organization?: string | string[]; /** * List of organizational units (OU) of issuing certificate authority. */ - organizational_unit?: string[]; + organizational_unit?: string | string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string[]; + state_or_province?: string | string[]; }; /** @@ -453,11 +530,11 @@ export interface EcsThreat { /** * List of common names (CN) of subject. */ - common_name?: string[]; + common_name?: string | string[]; /** * List of country \(C) code */ - country?: string[]; + country?: string | string[]; /** * Distinguished name (DN) of the certificate subject entity. */ @@ -465,19 +542,19 @@ export interface EcsThreat { /** * List of locality names (L) */ - locality?: string[]; + locality?: string | string[]; /** * List of organizations (O) of subject. */ - organization?: string[]; + organization?: string | string[]; /** * List of organizational units (OU) of subject. */ - organizational_unit?: string[]; + organizational_unit?: string | string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string[]; + state_or_province?: string | string[]; }; /** @@ -564,6 +641,10 @@ export interface EcsThreat { * The date and time when intelligence source last modified information for this indicator. */ modified_at?: string; + /** + * The display name indicator in an UI friendly format + */ + name?: string; /** * Identifies a threat indicator as a port number (irrespective of direction). */ @@ -587,7 +668,7 @@ export interface EcsThreat { * Content when writing string types. * Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). */ - strings?: string[]; + strings?: string | string[]; /** * Standard registry type for encoding contents */ @@ -701,16 +782,16 @@ export interface EcsThreat { /** * List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. */ - alternative_names?: string[]; + alternative_names?: string | string[]; issuer?: { /** * List of common name (CN) of issuing certificate authority. */ - common_name?: string[]; + common_name?: string | string[]; /** * List of country \(C) codes */ - country?: string[]; + country?: string | string[]; /** * Distinguished name (DN) of issuing certificate authority. */ @@ -718,19 +799,19 @@ export interface EcsThreat { /** * List of locality names (L) */ - locality?: string[]; + locality?: string | string[]; /** * List of organizations (O) of issuing certificate authority. */ - organization?: string[]; + organization?: string | string[]; /** * List of organizational units (OU) of issuing certificate authority. */ - organizational_unit?: string[]; + organizational_unit?: string | string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string[]; + state_or_province?: string | string[]; }; /** @@ -769,11 +850,11 @@ export interface EcsThreat { /** * List of common names (CN) of subject. */ - common_name?: string[]; + common_name?: string | string[]; /** * List of country \(C) code */ - country?: string[]; + country?: string | string[]; /** * Distinguished name (DN) of the certificate subject entity. */ @@ -781,19 +862,19 @@ export interface EcsThreat { /** * List of locality names (L) */ - locality?: string[]; + locality?: string | string[]; /** * List of organizations (O) of subject. */ - organization?: string[]; + organization?: string | string[]; /** * List of organizational units (OU) of subject. */ - organizational_unit?: string[]; + organizational_unit?: string | string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string[]; + state_or_province?: string | string[]; }; /** @@ -808,7 +889,7 @@ export interface EcsThreat { * The alias(es) of the software for a set of related intrusion activity that are tracked by a common name in the security community. * While not required, you can use a MITRE ATT&CK® associated software description. */ - alias?: string[]; + alias?: string | string[]; /** * The id of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. * While not required, you can use a MITRE ATT&CK® software id. @@ -823,7 +904,7 @@ export interface EcsThreat { * The platforms of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. * While not required, you can use MITRE ATT&CK® software platform values. */ - platforms?: string[]; + platforms?: string | string[]; /** * The reference URL of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. * While not required, you can use a MITRE ATT&CK® software reference URL. @@ -840,43 +921,43 @@ export interface EcsThreat { /** * The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ ) */ - id?: string[]; + id?: string | string[]; /** * Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/) */ - name?: string[]; + name?: string | string[]; /** * The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ ) */ - reference?: string[]; + reference?: string | string[]; }; technique?: { /** * The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/) */ - id?: string[]; + id?: string | string[]; /** * The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/) */ - name?: string[]; + name?: string | string[]; /** * The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/) */ - reference?: string[]; + reference?: string | string[]; subtechnique?: { /** * The full id of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/) */ - id?: string[]; + id?: string | string[]; /** * The name of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/) */ - name?: string[]; + name?: string | string[]; /** * The reference url of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/) */ - reference?: string[]; + reference?: string | string[]; }; }; } diff --git a/packages/kbn-ecs/generated/tls.ts b/packages/kbn-ecs/generated/tls.ts index 5ce5343a73ab6..afd947e81bd96 100644 --- a/packages/kbn-ecs/generated/tls.ts +++ b/packages/kbn-ecs/generated/tls.ts @@ -22,7 +22,7 @@ export interface EcsTls { /** * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. */ - certificate_chain?: string[]; + certificate_chain?: string | string[]; hash?: { /** * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. @@ -65,21 +65,21 @@ export interface EcsTls { /** * Array of ciphers offered by the client during the client hello. */ - supported_ciphers?: string[]; + supported_ciphers?: string | string[]; x509?: { /** * List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. */ - alternative_names?: string[]; + alternative_names?: string | string[]; issuer?: { /** * List of common name (CN) of issuing certificate authority. */ - common_name?: string[]; + common_name?: string | string[]; /** * List of country \(C) codes */ - country?: string[]; + country?: string | string[]; /** * Distinguished name (DN) of issuing certificate authority. */ @@ -87,19 +87,19 @@ export interface EcsTls { /** * List of locality names (L) */ - locality?: string[]; + locality?: string | string[]; /** * List of organizations (O) of issuing certificate authority. */ - organization?: string[]; + organization?: string | string[]; /** * List of organizational units (OU) of issuing certificate authority. */ - organizational_unit?: string[]; + organizational_unit?: string | string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string[]; + state_or_province?: string | string[]; }; /** @@ -138,11 +138,11 @@ export interface EcsTls { /** * List of common names (CN) of subject. */ - common_name?: string[]; + common_name?: string | string[]; /** * List of country \(C) code */ - country?: string[]; + country?: string | string[]; /** * Distinguished name (DN) of the certificate subject entity. */ @@ -150,19 +150,19 @@ export interface EcsTls { /** * List of locality names (L) */ - locality?: string[]; + locality?: string | string[]; /** * List of organizations (O) of subject. */ - organization?: string[]; + organization?: string | string[]; /** * List of organizational units (OU) of subject. */ - organizational_unit?: string[]; + organizational_unit?: string | string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string[]; + state_or_province?: string | string[]; }; /** @@ -196,7 +196,7 @@ export interface EcsTls { /** * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. */ - certificate_chain?: string[]; + certificate_chain?: string | string[]; hash?: { /** * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. @@ -236,16 +236,16 @@ export interface EcsTls { /** * List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. */ - alternative_names?: string[]; + alternative_names?: string | string[]; issuer?: { /** * List of common name (CN) of issuing certificate authority. */ - common_name?: string[]; + common_name?: string | string[]; /** * List of country \(C) codes */ - country?: string[]; + country?: string | string[]; /** * Distinguished name (DN) of issuing certificate authority. */ @@ -253,19 +253,19 @@ export interface EcsTls { /** * List of locality names (L) */ - locality?: string[]; + locality?: string | string[]; /** * List of organizations (O) of issuing certificate authority. */ - organization?: string[]; + organization?: string | string[]; /** * List of organizational units (OU) of issuing certificate authority. */ - organizational_unit?: string[]; + organizational_unit?: string | string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string[]; + state_or_province?: string | string[]; }; /** @@ -304,11 +304,11 @@ export interface EcsTls { /** * List of common names (CN) of subject. */ - common_name?: string[]; + common_name?: string | string[]; /** * List of country \(C) code */ - country?: string[]; + country?: string | string[]; /** * Distinguished name (DN) of the certificate subject entity. */ @@ -316,19 +316,19 @@ export interface EcsTls { /** * List of locality names (L) */ - locality?: string[]; + locality?: string | string[]; /** * List of organizations (O) of subject. */ - organization?: string[]; + organization?: string | string[]; /** * List of organizational units (OU) of subject. */ - organizational_unit?: string[]; + organizational_unit?: string | string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string[]; + state_or_province?: string | string[]; }; /** diff --git a/packages/kbn-ecs/generated/user.ts b/packages/kbn-ecs/generated/user.ts index 9f22ea7d7cc8d..c904ee3e8c6e9 100644 --- a/packages/kbn-ecs/generated/user.ts +++ b/packages/kbn-ecs/generated/user.ts @@ -57,7 +57,7 @@ export interface EcsUser { /** * Array of user roles at the time of the event. */ - roles?: string[]; + roles?: string | string[]; }; /** @@ -111,7 +111,7 @@ export interface EcsUser { /** * Array of user roles at the time of the event. */ - roles?: string[]; + roles?: string | string[]; }; /** @@ -181,7 +181,7 @@ export interface EcsUser { /** * Array of user roles at the time of the event. */ - roles?: string[]; + roles?: string | string[]; target?: { /** * Name of the directory the user is a member of. @@ -228,6 +228,6 @@ export interface EcsUser { /** * Array of user roles at the time of the event. */ - roles?: string[]; + roles?: string | string[]; }; } diff --git a/packages/kbn-ecs/generated/vulnerability.ts b/packages/kbn-ecs/generated/vulnerability.ts index fb6fb6c79cef3..c53889d3723cd 100644 --- a/packages/kbn-ecs/generated/vulnerability.ts +++ b/packages/kbn-ecs/generated/vulnerability.ts @@ -14,7 +14,7 @@ export interface EcsVulnerability { * The type of system or architecture that the vulnerability affects. These may be platform-specific (for example, Debian or SUSE) or general (for example, Database or Firewall). For example (https://qualysguard.qualys.com/qwebhelp/fo_portal/knowledgebase/vulnerability_categories.htm[Qualys vulnerability categories]) * This field must be an array. */ - category?: string[]; + category?: string | string[]; /** * The classification of the vulnerability scoring system. For example (https://www.first.org/cvss/) */ diff --git a/packages/kbn-ecs/generated/x509.ts b/packages/kbn-ecs/generated/x509.ts index f4db637a110c1..413f0fe5e3c2a 100644 --- a/packages/kbn-ecs/generated/x509.ts +++ b/packages/kbn-ecs/generated/x509.ts @@ -15,16 +15,16 @@ export interface EcsX509 { /** * List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. */ - alternative_names?: string[]; + alternative_names?: string | string[]; issuer?: { /** * List of common name (CN) of issuing certificate authority. */ - common_name?: string[]; + common_name?: string | string[]; /** * List of country \(C) codes */ - country?: string[]; + country?: string | string[]; /** * Distinguished name (DN) of issuing certificate authority. */ @@ -32,19 +32,19 @@ export interface EcsX509 { /** * List of locality names (L) */ - locality?: string[]; + locality?: string | string[]; /** * List of organizations (O) of issuing certificate authority. */ - organization?: string[]; + organization?: string | string[]; /** * List of organizational units (OU) of issuing certificate authority. */ - organizational_unit?: string[]; + organizational_unit?: string | string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string[]; + state_or_province?: string | string[]; }; /** @@ -83,11 +83,11 @@ export interface EcsX509 { /** * List of common names (CN) of subject. */ - common_name?: string[]; + common_name?: string | string[]; /** * List of country \(C) code */ - country?: string[]; + country?: string | string[]; /** * Distinguished name (DN) of the certificate subject entity. */ @@ -95,19 +95,19 @@ export interface EcsX509 { /** * List of locality names (L) */ - locality?: string[]; + locality?: string | string[]; /** * List of organizations (O) of subject. */ - organization?: string[]; + organization?: string | string[]; /** * List of organizational units (OU) of subject. */ - organizational_unit?: string[]; + organizational_unit?: string | string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string[]; + state_or_province?: string | string[]; }; /** diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/allowed_values/helpers.test.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/allowed_values/helpers.test.tsx index 7dde4254708b7..ee8e1cd6999c7 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/allowed_values/helpers.test.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/allowed_values/helpers.test.tsx @@ -54,26 +54,9 @@ describe('helpers', () => { describe('getValidValues', () => { test('it returns the expected valid values', () => { - expect(getValidValues(ecsMetadata['event.category'])).toEqual([ - 'authentication', - 'configuration', - 'database', - 'driver', - 'email', - 'file', - 'host', - 'iam', - 'intrusion_detection', - 'malware', - 'network', - 'package', - 'process', - 'registry', - 'session', - 'threat', - 'vulnerability', - 'web', - ]); + expect(getValidValues(ecsMetadata['event.category'])).toEqual( + expect.arrayContaining([expect.any(String)]) + ); }); test('it returns an empty array when the `field` does NOT have `allowed_values`', () => { @@ -96,26 +79,8 @@ describe('helpers', () => { allowed_values: missingDatabase, }; - expect(getValidValues(field)).toEqual([ - 'authentication', - 'configuration', - // no entry for 'database' - 'driver', - 'email', - 'file', - 'host', - 'iam', - 'intrusion_detection', - 'malware', - 'network', - 'package', - 'process', - 'registry', - 'session', - 'threat', - 'vulnerability', - 'web', - ]); + expect(getValidValues(field)).toEqual(expect.arrayContaining([expect.any(String)])); + expect(getValidValues(field)).not.toEqual(expect.arrayContaining(['database'])); }); }); @@ -126,73 +91,15 @@ describe('helpers', () => { ecsMetadata, indexName: 'auditbeat-*', }) - ).toEqual([ - { - indexName: 'auditbeat-*', - indexFieldName: 'event.category', - allowedValues: [ - 'authentication', - 'configuration', - 'database', - 'driver', - 'email', - 'file', - 'host', - 'iam', - 'intrusion_detection', - 'malware', - 'network', - 'package', - 'process', - 'registry', - 'session', - 'threat', - 'vulnerability', - 'web', - ], - }, - { - indexName: 'auditbeat-*', - indexFieldName: 'event.kind', - allowedValues: [ - 'alert', - 'enrichment', - 'event', - 'metric', - 'state', - 'pipeline_error', - 'signal', - ], - }, - { - indexName: 'auditbeat-*', - indexFieldName: 'event.outcome', - allowedValues: ['failure', 'success', 'unknown'], - }, - { - indexName: 'auditbeat-*', - indexFieldName: 'event.type', - allowedValues: [ - 'access', - 'admin', - 'allowed', - 'change', - 'connection', - 'creation', - 'deletion', - 'denied', - 'end', - 'error', - 'group', - 'indicator', - 'info', - 'installation', - 'protocol', - 'start', - 'user', - ], - }, - ]); + ).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + indexName: 'auditbeat-*', + indexFieldName: 'event.category', + allowedValues: expect.arrayContaining([expect.any(String)]), + }), + ]) + ); }); test('it returns an empty array when `ecsMetadata` is null', () => { diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/helpers.test.ts b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/helpers.test.ts index ba7ab179c8ed0..04af24c20ecab 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/helpers.test.ts +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/helpers.test.ts @@ -122,542 +122,82 @@ describe('helpers', () => { unallowedValues, }) ).toEqual({ - all: [ - { - dashed_name: 'timestamp', - description: - 'Date/time when the event originated.\nThis is the date/time extracted from the event, typically representing when the event was generated by the source.\nIf the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline.\nRequired field for all events.', - example: '2016-05-23T08:05:34.853Z', - flat_name: '@timestamp', - level: 'core', - name: '@timestamp', - normalize: [], - required: true, - short: 'Date/time when the event originated.', - type: 'date', - indexFieldName: '@timestamp', - indexFieldType: 'date', - indexInvalidValues: [], - hasEcsMetadata: true, - isEcsCompliant: true, - isInSameFamily: false, - }, - { - allowed_values: [ - { - description: - 'Events in this category are related to the challenge and response process in which credentials are supplied and verified to allow the creation of a session. Common sources for these logs are Windows event logs and ssh logs. Visualize and analyze events in this category to look for failed logins, and other authentication-related activity.', - expected_event_types: ['start', 'end', 'info'], - name: 'authentication', - }, - { - description: - 'Events in the configuration category have to deal with creating, modifying, or deleting the settings or parameters of an application, process, or system.\nExample sources include security policy change logs, configuration auditing logging, and system integrity monitoring.', - expected_event_types: ['access', 'change', 'creation', 'deletion', 'info'], - name: 'configuration', - }, - { - description: - 'The database category denotes events and metrics relating to a data storage and retrieval system. Note that use of this category is not limited to relational database systems. Examples include event logs from MS SQL, MySQL, Elasticsearch, MongoDB, etc. Use this category to visualize and analyze database activity such as accesses and changes.', - expected_event_types: ['access', 'change', 'info', 'error'], - name: 'database', - }, - { - description: - 'Events in the driver category have to do with operating system device drivers and similar software entities such as Windows drivers, kernel extensions, kernel modules, etc.\nUse events and metrics in this category to visualize and analyze driver-related activity and status on hosts.', - expected_event_types: ['change', 'end', 'info', 'start'], - name: 'driver', - }, - { - description: - 'This category is used for events relating to email messages, email attachments, and email network or protocol activity.\nEmails events can be produced by email security gateways, mail transfer agents, email cloud service providers, or mail server monitoring applications.', - expected_event_types: ['info'], - name: 'email', - }, - { - description: - 'Relating to a set of information that has been created on, or has existed on a filesystem. Use this category of events to visualize and analyze the creation, access, and deletions of files. Events in this category can come from both host-based and network-based sources. An example source of a network-based detection of a file transfer would be the Zeek file.log.', - expected_event_types: ['change', 'creation', 'deletion', 'info'], - name: 'file', - }, - { - description: - 'Use this category to visualize and analyze information such as host inventory or host lifecycle events.\nMost of the events in this category can usually be observed from the outside, such as from a hypervisor or a control plane\'s point of view. Some can also be seen from within, such as "start" or "end".\nNote that this category is for information about hosts themselves; it is not meant to capture activity "happening on a host".', - expected_event_types: ['access', 'change', 'end', 'info', 'start'], - name: 'host', - }, - { - description: - 'Identity and access management (IAM) events relating to users, groups, and administration. Use this category to visualize and analyze IAM-related logs and data from active directory, LDAP, Okta, Duo, and other IAM systems.', - expected_event_types: [ - 'admin', - 'change', - 'creation', - 'deletion', - 'group', - 'info', - 'user', - ], - name: 'iam', - }, - { - description: - 'Relating to intrusion detections from IDS/IPS systems and functions, both network and host-based. Use this category to visualize and analyze intrusion detection alerts from systems such as Snort, Suricata, and Palo Alto threat detections.', - expected_event_types: ['allowed', 'denied', 'info'], - name: 'intrusion_detection', - }, - { - description: - 'Malware detection events and alerts. Use this category to visualize and analyze malware detections from EDR/EPP systems such as Elastic Endpoint Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems such as Suricata, or other sources of malware-related events such as Palo Alto Networks threat logs and Wildfire logs.', - expected_event_types: ['info'], - name: 'malware', - }, - { - description: - 'Relating to all network activity, including network connection lifecycle, network traffic, and essentially any event that includes an IP address. Many events containing decoded network protocol transactions fit into this category. Use events in this category to visualize or analyze counts of network ports, protocols, addresses, geolocation information, etc.', - expected_event_types: [ - 'access', - 'allowed', - 'connection', - 'denied', - 'end', - 'info', - 'protocol', - 'start', - ], - name: 'network', - }, - { - description: - 'Relating to software packages installed on hosts. Use this category to visualize and analyze inventory of software installed on various hosts, or to determine host vulnerability in the absence of vulnerability scan data.', - expected_event_types: [ - 'access', - 'change', - 'deletion', - 'info', - 'installation', - 'start', - ], - name: 'package', - }, - { - description: - 'Use this category of events to visualize and analyze process-specific information such as lifecycle events or process ancestry.', - expected_event_types: ['access', 'change', 'end', 'info', 'start'], - name: 'process', - }, - { - description: - 'Having to do with settings and assets stored in the Windows registry. Use this category to visualize and analyze activity such as registry access and modifications.', - expected_event_types: ['access', 'change', 'creation', 'deletion'], - name: 'registry', - }, - { - description: - 'The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections between assets. Data for this category may come from Windows Event logs, SSH logs, or stateless sessions such as HTTP cookie-based sessions, etc.', - expected_event_types: ['start', 'end', 'info'], - name: 'session', - }, - { - description: - "Use this category to visualize and analyze events describing threat actors' targets, motives, or behaviors.", - expected_event_types: ['indicator'], - name: 'threat', - }, - { - description: - 'Relating to vulnerability scan results. Use this category to analyze vulnerabilities detected by Tenable, Qualys, internal scanners, and other vulnerability management sources.', - expected_event_types: ['info'], - name: 'vulnerability', - }, - { - description: - 'Relating to web server access. Use this category to create a dashboard of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: events from network observers such as Zeek http log may also be included in this category.', - expected_event_types: ['access', 'error', 'info'], - name: 'web', - }, - ], - dashed_name: 'event-category', - description: - 'This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy.\n`event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory.\nThis field is an array. This will allow proper categorization of some events that fall in multiple categories.', - example: 'authentication', - flat_name: 'event.category', - ignore_above: 1024, - level: 'core', - name: 'category', - normalize: ['array'], - short: 'Event category. The second categorization field in the hierarchy.', - type: 'keyword', - indexFieldName: 'event.category', - indexFieldType: 'keyword', - indexInvalidValues: [ - { - count: 2, - fieldName: 'an_invalid_category', - }, - { - count: 1, - fieldName: 'theory', - }, - ], - hasEcsMetadata: true, - isEcsCompliant: false, - isInSameFamily: false, - }, - { - dashed_name: 'host-name', - description: - 'Name of the host.\nIt can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.', - flat_name: 'host.name', - ignore_above: 1024, - level: 'core', - name: 'name', - normalize: [], - short: 'Name of the host.', - type: 'keyword', - indexFieldName: 'host.name', - indexFieldType: 'text', - indexInvalidValues: [], - hasEcsMetadata: true, - isEcsCompliant: false, - isInSameFamily: false, - }, - { - indexFieldName: 'host.name.keyword', - indexFieldType: 'keyword', - indexInvalidValues: [], - hasEcsMetadata: false, - isEcsCompliant: false, - isInSameFamily: false, - }, - { - indexFieldName: 'some.field', - indexFieldType: 'text', - indexInvalidValues: [], - hasEcsMetadata: false, - isEcsCompliant: false, - isInSameFamily: false, - }, - { - indexFieldName: 'some.field.keyword', - indexFieldType: 'keyword', - indexInvalidValues: [], - hasEcsMetadata: false, - isEcsCompliant: false, - isInSameFamily: false, - }, - { - dashed_name: 'source-ip', - description: 'IP address of the source (IPv4 or IPv6).', - flat_name: 'source.ip', - level: 'core', - name: 'ip', - normalize: [], - short: 'IP address of the source.', - type: 'ip', - indexFieldName: 'source.ip', - indexFieldType: 'text', - indexInvalidValues: [], - hasEcsMetadata: true, - isEcsCompliant: false, - isInSameFamily: false, - }, - { - indexFieldName: 'source.ip.keyword', - indexFieldType: 'keyword', - indexInvalidValues: [], - hasEcsMetadata: false, - isEcsCompliant: false, - isInSameFamily: false, - }, - { - dashed_name: 'source-port', - description: 'Port of the source.', - flat_name: 'source.port', - format: 'string', - level: 'core', - name: 'port', - normalize: [], - short: 'Port of the source.', - type: 'long', - indexFieldName: 'source.port', - indexFieldType: 'long', - indexInvalidValues: [], - hasEcsMetadata: true, - isEcsCompliant: true, - isInSameFamily: false, - }, - ], - ecsCompliant: [ - { - dashed_name: 'timestamp', - description: - 'Date/time when the event originated.\nThis is the date/time extracted from the event, typically representing when the event was generated by the source.\nIf the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline.\nRequired field for all events.', - example: '2016-05-23T08:05:34.853Z', - flat_name: '@timestamp', - level: 'core', - name: '@timestamp', - normalize: [], - required: true, - short: 'Date/time when the event originated.', - type: 'date', - indexFieldName: '@timestamp', - indexFieldType: 'date', - indexInvalidValues: [], - hasEcsMetadata: true, - isEcsCompliant: true, - isInSameFamily: false, - }, - { - dashed_name: 'source-port', - description: 'Port of the source.', - flat_name: 'source.port', - format: 'string', - level: 'core', - name: 'port', - normalize: [], - short: 'Port of the source.', - type: 'long', - indexFieldName: 'source.port', - indexFieldType: 'long', - indexInvalidValues: [], - hasEcsMetadata: true, - isEcsCompliant: true, - isInSameFamily: false, - }, - ], - custom: [ - { - indexFieldName: 'host.name.keyword', - indexFieldType: 'keyword', - indexInvalidValues: [], - hasEcsMetadata: false, - isEcsCompliant: false, - isInSameFamily: false, - }, - { - indexFieldName: 'some.field', - indexFieldType: 'text', - indexInvalidValues: [], - hasEcsMetadata: false, - isEcsCompliant: false, - isInSameFamily: false, - }, - { - indexFieldName: 'some.field.keyword', - indexFieldType: 'keyword', - indexInvalidValues: [], - hasEcsMetadata: false, - isEcsCompliant: false, - isInSameFamily: false, - }, - { - indexFieldName: 'source.ip.keyword', - indexFieldType: 'keyword', - indexInvalidValues: [], - hasEcsMetadata: false, - isEcsCompliant: false, - isInSameFamily: false, - }, - ], - incompatible: [ - { - allowed_values: [ - { - description: - 'Events in this category are related to the challenge and response process in which credentials are supplied and verified to allow the creation of a session. Common sources for these logs are Windows event logs and ssh logs. Visualize and analyze events in this category to look for failed logins, and other authentication-related activity.', - expected_event_types: ['start', 'end', 'info'], - name: 'authentication', - }, - { - description: - 'Events in the configuration category have to deal with creating, modifying, or deleting the settings or parameters of an application, process, or system.\nExample sources include security policy change logs, configuration auditing logging, and system integrity monitoring.', - expected_event_types: ['access', 'change', 'creation', 'deletion', 'info'], - name: 'configuration', - }, - { - description: - 'The database category denotes events and metrics relating to a data storage and retrieval system. Note that use of this category is not limited to relational database systems. Examples include event logs from MS SQL, MySQL, Elasticsearch, MongoDB, etc. Use this category to visualize and analyze database activity such as accesses and changes.', - expected_event_types: ['access', 'change', 'info', 'error'], - name: 'database', - }, - { - description: - 'Events in the driver category have to do with operating system device drivers and similar software entities such as Windows drivers, kernel extensions, kernel modules, etc.\nUse events and metrics in this category to visualize and analyze driver-related activity and status on hosts.', - expected_event_types: ['change', 'end', 'info', 'start'], - name: 'driver', - }, - { - description: - 'This category is used for events relating to email messages, email attachments, and email network or protocol activity.\nEmails events can be produced by email security gateways, mail transfer agents, email cloud service providers, or mail server monitoring applications.', - expected_event_types: ['info'], - name: 'email', - }, - { - description: - 'Relating to a set of information that has been created on, or has existed on a filesystem. Use this category of events to visualize and analyze the creation, access, and deletions of files. Events in this category can come from both host-based and network-based sources. An example source of a network-based detection of a file transfer would be the Zeek file.log.', - expected_event_types: ['change', 'creation', 'deletion', 'info'], - name: 'file', - }, - { - description: - 'Use this category to visualize and analyze information such as host inventory or host lifecycle events.\nMost of the events in this category can usually be observed from the outside, such as from a hypervisor or a control plane\'s point of view. Some can also be seen from within, such as "start" or "end".\nNote that this category is for information about hosts themselves; it is not meant to capture activity "happening on a host".', - expected_event_types: ['access', 'change', 'end', 'info', 'start'], - name: 'host', - }, - { - description: - 'Identity and access management (IAM) events relating to users, groups, and administration. Use this category to visualize and analyze IAM-related logs and data from active directory, LDAP, Okta, Duo, and other IAM systems.', - expected_event_types: [ - 'admin', - 'change', - 'creation', - 'deletion', - 'group', - 'info', - 'user', - ], - name: 'iam', - }, - { - description: - 'Relating to intrusion detections from IDS/IPS systems and functions, both network and host-based. Use this category to visualize and analyze intrusion detection alerts from systems such as Snort, Suricata, and Palo Alto threat detections.', - expected_event_types: ['allowed', 'denied', 'info'], - name: 'intrusion_detection', - }, - { - description: - 'Malware detection events and alerts. Use this category to visualize and analyze malware detections from EDR/EPP systems such as Elastic Endpoint Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems such as Suricata, or other sources of malware-related events such as Palo Alto Networks threat logs and Wildfire logs.', - expected_event_types: ['info'], - name: 'malware', - }, - { - description: - 'Relating to all network activity, including network connection lifecycle, network traffic, and essentially any event that includes an IP address. Many events containing decoded network protocol transactions fit into this category. Use events in this category to visualize or analyze counts of network ports, protocols, addresses, geolocation information, etc.', - expected_event_types: [ - 'access', - 'allowed', - 'connection', - 'denied', - 'end', - 'info', - 'protocol', - 'start', - ], - name: 'network', - }, - { - description: - 'Relating to software packages installed on hosts. Use this category to visualize and analyze inventory of software installed on various hosts, or to determine host vulnerability in the absence of vulnerability scan data.', - expected_event_types: [ - 'access', - 'change', - 'deletion', - 'info', - 'installation', - 'start', - ], - name: 'package', - }, - { - description: - 'Use this category of events to visualize and analyze process-specific information such as lifecycle events or process ancestry.', - expected_event_types: ['access', 'change', 'end', 'info', 'start'], - name: 'process', - }, - { - description: - 'Having to do with settings and assets stored in the Windows registry. Use this category to visualize and analyze activity such as registry access and modifications.', - expected_event_types: ['access', 'change', 'creation', 'deletion'], - name: 'registry', - }, - { - description: - 'The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections between assets. Data for this category may come from Windows Event logs, SSH logs, or stateless sessions such as HTTP cookie-based sessions, etc.', - expected_event_types: ['start', 'end', 'info'], - name: 'session', - }, - { - description: - "Use this category to visualize and analyze events describing threat actors' targets, motives, or behaviors.", - expected_event_types: ['indicator'], - name: 'threat', - }, - { - description: - 'Relating to vulnerability scan results. Use this category to analyze vulnerabilities detected by Tenable, Qualys, internal scanners, and other vulnerability management sources.', - expected_event_types: ['info'], - name: 'vulnerability', - }, - { - description: - 'Relating to web server access. Use this category to create a dashboard of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: events from network observers such as Zeek http log may also be included in this category.', - expected_event_types: ['access', 'error', 'info'], - name: 'web', - }, - ], - dashed_name: 'event-category', - description: - 'This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy.\n`event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory.\nThis field is an array. This will allow proper categorization of some events that fall in multiple categories.', - example: 'authentication', - flat_name: 'event.category', - ignore_above: 1024, - level: 'core', - name: 'category', - normalize: ['array'], - short: 'Event category. The second categorization field in the hierarchy.', - type: 'keyword', - indexFieldName: 'event.category', - indexFieldType: 'keyword', - indexInvalidValues: [ - { - count: 2, - fieldName: 'an_invalid_category', - }, - { - count: 1, - fieldName: 'theory', - }, - ], - hasEcsMetadata: true, - isEcsCompliant: false, - isInSameFamily: false, - }, - { - dashed_name: 'host-name', - description: - 'Name of the host.\nIt can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.', - flat_name: 'host.name', - ignore_above: 1024, - level: 'core', - name: 'name', - normalize: [], - short: 'Name of the host.', - type: 'keyword', - indexFieldName: 'host.name', - indexFieldType: 'text', - indexInvalidValues: [], - hasEcsMetadata: true, - isEcsCompliant: false, - isInSameFamily: false, - }, - { - dashed_name: 'source-ip', - description: 'IP address of the source (IPv4 or IPv6).', - flat_name: 'source.ip', - level: 'core', - name: 'ip', - normalize: [], - short: 'IP address of the source.', - type: 'ip', - indexFieldName: 'source.ip', - indexFieldType: 'text', - indexInvalidValues: [], - hasEcsMetadata: true, - isEcsCompliant: false, - isInSameFamily: false, - }, - ], + all: expect.arrayContaining([ + expect.objectContaining({ + allowed_values: expect.arrayContaining([ + expect.objectContaining({ + name: expect.any(String), + description: expect.any(String), + expected_event_types: expect.arrayContaining([expect.any(String)]), + }), + ]), + dashed_name: expect.any(String), + description: expect.any(String), + example: expect.any(String), + flat_name: expect.any(String), + ignore_above: expect.any(Number), + level: expect.any(String), + name: expect.any(String), + normalize: expect.any(Array), + short: expect.any(String), + type: expect.any(String), + indexFieldName: expect.any(String), + indexFieldType: expect.any(String), + indexInvalidValues: expect.any(Array), + hasEcsMetadata: expect.any(Boolean), + isEcsCompliant: expect.any(Boolean), + isInSameFamily: expect.any(Boolean), + }), + ]), + ecsCompliant: expect.arrayContaining([ + expect.objectContaining({ + dashed_name: expect.any(String), + description: expect.any(String), + example: expect.any(String), + flat_name: expect.any(String), + level: expect.any(String), + name: expect.any(String), + normalize: expect.any(Array), + short: expect.any(String), + type: expect.any(String), + indexFieldName: expect.any(String), + indexFieldType: expect.any(String), + indexInvalidValues: expect.any(Array), + hasEcsMetadata: expect.any(Boolean), + isEcsCompliant: expect.any(Boolean), + isInSameFamily: expect.any(Boolean), + }), + ]), + custom: expect.arrayContaining([ + expect.objectContaining({ + indexFieldName: expect.any(String), + indexFieldType: expect.any(String), + indexInvalidValues: expect.any(Array), + hasEcsMetadata: expect.any(Boolean), + isEcsCompliant: expect.any(Boolean), + isInSameFamily: expect.any(Boolean), + }), + ]), + incompatible: expect.arrayContaining([ + expect.objectContaining({ + dashed_name: expect.any(String), + description: expect.any(String), + example: expect.any(String), + flat_name: expect.any(String), + level: expect.any(String), + name: expect.any(String), + normalize: expect.any(Array), + short: expect.any(String), + type: expect.any(String), + indexFieldName: expect.any(String), + indexFieldType: expect.any(String), + indexInvalidValues: expect.any(Array), + hasEcsMetadata: expect.any(Boolean), + isEcsCompliant: expect.any(Boolean), + isInSameFamily: expect.any(Boolean), + }), + ]), + sameFamily: [], }); }); diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/helpers.test.ts b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/helpers.test.ts index f3f1c44378615..5c0515daff450 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/helpers.test.ts +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/helpers.test.ts @@ -440,133 +440,13 @@ describe('helpers', () => { * `isEcsCompliant` is true, because the index has the expected mapping type, and no unallowed values */ const happyPathResult: EnrichedFieldMetadata = { - allowed_values: [ - { - description: - 'Events in this category are related to the challenge and response process in which credentials are supplied and verified to allow the creation of a session. Common sources for these logs are Windows event logs and ssh logs. Visualize and analyze events in this category to look for failed logins, and other authentication-related activity.', - expected_event_types: ['start', 'end', 'info'], - name: 'authentication', - }, - { - description: - 'Events in the configuration category have to deal with creating, modifying, or deleting the settings or parameters of an application, process, or system.\nExample sources include security policy change logs, configuration auditing logging, and system integrity monitoring.', - expected_event_types: ['access', 'change', 'creation', 'deletion', 'info'], - name: 'configuration', - }, - { - description: - 'The database category denotes events and metrics relating to a data storage and retrieval system. Note that use of this category is not limited to relational database systems. Examples include event logs from MS SQL, MySQL, Elasticsearch, MongoDB, etc. Use this category to visualize and analyze database activity such as accesses and changes.', - expected_event_types: ['access', 'change', 'info', 'error'], - name: 'database', - }, - { - description: - 'Events in the driver category have to do with operating system device drivers and similar software entities such as Windows drivers, kernel extensions, kernel modules, etc.\nUse events and metrics in this category to visualize and analyze driver-related activity and status on hosts.', - expected_event_types: ['change', 'end', 'info', 'start'], - name: 'driver', - }, - { - description: - 'This category is used for events relating to email messages, email attachments, and email network or protocol activity.\nEmails events can be produced by email security gateways, mail transfer agents, email cloud service providers, or mail server monitoring applications.', - expected_event_types: ['info'], - name: 'email', - }, - { - description: - 'Relating to a set of information that has been created on, or has existed on a filesystem. Use this category of events to visualize and analyze the creation, access, and deletions of files. Events in this category can come from both host-based and network-based sources. An example source of a network-based detection of a file transfer would be the Zeek file.log.', - expected_event_types: ['change', 'creation', 'deletion', 'info'], - name: 'file', - }, - { - description: - 'Use this category to visualize and analyze information such as host inventory or host lifecycle events.\nMost of the events in this category can usually be observed from the outside, such as from a hypervisor or a control plane\'s point of view. Some can also be seen from within, such as "start" or "end".\nNote that this category is for information about hosts themselves; it is not meant to capture activity "happening on a host".', - expected_event_types: ['access', 'change', 'end', 'info', 'start'], - name: 'host', - }, - { - description: - 'Identity and access management (IAM) events relating to users, groups, and administration. Use this category to visualize and analyze IAM-related logs and data from active directory, LDAP, Okta, Duo, and other IAM systems.', - expected_event_types: [ - 'admin', - 'change', - 'creation', - 'deletion', - 'group', - 'info', - 'user', - ], - name: 'iam', - }, - { - description: - 'Relating to intrusion detections from IDS/IPS systems and functions, both network and host-based. Use this category to visualize and analyze intrusion detection alerts from systems such as Snort, Suricata, and Palo Alto threat detections.', - expected_event_types: ['allowed', 'denied', 'info'], - name: 'intrusion_detection', - }, - { - description: - 'Malware detection events and alerts. Use this category to visualize and analyze malware detections from EDR/EPP systems such as Elastic Endpoint Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems such as Suricata, or other sources of malware-related events such as Palo Alto Networks threat logs and Wildfire logs.', - expected_event_types: ['info'], - name: 'malware', - }, - { - description: - 'Relating to all network activity, including network connection lifecycle, network traffic, and essentially any event that includes an IP address. Many events containing decoded network protocol transactions fit into this category. Use events in this category to visualize or analyze counts of network ports, protocols, addresses, geolocation information, etc.', - expected_event_types: [ - 'access', - 'allowed', - 'connection', - 'denied', - 'end', - 'info', - 'protocol', - 'start', - ], - name: 'network', - }, - { - description: - 'Relating to software packages installed on hosts. Use this category to visualize and analyze inventory of software installed on various hosts, or to determine host vulnerability in the absence of vulnerability scan data.', - expected_event_types: ['access', 'change', 'deletion', 'info', 'installation', 'start'], - name: 'package', - }, - { - description: - 'Use this category of events to visualize and analyze process-specific information such as lifecycle events or process ancestry.', - expected_event_types: ['access', 'change', 'end', 'info', 'start'], - name: 'process', - }, - { - description: - 'Having to do with settings and assets stored in the Windows registry. Use this category to visualize and analyze activity such as registry access and modifications.', - expected_event_types: ['access', 'change', 'creation', 'deletion'], - name: 'registry', - }, - { - description: - 'The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections between assets. Data for this category may come from Windows Event logs, SSH logs, or stateless sessions such as HTTP cookie-based sessions, etc.', - expected_event_types: ['start', 'end', 'info'], - name: 'session', - }, - { - description: - "Use this category to visualize and analyze events describing threat actors' targets, motives, or behaviors.", - expected_event_types: ['indicator'], - name: 'threat', - }, - { - description: - 'Relating to vulnerability scan results. Use this category to analyze vulnerabilities detected by Tenable, Qualys, internal scanners, and other vulnerability management sources.', - expected_event_types: ['info'], - name: 'vulnerability', - }, - { - description: - 'Relating to web server access. Use this category to create a dashboard of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: events from network observers such as Zeek http log may also be included in this category.', - expected_event_types: ['access', 'error', 'info'], - name: 'web', - }, - ], + allowed_values: expect.arrayContaining([ + expect.objectContaining({ + description: expect.any(String), + name: expect.any(String), + expected_event_types: expect.arrayContaining([expect.any(String)]), + }), + ]), dashed_name: 'event-category', description: 'This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy.\n`event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory.\nThis field is an array. This will allow proper categorization of some events that fall in multiple categories.', diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/use_results_rollup/helpers.test.ts b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/use_results_rollup/helpers.test.ts index 9175acf5061b1..d2bc3920efdeb 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/use_results_rollup/helpers.test.ts +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/use_results_rollup/helpers.test.ts @@ -27,6 +27,7 @@ import { EMPTY_STAT } from '../helpers'; import { IndicesStatsIndicesStats } from '@elastic/elasticsearch/lib/api/types'; import { mockPartitionedFieldMetadata } from '../mock/partitioned_field_metadata/mock_partitioned_field_metadata'; import { alertIndexWithAllResults } from '../mock/pattern_rollup/mock_alerts_pattern_rollup'; +import { EcsVersion } from '@kbn/ecs'; const defaultBytesFormat = '0,0.[0]b'; const formatBytes = (value: number | undefined) => @@ -271,7 +272,7 @@ describe('helpers', () => { '### .ds-packetbeat-8.6.1-2023.02.04-000001\n', '| Result | Index | Docs | Incompatible fields | ILM Phase | Size |\n|--------|-------|------|---------------------|-----------|------|\n| ❌ | .ds-packetbeat-8.6.1-2023.02.04-000001 | 1,628,343 (50.0%) | 3 | `hot` | 697.7MB |\n\n', '### **Incompatible fields** `3` **Same family** `0` **Custom fields** `4` **ECS compliant fields** `2` **All fields** `9`\n', - "#### 3 incompatible fields\n\nFields are incompatible with ECS when index mappings, or the values of the fields in the index, don't conform to the Elastic Common Schema (ECS), version 8.6.1.\n\n❌ Detection engine rules referencing these fields may not match them correctly\n❌ Pages may not display some events or fields due to unexpected field mappings or values\n❌ Mappings or field values that don't comply with ECS are not supported\n", + `#### 3 incompatible fields\n\nFields are incompatible with ECS when index mappings, or the values of the fields in the index, don't conform to the Elastic Common Schema (ECS), version ${EcsVersion}.\n\n❌ Detection engine rules referencing these fields may not match them correctly\n❌ Pages may not display some events or fields due to unexpected field mappings or values\n❌ Mappings or field values that don't comply with ECS are not supported\n`, '\n#### Incompatible field mappings - .ds-packetbeat-8.6.1-2023.02.04-000001\n\n\n| Field | ECS mapping type (expected) | Index mapping type (actual) | \n|-------|-----------------------------|-----------------------------|\n| host.name | `keyword` | `text` |\n| source.ip | `ip` | `text` |\n\n#### Incompatible field values - .ds-packetbeat-8.6.1-2023.02.04-000001\n\n\n| Field | ECS values (expected) | Document values (actual) | \n|-------|-----------------------|--------------------------|\n| event.category | `authentication`, `configuration`, `database`, `driver`, `email`, `file`, `host`, `iam`, `intrusion_detection`, `malware`, `network`, `package`, `process`, `registry`, `session`, `threat`, `vulnerability`, `web` | `an_invalid_category` (2), `theory` (1) |\n\n', ], pattern: 'packetbeat-*', @@ -372,7 +373,7 @@ describe('helpers', () => { '### .ds-packetbeat-8.6.1-2023.02.04-000001\n', '| Result | Index | Docs | Incompatible fields | ILM Phase | Size |\n|--------|-------|------|---------------------|-----------|------|\n| ❌ | .ds-packetbeat-8.6.1-2023.02.04-000001 | 1,628,343 () | 3 | `hot` | 697.7MB |\n\n', '### **Incompatible fields** `3` **Same family** `0` **Custom fields** `4` **ECS compliant fields** `2` **All fields** `9`\n', - "#### 3 incompatible fields\n\nFields are incompatible with ECS when index mappings, or the values of the fields in the index, don't conform to the Elastic Common Schema (ECS), version 8.6.1.\n\n❌ Detection engine rules referencing these fields may not match them correctly\n❌ Pages may not display some events or fields due to unexpected field mappings or values\n❌ Mappings or field values that don't comply with ECS are not supported\n", + `#### 3 incompatible fields\n\nFields are incompatible with ECS when index mappings, or the values of the fields in the index, don't conform to the Elastic Common Schema (ECS), version ${EcsVersion}.\n\n❌ Detection engine rules referencing these fields may not match them correctly\n❌ Pages may not display some events or fields due to unexpected field mappings or values\n❌ Mappings or field values that don't comply with ECS are not supported\n`, '\n#### Incompatible field mappings - .ds-packetbeat-8.6.1-2023.02.04-000001\n\n\n| Field | ECS mapping type (expected) | Index mapping type (actual) | \n|-------|-----------------------------|-----------------------------|\n| host.name | `keyword` | `text` |\n| source.ip | `ip` | `text` |\n\n#### Incompatible field values - .ds-packetbeat-8.6.1-2023.02.04-000001\n\n\n| Field | ECS values (expected) | Document values (actual) | \n|-------|-----------------------|--------------------------|\n| event.category | `authentication`, `configuration`, `database`, `driver`, `email`, `file`, `host`, `iam`, `intrusion_detection`, `malware`, `network`, `package`, `process`, `registry`, `session`, `threat`, `vulnerability`, `web` | `an_invalid_category` (2), `theory` (1) |\n\n', ], pattern: 'packetbeat-*', @@ -521,7 +522,7 @@ describe('helpers', () => { '### .ds-packetbeat-8.6.1-2023.02.04-000001\n', '| Result | Index | Docs | Incompatible fields | ILM Phase | Size |\n|--------|-------|------|---------------------|-----------|------|\n| ❌ | .ds-packetbeat-8.6.1-2023.02.04-000001 | 1,628,343 (50.0%) | 3 | -- | 697.7MB |\n\n', '### **Incompatible fields** `3` **Same family** `0` **Custom fields** `4` **ECS compliant fields** `2` **All fields** `9`\n', - "#### 3 incompatible fields\n\nFields are incompatible with ECS when index mappings, or the values of the fields in the index, don't conform to the Elastic Common Schema (ECS), version 8.6.1.\n\n❌ Detection engine rules referencing these fields may not match them correctly\n❌ Pages may not display some events or fields due to unexpected field mappings or values\n❌ Mappings or field values that don't comply with ECS are not supported\n", + `#### 3 incompatible fields\n\nFields are incompatible with ECS when index mappings, or the values of the fields in the index, don't conform to the Elastic Common Schema (ECS), version ${EcsVersion}.\n\n❌ Detection engine rules referencing these fields may not match them correctly\n❌ Pages may not display some events or fields due to unexpected field mappings or values\n❌ Mappings or field values that don't comply with ECS are not supported\n`, '\n#### Incompatible field mappings - .ds-packetbeat-8.6.1-2023.02.04-000001\n\n\n| Field | ECS mapping type (expected) | Index mapping type (actual) | \n|-------|-----------------------------|-----------------------------|\n| host.name | `keyword` | `text` |\n| source.ip | `ip` | `text` |\n\n#### Incompatible field values - .ds-packetbeat-8.6.1-2023.02.04-000001\n\n\n| Field | ECS values (expected) | Document values (actual) | \n|-------|-----------------------|--------------------------|\n| event.category | `authentication`, `configuration`, `database`, `driver`, `email`, `file`, `host`, `iam`, `intrusion_detection`, `malware`, `network`, `package`, `process`, `registry`, `session`, `threat`, `vulnerability`, `web` | `an_invalid_category` (2), `theory` (1) |\n\n', ], pattern: 'packetbeat-*', diff --git a/x-pack/plugins/security/server/audit/audit_service.ts b/x-pack/plugins/security/server/audit/audit_service.ts index dddb24d47fdaf..266557b62ab29 100644 --- a/x-pack/plugins/security/server/audit/audit_service.ts +++ b/x-pack/plugins/security/server/audit/audit_service.ts @@ -249,8 +249,9 @@ export function filterEvent( return !ignoreFilters.some( (rule) => (!rule.actions || rule.actions.includes(event.event?.action!)) && - (!rule.categories || event.event?.category?.every((c) => rule.categories?.includes(c))) && - (!rule.types || event.event?.type?.every((t) => rule.types?.includes(t))) && + (!rule.categories || + (event.event?.category as string[])?.every?.((c) => rule.categories?.includes(c))) && + (!rule.types || (event.event?.type as string[])?.every?.((t) => rule.types?.includes(t))) && (!rule.outcomes || rule.outcomes.includes(event.event?.outcome!)) && (!rule.spaces || rule.spaces.includes(event.kibana?.space_id!)) ); From b98d7fb4c2e7bfb9c42f93e9595758a511fe8f44 Mon Sep 17 00:00:00 2001 From: Achyut Jhunjhunwala Date: Fri, 13 Oct 2023 16:49:33 +0200 Subject: [PATCH 18/80] [APM] Fix issue with onboarding page around java agent (#168816) ## Summary Closes - https://github.com/elastic/kibana/issues/168659 Closes - https://github.com/elastic/kibana/issues/168348 ### After Screenshot 2023-10-13 at 10 27 44 --- .../commands/get_apm_agent_commands.test.ts | 12 ++++++------ .../components/app/onboarding/commands/java.ts | 14 +++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/x-pack/plugins/apm/public/components/app/onboarding/commands/get_apm_agent_commands.test.ts b/x-pack/plugins/apm/public/components/app/onboarding/commands/get_apm_agent_commands.test.ts index b26c8da82d916..1938cf7722cb0 100644 --- a/x-pack/plugins/apm/public/components/app/onboarding/commands/get_apm_agent_commands.test.ts +++ b/x-pack/plugins/apm/public/components/app/onboarding/commands/get_apm_agent_commands.test.ts @@ -25,10 +25,10 @@ describe('getCommands', () => { }); expect(commands).toMatchInlineSnapshot(` "java -javaagent:/path/to/elastic-apm-agent-.jar \\\\ - -Delastic.apm.service_name= \\\\\\\\ + -Delastic.apm.service_name= \\\\ -Delastic.apm.api_key= \\\\ -Delastic.apm.server_url= \\\\ - -Delastic.apm.environment= \\\\\\\\ + -Delastic.apm.environment= \\\\ -Delastic.apm.application_packages=org.example \\\\ -jar my-service-name.jar" `); @@ -42,10 +42,10 @@ describe('getCommands', () => { expect(commands).not.toBe(''); expect(commands).toMatchInlineSnapshot(` "java -javaagent:/path/to/elastic-apm-agent-.jar \\\\ - -Delastic.apm.service_name= \\\\\\\\ + -Delastic.apm.service_name= \\\\ -Delastic.apm.secret_token=foobar \\\\ -Delastic.apm.server_url=localhost:8220 \\\\ - -Delastic.apm.environment= \\\\\\\\ + -Delastic.apm.environment= \\\\ -Delastic.apm.application_packages=org.example \\\\ -jar my-service-name.jar" `); @@ -60,10 +60,10 @@ describe('getCommands', () => { expect(commands).not.toBe(''); expect(commands).toMatchInlineSnapshot(` "java -javaagent:/path/to/elastic-apm-agent-.jar \\\\ - -Delastic.apm.service_name= \\\\\\\\ + -Delastic.apm.service_name= \\\\ -Delastic.apm.secret_token=foobar \\\\ -Delastic.apm.server_url=localhost:8220 \\\\ - -Delastic.apm.environment= \\\\\\\\ + -Delastic.apm.environment= \\\\ -Delastic.apm.application_packages=org.example \\\\ -jar my-service-name.jar" `); diff --git a/x-pack/plugins/apm/public/components/app/onboarding/commands/java.ts b/x-pack/plugins/apm/public/components/app/onboarding/commands/java.ts index fd8ffec78e29d..590e62b42d68d 100644 --- a/x-pack/plugins/apm/public/components/app/onboarding/commands/java.ts +++ b/x-pack/plugins/apm/public/components/app/onboarding/commands/java.ts @@ -6,17 +6,17 @@ */ import { - serviceNameHint, + apiKeyHint, secretTokenHint, serverUrlHint, serviceEnvironmentHint, - apiKeyHint, + serviceNameHint, } from './shared_hints'; export const javaVariables = (secretToken?: string) => ({ - ...(secretToken && { secretToken: 'Delastic.apm.secret_token' }), - ...(!secretToken && { apiKey: 'Delastic.apm.api_key' }), - apmServerUrl: 'Delastic.apm.server_url', + ...(secretToken && { secretToken: 'elastic.apm.secret_token' }), + ...(!secretToken && { apiKey: 'elastic.apm.api_key' }), + apmServerUrl: 'elastic.apm.server_url', }); export const javaHighlightLang = 'java'; @@ -32,7 +32,7 @@ export const javaLineNumbers = (apiKey?: string | null) => ({ }, }); export const java = `java -javaagent:/path/to/elastic-apm-agent-.jar \\ --Delastic.apm.service_name= \\\\ +-Delastic.apm.service_name= \\ {{^secretToken}} -Delastic.apm.api_key={{{apiKey}}} \\ {{/secretToken}} @@ -40,6 +40,6 @@ export const java = `java -javaagent:/path/to/elastic-apm-agent-.jar \\ -Delastic.apm.secret_token={{{secretToken}}} \\ {{/secretToken}} -Delastic.apm.server_url={{{apmServerUrl}}} \\ --Delastic.apm.environment= \\\\ +-Delastic.apm.environment= \\ -Delastic.apm.application_packages=org.example \\ -jar my-service-name.jar`; From c227785f144e05a1fcb68fb1bacba5a8174e2984 Mon Sep 17 00:00:00 2001 From: Kyle Pollich Date: Fri, 13 Oct 2023 10:54:49 -0400 Subject: [PATCH 19/80] [Fleet] Fix failing preconfiguration test (#168736) ## Summary Fixes https://github.com/elastic/kibana/issues/133470 --- .../integration_tests/cloud_preconfiguration.test.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/fleet/server/integration_tests/cloud_preconfiguration.test.ts b/x-pack/plugins/fleet/server/integration_tests/cloud_preconfiguration.test.ts index db7d0ce60f006..c080aefacd12e 100644 --- a/x-pack/plugins/fleet/server/integration_tests/cloud_preconfiguration.test.ts +++ b/x-pack/plugins/fleet/server/integration_tests/cloud_preconfiguration.test.ts @@ -30,7 +30,7 @@ import { const logFilePath = Path.join(__dirname, 'logs.log'); -describe('Fleet preconfiguration reset', () => { +describe('Fleet cloud preconfiguration', () => { let esServer: TestElasticsearchUtils; let kbnServer: TestKibanaUtils; @@ -143,8 +143,7 @@ describe('Fleet preconfiguration reset', () => { expect(agentPolicies.saved_objects.find((so) => so.id === 'default-policy')).toBeDefined(); }); - // FLAKY: https://github.com/elastic/kibana/issues/133470 - it.skip('Create correct .fleet-policies', async () => { + it('Create correct .fleet-policies', async () => { const res = await kbnServer.coreStart.elasticsearch.client.asInternalUser.search({ index: AGENT_POLICY_INDEX, q: `policy_id:policy-elastic-agent-on-cloud`, @@ -325,6 +324,9 @@ describe('Fleet preconfiguration reset', () => { }, ], }, + 'elastic-cloud-fleet-server': { + indices: [], + }, }, }, outputs: { From 3f6872d77bd9555d436b426065fb9cc541341b2e Mon Sep 17 00:00:00 2001 From: Liam Thompson <32779855+leemthompo@users.noreply.github.com> Date: Fri, 13 Oct 2023 17:02:52 +0200 Subject: [PATCH 20/80] [Serverless Search] Polish getting started API key copy (#168683) Before: ![screenshot_2023-10-11_at_18 39 01_720](https://github.com/elastic/kibana/assets/32779855/70ba50f2-c71c-4f7e-84f3-de3d1d226104) After: ![after](https://github.com/elastic/kibana/assets/32779855/38deaa82-1b50-400c-bc9b-427a14fec35d) --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../public/application/components/api_key/api_key.tsx | 4 ++-- .../public/application/components/overview.test.tsx | 2 +- .../public/application/components/overview.tsx | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/serverless_search/public/application/components/api_key/api_key.tsx b/x-pack/plugins/serverless_search/public/application/components/api_key/api_key.tsx index 164bdacd5f985..e3aecb517f947 100644 --- a/x-pack/plugins/serverless_search/public/application/components/api_key/api_key.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/api_key/api_key.tsx @@ -82,7 +82,7 @@ export const ApiKeyPanel = ({ setClientApiKey }: { setClientApiKey: (value: stri

{i18n.translate('xpack.serverlessSearch.apiKey.panel.title', { - defaultMessage: 'Prepare an API Key', + defaultMessage: 'Add an API Key', })}

@@ -90,7 +90,7 @@ export const ApiKeyPanel = ({ setClientApiKey }: { setClientApiKey: (value: stri {i18n.translate('xpack.serverlessSearch.apiKey.panel.description', { defaultMessage: - 'An API key is a private, unique identifier for authentication and authorization.', + 'Use an existing key, or create a new one and copy it somewhere safe.', })} diff --git a/x-pack/plugins/serverless_search/public/application/components/overview.test.tsx b/x-pack/plugins/serverless_search/public/application/components/overview.test.tsx index 28748db40cedb..3c59d064d72cc 100644 --- a/x-pack/plugins/serverless_search/public/application/components/overview.test.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/overview.test.tsx @@ -51,7 +51,7 @@ describe('', () => { }); test('api key', () => { const { getByRole } = render(); - expect(getByRole('heading', { level: 2, name: 'Prepare an API Key' })).toBeDefined(); + expect(getByRole('heading', { level: 2, name: 'API Key' })).toBeDefined(); }); test('cloud id', () => { const { getByRole } = render(); 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 bff725c88034d..ed29ac4c14802 100644 --- a/x-pack/plugins/serverless_search/public/application/components/overview.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/overview.tsx @@ -116,12 +116,12 @@ export const ElasticsearchOverview = () => { } links={[]} title={i18n.translate('xpack.serverlessSearch.apiKey.title', { - defaultMessage: 'Prepare an API Key', + defaultMessage: 'API Key', })} /> From 94284a105a7af055d35d0b758a448f4e76de9147 Mon Sep 17 00:00:00 2001 From: Vitalii Dmyterko <92328789+vitaliidm@users.noreply.github.com> Date: Fri, 13 Oct 2023 16:21:43 +0100 Subject: [PATCH 21/80] [Security Solution][Detection Engine] adds rule actions PLI (#168510) ## Summary - implements the first phase of [rule external actions Serverless PLI](https://docs.google.com/spreadsheets/d/1BR9kjzSR0F6o6huxbJidk5ro4CVYfhmLog9ArEbxA8g/edit#gid=301346322). Phase 1 is defined by support of PLI capabilities in actions plugins and described [here](https://github.com/elastic/kibana/issues/163751). It allows only hiding actions that are not in tier. Upselling messages, will be introduced in phase 2, according to response ops ticket ### Essentials Tier Serverless config: ```yaml xpack.securitySolutionServerless.productTypes: [ { product_line: 'security', product_tier: 'essentials' }, { product_line: 'endpoint', product_tier: 'complete' }, ] ``` For Essentials, only 3 rule actions available: - email - index - slack Screenshot 2023-10-11 at 11 13 57 ### Complete Tier Serverless config: ```yaml xpack.securitySolutionServerless.productTypes: [ { product_line: 'security', product_tier: 'complete' }, { product_line: 'endpoint', product_tier: 'complete' }, ] ``` Screenshot 2023-10-11 at 11 17 10 ### 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 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../features/src/app_features_keys.ts | 5 ++ .../src/security/app_feature_config.ts | 2 + .../common/pli/pli_config.ts | 1 + .../security_solution_serverless/kibana.jsonc | 3 +- .../server/plugin.ts | 6 +- .../server/rules/enable_rule_actions.ts | 40 ++++++++++ .../server/types.ts | 2 + .../tsconfig.json | 4 +- .../rule_actions_pli_complete.cy.ts | 72 ++++++++++++++++++ .../rule_actions_pli_essentials.cy.ts | 74 +++++++++++++++++++ .../cypress/screens/common/rule_actions.ts | 7 ++ 11 files changed, 213 insertions(+), 3 deletions(-) create mode 100644 x-pack/plugins/security_solution_serverless/server/rules/enable_rule_actions.ts create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_complete.cy.ts create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_essentials.cy.ts diff --git a/x-pack/packages/security-solution/features/src/app_features_keys.ts b/x-pack/packages/security-solution/features/src/app_features_keys.ts index ea3939e2b9f28..ab54c64cf8992 100644 --- a/x-pack/packages/security-solution/features/src/app_features_keys.ts +++ b/x-pack/packages/security-solution/features/src/app_features_keys.ts @@ -48,6 +48,11 @@ export enum AppFeatureSecurityKey { * Enables managing endpoint exceptions on rules and alerts */ endpointExceptions = 'endpointExceptions', + + /** + * enables all rule actions + */ + externalRuleActions = 'external_rule_actions', } export enum AppFeatureCasesKey { diff --git a/x-pack/packages/security-solution/features/src/security/app_feature_config.ts b/x-pack/packages/security-solution/features/src/security/app_feature_config.ts index a27dccd6c5bf6..66bbfb4e5ddcd 100644 --- a/x-pack/packages/security-solution/features/src/security/app_feature_config.ts +++ b/x-pack/packages/security-solution/features/src/security/app_feature_config.ts @@ -106,4 +106,6 @@ export const securityDefaultAppFeaturesConfig: DefaultSecurityAppFeaturesConfig }, [AppFeatureSecurityKey.osqueryAutomatedResponseActions]: {}, + + [AppFeatureSecurityKey.externalRuleActions]: {}, }; diff --git a/x-pack/plugins/security_solution_serverless/common/pli/pli_config.ts b/x-pack/plugins/security_solution_serverless/common/pli/pli_config.ts index 62acff6857a8e..3dcb800dc7a74 100644 --- a/x-pack/plugins/security_solution_serverless/common/pli/pli_config.ts +++ b/x-pack/plugins/security_solution_serverless/common/pli/pli_config.ts @@ -22,6 +22,7 @@ export const PLI_APP_FEATURES: PliAppFeatures = { AppFeatureKey.investigationGuide, AppFeatureKey.threatIntelligence, AppFeatureKey.casesConnectors, + AppFeatureKey.externalRuleActions, ], }, endpoint: { diff --git a/x-pack/plugins/security_solution_serverless/kibana.jsonc b/x-pack/plugins/security_solution_serverless/kibana.jsonc index 3756c1114c009..975aaebe45af8 100644 --- a/x-pack/plugins/security_solution_serverless/kibana.jsonc +++ b/x-pack/plugins/security_solution_serverless/kibana.jsonc @@ -19,7 +19,8 @@ "serverless", "taskManager", "cloud", - "fleet" + "fleet", + "actions" ], "optionalPlugins": [ "securitySolutionEss" diff --git a/x-pack/plugins/security_solution_serverless/server/plugin.ts b/x-pack/plugins/security_solution_serverless/server/plugin.ts index fc77d2829d9f4..99f9fbf4a1e7b 100644 --- a/x-pack/plugins/security_solution_serverless/server/plugin.ts +++ b/x-pack/plugins/security_solution_serverless/server/plugin.ts @@ -32,6 +32,7 @@ import { endpointMeteringService, setEndpointPackagePolicyServerlessFlag, } from './endpoint/services'; +import { enableRuleActions } from './rules/enable_rule_actions'; export class SecuritySolutionServerlessPlugin implements @@ -54,6 +55,7 @@ export class SecuritySolutionServerlessPlugin public setup(coreSetup: CoreSetup, pluginsSetup: SecuritySolutionServerlessPluginSetupDeps) { this.config = createConfig(this.initializerContext, pluginsSetup.securitySolution); + const enabledAppFeatures = getProductAppFeatures(this.config.productTypes); // securitySolutionEss plugin should always be disabled when securitySolutionServerless is enabled. // This check is an additional layer of security to prevent double registrations when @@ -63,12 +65,14 @@ export class SecuritySolutionServerlessPlugin const productTypesStr = JSON.stringify(this.config.productTypes, null, 2); this.logger.info(`Security Solution running with product types:\n${productTypesStr}`); const appFeaturesConfigurator = getProductAppFeaturesConfigurator( - getProductAppFeatures(this.config.productTypes), + enabledAppFeatures, this.config ); pluginsSetup.securitySolution.setAppFeaturesConfigurator(appFeaturesConfigurator); } + enableRuleActions({ actions: pluginsSetup.actions, appFeatureKeys: enabledAppFeatures }); + this.cloudSecurityUsageReportingTask = new SecurityUsageReportingTask({ core: coreSetup, logFactory: this.initializerContext.logger, diff --git a/x-pack/plugins/security_solution_serverless/server/rules/enable_rule_actions.ts b/x-pack/plugins/security_solution_serverless/server/rules/enable_rule_actions.ts new file mode 100644 index 0000000000000..45e851540b286 --- /dev/null +++ b/x-pack/plugins/security_solution_serverless/server/rules/enable_rule_actions.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { AppFeatureSecurityKey } from '@kbn/security-solution-features/keys'; +import { + IndexConnectorTypeId, + SlackWebhookConnectorTypeId, + EmailConnectorTypeId, +} from '@kbn/stack-connectors-plugin/server/connector_types'; +import { EnabledActionTypes } from '@kbn/actions-plugin/server/config'; +import type { AppFeatureKeys } from '@kbn/security-solution-features/src/types'; + +import type { PluginSetupContract as ActionsPluginSetupContract } from '@kbn/actions-plugin/server'; + +const INTERNAL_RULE_ACTIONS = [ + IndexConnectorTypeId, + SlackWebhookConnectorTypeId, + EmailConnectorTypeId, +]; + +/** + * enable rule actions based on AppFeature Config + */ +export const enableRuleActions = ({ + actions, + appFeatureKeys, +}: { + actions: ActionsPluginSetupContract; + appFeatureKeys: AppFeatureKeys; +}) => { + if (appFeatureKeys.includes(AppFeatureSecurityKey.externalRuleActions)) { + // enables all rule actions + actions.setEnabledConnectorTypes([EnabledActionTypes.Any]); + } else { + actions.setEnabledConnectorTypes(INTERNAL_RULE_ACTIONS); + } +}; diff --git a/x-pack/plugins/security_solution_serverless/server/types.ts b/x-pack/plugins/security_solution_serverless/server/types.ts index 6f9c87dd92b18..44a86f534ebdf 100644 --- a/x-pack/plugins/security_solution_serverless/server/types.ts +++ b/x-pack/plugins/security_solution_serverless/server/types.ts @@ -18,6 +18,7 @@ import type { import type { CloudSetup } from '@kbn/cloud-plugin/server'; import type { SecuritySolutionEssPluginSetup } from '@kbn/security-solution-ess/server'; import type { FleetStartContract } from '@kbn/fleet-plugin/server'; +import type { PluginSetupContract as ActionsPluginSetupContract } from '@kbn/actions-plugin/server'; import type { ServerlessPluginSetup } from '@kbn/serverless/server'; import type { ProductTier } from '../common/product'; @@ -37,6 +38,7 @@ export interface SecuritySolutionServerlessPluginSetupDeps { features: PluginSetupContract; taskManager: TaskManagerSetupContract; cloud: CloudSetup; + actions: ActionsPluginSetupContract; } export interface SecuritySolutionServerlessPluginStartDeps { diff --git a/x-pack/plugins/security_solution_serverless/tsconfig.json b/x-pack/plugins/security_solution_serverless/tsconfig.json index 77481caa489fb..ef6c4009f345e 100644 --- a/x-pack/plugins/security_solution_serverless/tsconfig.json +++ b/x-pack/plugins/security_solution_serverless/tsconfig.json @@ -44,6 +44,8 @@ "@kbn/usage-collection-plugin", "@kbn/cloud-defend-plugin", "@kbn/core-logging-server-mocks", - "@kbn/shared-ux-chrome-navigation" + "@kbn/shared-ux-chrome-navigation", + "@kbn/stack-connectors-plugin", + "@kbn/actions-plugin" ] } diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_complete.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_complete.cy.ts new file mode 100644 index 0000000000000..6d3491a7e3acc --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_complete.cy.ts @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getNewRule } from '../../../objects/rule'; + +import { + INDEX_SELECTOR, + SLACK_ACTION_BTN, + WEBHOOK_ACTION_BTN, + EMAIL_ACTION_BTN, + ACTION_BTN, +} from '../../../screens/common/rule_actions'; + +import { createRule } from '../../../tasks/api_calls/rules'; + +import { RULES_MANAGEMENT_URL } from '../../../urls/rules_management'; +import { cleanKibana, deleteAlertsAndRules } from '../../../tasks/common'; +import { goToActionsStepTab } from '../../../tasks/create_new_rule'; +import { login } from '../../../tasks/login'; + +import { editFirstRule } from '../../../tasks/alerts_detection_rules'; + +import { visit } from '../../../tasks/navigation'; + +const rule = getNewRule(); + +describe( + 'Rule actions PLI complete product tier', + { + tags: ['@serverless'], + + env: { + ftrConfig: { + productTypes: [ + { product_line: 'security', product_tier: 'complete' }, + { product_line: 'endpoint', product_tier: 'complete' }, + ], + }, + }, + }, + () => { + before(() => { + cleanKibana(); + login(); + }); + + beforeEach(() => { + deleteAlertsAndRules(); + createRule(rule); + login(); + }); + + it('more than 3 rule actions should be available', () => { + visit(RULES_MANAGEMENT_URL); + editFirstRule(); + + goToActionsStepTab(); + + // all actions available + cy.get(ACTION_BTN).should('have.length.greaterThan', 4); + + cy.get(INDEX_SELECTOR).should('be.visible'); + cy.get(SLACK_ACTION_BTN).should('be.visible'); + cy.get(EMAIL_ACTION_BTN).should('be.visible'); + cy.get(WEBHOOK_ACTION_BTN).should('be.visible'); + }); + } +); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_essentials.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_essentials.cy.ts new file mode 100644 index 0000000000000..1555b1788f6ce --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions/rule_actions_pli_essentials.cy.ts @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getNewRule } from '../../../objects/rule'; + +import { + INDEX_SELECTOR, + SLACK_ACTION_BTN, + WEBHOOK_ACTION_BTN, + EMAIL_ACTION_BTN, + ACTION_BTN, +} from '../../../screens/common/rule_actions'; + +import { createRule } from '../../../tasks/api_calls/rules'; + +import { RULES_MANAGEMENT_URL } from '../../../urls/rules_management'; +import { cleanKibana, deleteAlertsAndRules } from '../../../tasks/common'; +import { goToActionsStepTab } from '../../../tasks/create_new_rule'; +import { login } from '../../../tasks/login'; + +import { editFirstRule } from '../../../tasks/alerts_detection_rules'; + +import { visit } from '../../../tasks/navigation'; + +const rule = getNewRule(); + +describe( + 'Rule actions PLI essentials product tier', + { + tags: ['@serverless'], + + env: { + ftrConfig: { + productTypes: [ + { product_line: 'security', product_tier: 'essentials' }, + { product_line: 'endpoint', product_tier: 'essentials' }, + ], + }, + }, + }, + () => { + before(() => { + cleanKibana(); + login(); + }); + + beforeEach(() => { + deleteAlertsAndRules(); + createRule(rule); + login(); + }); + + it('only 3 rule actions should be available', () => { + visit(RULES_MANAGEMENT_URL); + editFirstRule(); + + goToActionsStepTab(); + + // only 3 basic actions available + cy.get(ACTION_BTN).should('have.length', 3); + + cy.get(INDEX_SELECTOR).should('be.visible'); + cy.get(SLACK_ACTION_BTN).should('be.visible'); + cy.get(EMAIL_ACTION_BTN).should('be.visible'); + + // webhook is not available + cy.get(WEBHOOK_ACTION_BTN).should('not.exist'); + }); + } +); diff --git a/x-pack/test/security_solution_cypress/cypress/screens/common/rule_actions.ts b/x-pack/test/security_solution_cypress/cypress/screens/common/rule_actions.ts index 76975fbe760f1..e6d44f0918c6d 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/common/rule_actions.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/common/rule_actions.ts @@ -7,6 +7,13 @@ export const EMAIL_ACTION_BTN = '[data-test-subj=".email-siem-ActionTypeSelectOption"]'; +export const WEBHOOK_ACTION_BTN = '[data-test-subj=".webhook-siem-ActionTypeSelectOption"]'; + +/** + * all rule actions buttons, elements which data-test-subj attribute ends with '-siem-ActionTypeSelectOption' + */ +export const ACTION_BTN = '[data-test-subj$="-siem-ActionTypeSelectOption"]'; + export const CREATE_ACTION_CONNECTOR_BTN = '[data-test-subj="createActionConnectorButton-0"]'; export const SAVE_ACTION_CONNECTOR_BTN = '[data-test-subj="saveActionButtonModal"]'; From 046841ce4e099a189574bfdc731a0f7651a721fb Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Fri, 13 Oct 2023 11:33:02 -0400 Subject: [PATCH 22/80] [Fleet] Make experimental config robust (#168844) --- x-pack/plugins/fleet/server/config.test.ts | 31 ++++++++++++++++++++++ x-pack/plugins/fleet/server/config.ts | 13 ++++----- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/fleet/server/config.test.ts b/x-pack/plugins/fleet/server/config.test.ts index da654244aae30..53fc0545efcf3 100644 --- a/x-pack/plugins/fleet/server/config.test.ts +++ b/x-pack/plugins/fleet/server/config.test.ts @@ -5,9 +5,18 @@ * 2.0. */ +import { loggingSystemMock } from '@kbn/core/server/mocks'; + import { config } from './config'; +import { appContextService } from './services'; + +jest.mock('./services/app_context'); describe('Config schema', () => { + beforeEach(() => { + const mockedLogger = loggingSystemMock.createLogger(); + jest.mocked(appContextService.getLogger).mockReturnValue(mockedLogger); + }); it('should not allow to specify both default output in xpack.fleet.ouputs and xpack.fleet.agents.elasticsearch.hosts ', () => { expect(() => { config.schema.validate({ @@ -70,4 +79,26 @@ describe('Config schema', () => { }); }).not.toThrow(); }); + + it('should log a warning when trying to enable a non existing experimental feature', () => { + expect(() => { + config.schema.validate({ + enableExperimental: ['notvalid'], + }); + }).not.toThrow(); + + expect(appContextService.getLogger().warn).toBeCalledWith( + '[notvalid] is not a valid fleet experimental feature.' + ); + }); + + it('should not log a warning when enabling an existing experimental feature', () => { + expect(() => { + config.schema.validate({ + enableExperimental: ['displayAgentMetrics'], + }); + }).not.toThrow(); + + expect(appContextService.getLogger().warn).not.toBeCalled(); + }); }); diff --git a/x-pack/plugins/fleet/server/config.ts b/x-pack/plugins/fleet/server/config.ts index e6d007c058b74..e5fec70fa37a7 100644 --- a/x-pack/plugins/fleet/server/config.ts +++ b/x-pack/plugins/fleet/server/config.ts @@ -11,11 +11,7 @@ import { schema } from '@kbn/config-schema'; import type { TypeOf } from '@kbn/config-schema'; import type { PluginConfigDescriptor } from '@kbn/core/server'; -import { - getExperimentalAllowedValues, - isValidExperimentalValue, -} from '../common/experimental_features'; -const allowedExperimentalValues = getExperimentalAllowedValues(); +import { isValidExperimentalValue } from '../common/experimental_features'; import { PreconfiguredPackagesSchema, @@ -25,6 +21,7 @@ import { PreconfiguredFleetProxiesSchema, } from './types'; import { BULK_CREATE_MAX_ARTIFACTS_BYTES } from './services/artifacts/artifacts'; +import { appContextService } from './services'; const DEFAULT_BUNDLED_PACKAGE_LOCATION = path.join(__dirname, '../target/bundled_packages'); const DEFAULT_GPG_KEY_PATH = path.join(__dirname, '../target/keys/GPG-KEY-elasticsearch'); @@ -162,9 +159,9 @@ export const config: PluginConfigDescriptor = { validate(list) { for (const key of list) { if (!isValidExperimentalValue(key)) { - return `[${key}] is not allowed. Allowed values are: ${allowedExperimentalValues.join( - ', ' - )}`; + appContextService + .getLogger() + .warn(`[${key}] is not a valid fleet experimental feature.`); } } }, From aa270794aebabac03c18e7afd4f4d0d8f94df047 Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Fri, 13 Oct 2023 17:38:47 +0200 Subject: [PATCH 23/80] [Security Solution] Adding serverlessQA tag (#167494) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Currently, we have our cypress tests properly integrated with the first quality gate. 
 In this quality gate, our tests are executed as part of the PR process using the serverless FTR environment. This environment uses the latest elasticsearch snapshot and the kibana source code, but it is not a real serverless environment because is not a deployed project on the cloud. In order to continue assuring that we don’t introduce new issues, we want to execute automated tests in the second quality gate as well. The second quality gate is a deployed serverless project in the QA environment. We want to start moving slowly in that direction and at the same time make sure we don't introduce flakiness, and the tests perform well. In this PR we are creating the `@serverlessQA` tag. Tests including that label will be executed on the second quality gate. 
We are also adding the label to one of the tests we know that is stable in serverless to test the full integration. Note that currently, we have some known limitations in this gate pending to be solved and we are working on it: - Execution of the tests is sequential - No differentiation between teams during the execution is done over the AET umbrella - The environment is set in `complete` so tests that exercise the `essential` behaviour should not be added. - Please ping me in case you want to add more tests into that gate to asses the risk before we have the gate tested and all the serverless tests stabilized. --------- Co-authored-by: Georgii Gorbachev Co-authored-by: dkirchan --- .../pipeline.sh | 18 ++++++- .../cypress/README.md | 4 +- .../cypress_ci_serverless_qa.config.ts | 50 +++++++++++++++++++ .../e2e/explore/overview/overview.cy.ts | 2 +- .../security_solution_cypress/package.json | 1 + 5 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 x-pack/test/security_solution_cypress/cypress/cypress_ci_serverless_qa.config.ts diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh index 87dfe7b752e6e..3d61d70cf6828 100755 --- a/.buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh +++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh @@ -1,5 +1,19 @@ #!/bin/bash - set -euo pipefail -echo "In the entrypoint for the quality gate" \ No newline at end of file +source .buildkite/scripts/common/util.sh +source .buildkite/scripts/steps/functional/common_cypress.sh +.buildkite/scripts/bootstrap.sh + +export JOB=kibana-security-solution-chrome + +buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" "true" + +echo "--- Serverless Security Second Quality Gate" +cd x-pack/test/security_solution_cypress +set +e + +VAULT_DEC_KEY=$(vault read -field=key secret/kibana-issues/dev/security-solution-qg-enc-key) +ENV_PWD=$(echo $TEST_ENV_PWD | openssl aes-256-cbc -d -a -pass pass:$VAULT_DEC_KEY) + +CYPRESS_ELASTICSEARCH_URL=$TEST_ENV_ES_URL CYPRESS_BASE_URL=$TEST_ENV_KB_URL CYPRESS_ELASTICSEARCH_USERNAME=$TEST_ENV_USERNAME CYPRESS_ELASTICSEARCH_PASSWORD=$ENV_PWD CYPRESS_KIBANA_URL=$CYPRESS_BASE_URL yarn cypress:run:qa:serverless; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file diff --git a/x-pack/test/security_solution_cypress/cypress/README.md b/x-pack/test/security_solution_cypress/cypress/README.md index aa749344201fa..c85ba1bea305f 100644 --- a/x-pack/test/security_solution_cypress/cypress/README.md +++ b/x-pack/test/security_solution_cypress/cypress/README.md @@ -42,7 +42,9 @@ Please, before opening a PR with the new test, please make sure that the test fa Note that we use tags in order to select which tests we want to execute: -- `@serverless` includes a test in the Serverless test suite. You need to explicitly add this tag to any test you want to run against a Serverless environment. +- `@serverless` includes a test in the Serverless test suite for PRs (the so-called first quality gate). You need to explicitly add this tag to any test you want to run in CI for open PRs. These tests will run against a local, "simulated" serverless environment. +- `@serverlessQA` includes a test in the Serverless test suite for QA (the so-called second quality gate). You need to explicitly add this tag to any test you want to run in the CD pipeline against real serverless projects deployed in the Serverless QA environment. + - **NOTE:** We are adding this tag temporarily until we check the behavior of our tests in the second quality gate. - `@ess` includes a test in the normal, non-Serverless test suite. You need to explicitly add this tag to any test you want to run against a non-Serverless environment. - `@brokenInServerless` excludes a test from the Serverless test suite (even if it's tagged as `@serverless`). Indicates that a test should run in Serverless, but currently is broken. - `@skipInServerless` excludes a test from the Serverless test suite (even if it's tagged as `@serverless`). Could indicate many things, e.g. "the test is flaky in Serverless", "the test is Flaky in any type of environemnt", "the test has been temporarily excluded, see the comment above why". diff --git a/x-pack/test/security_solution_cypress/cypress/cypress_ci_serverless_qa.config.ts b/x-pack/test/security_solution_cypress/cypress/cypress_ci_serverless_qa.config.ts new file mode 100644 index 0000000000000..e76893eceea36 --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/cypress_ci_serverless_qa.config.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { defineCypressConfig } from '@kbn/cypress-config'; +import { esArchiver } from './support/es_archiver'; + +// eslint-disable-next-line import/no-default-export +export default defineCypressConfig({ + reporter: '../../../node_modules/cypress-multi-reporters', + reporterOptions: { + configFile: './cypress/reporter_config.json', + }, + defaultCommandTimeout: 150000, + env: { + grepFilterSpecs: true, + grepOmitFiltered: true, + grepTags: '@serverlessQA --@brokenInServerless --@skipInServerless', + // Grep plugin is working taking under consideration the directory where cypress lives. + // https://github.com/elastic/kibana/pull/167494#discussion_r1340567022 for more context. + grepIntegrationFolder: '../', + }, + execTimeout: 150000, + pageLoadTimeout: 150000, + numTestsKeptInMemory: 0, + retries: { + runMode: 1, + }, + screenshotsFolder: '../../../target/kibana-security-solution/cypress/screenshots', + trashAssetsBeforeRuns: false, + video: false, + videosFolder: '../../../../target/kibana-security-solution/cypress/videos', + viewportHeight: 946, + viewportWidth: 1680, + e2e: { + baseUrl: 'http://localhost:5601', + experimentalCspAllowList: ['default-src', 'script-src', 'script-src-elem'], + experimentalMemoryManagement: true, + specPattern: './cypress/e2e/**/*.cy.ts', + setupNodeEvents(on, config) { + esArchiver(on, config); + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('@cypress/grep/src/plugin')(config); + return config; + }, + }, +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/explore/overview/overview.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/explore/overview/overview.cy.ts index 900a77643e988..6ab6e76efd946 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/explore/overview/overview.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/explore/overview/overview.cy.ts @@ -17,7 +17,7 @@ import { cleanKibana } from '../../../tasks/common'; import { createTimeline, favoriteTimeline } from '../../../tasks/api_calls/timelines'; import { getTimeline } from '../../../objects/timeline'; -describe('Overview Page', { tags: ['@ess', '@serverless'] }, () => { +describe('Overview Page', { tags: ['@ess', '@serverless', '@serverlessQA'] }, () => { before(() => { cleanKibana(); cy.task('esArchiverLoad', { archiveName: 'overview' }); diff --git a/x-pack/test/security_solution_cypress/package.json b/x-pack/test/security_solution_cypress/package.json index dce7081c251dd..c434d5d7a4099 100644 --- a/x-pack/test/security_solution_cypress/package.json +++ b/x-pack/test/security_solution_cypress/package.json @@ -23,6 +23,7 @@ "cypress:open:serverless": "yarn cypress:serverless open --config-file ../../test/security_solution_cypress/cypress/cypress_serverless.config.ts --spec './cypress/e2e/**/*.cy.ts'", "cypress:run:serverless": "yarn cypress:serverless --spec './cypress/e2e/!(investigations|explore)/**/*.cy.ts'", "cypress:run:cloud:serverless": "yarn cypress:cloud:serverless run --config-file ./cypress/cypress_ci_serverless.config.ts --env CLOUD_SERVERLESS=true", + "cypress:run:qa:serverless": "yarn cypress:cloud:serverless run --config-file ./cypress/cypress_ci_serverless_qa.config.ts --env CLOUD_SERVERLESS=true", "cypress:investigations:run:serverless": "yarn cypress:serverless --spec './cypress/e2e/investigations/**/*.cy.ts'", "cypress:explore:run:serverless": "yarn cypress:serverless --spec './cypress/e2e/explore/**/*.cy.ts'", "cypress:changed-specs-only:serverless": "yarn cypress:serverless --changed-specs-only --env burn=5", From 6de99ebacc6c4ba6160df7452b2e010df6e0c820 Mon Sep 17 00:00:00 2001 From: Konrad Szwarc Date: Fri, 13 Oct 2023 17:41:01 +0200 Subject: [PATCH 24/80] [EDR Workflows] Artifact Rollout - disable auto date setting (#168687) https://github.com/elastic/kibana/issues/168674 With newly introduced constraint of the date selected in the datepicker being within the last 18 months AND after the 1st of October 2023 we want to mitigate the default behaviour of EUI datepicker that sets the date of currently viewed month. This PR check on date change (when selecting months in the dropdown) and if its not within the constraints it does nothing (i.e. doesn't set the date at all). ![test1](https://github.com/elastic/kibana/assets/29123534/8728fd86-e872-41b5-b829-94d4b4528eed) --- .../protection_updates_layout.tsx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx index af2932e305576..cf7012f901974 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx @@ -191,6 +191,16 @@ export const ProtectionUpdatesLayout = React.memo( [automaticUpdatesEnabled, selectedDate, today] ); + const updateDatepickerSelectedDate = useCallback( + (date: Moment | null) => { + if (date?.isAfter(cutoffDate) && date?.isSameOrBefore(today)) { + setSelectedDate(date || today); + setManifestVersion(date?.format(internalDateFormat) || 'latest'); + } + }, + [cutoffDate, today] + ); + const renderVersionToDeployPicker = () => { return ( <> @@ -216,10 +226,7 @@ export const ProtectionUpdatesLayout = React.memo( selected={selectedDate} maxDate={today} minDate={cutoffDate} - onChange={(date) => { - setSelectedDate(date || today); - setManifestVersion(date?.format(internalDateFormat) || 'latest'); - }} + onChange={updateDatepickerSelectedDate} />
) : ( From 58df0aa0d3324ef9c378f9d7026697f8acca29ac Mon Sep 17 00:00:00 2001 From: Devon Thomson Date: Fri, 13 Oct 2023 11:54:54 -0400 Subject: [PATCH 25/80] [Inspector] Fix Typo (#168849) Fixes a typo in the inspector shard failure flyout --- .../clusters_table/shards_view/shard_failure_flyout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/inspector/public/views/requests/components/details/clusters_view/clusters_table/shards_view/shard_failure_flyout.tsx b/src/plugins/inspector/public/views/requests/components/details/clusters_view/clusters_table/shards_view/shard_failure_flyout.tsx index 8749f9764fe74..ac84eaae8119a 100644 --- a/src/plugins/inspector/public/views/requests/components/details/clusters_view/clusters_table/shards_view/shard_failure_flyout.tsx +++ b/src/plugins/inspector/public/views/requests/components/details/clusters_view/clusters_table/shards_view/shard_failure_flyout.tsx @@ -34,7 +34,7 @@ export function ShardFailureFlyout({ failures, onClose }: Props) { {i18n.translate('inspector.requests.clusters.shards.flyoutTitle', { defaultMessage: - '{failedShardCount} failured {failedShardCount, plural, one {shard} other {shards}}', + '{failedShardCount} failed {failedShardCount, plural, one {shard} other {shards}}', values: { failedShardCount: failures.length }, })} From ddcc52839523cded22247f0d707840b41fe69742 Mon Sep 17 00:00:00 2001 From: Sander Philipse <94373878+sphilipse@users.noreply.github.com> Date: Fri, 13 Oct 2023 18:03:21 +0200 Subject: [PATCH 26/80] [Search] Fix native connectors not configuring correctly (#168858) ## Summary This fixes an issue with native connectors not being set to configured after being configured. --- .../kbn-search-connectors/lib/create_connector_document.ts | 2 +- .../lib/update_connector_configuration.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/kbn-search-connectors/lib/create_connector_document.ts b/packages/kbn-search-connectors/lib/create_connector_document.ts index c5654e9a2436a..bd05ef3c79958 100644 --- a/packages/kbn-search-connectors/lib/create_connector_document.ts +++ b/packages/kbn-search-connectors/lib/create_connector_document.ts @@ -116,7 +116,7 @@ export function createConnectorDocument({ incremental: { enabled: false, interval: '0 0 0 * * ?' }, }, service_type: serviceType || null, - status: ConnectorStatus.CREATED, + status: isNative ? ConnectorStatus.NEEDS_CONFIGURATION : ConnectorStatus.CREATED, sync_now: false, }; } diff --git a/packages/kbn-search-connectors/lib/update_connector_configuration.ts b/packages/kbn-search-connectors/lib/update_connector_configuration.ts index dfb43af53db44..473932ecfddca 100644 --- a/packages/kbn-search-connectors/lib/update_connector_configuration.ts +++ b/packages/kbn-search-connectors/lib/update_connector_configuration.ts @@ -26,7 +26,8 @@ export const updateConnectorConfiguration = async ( const connector = connectorResult?.value; if (connector) { const status = - connector.status === ConnectorStatus.NEEDS_CONFIGURATION + connector.status === ConnectorStatus.NEEDS_CONFIGURATION || + connector.status === ConnectorStatus.CREATED ? ConnectorStatus.CONFIGURED : connector.status; const updatedConfig = Object.keys(connector.configuration) From 11c0bacdabfb3b3d94edec2ef3eddd2f9a3b2b37 Mon Sep 17 00:00:00 2001 From: Ying Mao Date: Fri, 13 Oct 2023 12:30:34 -0400 Subject: [PATCH 27/80] =?UTF-8?q?Revert=20"[Security=20Solution]=20Update?= =?UTF-8?q?=20ecs=20package=20to=20latest=20ecs=20definiti=E2=80=A6=20(#16?= =?UTF-8?q?8864)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts https://github.com/elastic/kibana/pull/168553 Seeing these errors when updating existing alerts as data mappings ``` [2023-10-13T11:06:44.254-04:00][ERROR][plugins.alerting] ResponseError: illegal_argument_exception Root causes: illegal_argument_exception: can't merge a non-nested mapping [faas.trigger] with a nested mapping at KibanaTransport.request (/Users/ying/Code/kibana_prs/node_modules/@elastic/transport/src/Transport.ts:535:17) at processTicksAndRejections (node:internal/process/task_queues:95:5) ``` Needs further investigation as ECS mappings should be backwards compatible --- .../__snapshots__/logging_system.test.ts.snap | 10 +- .../src/schemas/generated/ecs_schema.ts | 203 - packages/kbn-ecs/generated/base.ts | 2 +- packages/kbn-ecs/generated/client.ts | 2 +- packages/kbn-ecs/generated/container.ts | 10 +- packages/kbn-ecs/generated/destination.ts | 2 +- packages/kbn-ecs/generated/device.ts | 2 +- packages/kbn-ecs/generated/dll.ts | 43 - packages/kbn-ecs/generated/dns.ts | 6 +- packages/kbn-ecs/generated/ecs.ts | 2 +- packages/kbn-ecs/generated/ecs_flat.ts | 2754 +- packages/kbn-ecs/generated/ecs_nested.ts | 3273 +-- packages/kbn-ecs/generated/elf.ts | 44 +- packages/kbn-ecs/generated/email.ts | 12 +- packages/kbn-ecs/generated/event.ts | 18 +- packages/kbn-ecs/generated/faas.ts | 15 +- packages/kbn-ecs/generated/file.ts | 166 +- packages/kbn-ecs/generated/host.ts | 6 +- packages/kbn-ecs/generated/index.ts | 4 +- packages/kbn-ecs/generated/macho.ts | 4 +- packages/kbn-ecs/generated/observer.ts | 4 +- packages/kbn-ecs/generated/orchestrator.ts | 10 +- packages/kbn-ecs/generated/pe.ts | 43 - packages/kbn-ecs/generated/process.ts | 362 +- packages/kbn-ecs/generated/registry.ts | 2 +- packages/kbn-ecs/generated/related.ts | 8 +- packages/kbn-ecs/generated/rule.ts | 2 +- packages/kbn-ecs/generated/schema.ts | 22185 ++++++++++++++++ packages/kbn-ecs/generated/server.ts | 2 +- packages/kbn-ecs/generated/service.ts | 6 +- packages/kbn-ecs/generated/source.ts | 2 +- packages/kbn-ecs/generated/threat.ts | 173 +- packages/kbn-ecs/generated/tls.ts | 58 +- packages/kbn-ecs/generated/user.ts | 8 +- packages/kbn-ecs/generated/vulnerability.ts | 2 +- packages/kbn-ecs/generated/x509.ts | 26 +- .../allowed_values/helpers.test.tsx | 121 +- .../index_properties/helpers.test.ts | 612 +- .../impl/data_quality/helpers.test.ts | 134 +- .../use_results_rollup/helpers.test.ts | 7 +- .../security/server/audit/audit_service.ts | 5 +- 41 files changed, 23335 insertions(+), 7015 deletions(-) create mode 100644 packages/kbn-ecs/generated/schema.ts diff --git a/packages/core/logging/core-logging-server-internal/src/__snapshots__/logging_system.test.ts.snap b/packages/core/logging/core-logging-server-internal/src/__snapshots__/logging_system.test.ts.snap index a26abbd591f04..01ffd79b0b87f 100644 --- a/packages/core/logging/core-logging-server-internal/src/__snapshots__/logging_system.test.ts.snap +++ b/packages/core/logging/core-logging-server-internal/src/__snapshots__/logging_system.test.ts.snap @@ -16,7 +16,7 @@ exports[`asLoggerFactory() only allows to create new loggers. 1`] = ` Object { "@timestamp": "2012-01-30T22:33:22.011-05:00", "ecs": Object { - "version": "8.10.0", + "version": "8.6.1", }, "log": Object { "level": "TRACE", @@ -33,7 +33,7 @@ exports[`asLoggerFactory() only allows to create new loggers. 2`] = ` Object { "@timestamp": "2012-01-30T17:33:22.011-05:00", "ecs": Object { - "version": "8.10.0", + "version": "8.6.1", }, "log": Object { "level": "INFO", @@ -51,7 +51,7 @@ exports[`asLoggerFactory() only allows to create new loggers. 3`] = ` Object { "@timestamp": "2012-01-30T12:33:22.011-05:00", "ecs": Object { - "version": "8.10.0", + "version": "8.6.1", }, "log": Object { "level": "FATAL", @@ -68,7 +68,7 @@ exports[`flushes memory buffer logger and switches to real logger once config is Object { "@timestamp": "2012-02-01T09:33:22.011-05:00", "ecs": Object { - "version": "8.10.0", + "version": "8.6.1", }, "log": Object { "level": "INFO", @@ -86,7 +86,7 @@ exports[`flushes memory buffer logger and switches to real logger once config is Object { "@timestamp": "2012-01-31T23:33:22.011-05:00", "ecs": Object { - "version": "8.10.0", + "version": "8.6.1", }, "log": Object { "level": "INFO", diff --git a/packages/kbn-alerts-as-data-utils/src/schemas/generated/ecs_schema.ts b/packages/kbn-alerts-as-data-utils/src/schemas/generated/ecs_schema.ts index 6cc98d884c393..840fc2187321c 100644 --- a/packages/kbn-alerts-as-data-utils/src/schemas/generated/ecs_schema.ts +++ b/packages/kbn-alerts-as-data-utils/src/schemas/generated/ecs_schema.ts @@ -157,7 +157,6 @@ const EcsOptional = rt.partial({ 'container.network.egress.bytes': schemaStringOrNumber, 'container.network.ingress.bytes': schemaStringOrNumber, 'container.runtime': schemaString, - 'container.security_context.privileged': schemaBoolean, 'destination.address': schemaString, 'destination.as.number': schemaStringOrNumber, 'destination.as.organization.name': schemaString, @@ -219,28 +218,10 @@ const EcsOptional = rt.partial({ 'dll.pe.company': schemaString, 'dll.pe.description': schemaString, 'dll.pe.file_version': schemaString, - 'dll.pe.go_import_hash': schemaString, - 'dll.pe.go_imports': schemaUnknown, - 'dll.pe.go_imports_names_entropy': schemaStringOrNumber, - 'dll.pe.go_imports_names_var_entropy': schemaStringOrNumber, - 'dll.pe.go_stripped': schemaBoolean, 'dll.pe.imphash': schemaString, - 'dll.pe.import_hash': schemaString, - 'dll.pe.imports': schemaUnknownArray, - 'dll.pe.imports_names_entropy': schemaStringOrNumber, - 'dll.pe.imports_names_var_entropy': schemaStringOrNumber, 'dll.pe.original_file_name': schemaString, 'dll.pe.pehash': schemaString, 'dll.pe.product': schemaString, - 'dll.pe.sections': rt.array( - rt.partial({ - entropy: schemaStringOrNumber, - name: schemaString, - physical_size: schemaStringOrNumber, - var_entropy: schemaStringOrNumber, - virtual_size: schemaStringOrNumber, - }) - ), 'dns.answers': rt.array( rt.partial({ class: schemaString, @@ -326,8 +307,6 @@ const EcsOptional = rt.partial({ 'faas.execution': schemaString, 'faas.id': schemaString, 'faas.name': schemaString, - 'faas.trigger.request_id': schemaString, - 'faas.trigger.type': schemaString, 'faas.version': schemaString, 'file.accessed': schemaDate, 'file.attributes': schemaStringArray, @@ -350,11 +329,6 @@ const EcsOptional = rt.partial({ 'file.elf.cpu_type': schemaString, 'file.elf.creation_date': schemaDate, 'file.elf.exports': schemaUnknownArray, - 'file.elf.go_import_hash': schemaString, - 'file.elf.go_imports': schemaUnknown, - 'file.elf.go_imports_names_entropy': schemaStringOrNumber, - 'file.elf.go_imports_names_var_entropy': schemaStringOrNumber, - 'file.elf.go_stripped': schemaBoolean, 'file.elf.header.abi_version': schemaString, 'file.elf.header.class': schemaString, 'file.elf.header.data': schemaString, @@ -363,10 +337,7 @@ const EcsOptional = rt.partial({ 'file.elf.header.os_abi': schemaString, 'file.elf.header.type': schemaString, 'file.elf.header.version': schemaString, - 'file.elf.import_hash': schemaString, 'file.elf.imports': schemaUnknownArray, - 'file.elf.imports_names_entropy': schemaStringOrNumber, - 'file.elf.imports_names_var_entropy': schemaStringOrNumber, 'file.elf.sections': rt.array( rt.partial({ chi2: schemaStringOrNumber, @@ -376,7 +347,6 @@ const EcsOptional = rt.partial({ physical_offset: schemaString, physical_size: schemaStringOrNumber, type: schemaString, - var_entropy: schemaStringOrNumber, virtual_address: schemaStringOrNumber, virtual_size: schemaStringOrNumber, }) @@ -401,25 +371,6 @@ const EcsOptional = rt.partial({ 'file.hash.ssdeep': schemaString, 'file.hash.tlsh': schemaString, 'file.inode': schemaString, - 'file.macho.go_import_hash': schemaString, - 'file.macho.go_imports': schemaUnknown, - 'file.macho.go_imports_names_entropy': schemaStringOrNumber, - 'file.macho.go_imports_names_var_entropy': schemaStringOrNumber, - 'file.macho.go_stripped': schemaBoolean, - 'file.macho.import_hash': schemaString, - 'file.macho.imports': schemaUnknownArray, - 'file.macho.imports_names_entropy': schemaStringOrNumber, - 'file.macho.imports_names_var_entropy': schemaStringOrNumber, - 'file.macho.sections': rt.array( - rt.partial({ - entropy: schemaStringOrNumber, - name: schemaString, - physical_size: schemaStringOrNumber, - var_entropy: schemaStringOrNumber, - virtual_size: schemaStringOrNumber, - }) - ), - 'file.macho.symhash': schemaString, 'file.mime_type': schemaString, 'file.mode': schemaString, 'file.mtime': schemaDate, @@ -430,28 +381,10 @@ const EcsOptional = rt.partial({ 'file.pe.company': schemaString, 'file.pe.description': schemaString, 'file.pe.file_version': schemaString, - 'file.pe.go_import_hash': schemaString, - 'file.pe.go_imports': schemaUnknown, - 'file.pe.go_imports_names_entropy': schemaStringOrNumber, - 'file.pe.go_imports_names_var_entropy': schemaStringOrNumber, - 'file.pe.go_stripped': schemaBoolean, 'file.pe.imphash': schemaString, - 'file.pe.import_hash': schemaString, - 'file.pe.imports': schemaUnknownArray, - 'file.pe.imports_names_entropy': schemaStringOrNumber, - 'file.pe.imports_names_var_entropy': schemaStringOrNumber, 'file.pe.original_file_name': schemaString, 'file.pe.pehash': schemaString, 'file.pe.product': schemaString, - 'file.pe.sections': rt.array( - rt.partial({ - entropy: schemaStringOrNumber, - name: schemaString, - physical_size: schemaStringOrNumber, - var_entropy: schemaStringOrNumber, - virtual_size: schemaStringOrNumber, - }) - ), 'file.size': schemaStringOrNumber, 'file.target_path': schemaString, 'file.type': schemaString, @@ -592,10 +525,8 @@ const EcsOptional = rt.partial({ 'orchestrator.cluster.version': schemaString, 'orchestrator.namespace': schemaString, 'orchestrator.organization': schemaString, - 'orchestrator.resource.annotation': schemaStringArray, 'orchestrator.resource.id': schemaString, 'orchestrator.resource.ip': schemaStringArray, - 'orchestrator.resource.label': schemaStringArray, 'orchestrator.resource.name': schemaString, 'orchestrator.resource.parent.type': schemaString, 'orchestrator.resource.type': schemaString, @@ -632,11 +563,6 @@ const EcsOptional = rt.partial({ 'process.elf.cpu_type': schemaString, 'process.elf.creation_date': schemaDate, 'process.elf.exports': schemaUnknownArray, - 'process.elf.go_import_hash': schemaString, - 'process.elf.go_imports': schemaUnknown, - 'process.elf.go_imports_names_entropy': schemaStringOrNumber, - 'process.elf.go_imports_names_var_entropy': schemaStringOrNumber, - 'process.elf.go_stripped': schemaBoolean, 'process.elf.header.abi_version': schemaString, 'process.elf.header.class': schemaString, 'process.elf.header.data': schemaString, @@ -645,10 +571,7 @@ const EcsOptional = rt.partial({ 'process.elf.header.os_abi': schemaString, 'process.elf.header.type': schemaString, 'process.elf.header.version': schemaString, - 'process.elf.import_hash': schemaString, 'process.elf.imports': schemaUnknownArray, - 'process.elf.imports_names_entropy': schemaStringOrNumber, - 'process.elf.imports_names_var_entropy': schemaStringOrNumber, 'process.elf.sections': rt.array( rt.partial({ chi2: schemaStringOrNumber, @@ -658,7 +581,6 @@ const EcsOptional = rt.partial({ physical_offset: schemaString, physical_size: schemaStringOrNumber, type: schemaString, - var_entropy: schemaStringOrNumber, virtual_address: schemaStringOrNumber, virtual_size: schemaStringOrNumber, }) @@ -692,9 +614,7 @@ const EcsOptional = rt.partial({ 'process.entry_leader.parent.session_leader.entity_id': schemaString, 'process.entry_leader.parent.session_leader.pid': schemaStringOrNumber, 'process.entry_leader.parent.session_leader.start': schemaDate, - 'process.entry_leader.parent.session_leader.vpid': schemaStringOrNumber, 'process.entry_leader.parent.start': schemaDate, - 'process.entry_leader.parent.vpid': schemaStringOrNumber, 'process.entry_leader.pid': schemaStringOrNumber, 'process.entry_leader.real_group.id': schemaString, 'process.entry_leader.real_group.name': schemaString, @@ -710,7 +630,6 @@ const EcsOptional = rt.partial({ 'process.entry_leader.supplemental_groups.name': schemaString, 'process.entry_leader.user.id': schemaString, 'process.entry_leader.user.name': schemaString, - 'process.entry_leader.vpid': schemaStringOrNumber, 'process.entry_leader.working_directory': schemaString, 'process.env_vars': schemaStringArray, 'process.executable': schemaString, @@ -739,7 +658,6 @@ const EcsOptional = rt.partial({ 'process.group_leader.supplemental_groups.name': schemaString, 'process.group_leader.user.id': schemaString, 'process.group_leader.user.name': schemaString, - 'process.group_leader.vpid': schemaStringOrNumber, 'process.group_leader.working_directory': schemaString, 'process.hash.md5': schemaString, 'process.hash.sha1': schemaString, @@ -749,25 +667,6 @@ const EcsOptional = rt.partial({ 'process.hash.ssdeep': schemaString, 'process.hash.tlsh': schemaString, 'process.interactive': schemaBoolean, - 'process.macho.go_import_hash': schemaString, - 'process.macho.go_imports': schemaUnknown, - 'process.macho.go_imports_names_entropy': schemaStringOrNumber, - 'process.macho.go_imports_names_var_entropy': schemaStringOrNumber, - 'process.macho.go_stripped': schemaBoolean, - 'process.macho.import_hash': schemaString, - 'process.macho.imports': schemaUnknownArray, - 'process.macho.imports_names_entropy': schemaStringOrNumber, - 'process.macho.imports_names_var_entropy': schemaStringOrNumber, - 'process.macho.sections': rt.array( - rt.partial({ - entropy: schemaStringOrNumber, - name: schemaString, - physical_size: schemaStringOrNumber, - var_entropy: schemaStringOrNumber, - virtual_size: schemaStringOrNumber, - }) - ), - 'process.macho.symhash': schemaString, 'process.name': schemaString, 'process.parent.args': schemaStringArray, 'process.parent.args_count': schemaStringOrNumber, @@ -786,11 +685,6 @@ const EcsOptional = rt.partial({ 'process.parent.elf.cpu_type': schemaString, 'process.parent.elf.creation_date': schemaDate, 'process.parent.elf.exports': schemaUnknownArray, - 'process.parent.elf.go_import_hash': schemaString, - 'process.parent.elf.go_imports': schemaUnknown, - 'process.parent.elf.go_imports_names_entropy': schemaStringOrNumber, - 'process.parent.elf.go_imports_names_var_entropy': schemaStringOrNumber, - 'process.parent.elf.go_stripped': schemaBoolean, 'process.parent.elf.header.abi_version': schemaString, 'process.parent.elf.header.class': schemaString, 'process.parent.elf.header.data': schemaString, @@ -799,10 +693,7 @@ const EcsOptional = rt.partial({ 'process.parent.elf.header.os_abi': schemaString, 'process.parent.elf.header.type': schemaString, 'process.parent.elf.header.version': schemaString, - 'process.parent.elf.import_hash': schemaString, 'process.parent.elf.imports': schemaUnknownArray, - 'process.parent.elf.imports_names_entropy': schemaStringOrNumber, - 'process.parent.elf.imports_names_var_entropy': schemaStringOrNumber, 'process.parent.elf.sections': rt.array( rt.partial({ chi2: schemaStringOrNumber, @@ -812,7 +703,6 @@ const EcsOptional = rt.partial({ physical_offset: schemaString, physical_size: schemaStringOrNumber, type: schemaString, - var_entropy: schemaStringOrNumber, virtual_address: schemaStringOrNumber, virtual_size: schemaStringOrNumber, }) @@ -834,7 +724,6 @@ const EcsOptional = rt.partial({ 'process.parent.group_leader.entity_id': schemaString, 'process.parent.group_leader.pid': schemaStringOrNumber, 'process.parent.group_leader.start': schemaDate, - 'process.parent.group_leader.vpid': schemaStringOrNumber, 'process.parent.hash.md5': schemaString, 'process.parent.hash.sha1': schemaString, 'process.parent.hash.sha256': schemaString, @@ -843,52 +732,15 @@ const EcsOptional = rt.partial({ 'process.parent.hash.ssdeep': schemaString, 'process.parent.hash.tlsh': schemaString, 'process.parent.interactive': schemaBoolean, - 'process.parent.macho.go_import_hash': schemaString, - 'process.parent.macho.go_imports': schemaUnknown, - 'process.parent.macho.go_imports_names_entropy': schemaStringOrNumber, - 'process.parent.macho.go_imports_names_var_entropy': schemaStringOrNumber, - 'process.parent.macho.go_stripped': schemaBoolean, - 'process.parent.macho.import_hash': schemaString, - 'process.parent.macho.imports': schemaUnknownArray, - 'process.parent.macho.imports_names_entropy': schemaStringOrNumber, - 'process.parent.macho.imports_names_var_entropy': schemaStringOrNumber, - 'process.parent.macho.sections': rt.array( - rt.partial({ - entropy: schemaStringOrNumber, - name: schemaString, - physical_size: schemaStringOrNumber, - var_entropy: schemaStringOrNumber, - virtual_size: schemaStringOrNumber, - }) - ), - 'process.parent.macho.symhash': schemaString, 'process.parent.name': schemaString, 'process.parent.pe.architecture': schemaString, 'process.parent.pe.company': schemaString, 'process.parent.pe.description': schemaString, 'process.parent.pe.file_version': schemaString, - 'process.parent.pe.go_import_hash': schemaString, - 'process.parent.pe.go_imports': schemaUnknown, - 'process.parent.pe.go_imports_names_entropy': schemaStringOrNumber, - 'process.parent.pe.go_imports_names_var_entropy': schemaStringOrNumber, - 'process.parent.pe.go_stripped': schemaBoolean, 'process.parent.pe.imphash': schemaString, - 'process.parent.pe.import_hash': schemaString, - 'process.parent.pe.imports': schemaUnknownArray, - 'process.parent.pe.imports_names_entropy': schemaStringOrNumber, - 'process.parent.pe.imports_names_var_entropy': schemaStringOrNumber, 'process.parent.pe.original_file_name': schemaString, 'process.parent.pe.pehash': schemaString, 'process.parent.pe.product': schemaString, - 'process.parent.pe.sections': rt.array( - rt.partial({ - entropy: schemaStringOrNumber, - name: schemaString, - physical_size: schemaStringOrNumber, - var_entropy: schemaStringOrNumber, - virtual_size: schemaStringOrNumber, - }) - ), 'process.parent.pgid': schemaStringOrNumber, 'process.parent.pid': schemaStringOrNumber, 'process.parent.real_group.id': schemaString, @@ -902,42 +754,21 @@ const EcsOptional = rt.partial({ 'process.parent.start': schemaDate, 'process.parent.supplemental_groups.id': schemaString, 'process.parent.supplemental_groups.name': schemaString, - 'process.parent.thread.capabilities.effective': schemaStringArray, - 'process.parent.thread.capabilities.permitted': schemaStringArray, 'process.parent.thread.id': schemaStringOrNumber, 'process.parent.thread.name': schemaString, 'process.parent.title': schemaString, 'process.parent.uptime': schemaStringOrNumber, 'process.parent.user.id': schemaString, 'process.parent.user.name': schemaString, - 'process.parent.vpid': schemaStringOrNumber, 'process.parent.working_directory': schemaString, 'process.pe.architecture': schemaString, 'process.pe.company': schemaString, 'process.pe.description': schemaString, 'process.pe.file_version': schemaString, - 'process.pe.go_import_hash': schemaString, - 'process.pe.go_imports': schemaUnknown, - 'process.pe.go_imports_names_entropy': schemaStringOrNumber, - 'process.pe.go_imports_names_var_entropy': schemaStringOrNumber, - 'process.pe.go_stripped': schemaBoolean, 'process.pe.imphash': schemaString, - 'process.pe.import_hash': schemaString, - 'process.pe.imports': schemaUnknownArray, - 'process.pe.imports_names_entropy': schemaStringOrNumber, - 'process.pe.imports_names_var_entropy': schemaStringOrNumber, 'process.pe.original_file_name': schemaString, 'process.pe.pehash': schemaString, 'process.pe.product': schemaString, - 'process.pe.sections': rt.array( - rt.partial({ - entropy: schemaStringOrNumber, - name: schemaString, - physical_size: schemaStringOrNumber, - var_entropy: schemaStringOrNumber, - virtual_size: schemaStringOrNumber, - }) - ), 'process.pgid': schemaStringOrNumber, 'process.pid': schemaStringOrNumber, 'process.previous.args': schemaStringArray, @@ -965,9 +796,7 @@ const EcsOptional = rt.partial({ 'process.session_leader.parent.session_leader.entity_id': schemaString, 'process.session_leader.parent.session_leader.pid': schemaStringOrNumber, 'process.session_leader.parent.session_leader.start': schemaDate, - 'process.session_leader.parent.session_leader.vpid': schemaStringOrNumber, 'process.session_leader.parent.start': schemaDate, - 'process.session_leader.parent.vpid': schemaStringOrNumber, 'process.session_leader.pid': schemaStringOrNumber, 'process.session_leader.real_group.id': schemaString, 'process.session_leader.real_group.name': schemaString, @@ -983,20 +812,16 @@ const EcsOptional = rt.partial({ 'process.session_leader.supplemental_groups.name': schemaString, 'process.session_leader.user.id': schemaString, 'process.session_leader.user.name': schemaString, - 'process.session_leader.vpid': schemaStringOrNumber, 'process.session_leader.working_directory': schemaString, 'process.start': schemaDate, 'process.supplemental_groups.id': schemaString, 'process.supplemental_groups.name': schemaString, - 'process.thread.capabilities.effective': schemaStringArray, - 'process.thread.capabilities.permitted': schemaStringArray, 'process.thread.id': schemaStringOrNumber, 'process.thread.name': schemaString, 'process.title': schemaString, 'process.uptime': schemaStringOrNumber, 'process.user.id': schemaString, 'process.user.name': schemaString, - 'process.vpid': schemaStringOrNumber, 'process.working_directory': schemaString, 'registry.data.bytes': schemaString, 'registry.data.strings': schemaStringArray, @@ -1169,11 +994,6 @@ const EcsOptional = rt.partial({ 'threat.indicator.file.elf.cpu_type': schemaString, 'threat.indicator.file.elf.creation_date': schemaDate, 'threat.indicator.file.elf.exports': schemaUnknownArray, - 'threat.indicator.file.elf.go_import_hash': schemaString, - 'threat.indicator.file.elf.go_imports': schemaUnknown, - 'threat.indicator.file.elf.go_imports_names_entropy': schemaStringOrNumber, - 'threat.indicator.file.elf.go_imports_names_var_entropy': schemaStringOrNumber, - 'threat.indicator.file.elf.go_stripped': schemaBoolean, 'threat.indicator.file.elf.header.abi_version': schemaString, 'threat.indicator.file.elf.header.class': schemaString, 'threat.indicator.file.elf.header.data': schemaString, @@ -1182,10 +1002,7 @@ const EcsOptional = rt.partial({ 'threat.indicator.file.elf.header.os_abi': schemaString, 'threat.indicator.file.elf.header.type': schemaString, 'threat.indicator.file.elf.header.version': schemaString, - 'threat.indicator.file.elf.import_hash': schemaString, 'threat.indicator.file.elf.imports': schemaUnknownArray, - 'threat.indicator.file.elf.imports_names_entropy': schemaStringOrNumber, - 'threat.indicator.file.elf.imports_names_var_entropy': schemaStringOrNumber, 'threat.indicator.file.elf.sections': rt.array( rt.partial({ chi2: schemaStringOrNumber, @@ -1195,7 +1012,6 @@ const EcsOptional = rt.partial({ physical_offset: schemaString, physical_size: schemaStringOrNumber, type: schemaString, - var_entropy: schemaStringOrNumber, virtual_address: schemaStringOrNumber, virtual_size: schemaStringOrNumber, }) @@ -1230,28 +1046,10 @@ const EcsOptional = rt.partial({ 'threat.indicator.file.pe.company': schemaString, 'threat.indicator.file.pe.description': schemaString, 'threat.indicator.file.pe.file_version': schemaString, - 'threat.indicator.file.pe.go_import_hash': schemaString, - 'threat.indicator.file.pe.go_imports': schemaUnknown, - 'threat.indicator.file.pe.go_imports_names_entropy': schemaStringOrNumber, - 'threat.indicator.file.pe.go_imports_names_var_entropy': schemaStringOrNumber, - 'threat.indicator.file.pe.go_stripped': schemaBoolean, 'threat.indicator.file.pe.imphash': schemaString, - 'threat.indicator.file.pe.import_hash': schemaString, - 'threat.indicator.file.pe.imports': schemaUnknownArray, - 'threat.indicator.file.pe.imports_names_entropy': schemaStringOrNumber, - 'threat.indicator.file.pe.imports_names_var_entropy': schemaStringOrNumber, 'threat.indicator.file.pe.original_file_name': schemaString, 'threat.indicator.file.pe.pehash': schemaString, 'threat.indicator.file.pe.product': schemaString, - 'threat.indicator.file.pe.sections': rt.array( - rt.partial({ - entropy: schemaStringOrNumber, - name: schemaString, - physical_size: schemaStringOrNumber, - var_entropy: schemaStringOrNumber, - virtual_size: schemaStringOrNumber, - }) - ), 'threat.indicator.file.size': schemaStringOrNumber, 'threat.indicator.file.target_path': schemaString, 'threat.indicator.file.type': schemaString, @@ -1297,7 +1095,6 @@ const EcsOptional = rt.partial({ 'threat.indicator.marking.tlp': schemaString, 'threat.indicator.marking.tlp_version': schemaString, 'threat.indicator.modified_at': schemaDate, - 'threat.indicator.name': schemaString, 'threat.indicator.port': schemaStringOrNumber, 'threat.indicator.provider': schemaString, 'threat.indicator.reference': schemaString, diff --git a/packages/kbn-ecs/generated/base.ts b/packages/kbn-ecs/generated/base.ts index f1e8fc0dd02f4..f9568a9f5b957 100644 --- a/packages/kbn-ecs/generated/base.ts +++ b/packages/kbn-ecs/generated/base.ts @@ -32,5 +32,5 @@ export interface EcsBase { /** * List of keywords used to tag each event. */ - tags?: string | string[]; + tags?: string[]; } diff --git a/packages/kbn-ecs/generated/client.ts b/packages/kbn-ecs/generated/client.ts index bdd31f6179fc3..21fe4898e2c9e 100644 --- a/packages/kbn-ecs/generated/client.ts +++ b/packages/kbn-ecs/generated/client.ts @@ -181,6 +181,6 @@ export interface EcsClient { /** * Array of user roles at the time of the event. */ - roles?: string | string[]; + roles?: string[]; }; } diff --git a/packages/kbn-ecs/generated/container.ts b/packages/kbn-ecs/generated/container.ts index 3d1b5b2717955..d7c760d2ca803 100644 --- a/packages/kbn-ecs/generated/container.ts +++ b/packages/kbn-ecs/generated/container.ts @@ -43,7 +43,7 @@ export interface EcsContainer { /** * An array of digests of the image the container was built on. Each digest consists of the hash algorithm and value in this format: `algorithm:value`. Algorithm names should align with the field names in the ECS hash field set. */ - all?: string | string[]; + all?: string[]; }; /** @@ -53,7 +53,7 @@ export interface EcsContainer { /** * Container image tags. */ - tag?: string | string[]; + tag?: string[]; }; /** @@ -91,10 +91,4 @@ export interface EcsContainer { * Runtime managing this container. */ runtime?: string; - security_context?: { - /** - * Indicates whether the container is running in privileged mode. - */ - privileged?: boolean; - }; } diff --git a/packages/kbn-ecs/generated/destination.ts b/packages/kbn-ecs/generated/destination.ts index 19f2321331aba..351e14526b9d8 100644 --- a/packages/kbn-ecs/generated/destination.ts +++ b/packages/kbn-ecs/generated/destination.ts @@ -180,6 +180,6 @@ export interface EcsDestination { /** * Array of user roles at the time of the event. */ - roles?: string | string[]; + roles?: string[]; }; } diff --git a/packages/kbn-ecs/generated/device.ts b/packages/kbn-ecs/generated/device.ts index 1845cfc2d5e29..83969cc6b4a56 100644 --- a/packages/kbn-ecs/generated/device.ts +++ b/packages/kbn-ecs/generated/device.ts @@ -12,7 +12,7 @@ */ export interface EcsDevice { /** - * The unique identifier of a device. The identifier must not change across application sessions but stay fixed for an instance of a (mobile) device. + * The unique identifier of a device. The identifier must not change across application sessions but stay fixex for an instance of a (mobile) device. * On iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. * For GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user. */ diff --git a/packages/kbn-ecs/generated/dll.ts b/packages/kbn-ecs/generated/dll.ts index 7da468d175ffe..aec7584e5e937 100644 --- a/packages/kbn-ecs/generated/dll.ts +++ b/packages/kbn-ecs/generated/dll.ts @@ -117,49 +117,11 @@ export interface EcsDll { * Internal version of the file, provided at compile-time. */ file_version?: string; - /** - * A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; /** * A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. */ imphash?: string; - /** - * A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is a synonym for imphash. - */ - import_hash?: string; - /** - * List of imported element names and types. - */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; /** * Internal name of the file, provided at compile-time. */ @@ -173,10 +135,5 @@ export interface EcsDll { * Internal product name of the file, provided at compile-time. */ product?: string; - /** - * An array containing an object for each section of the PE file. - * The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`. - */ - sections?: Record | Array>; }; } diff --git a/packages/kbn-ecs/generated/dns.ts b/packages/kbn-ecs/generated/dns.ts index 56b32500c4d8d..e2a8b122d3308 100644 --- a/packages/kbn-ecs/generated/dns.ts +++ b/packages/kbn-ecs/generated/dns.ts @@ -16,11 +16,11 @@ export interface EcsDns { * The main keys that should be present in these objects are defined by ECS. Records that have more information may contain more keys than what ECS defines. * Not all DNS data sources give all details about DNS answers. At minimum, answer objects must contain the `data` key. If more information is available, map as much of it to ECS as possible, and add any additional fields to the answer objects as custom fields. */ - answers?: Record | Array>; + answers?: Array>; /** * Array of 2 letter DNS header flags. */ - header_flags?: string | string[]; + header_flags?: string[]; /** * The DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response. */ @@ -65,7 +65,7 @@ export interface EcsDns { * Array containing all IPs seen in `answers.data`. * The `answers` array can be difficult to use, because of the variety of data formats it can contain. Extracting all IP addresses seen in there to `dns.resolved_ip` makes it possible to index them as IP addresses, and makes them easier to visualize and query for. */ - resolved_ip?: string | string[]; + resolved_ip?: string[]; /** * The DNS response code. */ diff --git a/packages/kbn-ecs/generated/ecs.ts b/packages/kbn-ecs/generated/ecs.ts index a53ea6b01baaa..be166fca73f6c 100644 --- a/packages/kbn-ecs/generated/ecs.ts +++ b/packages/kbn-ecs/generated/ecs.ts @@ -14,5 +14,5 @@ export interface EcsEcs { * ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. * When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. */ - version: '8.10.0'; + version: '8.6.1'; } diff --git a/packages/kbn-ecs/generated/ecs_flat.ts b/packages/kbn-ecs/generated/ecs_flat.ts index 40e1764342dd4..8c230c07e6460 100644 --- a/packages/kbn-ecs/generated/ecs_flat.ts +++ b/packages/kbn-ecs/generated/ecs_flat.ts @@ -1138,16 +1138,6 @@ export const EcsFlat = { short: 'Runtime managing this container.', type: 'keyword', }, - 'container.security_context.privileged': { - dashed_name: 'container-security-context-privileged', - description: 'Indicates whether the container is running in privileged mode.', - flat_name: 'container.security_context.privileged', - level: 'extended', - name: 'security_context.privileged', - normalize: [], - short: 'Indicates whether the container is running in privileged mode.', - type: 'boolean', - }, 'data_stream.dataset': { dashed_name: 'data-stream-dataset', description: @@ -1650,7 +1640,7 @@ export const EcsFlat = { 'device.id': { dashed_name: 'device-id', description: - 'The unique identifier of a device. The identifier must not change across application sessions but stay fixed for an instance of a (mobile) device. \nOn iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application.\nFor GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user.', + 'The unique identifier of a device. The identifier must not change across application sessions but stay fixex for an instance of a (mobile) device. \nOn iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application.\nFor GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user.', example: '00000000-54b3-e7c7-0000-000046bffd97', flat_name: 'device.id', ignore_above: 1024, @@ -1975,67 +1965,6 @@ export const EcsFlat = { short: 'Process name.', type: 'keyword', }, - 'dll.pe.go_import_hash': { - dashed_name: 'dll-pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'dll.pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'dll.pe.go_imports': { - dashed_name: 'dll-pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'dll.pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'pe', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'dll.pe.go_imports_names_entropy': { - dashed_name: 'dll-pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'dll.pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'dll.pe.go_imports_names_var_entropy': { - dashed_name: 'dll-pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'dll.pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'dll.pe.go_stripped': { - dashed_name: 'dll-pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'dll.pe.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'pe', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'dll.pe.imphash': { dashed_name: 'dll-pe-imphash', description: @@ -2050,57 +1979,6 @@ export const EcsFlat = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'dll.pe.import_hash': { - dashed_name: 'dll-pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'dll.pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'dll.pe.imports': { - dashed_name: 'dll-pe-imports', - description: 'List of imported element names and types.', - flat_name: 'dll.pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'pe', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'dll.pe.imports_names_entropy': { - dashed_name: 'dll-pe-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'dll.pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'dll.pe.imports_names_var_entropy': { - dashed_name: 'dll-pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'dll.pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'dll.pe.original_file_name': { dashed_name: 'dll-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -2141,78 +2019,6 @@ export const EcsFlat = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'dll.pe.sections': { - dashed_name: 'dll-pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'dll.pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'pe', - short: 'Section information of the PE file.', - type: 'nested', - }, - 'dll.pe.sections.entropy': { - dashed_name: 'dll-pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'dll.pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'dll.pe.sections.name': { - dashed_name: 'dll-pe-sections-name', - description: 'PE Section List name.', - flat_name: 'dll.pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List name.', - type: 'keyword', - }, - 'dll.pe.sections.physical_size': { - dashed_name: 'dll-pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'dll.pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List physical size.', - type: 'long', - }, - 'dll.pe.sections.var_entropy': { - dashed_name: 'dll-pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'dll.pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'dll.pe.sections.virtual_size': { - dashed_name: 'dll-pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'dll.pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, 'dns.answers': { dashed_name: 'dns-answers', description: @@ -2864,24 +2670,6 @@ export const EcsFlat = { }, 'event.category': { allowed_values: [ - { - description: - 'Events in this category annotate API calls that occured on a system. Typical sources for those events could be from the Operating System level through the native libraries (for example Windows Win32, Linux libc, etc.), or managed sources of events (such as ETW, syslog), but can also include network protocols (such as SOAP, RPC, Websocket, REST, etc.)', - expected_event_types: [ - 'access', - 'admin', - 'allowed', - 'change', - 'creation', - 'deletion', - 'denied', - 'end', - 'info', - 'start', - 'user', - ], - name: 'api', - }, { description: 'Events in this category are related to the challenge and response process in which credentials are supplied and verified to allow the creation of a session. Common sources for these logs are Windows event logs and ssh logs. Visualize and analyze events in this category to look for failed logins, and other authentication-related activity.', @@ -2915,7 +2703,7 @@ export const EcsFlat = { { description: 'Relating to a set of information that has been created on, or has existed on a filesystem. Use this category of events to visualize and analyze the creation, access, and deletions of files. Events in this category can come from both host-based and network-based sources. An example source of a network-based detection of a file transfer would be the Zeek file.log.', - expected_event_types: ['access', 'change', 'creation', 'deletion', 'info'], + expected_event_types: ['change', 'creation', 'deletion', 'info'], name: 'file', }, { @@ -2936,12 +2724,6 @@ export const EcsFlat = { expected_event_types: ['allowed', 'denied', 'info'], name: 'intrusion_detection', }, - { - description: - 'Events in this category refer to the loading of a library, such as (dll / so / dynlib), into a process. Use this category to visualize and analyze library loading related activity on hosts. Keep in mind that driver related activity will be captured under the "driver" category above.', - expected_event_types: ['start'], - name: 'library', - }, { description: 'Malware detection events and alerts. Use this category to visualize and analyze malware detections from EDR/EPP systems such as Elastic Endpoint Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems such as Suricata, or other sources of malware-related events such as Palo Alto Networks threat logs and Wildfire logs.', @@ -3034,7 +2816,7 @@ export const EcsFlat = { 'event.created': { dashed_name: 'event-created', description: - "`event.created` contains the date/time when the event was first read by an agent, or by your pipeline.\nThis field is distinct from `@timestamp` in that `@timestamp` typically contain the time extracted from the original event.\nIn most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source.\nIn case the two timestamps are identical, `@timestamp` should be used.", + "event.created contains the date/time when the event was first read by an agent, or by your pipeline.\nThis field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event.\nIn most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source.\nIn case the two timestamps are identical, @timestamp should be used.", example: '2016-05-23T08:05:34.857Z', flat_name: 'event.created', level: 'core', @@ -3059,7 +2841,7 @@ export const EcsFlat = { 'event.duration': { dashed_name: 'event-duration', description: - 'Duration of the event in nanoseconds.\nIf `event.start` and `event.end` are known this value should be the difference between the end and start time.', + 'Duration of the event in nanoseconds.\nIf event.start and event.end are known this value should be the difference between the end and start time.', flat_name: 'event.duration', format: 'duration', input_format: 'nanoseconds', @@ -3074,13 +2856,13 @@ export const EcsFlat = { 'event.end': { dashed_name: 'event-end', description: - '`event.end` contains the date when the event ended or when the activity was last observed.', + 'event.end contains the date when the event ended or when the activity was last observed.', flat_name: 'event.end', level: 'extended', name: 'end', normalize: [], short: - '`event.end` contains the date when the event ended or when the activity was last observed.', + 'event.end contains the date when the event ended or when the activity was last observed.', type: 'date', }, 'event.hash': { @@ -3128,12 +2910,6 @@ export const EcsFlat = { 'This value indicates an event such as an alert or notable event, triggered by a detection rule executing externally to the Elastic Stack.\n`event.kind:alert` is often populated for events coming from firewalls, intrusion detection systems, endpoint detection and response systems, and so on.\nThis value is not used by Elastic solutions for alert documents that are created by rules executing within the Kibana alerting framework.', name: 'alert', }, - { - beta: 'This event categorization value is beta and subject to change.', - description: - 'This value indicates events whose primary purpose is to store an inventory of assets/entities and their attributes. Assets/entities are objects (such as users and hosts) that are expected to be subjects of detailed analysis within the system.\nExamples include lists of user identities or accounts ingested from directory services such as Active Directory (AD), inventory of hosts pulled from configuration management databases (CMDB), and lists of cloud storage buckets pulled from cloud provider APIs.\nThis value is used by Elastic Security for asset management solutions. `event.kind: asset` is not used for normal system events or logs that are coming from an asset/entity, nor is it used for system events or logs coming from a directory or CMDB system.', - name: 'asset', - }, { description: 'The `enrichment` value indicates an event collected to provide additional context, often to other events.\nAn example is collecting indicators of compromise (IOCs) from a threat intelligence provider with the intent to use those values to enrich other events. The IOC events from the intelligence provider should be categorized as `event.kind:enrichment`.', @@ -3167,7 +2943,7 @@ export const EcsFlat = { ], dashed_name: 'event-kind', description: - 'This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy.\n`event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events.\nThe value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data is coming in at a regular interval or not.', + 'This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy.\n`event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events.\nThe value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not.', example: 'alert', flat_name: 'event.kind', ignore_above: 1024, @@ -3325,13 +3101,13 @@ export const EcsFlat = { 'event.start': { dashed_name: 'event-start', description: - '`event.start` contains the date when the event started or when the activity was first observed.', + 'event.start contains the date when the event started or when the activity was first observed.', flat_name: 'event.start', level: 'extended', name: 'start', normalize: [], short: - '`event.start` contains the date when the event started or when the activity was first observed.', + 'event.start contains the date when the event started or when the activity was first observed.', type: 'date', }, 'event.timezone': { @@ -3505,6 +3281,16 @@ export const EcsFlat = { short: 'The name of a serverless function.', type: 'keyword', }, + 'faas.trigger': { + dashed_name: 'faas-trigger', + description: 'Details about the function trigger.', + flat_name: 'faas.trigger', + level: 'extended', + name: 'trigger', + normalize: [], + short: 'Details about the function trigger.', + type: 'nested', + }, 'faas.trigger.request_id': { dashed_name: 'faas-trigger-request-id', description: 'The ID of the trigger request , message, event, etc.', @@ -3806,67 +3592,6 @@ export const EcsFlat = { short: 'List of exported element names and types.', type: 'flattened', }, - 'file.elf.go_import_hash': { - dashed_name: 'file-elf-go-import-hash', - description: - 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'file.elf.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the Go language imports in an ELF file.', - type: 'keyword', - }, - 'file.elf.go_imports': { - dashed_name: 'file-elf-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'file.elf.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'elf', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'file.elf.go_imports_names_entropy': { - dashed_name: 'file-elf-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'file.elf.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'file.elf.go_imports_names_var_entropy': { - dashed_name: 'file-elf-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'file.elf.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'file.elf.go_stripped': { - dashed_name: 'file-elf-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'file.elf.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'elf', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'file.elf.header.abi_version': { dashed_name: 'file-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -3963,20 +3688,6 @@ export const EcsFlat = { short: 'Version of the ELF header.', type: 'keyword', }, - 'file.elf.import_hash': { - dashed_name: 'file-elf-import-hash', - description: - 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'file.elf.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the imports in an ELF file.', - type: 'keyword', - }, 'file.elf.imports': { dashed_name: 'file-elf-imports', description: 'List of imported element names and types.', @@ -3988,32 +3699,6 @@ export const EcsFlat = { short: 'List of imported element names and types.', type: 'flattened', }, - 'file.elf.imports_names_entropy': { - dashed_name: 'file-elf-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'file.elf.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'file.elf.imports_names_var_entropy': { - dashed_name: 'file-elf-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'file.elf.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'file.elf.sections': { dashed_name: 'file-elf-sections', description: @@ -4110,18 +3795,6 @@ export const EcsFlat = { short: 'ELF Section List type.', type: 'keyword', }, - 'file.elf.sections.var_entropy': { - dashed_name: 'file-elf-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'file.elf.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, 'file.elf.sections.virtual_address': { dashed_name: 'file-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -4352,284 +4025,86 @@ export const EcsFlat = { short: 'Inode representing the file in the filesystem.', type: 'keyword', }, - 'file.macho.go_import_hash': { - dashed_name: 'file-macho-go-import-hash', + 'file.mime_type': { + dashed_name: 'file-mime-type', description: - 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'file.macho.go_import_hash', + 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', + flat_name: 'file.mime_type', ignore_above: 1024, level: 'extended', - name: 'go_import_hash', + name: 'mime_type', normalize: [], - original_fieldset: 'macho', - short: 'A hash of the Go language imports in a Mach-O file.', + short: 'Media type of file, document, or arrangement of bytes.', type: 'keyword', }, - 'file.macho.go_imports': { - dashed_name: 'file-macho-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'file.macho.go_imports', + 'file.mode': { + dashed_name: 'file-mode', + description: 'Mode of the file in octal representation.', + example: '0640', + flat_name: 'file.mode', + ignore_above: 1024, level: 'extended', - name: 'go_imports', + name: 'mode', normalize: [], - original_fieldset: 'macho', - short: 'List of imported Go language element names and types.', - type: 'flattened', + short: 'Mode of the file in octal representation.', + type: 'keyword', }, - 'file.macho.go_imports_names_entropy': { - dashed_name: 'file-macho-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'file.macho.go_imports_names_entropy', - format: 'number', + 'file.mtime': { + dashed_name: 'file-mtime', + description: 'Last time the file content was modified.', + flat_name: 'file.mtime', level: 'extended', - name: 'go_imports_names_entropy', + name: 'mtime', normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', + short: 'Last time the file content was modified.', + type: 'date', }, - 'file.macho.go_imports_names_var_entropy': { - dashed_name: 'file-macho-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'file.macho.go_imports_names_var_entropy', - format: 'number', + 'file.name': { + dashed_name: 'file-name', + description: 'Name of the file including the extension, without the directory.', + example: 'example.png', + flat_name: 'file.name', + ignore_above: 1024, level: 'extended', - name: 'go_imports_names_var_entropy', + name: 'name', normalize: [], - original_fieldset: 'macho', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', + short: 'Name of the file including the extension, without the directory.', + type: 'keyword', }, - 'file.macho.go_stripped': { - dashed_name: 'file-macho-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'file.macho.go_stripped', + 'file.owner': { + dashed_name: 'file-owner', + description: "File owner's username.", + example: 'alice', + flat_name: 'file.owner', + ignore_above: 1024, level: 'extended', - name: 'go_stripped', + name: 'owner', normalize: [], - original_fieldset: 'macho', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', + short: "File owner's username.", + type: 'keyword', }, - 'file.macho.import_hash': { - dashed_name: 'file-macho-import-hash', + 'file.path': { + dashed_name: 'file-path', description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'file.macho.import_hash', + 'Full path to the file, including the file name. It should include the drive letter, when appropriate.', + example: '/home/alice/example.png', + flat_name: 'file.path', ignore_above: 1024, level: 'extended', - name: 'import_hash', + multi_fields: [{ flat_name: 'file.path.text', name: 'text', type: 'match_only_text' }], + name: 'path', normalize: [], - original_fieldset: 'macho', - short: 'A hash of the imports in a Mach-O file.', + short: 'Full path to the file, including the file name.', type: 'keyword', }, - 'file.macho.imports': { - dashed_name: 'file-macho-imports', - description: 'List of imported element names and types.', - flat_name: 'file.macho.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'macho', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'file.macho.imports_names_entropy': { - dashed_name: 'file-macho-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'file.macho.imports_names_entropy', - format: 'number', + 'file.pe.architecture': { + dashed_name: 'file-pe-architecture', + description: 'CPU architecture target for the file.', + example: 'x64', + flat_name: 'file.pe.architecture', + ignore_above: 1024, level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'file.macho.imports_names_var_entropy': { - dashed_name: 'file-macho-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'file.macho.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'macho', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'file.macho.sections': { - dashed_name: 'file-macho-sections', - description: - 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', - flat_name: 'file.macho.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'macho', - short: 'Section information of the Mach-O file.', - type: 'nested', - }, - 'file.macho.sections.entropy': { - dashed_name: 'file-macho-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'file.macho.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'file.macho.sections.name': { - dashed_name: 'file-macho-sections-name', - description: 'Mach-O Section List name.', - flat_name: 'file.macho.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List name.', - type: 'keyword', - }, - 'file.macho.sections.physical_size': { - dashed_name: 'file-macho-sections-physical-size', - description: 'Mach-O Section List physical size.', - flat_name: 'file.macho.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List physical size.', - type: 'long', - }, - 'file.macho.sections.var_entropy': { - dashed_name: 'file-macho-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'file.macho.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'file.macho.sections.virtual_size': { - dashed_name: 'file-macho-sections-virtual-size', - description: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'file.macho.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, - 'file.macho.symhash': { - dashed_name: 'file-macho-symhash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', - example: 'd3ccf195b62a9279c3c19af1080497ec', - flat_name: 'file.macho.symhash', - ignore_above: 1024, - level: 'extended', - name: 'symhash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, - 'file.mime_type': { - dashed_name: 'file-mime-type', - description: - 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', - flat_name: 'file.mime_type', - ignore_above: 1024, - level: 'extended', - name: 'mime_type', - normalize: [], - short: 'Media type of file, document, or arrangement of bytes.', - type: 'keyword', - }, - 'file.mode': { - dashed_name: 'file-mode', - description: 'Mode of the file in octal representation.', - example: '0640', - flat_name: 'file.mode', - ignore_above: 1024, - level: 'extended', - name: 'mode', - normalize: [], - short: 'Mode of the file in octal representation.', - type: 'keyword', - }, - 'file.mtime': { - dashed_name: 'file-mtime', - description: 'Last time the file content was modified.', - flat_name: 'file.mtime', - level: 'extended', - name: 'mtime', - normalize: [], - short: 'Last time the file content was modified.', - type: 'date', - }, - 'file.name': { - dashed_name: 'file-name', - description: 'Name of the file including the extension, without the directory.', - example: 'example.png', - flat_name: 'file.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - short: 'Name of the file including the extension, without the directory.', - type: 'keyword', - }, - 'file.owner': { - dashed_name: 'file-owner', - description: "File owner's username.", - example: 'alice', - flat_name: 'file.owner', - ignore_above: 1024, - level: 'extended', - name: 'owner', - normalize: [], - short: "File owner's username.", - type: 'keyword', - }, - 'file.path': { - dashed_name: 'file-path', - description: - 'Full path to the file, including the file name. It should include the drive letter, when appropriate.', - example: '/home/alice/example.png', - flat_name: 'file.path', - ignore_above: 1024, - level: 'extended', - multi_fields: [{ flat_name: 'file.path.text', name: 'text', type: 'match_only_text' }], - name: 'path', - normalize: [], - short: 'Full path to the file, including the file name.', - type: 'keyword', - }, - 'file.pe.architecture': { - dashed_name: 'file-pe-architecture', - description: 'CPU architecture target for the file.', - example: 'x64', - flat_name: 'file.pe.architecture', - ignore_above: 1024, - level: 'extended', - name: 'architecture', + name: 'architecture', normalize: [], original_fieldset: 'pe', short: 'CPU architecture target for the file.', @@ -4674,67 +4149,6 @@ export const EcsFlat = { short: 'Process name.', type: 'keyword', }, - 'file.pe.go_import_hash': { - dashed_name: 'file-pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'file.pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'file.pe.go_imports': { - dashed_name: 'file-pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'file.pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'pe', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'file.pe.go_imports_names_entropy': { - dashed_name: 'file-pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'file.pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'file.pe.go_imports_names_var_entropy': { - dashed_name: 'file-pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'file.pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'file.pe.go_stripped': { - dashed_name: 'file-pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'file.pe.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'pe', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'file.pe.imphash': { dashed_name: 'file-pe-imphash', description: @@ -4749,57 +4163,6 @@ export const EcsFlat = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'file.pe.import_hash': { - dashed_name: 'file-pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'file.pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'file.pe.imports': { - dashed_name: 'file-pe-imports', - description: 'List of imported element names and types.', - flat_name: 'file.pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'pe', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'file.pe.imports_names_entropy': { - dashed_name: 'file-pe-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'file.pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'file.pe.imports_names_var_entropy': { - dashed_name: 'file-pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'file.pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'file.pe.original_file_name': { dashed_name: 'file-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -4840,78 +4203,6 @@ export const EcsFlat = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'file.pe.sections': { - dashed_name: 'file-pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'file.pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'pe', - short: 'Section information of the PE file.', - type: 'nested', - }, - 'file.pe.sections.entropy': { - dashed_name: 'file-pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'file.pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'file.pe.sections.name': { - dashed_name: 'file-pe-sections-name', - description: 'PE Section List name.', - flat_name: 'file.pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List name.', - type: 'keyword', - }, - 'file.pe.sections.physical_size': { - dashed_name: 'file-pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'file.pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List physical size.', - type: 'long', - }, - 'file.pe.sections.var_entropy': { - dashed_name: 'file-pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'file.pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'file.pe.sections.virtual_size': { - dashed_name: 'file-pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'file.pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, 'file.size': { dashed_name: 'file-size', description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', @@ -5580,7 +4871,7 @@ export const EcsFlat = { 'host.name': { dashed_name: 'host-name', description: - 'Name of the host.\nIt can contain what hostname returns on Unix systems, the fully qualified domain name (FQDN), or a name specified by the user. The recommended value is the lowercase FQDN of the host.', + 'Name of the host.\nIt can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.', flat_name: 'host.name', ignore_above: 1024, level: 'core', @@ -7099,18 +6390,6 @@ export const EcsFlat = { short: 'Organization affected by the event (for multi-tenant orchestrator setups).', type: 'keyword', }, - 'orchestrator.resource.annotation': { - dashed_name: 'orchestrator-resource-annotation', - description: 'The list of annotations added to the resource.', - example: "['key1:value1', 'key2:value2', 'key3:value3']", - flat_name: 'orchestrator.resource.annotation', - ignore_above: 1024, - level: 'extended', - name: 'resource.annotation', - normalize: ['array'], - short: 'The list of annotations added to the resource.', - type: 'keyword', - }, 'orchestrator.resource.id': { dashed_name: 'orchestrator-resource-id', description: 'Unique ID of the resource being acted upon.', @@ -7133,18 +6412,6 @@ export const EcsFlat = { short: 'IP address assigned to the resource associated with the event being observed.', type: 'ip', }, - 'orchestrator.resource.label': { - dashed_name: 'orchestrator-resource-label', - description: 'The list of labels added to the resource.', - example: "['key1:value1', 'key2:value2', 'key3:value3']", - flat_name: 'orchestrator.resource.label', - ignore_above: 1024, - level: 'extended', - name: 'resource.label', - normalize: ['array'], - short: 'The list of labels added to the resource.', - type: 'keyword', - }, 'orchestrator.resource.name': { dashed_name: 'orchestrator-resource-name', description: 'Name of the resource being acted upon.', @@ -7605,77 +6872,16 @@ export const EcsFlat = { short: 'List of exported element names and types.', type: 'flattened', }, - 'process.elf.go_import_hash': { - dashed_name: 'process-elf-go-import-hash', - description: - 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'process.elf.go_import_hash', + 'process.elf.header.abi_version': { + dashed_name: 'process-elf-header-abi-version', + description: 'Version of the ELF Application Binary Interface (ABI).', + flat_name: 'process.elf.header.abi_version', ignore_above: 1024, level: 'extended', - name: 'go_import_hash', + name: 'header.abi_version', normalize: [], original_fieldset: 'elf', - short: 'A hash of the Go language imports in an ELF file.', - type: 'keyword', - }, - 'process.elf.go_imports': { - dashed_name: 'process-elf-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'process.elf.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'elf', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'process.elf.go_imports_names_entropy': { - dashed_name: 'process-elf-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.elf.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.elf.go_imports_names_var_entropy': { - dashed_name: 'process-elf-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.elf.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.elf.go_stripped': { - dashed_name: 'process-elf-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'process.elf.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'elf', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, - 'process.elf.header.abi_version': { - dashed_name: 'process-elf-header-abi-version', - description: 'Version of the ELF Application Binary Interface (ABI).', - flat_name: 'process.elf.header.abi_version', - ignore_above: 1024, - level: 'extended', - name: 'header.abi_version', - normalize: [], - original_fieldset: 'elf', - short: 'Version of the ELF Application Binary Interface (ABI).', + short: 'Version of the ELF Application Binary Interface (ABI).', type: 'keyword', }, 'process.elf.header.class': { @@ -7762,20 +6968,6 @@ export const EcsFlat = { short: 'Version of the ELF header.', type: 'keyword', }, - 'process.elf.import_hash': { - dashed_name: 'process-elf-import-hash', - description: - 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'process.elf.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the imports in an ELF file.', - type: 'keyword', - }, 'process.elf.imports': { dashed_name: 'process-elf-imports', description: 'List of imported element names and types.', @@ -7787,32 +6979,6 @@ export const EcsFlat = { short: 'List of imported element names and types.', type: 'flattened', }, - 'process.elf.imports_names_entropy': { - dashed_name: 'process-elf-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.elf.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.elf.imports_names_var_entropy': { - dashed_name: 'process-elf-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.elf.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'process.elf.sections': { dashed_name: 'process-elf-sections', description: @@ -7909,18 +7075,6 @@ export const EcsFlat = { short: 'ELF Section List type.', type: 'keyword', }, - 'process.elf.sections.var_entropy': { - dashed_name: 'process-elf-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'process.elf.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, 'process.elf.sections.virtual_address': { dashed_name: 'process-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -8302,20 +7456,6 @@ export const EcsFlat = { short: 'The time the process started.', type: 'date', }, - 'process.entry_leader.parent.session_leader.vpid': { - dashed_name: 'process-entry-leader-parent-session-leader-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.entry_leader.parent.session_leader.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.entry_leader.parent.start': { dashed_name: 'process-entry-leader-parent-start', description: 'The time the process started.', @@ -8328,20 +7468,6 @@ export const EcsFlat = { short: 'The time the process started.', type: 'date', }, - 'process.entry_leader.parent.vpid': { - dashed_name: 'process-entry-leader-parent-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.entry_leader.parent.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.entry_leader.pid': { dashed_name: 'process-entry-leader-pid', description: 'Process id.', @@ -8590,20 +7716,6 @@ export const EcsFlat = { short: 'Short name or login of the user.', type: 'keyword', }, - 'process.entry_leader.vpid': { - dashed_name: 'process-entry-leader-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.entry_leader.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.entry_leader.working_directory': { dashed_name: 'process-entry-leader-working-directory', description: 'The working directory of the process.', @@ -9055,20 +8167,6 @@ export const EcsFlat = { short: 'Short name or login of the user.', type: 'keyword', }, - 'process.group_leader.vpid': { - dashed_name: 'process-group-leader-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.group_leader.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.group_leader.working_directory': { dashed_name: 'process-group-leader-working-directory', description: 'The working directory of the process.', @@ -9294,204 +8392,6 @@ export const EcsFlat = { short: 'The type of object on which the IO action (read or write) was taken.', type: 'keyword', }, - 'process.macho.go_import_hash': { - dashed_name: 'process-macho-go-import-hash', - description: - 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'process.macho.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the Go language imports in a Mach-O file.', - type: 'keyword', - }, - 'process.macho.go_imports': { - dashed_name: 'process-macho-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'process.macho.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'macho', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'process.macho.go_imports_names_entropy': { - dashed_name: 'process-macho-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.macho.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.macho.go_imports_names_var_entropy': { - dashed_name: 'process-macho-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.macho.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.macho.go_stripped': { - dashed_name: 'process-macho-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'process.macho.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'macho', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, - 'process.macho.import_hash': { - dashed_name: 'process-macho-import-hash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'process.macho.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, - 'process.macho.imports': { - dashed_name: 'process-macho-imports', - description: 'List of imported element names and types.', - flat_name: 'process.macho.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'macho', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'process.macho.imports_names_entropy': { - dashed_name: 'process-macho-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.macho.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.macho.imports_names_var_entropy': { - dashed_name: 'process-macho-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.macho.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'macho', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.macho.sections': { - dashed_name: 'process-macho-sections', - description: - 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', - flat_name: 'process.macho.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'macho', - short: 'Section information of the Mach-O file.', - type: 'nested', - }, - 'process.macho.sections.entropy': { - dashed_name: 'process-macho-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'process.macho.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.macho.sections.name': { - dashed_name: 'process-macho-sections-name', - description: 'Mach-O Section List name.', - flat_name: 'process.macho.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List name.', - type: 'keyword', - }, - 'process.macho.sections.physical_size': { - dashed_name: 'process-macho-sections-physical-size', - description: 'Mach-O Section List physical size.', - flat_name: 'process.macho.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List physical size.', - type: 'long', - }, - 'process.macho.sections.var_entropy': { - dashed_name: 'process-macho-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'process.macho.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.macho.sections.virtual_size': { - dashed_name: 'process-macho-sections-virtual-size', - description: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'process.macho.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, - 'process.macho.symhash': { - dashed_name: 'process-macho-symhash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', - example: 'd3ccf195b62a9279c3c19af1080497ec', - flat_name: 'process.macho.symhash', - ignore_above: 1024, - level: 'extended', - name: 'symhash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, 'process.name': { dashed_name: 'process-name', description: 'Process name.\nSometimes called program name or similar.', @@ -9733,67 +8633,6 @@ export const EcsFlat = { short: 'List of exported element names and types.', type: 'flattened', }, - 'process.parent.elf.go_import_hash': { - dashed_name: 'process-parent-elf-go-import-hash', - description: - 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'process.parent.elf.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the Go language imports in an ELF file.', - type: 'keyword', - }, - 'process.parent.elf.go_imports': { - dashed_name: 'process-parent-elf-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'process.parent.elf.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'elf', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'process.parent.elf.go_imports_names_entropy': { - dashed_name: 'process-parent-elf-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.parent.elf.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.parent.elf.go_imports_names_var_entropy': { - dashed_name: 'process-parent-elf-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.parent.elf.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.parent.elf.go_stripped': { - dashed_name: 'process-parent-elf-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'process.parent.elf.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'elf', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'process.parent.elf.header.abi_version': { dashed_name: 'process-parent-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -9890,20 +8729,6 @@ export const EcsFlat = { short: 'Version of the ELF header.', type: 'keyword', }, - 'process.parent.elf.import_hash': { - dashed_name: 'process-parent-elf-import-hash', - description: - 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'process.parent.elf.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the imports in an ELF file.', - type: 'keyword', - }, 'process.parent.elf.imports': { dashed_name: 'process-parent-elf-imports', description: 'List of imported element names and types.', @@ -9915,32 +8740,6 @@ export const EcsFlat = { short: 'List of imported element names and types.', type: 'flattened', }, - 'process.parent.elf.imports_names_entropy': { - dashed_name: 'process-parent-elf-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.parent.elf.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.parent.elf.imports_names_var_entropy': { - dashed_name: 'process-parent-elf-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.parent.elf.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'process.parent.elf.sections': { dashed_name: 'process-parent-elf-sections', description: @@ -10037,18 +8836,6 @@ export const EcsFlat = { short: 'ELF Section List type.', type: 'keyword', }, - 'process.parent.elf.sections.var_entropy': { - dashed_name: 'process-parent-elf-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'process.parent.elf.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, 'process.parent.elf.sections.virtual_address': { dashed_name: 'process-parent-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -10255,20 +9042,6 @@ export const EcsFlat = { short: 'The time the process started.', type: 'date', }, - 'process.parent.group_leader.vpid': { - dashed_name: 'process-parent-group-leader-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.parent.group_leader.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.parent.hash.md5': { dashed_name: 'process-parent-hash-md5', description: 'MD5 hash.', @@ -10366,204 +9139,6 @@ export const EcsFlat = { short: 'Whether the process is connected to an interactive shell.', type: 'boolean', }, - 'process.parent.macho.go_import_hash': { - dashed_name: 'process-parent-macho-go-import-hash', - description: - 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'process.parent.macho.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the Go language imports in a Mach-O file.', - type: 'keyword', - }, - 'process.parent.macho.go_imports': { - dashed_name: 'process-parent-macho-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'process.parent.macho.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'macho', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'process.parent.macho.go_imports_names_entropy': { - dashed_name: 'process-parent-macho-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.parent.macho.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.parent.macho.go_imports_names_var_entropy': { - dashed_name: 'process-parent-macho-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.parent.macho.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.parent.macho.go_stripped': { - dashed_name: 'process-parent-macho-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'process.parent.macho.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'macho', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, - 'process.parent.macho.import_hash': { - dashed_name: 'process-parent-macho-import-hash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'process.parent.macho.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, - 'process.parent.macho.imports': { - dashed_name: 'process-parent-macho-imports', - description: 'List of imported element names and types.', - flat_name: 'process.parent.macho.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'macho', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'process.parent.macho.imports_names_entropy': { - dashed_name: 'process-parent-macho-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.parent.macho.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.parent.macho.imports_names_var_entropy': { - dashed_name: 'process-parent-macho-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.parent.macho.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'macho', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.parent.macho.sections': { - dashed_name: 'process-parent-macho-sections', - description: - 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', - flat_name: 'process.parent.macho.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'macho', - short: 'Section information of the Mach-O file.', - type: 'nested', - }, - 'process.parent.macho.sections.entropy': { - dashed_name: 'process-parent-macho-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'process.parent.macho.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.parent.macho.sections.name': { - dashed_name: 'process-parent-macho-sections-name', - description: 'Mach-O Section List name.', - flat_name: 'process.parent.macho.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List name.', - type: 'keyword', - }, - 'process.parent.macho.sections.physical_size': { - dashed_name: 'process-parent-macho-sections-physical-size', - description: 'Mach-O Section List physical size.', - flat_name: 'process.parent.macho.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List physical size.', - type: 'long', - }, - 'process.parent.macho.sections.var_entropy': { - dashed_name: 'process-parent-macho-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'process.parent.macho.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.parent.macho.sections.virtual_size': { - dashed_name: 'process-parent-macho-sections-virtual-size', - description: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'process.parent.macho.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, - 'process.parent.macho.symhash': { - dashed_name: 'process-parent-macho-symhash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', - example: 'd3ccf195b62a9279c3c19af1080497ec', - flat_name: 'process.parent.macho.symhash', - ignore_above: 1024, - level: 'extended', - name: 'symhash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, 'process.parent.name': { dashed_name: 'process-parent-name', description: 'Process name.\nSometimes called program name or similar.', @@ -10636,67 +9211,6 @@ export const EcsFlat = { short: 'Process name.', type: 'keyword', }, - 'process.parent.pe.go_import_hash': { - dashed_name: 'process-parent-pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'process.parent.pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'process.parent.pe.go_imports': { - dashed_name: 'process-parent-pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'process.parent.pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'pe', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'process.parent.pe.go_imports_names_entropy': { - dashed_name: 'process-parent-pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.parent.pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.parent.pe.go_imports_names_var_entropy': { - dashed_name: 'process-parent-pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.parent.pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.parent.pe.go_stripped': { - dashed_name: 'process-parent-pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'process.parent.pe.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'pe', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'process.parent.pe.imphash': { dashed_name: 'process-parent-pe-imphash', description: @@ -10711,57 +9225,6 @@ export const EcsFlat = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'process.parent.pe.import_hash': { - dashed_name: 'process-parent-pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'process.parent.pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'process.parent.pe.imports': { - dashed_name: 'process-parent-pe-imports', - description: 'List of imported element names and types.', - flat_name: 'process.parent.pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'pe', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'process.parent.pe.imports_names_entropy': { - dashed_name: 'process-parent-pe-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.parent.pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.parent.pe.imports_names_var_entropy': { - dashed_name: 'process-parent-pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.parent.pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'process.parent.pe.original_file_name': { dashed_name: 'process-parent-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -10802,78 +9265,6 @@ export const EcsFlat = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'process.parent.pe.sections': { - dashed_name: 'process-parent-pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'process.parent.pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'pe', - short: 'Section information of the PE file.', - type: 'nested', - }, - 'process.parent.pe.sections.entropy': { - dashed_name: 'process-parent-pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'process.parent.pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.parent.pe.sections.name': { - dashed_name: 'process-parent-pe-sections-name', - description: 'PE Section List name.', - flat_name: 'process.parent.pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List name.', - type: 'keyword', - }, - 'process.parent.pe.sections.physical_size': { - dashed_name: 'process-parent-pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'process.parent.pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List physical size.', - type: 'long', - }, - 'process.parent.pe.sections.var_entropy': { - dashed_name: 'process-parent-pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'process.parent.pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.parent.pe.sections.virtual_size': { - dashed_name: 'process-parent-pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'process.parent.pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, 'process.parent.pgid': { dashed_name: 'process-parent-pgid', description: @@ -11040,44 +9431,14 @@ export const EcsFlat = { }, 'process.parent.supplemental_groups.name': { dashed_name: 'process-parent-supplemental-groups-name', - description: 'Name of the group.', - flat_name: 'process.parent.supplemental_groups.name', - ignore_above: 1024, - level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.parent.thread.capabilities.effective': { - dashed_name: 'process-parent-thread-capabilities-effective', - description: - 'This is the set of capabilities used by the kernel to perform permission checks for the thread.', - example: '["CAP_BPF", "CAP_SYS_ADMIN"]', - flat_name: 'process.parent.thread.capabilities.effective', - ignore_above: 1024, - level: 'extended', - name: 'thread.capabilities.effective', - normalize: ['array'], - original_fieldset: 'process', - pattern: '^(CAP_[A-Z_]+|\\d+)$', - short: 'Array of capabilities used for permission checks.', - type: 'keyword', - }, - 'process.parent.thread.capabilities.permitted': { - dashed_name: 'process-parent-thread-capabilities-permitted', - description: - 'This is a limiting superset for the effective capabilities that the thread may assume.', - example: '["CAP_BPF", "CAP_SYS_ADMIN"]', - flat_name: 'process.parent.thread.capabilities.permitted', + description: 'Name of the group.', + flat_name: 'process.parent.supplemental_groups.name', ignore_above: 1024, level: 'extended', - name: 'thread.capabilities.permitted', - normalize: ['array'], - original_fieldset: 'process', - pattern: '^(CAP_[A-Z_]+|\\d+)$', - short: 'Array of capabilities a thread could assume.', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', type: 'keyword', }, 'process.parent.thread.id': { @@ -11209,20 +9570,6 @@ export const EcsFlat = { short: 'Short name or login of the user.', type: 'keyword', }, - 'process.parent.vpid': { - dashed_name: 'process-parent-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.parent.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.parent.working_directory': { dashed_name: 'process-parent-working-directory', description: 'The working directory of the process.', @@ -11295,67 +9642,6 @@ export const EcsFlat = { short: 'Process name.', type: 'keyword', }, - 'process.pe.go_import_hash': { - dashed_name: 'process-pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'process.pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'process.pe.go_imports': { - dashed_name: 'process-pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'process.pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'pe', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'process.pe.go_imports_names_entropy': { - dashed_name: 'process-pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.pe.go_imports_names_var_entropy': { - dashed_name: 'process-pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.pe.go_stripped': { - dashed_name: 'process-pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'process.pe.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'pe', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'process.pe.imphash': { dashed_name: 'process-pe-imphash', description: @@ -11370,57 +9656,6 @@ export const EcsFlat = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'process.pe.import_hash': { - dashed_name: 'process-pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'process.pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'process.pe.imports': { - dashed_name: 'process-pe-imports', - description: 'List of imported element names and types.', - flat_name: 'process.pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'pe', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'process.pe.imports_names_entropy': { - dashed_name: 'process-pe-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.pe.imports_names_var_entropy': { - dashed_name: 'process-pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'process.pe.original_file_name': { dashed_name: 'process-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -11461,78 +9696,6 @@ export const EcsFlat = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'process.pe.sections': { - dashed_name: 'process-pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'process.pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'pe', - short: 'Section information of the PE file.', - type: 'nested', - }, - 'process.pe.sections.entropy': { - dashed_name: 'process-pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'process.pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.pe.sections.name': { - dashed_name: 'process-pe-sections-name', - description: 'PE Section List name.', - flat_name: 'process.pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List name.', - type: 'keyword', - }, - 'process.pe.sections.physical_size': { - dashed_name: 'process-pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'process.pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List physical size.', - type: 'long', - }, - 'process.pe.sections.var_entropy': { - dashed_name: 'process-pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'process.pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.pe.sections.virtual_size': { - dashed_name: 'process-pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'process.pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, 'process.pgid': { dashed_name: 'process-pgid', description: @@ -11922,20 +10085,6 @@ export const EcsFlat = { short: 'The time the process started.', type: 'date', }, - 'process.session_leader.parent.session_leader.vpid': { - dashed_name: 'process-session-leader-parent-session-leader-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.session_leader.parent.session_leader.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.session_leader.parent.start': { dashed_name: 'process-session-leader-parent-start', description: 'The time the process started.', @@ -11948,20 +10097,6 @@ export const EcsFlat = { short: 'The time the process started.', type: 'date', }, - 'process.session_leader.parent.vpid': { - dashed_name: 'process-session-leader-parent-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.session_leader.parent.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.session_leader.pid': { dashed_name: 'process-session-leader-pid', description: 'Process id.', @@ -12210,20 +10345,6 @@ export const EcsFlat = { short: 'Short name or login of the user.', type: 'keyword', }, - 'process.session_leader.vpid': { - dashed_name: 'process-session-leader-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.session_leader.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.session_leader.working_directory': { dashed_name: 'process-session-leader-working-directory', description: 'The working directory of the process.', @@ -12279,34 +10400,6 @@ export const EcsFlat = { short: 'Name of the group.', type: 'keyword', }, - 'process.thread.capabilities.effective': { - dashed_name: 'process-thread-capabilities-effective', - description: - 'This is the set of capabilities used by the kernel to perform permission checks for the thread.', - example: '["CAP_BPF", "CAP_SYS_ADMIN"]', - flat_name: 'process.thread.capabilities.effective', - ignore_above: 1024, - level: 'extended', - name: 'thread.capabilities.effective', - normalize: ['array'], - pattern: '^(CAP_[A-Z_]+|\\d+)$', - short: 'Array of capabilities used for permission checks.', - type: 'keyword', - }, - 'process.thread.capabilities.permitted': { - dashed_name: 'process-thread-capabilities-permitted', - description: - 'This is a limiting superset for the effective capabilities that the thread may assume.', - example: '["CAP_BPF", "CAP_SYS_ADMIN"]', - flat_name: 'process.thread.capabilities.permitted', - ignore_above: 1024, - level: 'extended', - name: 'thread.capabilities.permitted', - normalize: ['array'], - pattern: '^(CAP_[A-Z_]+|\\d+)$', - short: 'Array of capabilities a thread could assume.', - type: 'keyword', - }, 'process.thread.id': { dashed_name: 'process-thread-id', description: 'Thread ID.', @@ -12455,19 +10548,6 @@ export const EcsFlat = { short: 'Short name or login of the user.', type: 'keyword', }, - 'process.vpid': { - dashed_name: 'process-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - short: 'Virtual process id.', - type: 'long', - }, 'process.working_directory': { dashed_name: 'process-working-directory', description: 'The working directory of the process.', @@ -14508,67 +12588,6 @@ export const EcsFlat = { short: 'List of exported element names and types.', type: 'flattened', }, - 'threat.enrichments.indicator.file.elf.go_import_hash': { - dashed_name: 'threat-enrichments-indicator-file-elf-go-import-hash', - description: - 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'threat.enrichments.indicator.file.elf.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the Go language imports in an ELF file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.go_imports': { - dashed_name: 'threat-enrichments-indicator-file-elf-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'threat.enrichments.indicator.file.elf.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'elf', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'threat.enrichments.indicator.file.elf.go_imports_names_entropy': { - dashed_name: 'threat-enrichments-indicator-file-elf-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.enrichments.indicator.file.elf.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.enrichments.indicator.file.elf.go_imports_names_var_entropy': { - dashed_name: 'threat-enrichments-indicator-file-elf-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.enrichments.indicator.file.elf.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.enrichments.indicator.file.elf.go_stripped': { - dashed_name: 'threat-enrichments-indicator-file-elf-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'threat.enrichments.indicator.file.elf.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'elf', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'threat.enrichments.indicator.file.elf.header.abi_version': { dashed_name: 'threat-enrichments-indicator-file-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -14665,20 +12684,6 @@ export const EcsFlat = { short: 'Version of the ELF header.', type: 'keyword', }, - 'threat.enrichments.indicator.file.elf.import_hash': { - dashed_name: 'threat-enrichments-indicator-file-elf-import-hash', - description: - 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'threat.enrichments.indicator.file.elf.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the imports in an ELF file.', - type: 'keyword', - }, 'threat.enrichments.indicator.file.elf.imports': { dashed_name: 'threat-enrichments-indicator-file-elf-imports', description: 'List of imported element names and types.', @@ -14690,32 +12695,6 @@ export const EcsFlat = { short: 'List of imported element names and types.', type: 'flattened', }, - 'threat.enrichments.indicator.file.elf.imports_names_entropy': { - dashed_name: 'threat-enrichments-indicator-file-elf-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.enrichments.indicator.file.elf.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'threat.enrichments.indicator.file.elf.imports_names_var_entropy': { - dashed_name: 'threat-enrichments-indicator-file-elf-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.enrichments.indicator.file.elf.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'threat.enrichments.indicator.file.elf.sections': { dashed_name: 'threat-enrichments-indicator-file-elf-sections', description: @@ -14812,18 +12791,6 @@ export const EcsFlat = { short: 'ELF Section List type.', type: 'keyword', }, - 'threat.enrichments.indicator.file.elf.sections.var_entropy': { - dashed_name: 'threat-enrichments-indicator-file-elf-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'threat.enrichments.indicator.file.elf.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, 'threat.enrichments.indicator.file.elf.sections.virtual_address': { dashed_name: 'threat-enrichments-indicator-file-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -15183,78 +13150,17 @@ export const EcsFlat = { type: 'keyword', }, 'threat.enrichments.indicator.file.pe.file_version': { - dashed_name: 'threat-enrichments-indicator-file-pe-file-version', - description: 'Internal version of the file, provided at compile-time.', - example: '6.3.9600.17415', - flat_name: 'threat.enrichments.indicator.file.pe.file_version', - ignore_above: 1024, - level: 'extended', - name: 'file_version', - normalize: [], - original_fieldset: 'pe', - short: 'Process name.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.go_import_hash': { - dashed_name: 'threat-enrichments-indicator-file-pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'threat.enrichments.indicator.file.pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.go_imports': { - dashed_name: 'threat-enrichments-indicator-file-pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'threat.enrichments.indicator.file.pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'pe', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'threat.enrichments.indicator.file.pe.go_imports_names_entropy': { - dashed_name: 'threat-enrichments-indicator-file-pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.enrichments.indicator.file.pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.enrichments.indicator.file.pe.go_imports_names_var_entropy': { - dashed_name: 'threat-enrichments-indicator-file-pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.enrichments.indicator.file.pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.enrichments.indicator.file.pe.go_stripped': { - dashed_name: 'threat-enrichments-indicator-file-pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'threat.enrichments.indicator.file.pe.go_stripped', + dashed_name: 'threat-enrichments-indicator-file-pe-file-version', + description: 'Internal version of the file, provided at compile-time.', + example: '6.3.9600.17415', + flat_name: 'threat.enrichments.indicator.file.pe.file_version', + ignore_above: 1024, level: 'extended', - name: 'go_stripped', + name: 'file_version', normalize: [], original_fieldset: 'pe', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', + short: 'Process name.', + type: 'keyword', }, 'threat.enrichments.indicator.file.pe.imphash': { dashed_name: 'threat-enrichments-indicator-file-pe-imphash', @@ -15270,57 +13176,6 @@ export const EcsFlat = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'threat.enrichments.indicator.file.pe.import_hash': { - dashed_name: 'threat-enrichments-indicator-file-pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'threat.enrichments.indicator.file.pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.imports': { - dashed_name: 'threat-enrichments-indicator-file-pe-imports', - description: 'List of imported element names and types.', - flat_name: 'threat.enrichments.indicator.file.pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'pe', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'threat.enrichments.indicator.file.pe.imports_names_entropy': { - dashed_name: 'threat-enrichments-indicator-file-pe-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.enrichments.indicator.file.pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'threat.enrichments.indicator.file.pe.imports_names_var_entropy': { - dashed_name: 'threat-enrichments-indicator-file-pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.enrichments.indicator.file.pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'threat.enrichments.indicator.file.pe.original_file_name': { dashed_name: 'threat-enrichments-indicator-file-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -15361,78 +13216,6 @@ export const EcsFlat = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'threat.enrichments.indicator.file.pe.sections': { - dashed_name: 'threat-enrichments-indicator-file-pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'threat.enrichments.indicator.file.pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'pe', - short: 'Section information of the PE file.', - type: 'nested', - }, - 'threat.enrichments.indicator.file.pe.sections.entropy': { - dashed_name: 'threat-enrichments-indicator-file-pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'threat.enrichments.indicator.file.pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'threat.enrichments.indicator.file.pe.sections.name': { - dashed_name: 'threat-enrichments-indicator-file-pe-sections-name', - description: 'PE Section List name.', - flat_name: 'threat.enrichments.indicator.file.pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List name.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.sections.physical_size': { - dashed_name: 'threat-enrichments-indicator-file-pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'threat.enrichments.indicator.file.pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List physical size.', - type: 'long', - }, - 'threat.enrichments.indicator.file.pe.sections.var_entropy': { - dashed_name: 'threat-enrichments-indicator-file-pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'threat.enrichments.indicator.file.pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'threat.enrichments.indicator.file.pe.sections.virtual_size': { - dashed_name: 'threat-enrichments-indicator-file-pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'threat.enrichments.indicator.file.pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, 'threat.enrichments.indicator.file.size': { dashed_name: 'threat-enrichments-indicator-file-size', description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', @@ -16019,31 +13802,6 @@ export const EcsFlat = { short: 'Date/time indicator was last updated.', type: 'date', }, - 'threat.enrichments.indicator.name': { - dashed_name: 'threat-enrichments-indicator-name', - description: 'The display name indicator in an UI friendly format', - example: '5.2.75.227', - expected_values: [ - '5.2.75.227', - '2a02:cf40:add:4002:91f2:a9b2:e09a:6fc6', - 'https://example.com/some/path', - 'example.com', - '373d34874d7bc89fd4cefa6272ee80bf', - 'b0e914d1bbe19433cc9df64ea1ca07fe77f7b150b511b786e46e007941a62bd7', - 'email@example.com', - 'HKLM\\\\SOFTWARE\\\\Microsoft\\\\Active', - 13335, - '00:00:5e:00:53:af', - 8008, - ], - flat_name: 'threat.enrichments.indicator.name', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.indicator.name', - normalize: [], - short: 'Indicator display name', - type: 'keyword', - }, 'threat.enrichments.indicator.port': { dashed_name: 'threat-enrichments-indicator-port', description: 'Identifies a threat indicator as a port number (irrespective of direction).', @@ -17267,67 +15025,6 @@ export const EcsFlat = { short: 'List of exported element names and types.', type: 'flattened', }, - 'threat.indicator.file.elf.go_import_hash': { - dashed_name: 'threat-indicator-file-elf-go-import-hash', - description: - 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'threat.indicator.file.elf.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the Go language imports in an ELF file.', - type: 'keyword', - }, - 'threat.indicator.file.elf.go_imports': { - dashed_name: 'threat-indicator-file-elf-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'threat.indicator.file.elf.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'elf', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'threat.indicator.file.elf.go_imports_names_entropy': { - dashed_name: 'threat-indicator-file-elf-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.indicator.file.elf.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.indicator.file.elf.go_imports_names_var_entropy': { - dashed_name: 'threat-indicator-file-elf-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.indicator.file.elf.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.indicator.file.elf.go_stripped': { - dashed_name: 'threat-indicator-file-elf-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'threat.indicator.file.elf.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'elf', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'threat.indicator.file.elf.header.abi_version': { dashed_name: 'threat-indicator-file-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -17424,20 +15121,6 @@ export const EcsFlat = { short: 'Version of the ELF header.', type: 'keyword', }, - 'threat.indicator.file.elf.import_hash': { - dashed_name: 'threat-indicator-file-elf-import-hash', - description: - 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'threat.indicator.file.elf.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the imports in an ELF file.', - type: 'keyword', - }, 'threat.indicator.file.elf.imports': { dashed_name: 'threat-indicator-file-elf-imports', description: 'List of imported element names and types.', @@ -17449,32 +15132,6 @@ export const EcsFlat = { short: 'List of imported element names and types.', type: 'flattened', }, - 'threat.indicator.file.elf.imports_names_entropy': { - dashed_name: 'threat-indicator-file-elf-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.indicator.file.elf.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'threat.indicator.file.elf.imports_names_var_entropy': { - dashed_name: 'threat-indicator-file-elf-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.indicator.file.elf.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'threat.indicator.file.elf.sections': { dashed_name: 'threat-indicator-file-elf-sections', description: @@ -17571,18 +15228,6 @@ export const EcsFlat = { short: 'ELF Section List type.', type: 'keyword', }, - 'threat.indicator.file.elf.sections.var_entropy': { - dashed_name: 'threat-indicator-file-elf-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'threat.indicator.file.elf.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, 'threat.indicator.file.elf.sections.virtual_address': { dashed_name: 'threat-indicator-file-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -17954,67 +15599,6 @@ export const EcsFlat = { short: 'Process name.', type: 'keyword', }, - 'threat.indicator.file.pe.go_import_hash': { - dashed_name: 'threat-indicator-file-pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'threat.indicator.file.pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'threat.indicator.file.pe.go_imports': { - dashed_name: 'threat-indicator-file-pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'threat.indicator.file.pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'pe', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'threat.indicator.file.pe.go_imports_names_entropy': { - dashed_name: 'threat-indicator-file-pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.indicator.file.pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.indicator.file.pe.go_imports_names_var_entropy': { - dashed_name: 'threat-indicator-file-pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.indicator.file.pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.indicator.file.pe.go_stripped': { - dashed_name: 'threat-indicator-file-pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'threat.indicator.file.pe.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'pe', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'threat.indicator.file.pe.imphash': { dashed_name: 'threat-indicator-file-pe-imphash', description: @@ -18029,57 +15613,6 @@ export const EcsFlat = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'threat.indicator.file.pe.import_hash': { - dashed_name: 'threat-indicator-file-pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'threat.indicator.file.pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'threat.indicator.file.pe.imports': { - dashed_name: 'threat-indicator-file-pe-imports', - description: 'List of imported element names and types.', - flat_name: 'threat.indicator.file.pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'pe', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'threat.indicator.file.pe.imports_names_entropy': { - dashed_name: 'threat-indicator-file-pe-imports-names-entropy', - description: 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.indicator.file.pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'threat.indicator.file.pe.imports_names_var_entropy': { - dashed_name: 'threat-indicator-file-pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.indicator.file.pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'threat.indicator.file.pe.original_file_name': { dashed_name: 'threat-indicator-file-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -18120,78 +15653,6 @@ export const EcsFlat = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'threat.indicator.file.pe.sections': { - dashed_name: 'threat-indicator-file-pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'threat.indicator.file.pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'pe', - short: 'Section information of the PE file.', - type: 'nested', - }, - 'threat.indicator.file.pe.sections.entropy': { - dashed_name: 'threat-indicator-file-pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'threat.indicator.file.pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'threat.indicator.file.pe.sections.name': { - dashed_name: 'threat-indicator-file-pe-sections-name', - description: 'PE Section List name.', - flat_name: 'threat.indicator.file.pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List name.', - type: 'keyword', - }, - 'threat.indicator.file.pe.sections.physical_size': { - dashed_name: 'threat-indicator-file-pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'threat.indicator.file.pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List physical size.', - type: 'long', - }, - 'threat.indicator.file.pe.sections.var_entropy': { - dashed_name: 'threat-indicator-file-pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'threat.indicator.file.pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'threat.indicator.file.pe.sections.virtual_size': { - dashed_name: 'threat-indicator-file-pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'threat.indicator.file.pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, 'threat.indicator.file.size': { dashed_name: 'threat-indicator-file-size', description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', @@ -18778,31 +16239,6 @@ export const EcsFlat = { short: 'Date/time indicator was last updated.', type: 'date', }, - 'threat.indicator.name': { - dashed_name: 'threat-indicator-name', - description: 'The display name indicator in an UI friendly format', - example: '5.2.75.227', - expected_values: [ - '5.2.75.227', - '2a02:cf40:add:4002:91f2:a9b2:e09a:6fc6', - 'https://example.com/some/path', - 'example.com', - '373d34874d7bc89fd4cefa6272ee80bf', - 'b0e914d1bbe19433cc9df64ea1ca07fe77f7b150b511b786e46e007941a62bd7', - 'email@example.com', - 'HKLM\\\\SOFTWARE\\\\Microsoft\\\\Active', - 13335, - '00:00:5e:00:53:af', - 8008, - ], - flat_name: 'threat.indicator.name', - ignore_above: 1024, - level: 'extended', - name: 'indicator.name', - normalize: [], - short: 'Indicator display name', - type: 'keyword', - }, 'threat.indicator.port': { dashed_name: 'threat-indicator-port', description: 'Identifies a threat indicator as a port number (irrespective of direction).', diff --git a/packages/kbn-ecs/generated/ecs_nested.ts b/packages/kbn-ecs/generated/ecs_nested.ts index 8dfd2aed9b60b..4ebcb5f4ef565 100644 --- a/packages/kbn-ecs/generated/ecs_nested.ts +++ b/packages/kbn-ecs/generated/ecs_nested.ts @@ -1478,16 +1478,6 @@ export const EcsNested = { short: 'Runtime managing this container.', type: 'keyword', }, - 'container.security_context.privileged': { - dashed_name: 'container-security-context-privileged', - description: 'Indicates whether the container is running in privileged mode.', - flat_name: 'container.security_context.privileged', - level: 'extended', - name: 'security_context.privileged', - normalize: [], - short: 'Indicates whether the container is running in privileged mode.', - type: 'boolean', - }, }, group: 2, name: 'container', @@ -2046,7 +2036,7 @@ export const EcsNested = { 'device.id': { dashed_name: 'device-id', description: - 'The unique identifier of a device. The identifier must not change across application sessions but stay fixed for an instance of a (mobile) device. \nOn iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application.\nFor GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user.', + 'The unique identifier of a device. The identifier must not change across application sessions but stay fixex for an instance of a (mobile) device. \nOn iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application.\nFor GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user.', example: '00000000-54b3-e7c7-0000-000046bffd97', flat_name: 'device.id', ignore_above: 1024, @@ -2384,67 +2374,6 @@ export const EcsNested = { short: 'Process name.', type: 'keyword', }, - 'dll.pe.go_import_hash': { - dashed_name: 'dll-pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'dll.pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'dll.pe.go_imports': { - dashed_name: 'dll-pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'dll.pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'pe', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'dll.pe.go_imports_names_entropy': { - dashed_name: 'dll-pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'dll.pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'dll.pe.go_imports_names_var_entropy': { - dashed_name: 'dll-pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'dll.pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'dll.pe.go_stripped': { - dashed_name: 'dll-pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'dll.pe.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'pe', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'dll.pe.imphash': { dashed_name: 'dll-pe-imphash', description: @@ -2459,58 +2388,6 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'dll.pe.import_hash': { - dashed_name: 'dll-pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'dll.pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'dll.pe.imports': { - dashed_name: 'dll-pe-imports', - description: 'List of imported element names and types.', - flat_name: 'dll.pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'pe', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'dll.pe.imports_names_entropy': { - dashed_name: 'dll-pe-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'dll.pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'dll.pe.imports_names_var_entropy': { - dashed_name: 'dll-pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'dll.pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'dll.pe.original_file_name': { dashed_name: 'dll-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -2551,78 +2428,6 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'dll.pe.sections': { - dashed_name: 'dll-pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'dll.pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'pe', - short: 'Section information of the PE file.', - type: 'nested', - }, - 'dll.pe.sections.entropy': { - dashed_name: 'dll-pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'dll.pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'dll.pe.sections.name': { - dashed_name: 'dll-pe-sections-name', - description: 'PE Section List name.', - flat_name: 'dll.pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List name.', - type: 'keyword', - }, - 'dll.pe.sections.physical_size': { - dashed_name: 'dll-pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'dll.pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List physical size.', - type: 'long', - }, - 'dll.pe.sections.var_entropy': { - dashed_name: 'dll-pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'dll.pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'dll.pe.sections.virtual_size': { - dashed_name: 'dll-pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'dll.pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, }, group: 2, name: 'dll', @@ -2975,62 +2780,6 @@ export const EcsNested = { short: 'List of exported element names and types.', type: 'flattened', }, - 'elf.go_import_hash': { - dashed_name: 'elf-go-import-hash', - description: - 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'elf.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - short: 'A hash of the Go language imports in an ELF file.', - type: 'keyword', - }, - 'elf.go_imports': { - dashed_name: 'elf-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'elf.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'elf.go_imports_names_entropy': { - dashed_name: 'elf-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'elf.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'elf.go_imports_names_var_entropy': { - dashed_name: 'elf-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'elf.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'elf.go_stripped': { - dashed_name: 'elf-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'elf.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'elf.header.abi_version': { dashed_name: 'elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -3119,19 +2868,6 @@ export const EcsNested = { short: 'Version of the ELF header.', type: 'keyword', }, - 'elf.import_hash': { - dashed_name: 'elf-import-hash', - description: - 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'elf.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - short: 'A hash of the imports in an ELF file.', - type: 'keyword', - }, 'elf.imports': { dashed_name: 'elf-imports', description: 'List of imported element names and types.', @@ -3142,31 +2878,6 @@ export const EcsNested = { short: 'List of imported element names and types.', type: 'flattened', }, - 'elf.imports_names_entropy': { - dashed_name: 'elf-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'elf.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'elf.imports_names_var_entropy': { - dashed_name: 'elf-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'elf.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'elf.sections': { dashed_name: 'elf-sections', description: @@ -3255,17 +2966,6 @@ export const EcsNested = { short: 'ELF Section List type.', type: 'keyword', }, - 'elf.sections.var_entropy': { - dashed_name: 'elf-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'elf.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, 'elf.sections.virtual_address': { dashed_name: 'elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -3816,24 +3516,6 @@ export const EcsNested = { }, 'event.category': { allowed_values: [ - { - description: - 'Events in this category annotate API calls that occured on a system. Typical sources for those events could be from the Operating System level through the native libraries (for example Windows Win32, Linux libc, etc.), or managed sources of events (such as ETW, syslog), but can also include network protocols (such as SOAP, RPC, Websocket, REST, etc.)', - expected_event_types: [ - 'access', - 'admin', - 'allowed', - 'change', - 'creation', - 'deletion', - 'denied', - 'end', - 'info', - 'start', - 'user', - ], - name: 'api', - }, { description: 'Events in this category are related to the challenge and response process in which credentials are supplied and verified to allow the creation of a session. Common sources for these logs are Windows event logs and ssh logs. Visualize and analyze events in this category to look for failed logins, and other authentication-related activity.', @@ -3867,7 +3549,7 @@ export const EcsNested = { { description: 'Relating to a set of information that has been created on, or has existed on a filesystem. Use this category of events to visualize and analyze the creation, access, and deletions of files. Events in this category can come from both host-based and network-based sources. An example source of a network-based detection of a file transfer would be the Zeek file.log.', - expected_event_types: ['access', 'change', 'creation', 'deletion', 'info'], + expected_event_types: ['change', 'creation', 'deletion', 'info'], name: 'file', }, { @@ -3896,12 +3578,6 @@ export const EcsNested = { expected_event_types: ['allowed', 'denied', 'info'], name: 'intrusion_detection', }, - { - description: - 'Events in this category refer to the loading of a library, such as (dll / so / dynlib), into a process. Use this category to visualize and analyze library loading related activity on hosts. Keep in mind that driver related activity will be captured under the "driver" category above.', - expected_event_types: ['start'], - name: 'library', - }, { description: 'Malware detection events and alerts. Use this category to visualize and analyze malware detections from EDR/EPP systems such as Elastic Endpoint Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems such as Suricata, or other sources of malware-related events such as Palo Alto Networks threat logs and Wildfire logs.', @@ -3994,7 +3670,7 @@ export const EcsNested = { 'event.created': { dashed_name: 'event-created', description: - "`event.created` contains the date/time when the event was first read by an agent, or by your pipeline.\nThis field is distinct from `@timestamp` in that `@timestamp` typically contain the time extracted from the original event.\nIn most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source.\nIn case the two timestamps are identical, `@timestamp` should be used.", + "event.created contains the date/time when the event was first read by an agent, or by your pipeline.\nThis field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event.\nIn most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source.\nIn case the two timestamps are identical, @timestamp should be used.", example: '2016-05-23T08:05:34.857Z', flat_name: 'event.created', level: 'core', @@ -4019,7 +3695,7 @@ export const EcsNested = { 'event.duration': { dashed_name: 'event-duration', description: - 'Duration of the event in nanoseconds.\nIf `event.start` and `event.end` are known this value should be the difference between the end and start time.', + 'Duration of the event in nanoseconds.\nIf event.start and event.end are known this value should be the difference between the end and start time.', flat_name: 'event.duration', format: 'duration', input_format: 'nanoseconds', @@ -4034,13 +3710,13 @@ export const EcsNested = { 'event.end': { dashed_name: 'event-end', description: - '`event.end` contains the date when the event ended or when the activity was last observed.', + 'event.end contains the date when the event ended or when the activity was last observed.', flat_name: 'event.end', level: 'extended', name: 'end', normalize: [], short: - '`event.end` contains the date when the event ended or when the activity was last observed.', + 'event.end contains the date when the event ended or when the activity was last observed.', type: 'date', }, 'event.hash': { @@ -4088,12 +3764,6 @@ export const EcsNested = { 'This value indicates an event such as an alert or notable event, triggered by a detection rule executing externally to the Elastic Stack.\n`event.kind:alert` is often populated for events coming from firewalls, intrusion detection systems, endpoint detection and response systems, and so on.\nThis value is not used by Elastic solutions for alert documents that are created by rules executing within the Kibana alerting framework.', name: 'alert', }, - { - beta: 'This event categorization value is beta and subject to change.', - description: - 'This value indicates events whose primary purpose is to store an inventory of assets/entities and their attributes. Assets/entities are objects (such as users and hosts) that are expected to be subjects of detailed analysis within the system.\nExamples include lists of user identities or accounts ingested from directory services such as Active Directory (AD), inventory of hosts pulled from configuration management databases (CMDB), and lists of cloud storage buckets pulled from cloud provider APIs.\nThis value is used by Elastic Security for asset management solutions. `event.kind: asset` is not used for normal system events or logs that are coming from an asset/entity, nor is it used for system events or logs coming from a directory or CMDB system.', - name: 'asset', - }, { description: 'The `enrichment` value indicates an event collected to provide additional context, often to other events.\nAn example is collecting indicators of compromise (IOCs) from a threat intelligence provider with the intent to use those values to enrich other events. The IOC events from the intelligence provider should be categorized as `event.kind:enrichment`.', @@ -4127,7 +3797,7 @@ export const EcsNested = { ], dashed_name: 'event-kind', description: - 'This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy.\n`event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events.\nThe value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data is coming in at a regular interval or not.', + 'This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy.\n`event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events.\nThe value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not.', example: 'alert', flat_name: 'event.kind', ignore_above: 1024, @@ -4285,13 +3955,13 @@ export const EcsNested = { 'event.start': { dashed_name: 'event-start', description: - '`event.start` contains the date when the event started or when the activity was first observed.', + 'event.start contains the date when the event started or when the activity was first observed.', flat_name: 'event.start', level: 'extended', name: 'start', normalize: [], short: - '`event.start` contains the date when the event started or when the activity was first observed.', + 'event.start contains the date when the event started or when the activity was first observed.', type: 'date', }, 'event.timezone': { @@ -4478,6 +4148,16 @@ export const EcsNested = { short: 'The name of a serverless function.', type: 'keyword', }, + 'faas.trigger': { + dashed_name: 'faas-trigger', + description: 'Details about the function trigger.', + flat_name: 'faas.trigger', + level: 'extended', + name: 'trigger', + normalize: [], + short: 'Details about the function trigger.', + type: 'nested', + }, 'faas.trigger.request_id': { dashed_name: 'faas-trigger-request-id', description: 'The ID of the trigger request , message, event, etc.', @@ -4792,67 +4472,6 @@ export const EcsNested = { short: 'List of exported element names and types.', type: 'flattened', }, - 'file.elf.go_import_hash': { - dashed_name: 'file-elf-go-import-hash', - description: - 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'file.elf.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the Go language imports in an ELF file.', - type: 'keyword', - }, - 'file.elf.go_imports': { - dashed_name: 'file-elf-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'file.elf.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'elf', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'file.elf.go_imports_names_entropy': { - dashed_name: 'file-elf-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'file.elf.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'file.elf.go_imports_names_var_entropy': { - dashed_name: 'file-elf-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'file.elf.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'file.elf.go_stripped': { - dashed_name: 'file-elf-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'file.elf.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'elf', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'file.elf.header.abi_version': { dashed_name: 'file-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -4949,20 +4568,6 @@ export const EcsNested = { short: 'Version of the ELF header.', type: 'keyword', }, - 'file.elf.import_hash': { - dashed_name: 'file-elf-import-hash', - description: - 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'file.elf.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the imports in an ELF file.', - type: 'keyword', - }, 'file.elf.imports': { dashed_name: 'file-elf-imports', description: 'List of imported element names and types.', @@ -4974,33 +4579,6 @@ export const EcsNested = { short: 'List of imported element names and types.', type: 'flattened', }, - 'file.elf.imports_names_entropy': { - dashed_name: 'file-elf-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'file.elf.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'file.elf.imports_names_var_entropy': { - dashed_name: 'file-elf-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'file.elf.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'file.elf.sections': { dashed_name: 'file-elf-sections', description: @@ -5097,18 +4675,6 @@ export const EcsNested = { short: 'ELF Section List type.', type: 'keyword', }, - 'file.elf.sections.var_entropy': { - dashed_name: 'file-elf-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'file.elf.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, 'file.elf.sections.virtual_address': { dashed_name: 'file-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -5339,226 +4905,26 @@ export const EcsNested = { short: 'Inode representing the file in the filesystem.', type: 'keyword', }, - 'file.macho.go_import_hash': { - dashed_name: 'file-macho-go-import-hash', + 'file.mime_type': { + dashed_name: 'file-mime-type', description: - 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'file.macho.go_import_hash', + 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', + flat_name: 'file.mime_type', ignore_above: 1024, level: 'extended', - name: 'go_import_hash', + name: 'mime_type', normalize: [], - original_fieldset: 'macho', - short: 'A hash of the Go language imports in a Mach-O file.', + short: 'Media type of file, document, or arrangement of bytes.', type: 'keyword', }, - 'file.macho.go_imports': { - dashed_name: 'file-macho-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'file.macho.go_imports', + 'file.mode': { + dashed_name: 'file-mode', + description: 'Mode of the file in octal representation.', + example: '0640', + flat_name: 'file.mode', + ignore_above: 1024, level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'macho', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'file.macho.go_imports_names_entropy': { - dashed_name: 'file-macho-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'file.macho.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'file.macho.go_imports_names_var_entropy': { - dashed_name: 'file-macho-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'file.macho.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'file.macho.go_stripped': { - dashed_name: 'file-macho-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'file.macho.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'macho', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, - 'file.macho.import_hash': { - dashed_name: 'file-macho-import-hash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'file.macho.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, - 'file.macho.imports': { - dashed_name: 'file-macho-imports', - description: 'List of imported element names and types.', - flat_name: 'file.macho.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'macho', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'file.macho.imports_names_entropy': { - dashed_name: 'file-macho-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'file.macho.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'file.macho.imports_names_var_entropy': { - dashed_name: 'file-macho-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'file.macho.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'macho', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'file.macho.sections': { - dashed_name: 'file-macho-sections', - description: - 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', - flat_name: 'file.macho.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'macho', - short: 'Section information of the Mach-O file.', - type: 'nested', - }, - 'file.macho.sections.entropy': { - dashed_name: 'file-macho-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'file.macho.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'file.macho.sections.name': { - dashed_name: 'file-macho-sections-name', - description: 'Mach-O Section List name.', - flat_name: 'file.macho.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List name.', - type: 'keyword', - }, - 'file.macho.sections.physical_size': { - dashed_name: 'file-macho-sections-physical-size', - description: 'Mach-O Section List physical size.', - flat_name: 'file.macho.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List physical size.', - type: 'long', - }, - 'file.macho.sections.var_entropy': { - dashed_name: 'file-macho-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'file.macho.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'file.macho.sections.virtual_size': { - dashed_name: 'file-macho-sections-virtual-size', - description: - 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'file.macho.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, - 'file.macho.symhash': { - dashed_name: 'file-macho-symhash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', - example: 'd3ccf195b62a9279c3c19af1080497ec', - flat_name: 'file.macho.symhash', - ignore_above: 1024, - level: 'extended', - name: 'symhash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, - 'file.mime_type': { - dashed_name: 'file-mime-type', - description: - 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', - flat_name: 'file.mime_type', - ignore_above: 1024, - level: 'extended', - name: 'mime_type', - normalize: [], - short: 'Media type of file, document, or arrangement of bytes.', - type: 'keyword', - }, - 'file.mode': { - dashed_name: 'file-mode', - description: 'Mode of the file in octal representation.', - example: '0640', - flat_name: 'file.mode', - ignore_above: 1024, - level: 'extended', - name: 'mode', + name: 'mode', normalize: [], short: 'Mode of the file in octal representation.', type: 'keyword', @@ -5669,67 +5035,6 @@ export const EcsNested = { short: 'Process name.', type: 'keyword', }, - 'file.pe.go_import_hash': { - dashed_name: 'file-pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'file.pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'file.pe.go_imports': { - dashed_name: 'file-pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'file.pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'pe', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'file.pe.go_imports_names_entropy': { - dashed_name: 'file-pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'file.pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'file.pe.go_imports_names_var_entropy': { - dashed_name: 'file-pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'file.pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'file.pe.go_stripped': { - dashed_name: 'file-pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'file.pe.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'pe', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'file.pe.imphash': { dashed_name: 'file-pe-imphash', description: @@ -5744,58 +5049,6 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'file.pe.import_hash': { - dashed_name: 'file-pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'file.pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'file.pe.imports': { - dashed_name: 'file-pe-imports', - description: 'List of imported element names and types.', - flat_name: 'file.pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'pe', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'file.pe.imports_names_entropy': { - dashed_name: 'file-pe-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'file.pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'file.pe.imports_names_var_entropy': { - dashed_name: 'file-pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'file.pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'file.pe.original_file_name': { dashed_name: 'file-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -5836,78 +5089,6 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'file.pe.sections': { - dashed_name: 'file-pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'file.pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'pe', - short: 'Section information of the PE file.', - type: 'nested', - }, - 'file.pe.sections.entropy': { - dashed_name: 'file-pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'file.pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'file.pe.sections.name': { - dashed_name: 'file-pe-sections-name', - description: 'PE Section List name.', - flat_name: 'file.pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List name.', - type: 'keyword', - }, - 'file.pe.sections.physical_size': { - dashed_name: 'file-pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'file.pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List physical size.', - type: 'long', - }, - 'file.pe.sections.var_entropy': { - dashed_name: 'file-pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'file.pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'file.pe.sections.virtual_size': { - dashed_name: 'file-pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'file.pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, 'file.size': { dashed_name: 'file-size', description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', @@ -6280,14 +5461,7 @@ export const EcsNested = { }, group: 2, name: 'file', - nestings: [ - 'file.code_signature', - 'file.elf', - 'file.hash', - 'file.macho', - 'file.pe', - 'file.x509', - ], + nestings: ['file.code_signature', 'file.elf', 'file.hash', 'file.pe', 'file.x509'], prefix: 'file.', reusable: { expected: [ @@ -6327,12 +5501,6 @@ export const EcsNested = { schema_name: 'elf', short: 'These fields contain Linux Executable Linkable Format (ELF) metadata.', }, - { - beta: 'This field reuse is beta and subject to change.', - full: 'file.macho', - schema_name: 'macho', - short: 'These fields contain Mac OS Mach Object file format (Mach-O) metadata.', - }, ], short: 'Fields describing files.', title: 'File', @@ -6959,7 +6127,7 @@ export const EcsNested = { 'host.name': { dashed_name: 'host-name', description: - 'Name of the host.\nIt can contain what hostname returns on Unix systems, the fully qualified domain name (FQDN), or a name specified by the user. The recommended value is the lowercase FQDN of the host.', + 'Name of the host.\nIt can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.', flat_name: 'host.name', ignore_above: 1024, level: 'core', @@ -7750,258 +6918,45 @@ export const EcsNested = { title: 'Log', type: 'group', }, - macho: { - beta: 'These fields are in beta and are subject to change.', - description: 'These fields contain Mac OS Mach Object file format (Mach-O) metadata.', + network: { + description: + 'The network is defined as the communication path over which a host or network event happens.\nThe network.* fields should be populated with details about the network activity associated with an event.', fields: { - 'macho.go_import_hash': { - dashed_name: 'macho-go-import-hash', + 'network.application': { + dashed_name: 'network-application', description: - 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'macho.go_import_hash', + "When a specific application or service is identified from network connection details (source/dest IPs, ports, certificates, or wire format), this field captures the application's or service's name.\nFor example, the original event identifies the network connection being from a specific web service in a `https` network connection, like `facebook` or `twitter`.\nThe field value must be normalized to lowercase for querying.", + example: 'aim', + flat_name: 'network.application', ignore_above: 1024, level: 'extended', - name: 'go_import_hash', + name: 'application', normalize: [], - short: 'A hash of the Go language imports in a Mach-O file.', + short: 'Application level protocol name.', type: 'keyword', }, - 'macho.go_imports': { - dashed_name: 'macho-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'macho.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'macho.go_imports_names_entropy': { - dashed_name: 'macho-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'macho.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'macho.go_imports_names_var_entropy': { - dashed_name: 'macho-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'macho.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', + 'network.bytes': { + dashed_name: 'network-bytes', + description: + 'Total bytes transferred in both directions.\nIf `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum.', + example: 368, + flat_name: 'network.bytes', + format: 'bytes', + level: 'core', + name: 'bytes', normalize: [], - short: 'Variance for Shannon entropy calculation from the list of Go imports.', + short: 'Total bytes transferred in both directions.', type: 'long', }, - 'macho.go_stripped': { - dashed_name: 'macho-go-stripped', + 'network.community_id': { + dashed_name: 'network-community-id', description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'macho.go_stripped', + 'A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows.\nLearn more at https://github.com/corelight/community-id-spec.', + example: '1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=', + flat_name: 'network.community_id', + ignore_above: 1024, level: 'extended', - name: 'go_stripped', - normalize: [], - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, - 'macho.import_hash': { - dashed_name: 'macho-import-hash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'macho.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, - 'macho.imports': { - dashed_name: 'macho-imports', - description: 'List of imported element names and types.', - flat_name: 'macho.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'macho.imports_names_entropy': { - dashed_name: 'macho-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'macho.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'macho.imports_names_var_entropy': { - dashed_name: 'macho-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'macho.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'macho.sections': { - dashed_name: 'macho-sections', - description: - 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', - flat_name: 'macho.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - short: 'Section information of the Mach-O file.', - type: 'nested', - }, - 'macho.sections.entropy': { - dashed_name: 'macho-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'macho.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'macho.sections.name': { - dashed_name: 'macho-sections-name', - description: 'Mach-O Section List name.', - flat_name: 'macho.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - short: 'Mach-O Section List name.', - type: 'keyword', - }, - 'macho.sections.physical_size': { - dashed_name: 'macho-sections-physical-size', - description: 'Mach-O Section List physical size.', - flat_name: 'macho.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - short: 'Mach-O Section List physical size.', - type: 'long', - }, - 'macho.sections.var_entropy': { - dashed_name: 'macho-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'macho.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'macho.sections.virtual_size': { - dashed_name: 'macho-sections-virtual-size', - description: - 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'macho.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, - 'macho.symhash': { - dashed_name: 'macho-symhash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', - example: 'd3ccf195b62a9279c3c19af1080497ec', - flat_name: 'macho.symhash', - ignore_above: 1024, - level: 'extended', - name: 'symhash', - normalize: [], - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, - }, - group: 2, - name: 'macho', - prefix: 'macho.', - reusable: { - expected: [ - { - as: 'macho', - at: 'file', - beta: 'This field reuse is beta and subject to change.', - full: 'file.macho', - }, - { - as: 'macho', - at: 'process', - beta: 'This field reuse is beta and subject to change.', - full: 'process.macho', - }, - ], - top_level: false, - }, - short: 'These fields contain Mac OS Mach Object file format (Mach-O) metadata.', - title: 'Mach-O Header', - type: 'group', - }, - network: { - description: - 'The network is defined as the communication path over which a host or network event happens.\nThe network.* fields should be populated with details about the network activity associated with an event.', - fields: { - 'network.application': { - dashed_name: 'network-application', - description: - "When a specific application or service is identified from network connection details (source/dest IPs, ports, certificates, or wire format), this field captures the application's or service's name.\nFor example, the original event identifies the network connection being from a specific web service in a `https` network connection, like `facebook` or `twitter`.\nThe field value must be normalized to lowercase for querying.", - example: 'aim', - flat_name: 'network.application', - ignore_above: 1024, - level: 'extended', - name: 'application', - normalize: [], - short: 'Application level protocol name.', - type: 'keyword', - }, - 'network.bytes': { - dashed_name: 'network-bytes', - description: - 'Total bytes transferred in both directions.\nIf `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum.', - example: 368, - flat_name: 'network.bytes', - format: 'bytes', - level: 'core', - name: 'bytes', - normalize: [], - short: 'Total bytes transferred in both directions.', - type: 'long', - }, - 'network.community_id': { - dashed_name: 'network-community-id', - description: - 'A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows.\nLearn more at https://github.com/corelight/community-id-spec.', - example: '1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=', - flat_name: 'network.community_id', - ignore_above: 1024, - level: 'extended', - name: 'community_id', + name: 'community_id', normalize: [], short: 'A hash of source and destination IPs and ports.', type: 'keyword', @@ -8873,18 +7828,6 @@ export const EcsNested = { short: 'Organization affected by the event (for multi-tenant orchestrator setups).', type: 'keyword', }, - 'orchestrator.resource.annotation': { - dashed_name: 'orchestrator-resource-annotation', - description: 'The list of annotations added to the resource.', - example: "['key1:value1', 'key2:value2', 'key3:value3']", - flat_name: 'orchestrator.resource.annotation', - ignore_above: 1024, - level: 'extended', - name: 'resource.annotation', - normalize: ['array'], - short: 'The list of annotations added to the resource.', - type: 'keyword', - }, 'orchestrator.resource.id': { dashed_name: 'orchestrator-resource-id', description: 'Unique ID of the resource being acted upon.', @@ -8907,18 +7850,6 @@ export const EcsNested = { short: 'IP address assigned to the resource associated with the event being observed.', type: 'ip', }, - 'orchestrator.resource.label': { - dashed_name: 'orchestrator-resource-label', - description: 'The list of labels added to the resource.', - example: "['key1:value1', 'key2:value2', 'key3:value3']", - flat_name: 'orchestrator.resource.label', - ignore_above: 1024, - level: 'extended', - name: 'resource.label', - normalize: ['array'], - short: 'The list of labels added to the resource.', - type: 'keyword', - }, 'orchestrator.resource.name': { dashed_name: 'orchestrator-resource-name', description: 'Name of the resource being acted upon.', @@ -9344,62 +8275,6 @@ export const EcsNested = { short: 'Process name.', type: 'keyword', }, - 'pe.go_import_hash': { - dashed_name: 'pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'pe.go_imports': { - dashed_name: 'pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'pe.go_imports_names_entropy': { - dashed_name: 'pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'pe.go_imports_names_var_entropy': { - dashed_name: 'pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'pe.go_stripped': { - dashed_name: 'pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'pe.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'pe.imphash': { dashed_name: 'pe-imphash', description: @@ -9413,54 +8288,6 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'pe.import_hash': { - dashed_name: 'pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'pe.imports': { - dashed_name: 'pe-imports', - description: 'List of imported element names and types.', - flat_name: 'pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'pe.imports_names_entropy': { - dashed_name: 'pe-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'pe.imports_names_var_entropy': { - dashed_name: 'pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'pe.original_file_name': { dashed_name: 'pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -9498,72 +8325,6 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'pe.sections': { - dashed_name: 'pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - short: 'Section information of the PE file.', - type: 'nested', - }, - 'pe.sections.entropy': { - dashed_name: 'pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'pe.sections.name': { - dashed_name: 'pe-sections-name', - description: 'PE Section List name.', - flat_name: 'pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - short: 'PE Section List name.', - type: 'keyword', - }, - 'pe.sections.physical_size': { - dashed_name: 'pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - short: 'PE Section List physical size.', - type: 'long', - }, - 'pe.sections.var_entropy': { - dashed_name: 'pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'pe.sections.virtual_size': { - dashed_name: 'pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, }, group: 2, name: 'pe', @@ -9810,102 +8571,41 @@ export const EcsNested = { short: 'List of exported element names and types.', type: 'flattened', }, - 'process.elf.go_import_hash': { - dashed_name: 'process-elf-go-import-hash', - description: - 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'process.elf.go_import_hash', + 'process.elf.header.abi_version': { + dashed_name: 'process-elf-header-abi-version', + description: 'Version of the ELF Application Binary Interface (ABI).', + flat_name: 'process.elf.header.abi_version', ignore_above: 1024, level: 'extended', - name: 'go_import_hash', + name: 'header.abi_version', normalize: [], original_fieldset: 'elf', - short: 'A hash of the Go language imports in an ELF file.', + short: 'Version of the ELF Application Binary Interface (ABI).', type: 'keyword', }, - 'process.elf.go_imports': { - dashed_name: 'process-elf-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'process.elf.go_imports', + 'process.elf.header.class': { + dashed_name: 'process-elf-header-class', + description: 'Header class of the ELF file.', + flat_name: 'process.elf.header.class', + ignore_above: 1024, level: 'extended', - name: 'go_imports', + name: 'header.class', normalize: [], original_fieldset: 'elf', - short: 'List of imported Go language element names and types.', - type: 'flattened', + short: 'Header class of the ELF file.', + type: 'keyword', }, - 'process.elf.go_imports_names_entropy': { - dashed_name: 'process-elf-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.elf.go_imports_names_entropy', - format: 'number', + 'process.elf.header.data': { + dashed_name: 'process-elf-header-data', + description: 'Data table of the ELF header.', + flat_name: 'process.elf.header.data', + ignore_above: 1024, level: 'extended', - name: 'go_imports_names_entropy', + name: 'header.data', normalize: [], original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.elf.go_imports_names_var_entropy': { - dashed_name: 'process-elf-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.elf.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.elf.go_stripped': { - dashed_name: 'process-elf-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'process.elf.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'elf', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, - 'process.elf.header.abi_version': { - dashed_name: 'process-elf-header-abi-version', - description: 'Version of the ELF Application Binary Interface (ABI).', - flat_name: 'process.elf.header.abi_version', - ignore_above: 1024, - level: 'extended', - name: 'header.abi_version', - normalize: [], - original_fieldset: 'elf', - short: 'Version of the ELF Application Binary Interface (ABI).', - type: 'keyword', - }, - 'process.elf.header.class': { - dashed_name: 'process-elf-header-class', - description: 'Header class of the ELF file.', - flat_name: 'process.elf.header.class', - ignore_above: 1024, - level: 'extended', - name: 'header.class', - normalize: [], - original_fieldset: 'elf', - short: 'Header class of the ELF file.', - type: 'keyword', - }, - 'process.elf.header.data': { - dashed_name: 'process-elf-header-data', - description: 'Data table of the ELF header.', - flat_name: 'process.elf.header.data', - ignore_above: 1024, - level: 'extended', - name: 'header.data', - normalize: [], - original_fieldset: 'elf', - short: 'Data table of the ELF header.', - type: 'keyword', + short: 'Data table of the ELF header.', + type: 'keyword', }, 'process.elf.header.entrypoint': { dashed_name: 'process-elf-header-entrypoint', @@ -9967,20 +8667,6 @@ export const EcsNested = { short: 'Version of the ELF header.', type: 'keyword', }, - 'process.elf.import_hash': { - dashed_name: 'process-elf-import-hash', - description: - 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'process.elf.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the imports in an ELF file.', - type: 'keyword', - }, 'process.elf.imports': { dashed_name: 'process-elf-imports', description: 'List of imported element names and types.', @@ -9992,33 +8678,6 @@ export const EcsNested = { short: 'List of imported element names and types.', type: 'flattened', }, - 'process.elf.imports_names_entropy': { - dashed_name: 'process-elf-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.elf.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.elf.imports_names_var_entropy': { - dashed_name: 'process-elf-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.elf.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'process.elf.sections': { dashed_name: 'process-elf-sections', description: @@ -10115,18 +8774,6 @@ export const EcsNested = { short: 'ELF Section List type.', type: 'keyword', }, - 'process.elf.sections.var_entropy': { - dashed_name: 'process-elf-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'process.elf.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, 'process.elf.sections.virtual_address': { dashed_name: 'process-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -10508,20 +9155,6 @@ export const EcsNested = { short: 'The time the process started.', type: 'date', }, - 'process.entry_leader.parent.session_leader.vpid': { - dashed_name: 'process-entry-leader-parent-session-leader-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.entry_leader.parent.session_leader.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.entry_leader.parent.start': { dashed_name: 'process-entry-leader-parent-start', description: 'The time the process started.', @@ -10534,20 +9167,6 @@ export const EcsNested = { short: 'The time the process started.', type: 'date', }, - 'process.entry_leader.parent.vpid': { - dashed_name: 'process-entry-leader-parent-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.entry_leader.parent.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.entry_leader.pid': { dashed_name: 'process-entry-leader-pid', description: 'Process id.', @@ -10796,20 +9415,6 @@ export const EcsNested = { short: 'Short name or login of the user.', type: 'keyword', }, - 'process.entry_leader.vpid': { - dashed_name: 'process-entry-leader-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.entry_leader.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.entry_leader.working_directory': { dashed_name: 'process-entry-leader-working-directory', description: 'The working directory of the process.', @@ -11261,20 +9866,6 @@ export const EcsNested = { short: 'Short name or login of the user.', type: 'keyword', }, - 'process.group_leader.vpid': { - dashed_name: 'process-group-leader-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.group_leader.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.group_leader.working_directory': { dashed_name: 'process-group-leader-working-directory', description: 'The working directory of the process.', @@ -11501,206 +10092,6 @@ export const EcsNested = { short: 'The type of object on which the IO action (read or write) was taken.', type: 'keyword', }, - 'process.macho.go_import_hash': { - dashed_name: 'process-macho-go-import-hash', - description: - 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'process.macho.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the Go language imports in a Mach-O file.', - type: 'keyword', - }, - 'process.macho.go_imports': { - dashed_name: 'process-macho-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'process.macho.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'macho', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'process.macho.go_imports_names_entropy': { - dashed_name: 'process-macho-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.macho.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.macho.go_imports_names_var_entropy': { - dashed_name: 'process-macho-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.macho.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.macho.go_stripped': { - dashed_name: 'process-macho-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'process.macho.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'macho', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, - 'process.macho.import_hash': { - dashed_name: 'process-macho-import-hash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'process.macho.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, - 'process.macho.imports': { - dashed_name: 'process-macho-imports', - description: 'List of imported element names and types.', - flat_name: 'process.macho.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'macho', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'process.macho.imports_names_entropy': { - dashed_name: 'process-macho-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.macho.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.macho.imports_names_var_entropy': { - dashed_name: 'process-macho-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.macho.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'macho', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.macho.sections': { - dashed_name: 'process-macho-sections', - description: - 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', - flat_name: 'process.macho.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'macho', - short: 'Section information of the Mach-O file.', - type: 'nested', - }, - 'process.macho.sections.entropy': { - dashed_name: 'process-macho-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'process.macho.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.macho.sections.name': { - dashed_name: 'process-macho-sections-name', - description: 'Mach-O Section List name.', - flat_name: 'process.macho.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List name.', - type: 'keyword', - }, - 'process.macho.sections.physical_size': { - dashed_name: 'process-macho-sections-physical-size', - description: 'Mach-O Section List physical size.', - flat_name: 'process.macho.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List physical size.', - type: 'long', - }, - 'process.macho.sections.var_entropy': { - dashed_name: 'process-macho-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'process.macho.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.macho.sections.virtual_size': { - dashed_name: 'process-macho-sections-virtual-size', - description: - 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'process.macho.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, - 'process.macho.symhash': { - dashed_name: 'process-macho-symhash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', - example: 'd3ccf195b62a9279c3c19af1080497ec', - flat_name: 'process.macho.symhash', - ignore_above: 1024, - level: 'extended', - name: 'symhash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, 'process.name': { dashed_name: 'process-name', description: 'Process name.\nSometimes called program name or similar.', @@ -11949,67 +10340,6 @@ export const EcsNested = { short: 'List of exported element names and types.', type: 'flattened', }, - 'process.parent.elf.go_import_hash': { - dashed_name: 'process-parent-elf-go-import-hash', - description: - 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'process.parent.elf.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the Go language imports in an ELF file.', - type: 'keyword', - }, - 'process.parent.elf.go_imports': { - dashed_name: 'process-parent-elf-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'process.parent.elf.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'elf', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'process.parent.elf.go_imports_names_entropy': { - dashed_name: 'process-parent-elf-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.parent.elf.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.parent.elf.go_imports_names_var_entropy': { - dashed_name: 'process-parent-elf-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.parent.elf.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.parent.elf.go_stripped': { - dashed_name: 'process-parent-elf-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'process.parent.elf.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'elf', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'process.parent.elf.header.abi_version': { dashed_name: 'process-parent-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -12106,20 +10436,6 @@ export const EcsNested = { short: 'Version of the ELF header.', type: 'keyword', }, - 'process.parent.elf.import_hash': { - dashed_name: 'process-parent-elf-import-hash', - description: - 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'process.parent.elf.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the imports in an ELF file.', - type: 'keyword', - }, 'process.parent.elf.imports': { dashed_name: 'process-parent-elf-imports', description: 'List of imported element names and types.', @@ -12131,33 +10447,6 @@ export const EcsNested = { short: 'List of imported element names and types.', type: 'flattened', }, - 'process.parent.elf.imports_names_entropy': { - dashed_name: 'process-parent-elf-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.parent.elf.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.parent.elf.imports_names_var_entropy': { - dashed_name: 'process-parent-elf-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.parent.elf.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'process.parent.elf.sections': { dashed_name: 'process-parent-elf-sections', description: @@ -12254,18 +10543,6 @@ export const EcsNested = { short: 'ELF Section List type.', type: 'keyword', }, - 'process.parent.elf.sections.var_entropy': { - dashed_name: 'process-parent-elf-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'process.parent.elf.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, 'process.parent.elf.sections.virtual_address': { dashed_name: 'process-parent-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -12472,20 +10749,6 @@ export const EcsNested = { short: 'The time the process started.', type: 'date', }, - 'process.parent.group_leader.vpid': { - dashed_name: 'process-parent-group-leader-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.parent.group_leader.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.parent.hash.md5': { dashed_name: 'process-parent-hash-md5', description: 'MD5 hash.', @@ -12583,206 +10846,6 @@ export const EcsNested = { short: 'Whether the process is connected to an interactive shell.', type: 'boolean', }, - 'process.parent.macho.go_import_hash': { - dashed_name: 'process-parent-macho-go-import-hash', - description: - 'A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'process.parent.macho.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the Go language imports in a Mach-O file.', - type: 'keyword', - }, - 'process.parent.macho.go_imports': { - dashed_name: 'process-parent-macho-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'process.parent.macho.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'macho', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'process.parent.macho.go_imports_names_entropy': { - dashed_name: 'process-parent-macho-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.parent.macho.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.parent.macho.go_imports_names_var_entropy': { - dashed_name: 'process-parent-macho-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.parent.macho.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.parent.macho.go_stripped': { - dashed_name: 'process-parent-macho-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'process.parent.macho.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'macho', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, - 'process.parent.macho.import_hash': { - dashed_name: 'process-parent-macho-import-hash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for symhash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'process.parent.macho.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, - 'process.parent.macho.imports': { - dashed_name: 'process-parent-macho-imports', - description: 'List of imported element names and types.', - flat_name: 'process.parent.macho.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'macho', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'process.parent.macho.imports_names_entropy': { - dashed_name: 'process-parent-macho-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.parent.macho.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.parent.macho.imports_names_var_entropy': { - dashed_name: 'process-parent-macho-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.parent.macho.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'macho', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.parent.macho.sections': { - dashed_name: 'process-parent-macho-sections', - description: - 'An array containing an object for each section of the Mach-O file.\nThe keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`.', - flat_name: 'process.parent.macho.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'macho', - short: 'Section information of the Mach-O file.', - type: 'nested', - }, - 'process.parent.macho.sections.entropy': { - dashed_name: 'process-parent-macho-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'process.parent.macho.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.parent.macho.sections.name': { - dashed_name: 'process-parent-macho-sections-name', - description: 'Mach-O Section List name.', - flat_name: 'process.parent.macho.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List name.', - type: 'keyword', - }, - 'process.parent.macho.sections.physical_size': { - dashed_name: 'process-parent-macho-sections-physical-size', - description: 'Mach-O Section List physical size.', - flat_name: 'process.parent.macho.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List physical size.', - type: 'long', - }, - 'process.parent.macho.sections.var_entropy': { - dashed_name: 'process-parent-macho-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'process.parent.macho.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'macho', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.parent.macho.sections.virtual_size': { - dashed_name: 'process-parent-macho-sections-virtual-size', - description: - 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'process.parent.macho.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'macho', - short: 'Mach-O Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, - 'process.parent.macho.symhash': { - dashed_name: 'process-parent-macho-symhash', - description: - 'A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a Mach-O implementation of the Windows PE imphash', - example: 'd3ccf195b62a9279c3c19af1080497ec', - flat_name: 'process.parent.macho.symhash', - ignore_above: 1024, - level: 'extended', - name: 'symhash', - normalize: [], - original_fieldset: 'macho', - short: 'A hash of the imports in a Mach-O file.', - type: 'keyword', - }, 'process.parent.name': { dashed_name: 'process-parent-name', description: 'Process name.\nSometimes called program name or similar.', @@ -12855,67 +10918,6 @@ export const EcsNested = { short: 'Process name.', type: 'keyword', }, - 'process.parent.pe.go_import_hash': { - dashed_name: 'process-parent-pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'process.parent.pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'process.parent.pe.go_imports': { - dashed_name: 'process-parent-pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'process.parent.pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'pe', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'process.parent.pe.go_imports_names_entropy': { - dashed_name: 'process-parent-pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.parent.pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.parent.pe.go_imports_names_var_entropy': { - dashed_name: 'process-parent-pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.parent.pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.parent.pe.go_stripped': { - dashed_name: 'process-parent-pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'process.parent.pe.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'pe', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'process.parent.pe.imphash': { dashed_name: 'process-parent-pe-imphash', description: @@ -12930,58 +10932,6 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'process.parent.pe.import_hash': { - dashed_name: 'process-parent-pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'process.parent.pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'process.parent.pe.imports': { - dashed_name: 'process-parent-pe-imports', - description: 'List of imported element names and types.', - flat_name: 'process.parent.pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'pe', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'process.parent.pe.imports_names_entropy': { - dashed_name: 'process-parent-pe-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.parent.pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.parent.pe.imports_names_var_entropy': { - dashed_name: 'process-parent-pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.parent.pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'process.parent.pe.original_file_name': { dashed_name: 'process-parent-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -13022,78 +10972,6 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'process.parent.pe.sections': { - dashed_name: 'process-parent-pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'process.parent.pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'pe', - short: 'Section information of the PE file.', - type: 'nested', - }, - 'process.parent.pe.sections.entropy': { - dashed_name: 'process-parent-pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'process.parent.pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.parent.pe.sections.name': { - dashed_name: 'process-parent-pe-sections-name', - description: 'PE Section List name.', - flat_name: 'process.parent.pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List name.', - type: 'keyword', - }, - 'process.parent.pe.sections.physical_size': { - dashed_name: 'process-parent-pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'process.parent.pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List physical size.', - type: 'long', - }, - 'process.parent.pe.sections.var_entropy': { - dashed_name: 'process-parent-pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'process.parent.pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.parent.pe.sections.virtual_size': { - dashed_name: 'process-parent-pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'process.parent.pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, 'process.parent.pgid': { dashed_name: 'process-parent-pgid', description: @@ -13264,40 +11142,10 @@ export const EcsNested = { flat_name: 'process.parent.supplemental_groups.name', ignore_above: 1024, level: 'extended', - name: 'name', - normalize: [], - original_fieldset: 'group', - short: 'Name of the group.', - type: 'keyword', - }, - 'process.parent.thread.capabilities.effective': { - dashed_name: 'process-parent-thread-capabilities-effective', - description: - 'This is the set of capabilities used by the kernel to perform permission checks for the thread.', - example: '["CAP_BPF", "CAP_SYS_ADMIN"]', - flat_name: 'process.parent.thread.capabilities.effective', - ignore_above: 1024, - level: 'extended', - name: 'thread.capabilities.effective', - normalize: ['array'], - original_fieldset: 'process', - pattern: '^(CAP_[A-Z_]+|\\d+)$', - short: 'Array of capabilities used for permission checks.', - type: 'keyword', - }, - 'process.parent.thread.capabilities.permitted': { - dashed_name: 'process-parent-thread-capabilities-permitted', - description: - 'This is a limiting superset for the effective capabilities that the thread may assume.', - example: '["CAP_BPF", "CAP_SYS_ADMIN"]', - flat_name: 'process.parent.thread.capabilities.permitted', - ignore_above: 1024, - level: 'extended', - name: 'thread.capabilities.permitted', - normalize: ['array'], - original_fieldset: 'process', - pattern: '^(CAP_[A-Z_]+|\\d+)$', - short: 'Array of capabilities a thread could assume.', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', type: 'keyword', }, 'process.parent.thread.id': { @@ -13429,20 +11277,6 @@ export const EcsNested = { short: 'Short name or login of the user.', type: 'keyword', }, - 'process.parent.vpid': { - dashed_name: 'process-parent-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.parent.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.parent.working_directory': { dashed_name: 'process-parent-working-directory', description: 'The working directory of the process.', @@ -13515,67 +11349,6 @@ export const EcsNested = { short: 'Process name.', type: 'keyword', }, - 'process.pe.go_import_hash': { - dashed_name: 'process-pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'process.pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'process.pe.go_imports': { - dashed_name: 'process-pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'process.pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'pe', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'process.pe.go_imports_names_entropy': { - dashed_name: 'process-pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.pe.go_imports_names_var_entropy': { - dashed_name: 'process-pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'process.pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'process.pe.go_stripped': { - dashed_name: 'process-pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'process.pe.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'pe', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'process.pe.imphash': { dashed_name: 'process-pe-imphash', description: @@ -13590,58 +11363,6 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'process.pe.import_hash': { - dashed_name: 'process-pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'process.pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'process.pe.imports': { - dashed_name: 'process-pe-imports', - description: 'List of imported element names and types.', - flat_name: 'process.pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'pe', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'process.pe.imports_names_entropy': { - dashed_name: 'process-pe-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'process.pe.imports_names_var_entropy': { - dashed_name: 'process-pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'process.pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'process.pe.original_file_name': { dashed_name: 'process-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -13682,78 +11403,6 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'process.pe.sections': { - dashed_name: 'process-pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'process.pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'pe', - short: 'Section information of the PE file.', - type: 'nested', - }, - 'process.pe.sections.entropy': { - dashed_name: 'process-pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'process.pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.pe.sections.name': { - dashed_name: 'process-pe-sections-name', - description: 'PE Section List name.', - flat_name: 'process.pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List name.', - type: 'keyword', - }, - 'process.pe.sections.physical_size': { - dashed_name: 'process-pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'process.pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List physical size.', - type: 'long', - }, - 'process.pe.sections.var_entropy': { - dashed_name: 'process-pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'process.pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'process.pe.sections.virtual_size': { - dashed_name: 'process-pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'process.pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, 'process.pgid': { dashed_name: 'process-pgid', description: @@ -14143,20 +11792,6 @@ export const EcsNested = { short: 'The time the process started.', type: 'date', }, - 'process.session_leader.parent.session_leader.vpid': { - dashed_name: 'process-session-leader-parent-session-leader-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.session_leader.parent.session_leader.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.session_leader.parent.start': { dashed_name: 'process-session-leader-parent-start', description: 'The time the process started.', @@ -14169,20 +11804,6 @@ export const EcsNested = { short: 'The time the process started.', type: 'date', }, - 'process.session_leader.parent.vpid': { - dashed_name: 'process-session-leader-parent-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.session_leader.parent.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.session_leader.pid': { dashed_name: 'process-session-leader-pid', description: 'Process id.', @@ -14431,20 +12052,6 @@ export const EcsNested = { short: 'Short name or login of the user.', type: 'keyword', }, - 'process.session_leader.vpid': { - dashed_name: 'process-session-leader-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.session_leader.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - original_fieldset: 'process', - short: 'Virtual process id.', - type: 'long', - }, 'process.session_leader.working_directory': { dashed_name: 'process-session-leader-working-directory', description: 'The working directory of the process.', @@ -14500,34 +12107,6 @@ export const EcsNested = { short: 'Name of the group.', type: 'keyword', }, - 'process.thread.capabilities.effective': { - dashed_name: 'process-thread-capabilities-effective', - description: - 'This is the set of capabilities used by the kernel to perform permission checks for the thread.', - example: '["CAP_BPF", "CAP_SYS_ADMIN"]', - flat_name: 'process.thread.capabilities.effective', - ignore_above: 1024, - level: 'extended', - name: 'thread.capabilities.effective', - normalize: ['array'], - pattern: '^(CAP_[A-Z_]+|\\d+)$', - short: 'Array of capabilities used for permission checks.', - type: 'keyword', - }, - 'process.thread.capabilities.permitted': { - dashed_name: 'process-thread-capabilities-permitted', - description: - 'This is a limiting superset for the effective capabilities that the thread may assume.', - example: '["CAP_BPF", "CAP_SYS_ADMIN"]', - flat_name: 'process.thread.capabilities.permitted', - ignore_above: 1024, - level: 'extended', - name: 'thread.capabilities.permitted', - normalize: ['array'], - pattern: '^(CAP_[A-Z_]+|\\d+)$', - short: 'Array of capabilities a thread could assume.', - type: 'keyword', - }, 'process.thread.id': { dashed_name: 'process-thread-id', description: 'Thread ID.', @@ -14676,19 +12255,6 @@ export const EcsNested = { short: 'Short name or login of the user.', type: 'keyword', }, - 'process.vpid': { - dashed_name: 'process-vpid', - description: - 'Virtual process id.\nThe process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within.', - example: 4242, - flat_name: 'process.vpid', - format: 'string', - level: 'core', - name: 'vpid', - normalize: [], - short: 'Virtual process id.', - type: 'long', - }, 'process.working_directory': { dashed_name: 'process-working-directory', description: 'The working directory of the process.', @@ -14723,7 +12289,6 @@ export const EcsNested = { 'process.group', 'process.group_leader', 'process.hash', - 'process.macho', 'process.parent', 'process.parent.group_leader', 'process.pe', @@ -14864,12 +12429,6 @@ export const EcsNested = { schema_name: 'elf', short: 'These fields contain Linux Executable Linkable Format (ELF) metadata.', }, - { - beta: 'This field reuse is beta and subject to change.', - full: 'process.macho', - schema_name: 'macho', - short: 'These fields contain Mac OS Mach Object file format (Mach-O) metadata.', - }, { full: 'process.entry_meta.source', schema_name: 'source', @@ -17230,67 +14789,6 @@ export const EcsNested = { short: 'List of exported element names and types.', type: 'flattened', }, - 'threat.enrichments.indicator.file.elf.go_import_hash': { - dashed_name: 'threat-enrichments-indicator-file-elf-go-import-hash', - description: - 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'threat.enrichments.indicator.file.elf.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the Go language imports in an ELF file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.elf.go_imports': { - dashed_name: 'threat-enrichments-indicator-file-elf-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'threat.enrichments.indicator.file.elf.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'elf', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'threat.enrichments.indicator.file.elf.go_imports_names_entropy': { - dashed_name: 'threat-enrichments-indicator-file-elf-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.enrichments.indicator.file.elf.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.enrichments.indicator.file.elf.go_imports_names_var_entropy': { - dashed_name: 'threat-enrichments-indicator-file-elf-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.enrichments.indicator.file.elf.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.enrichments.indicator.file.elf.go_stripped': { - dashed_name: 'threat-enrichments-indicator-file-elf-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'threat.enrichments.indicator.file.elf.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'elf', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'threat.enrichments.indicator.file.elf.header.abi_version': { dashed_name: 'threat-enrichments-indicator-file-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -17387,20 +14885,6 @@ export const EcsNested = { short: 'Version of the ELF header.', type: 'keyword', }, - 'threat.enrichments.indicator.file.elf.import_hash': { - dashed_name: 'threat-enrichments-indicator-file-elf-import-hash', - description: - 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'threat.enrichments.indicator.file.elf.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the imports in an ELF file.', - type: 'keyword', - }, 'threat.enrichments.indicator.file.elf.imports': { dashed_name: 'threat-enrichments-indicator-file-elf-imports', description: 'List of imported element names and types.', @@ -17412,33 +14896,6 @@ export const EcsNested = { short: 'List of imported element names and types.', type: 'flattened', }, - 'threat.enrichments.indicator.file.elf.imports_names_entropy': { - dashed_name: 'threat-enrichments-indicator-file-elf-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.enrichments.indicator.file.elf.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'threat.enrichments.indicator.file.elf.imports_names_var_entropy': { - dashed_name: 'threat-enrichments-indicator-file-elf-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.enrichments.indicator.file.elf.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'threat.enrichments.indicator.file.elf.sections': { dashed_name: 'threat-enrichments-indicator-file-elf-sections', description: @@ -17535,18 +14992,6 @@ export const EcsNested = { short: 'ELF Section List type.', type: 'keyword', }, - 'threat.enrichments.indicator.file.elf.sections.var_entropy': { - dashed_name: 'threat-enrichments-indicator-file-elf-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'threat.enrichments.indicator.file.elf.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, 'threat.enrichments.indicator.file.elf.sections.virtual_address': { dashed_name: 'threat-enrichments-indicator-file-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -17909,75 +15354,14 @@ export const EcsNested = { dashed_name: 'threat-enrichments-indicator-file-pe-file-version', description: 'Internal version of the file, provided at compile-time.', example: '6.3.9600.17415', - flat_name: 'threat.enrichments.indicator.file.pe.file_version', - ignore_above: 1024, - level: 'extended', - name: 'file_version', - normalize: [], - original_fieldset: 'pe', - short: 'Process name.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.go_import_hash': { - dashed_name: 'threat-enrichments-indicator-file-pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'threat.enrichments.indicator.file.pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.go_imports': { - dashed_name: 'threat-enrichments-indicator-file-pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'threat.enrichments.indicator.file.pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'pe', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'threat.enrichments.indicator.file.pe.go_imports_names_entropy': { - dashed_name: 'threat-enrichments-indicator-file-pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.enrichments.indicator.file.pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.enrichments.indicator.file.pe.go_imports_names_var_entropy': { - dashed_name: 'threat-enrichments-indicator-file-pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.enrichments.indicator.file.pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.enrichments.indicator.file.pe.go_stripped': { - dashed_name: 'threat-enrichments-indicator-file-pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'threat.enrichments.indicator.file.pe.go_stripped', + flat_name: 'threat.enrichments.indicator.file.pe.file_version', + ignore_above: 1024, level: 'extended', - name: 'go_stripped', + name: 'file_version', normalize: [], original_fieldset: 'pe', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', + short: 'Process name.', + type: 'keyword', }, 'threat.enrichments.indicator.file.pe.imphash': { dashed_name: 'threat-enrichments-indicator-file-pe-imphash', @@ -17993,58 +15377,6 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'threat.enrichments.indicator.file.pe.import_hash': { - dashed_name: 'threat-enrichments-indicator-file-pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'threat.enrichments.indicator.file.pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.imports': { - dashed_name: 'threat-enrichments-indicator-file-pe-imports', - description: 'List of imported element names and types.', - flat_name: 'threat.enrichments.indicator.file.pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'pe', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'threat.enrichments.indicator.file.pe.imports_names_entropy': { - dashed_name: 'threat-enrichments-indicator-file-pe-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.enrichments.indicator.file.pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'threat.enrichments.indicator.file.pe.imports_names_var_entropy': { - dashed_name: 'threat-enrichments-indicator-file-pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.enrichments.indicator.file.pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'threat.enrichments.indicator.file.pe.original_file_name': { dashed_name: 'threat-enrichments-indicator-file-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -18085,78 +15417,6 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'threat.enrichments.indicator.file.pe.sections': { - dashed_name: 'threat-enrichments-indicator-file-pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'threat.enrichments.indicator.file.pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'pe', - short: 'Section information of the PE file.', - type: 'nested', - }, - 'threat.enrichments.indicator.file.pe.sections.entropy': { - dashed_name: 'threat-enrichments-indicator-file-pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'threat.enrichments.indicator.file.pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'threat.enrichments.indicator.file.pe.sections.name': { - dashed_name: 'threat-enrichments-indicator-file-pe-sections-name', - description: 'PE Section List name.', - flat_name: 'threat.enrichments.indicator.file.pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List name.', - type: 'keyword', - }, - 'threat.enrichments.indicator.file.pe.sections.physical_size': { - dashed_name: 'threat-enrichments-indicator-file-pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'threat.enrichments.indicator.file.pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List physical size.', - type: 'long', - }, - 'threat.enrichments.indicator.file.pe.sections.var_entropy': { - dashed_name: 'threat-enrichments-indicator-file-pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'threat.enrichments.indicator.file.pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'threat.enrichments.indicator.file.pe.sections.virtual_size': { - dashed_name: 'threat-enrichments-indicator-file-pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'threat.enrichments.indicator.file.pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, 'threat.enrichments.indicator.file.size': { dashed_name: 'threat-enrichments-indicator-file-size', description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', @@ -18746,31 +16006,6 @@ export const EcsNested = { short: 'Date/time indicator was last updated.', type: 'date', }, - 'threat.enrichments.indicator.name': { - dashed_name: 'threat-enrichments-indicator-name', - description: 'The display name indicator in an UI friendly format', - example: '5.2.75.227', - expected_values: [ - '5.2.75.227', - '2a02:cf40:add:4002:91f2:a9b2:e09a:6fc6', - 'https://example.com/some/path', - 'example.com', - '373d34874d7bc89fd4cefa6272ee80bf', - 'b0e914d1bbe19433cc9df64ea1ca07fe77f7b150b511b786e46e007941a62bd7', - 'email@example.com', - 'HKLM\\\\SOFTWARE\\\\Microsoft\\\\Active', - 13335, - '00:00:5e:00:53:af', - 8008, - ], - flat_name: 'threat.enrichments.indicator.name', - ignore_above: 1024, - level: 'extended', - name: 'enrichments.indicator.name', - normalize: [], - short: 'Indicator display name', - type: 'keyword', - }, 'threat.enrichments.indicator.port': { dashed_name: 'threat-enrichments-indicator-port', description: 'Identifies a threat indicator as a port number (irrespective of direction).', @@ -19999,67 +17234,6 @@ export const EcsNested = { short: 'List of exported element names and types.', type: 'flattened', }, - 'threat.indicator.file.elf.go_import_hash': { - dashed_name: 'threat-indicator-file-elf-go-import-hash', - description: - 'A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'threat.indicator.file.elf.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the Go language imports in an ELF file.', - type: 'keyword', - }, - 'threat.indicator.file.elf.go_imports': { - dashed_name: 'threat-indicator-file-elf-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'threat.indicator.file.elf.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'elf', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'threat.indicator.file.elf.go_imports_names_entropy': { - dashed_name: 'threat-indicator-file-elf-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.indicator.file.elf.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.indicator.file.elf.go_imports_names_var_entropy': { - dashed_name: 'threat-indicator-file-elf-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.indicator.file.elf.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.indicator.file.elf.go_stripped': { - dashed_name: 'threat-indicator-file-elf-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'threat.indicator.file.elf.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'elf', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'threat.indicator.file.elf.header.abi_version': { dashed_name: 'threat-indicator-file-elf-header-abi-version', description: 'Version of the ELF Application Binary Interface (ABI).', @@ -20156,20 +17330,6 @@ export const EcsNested = { short: 'Version of the ELF header.', type: 'keyword', }, - 'threat.indicator.file.elf.import_hash': { - dashed_name: 'threat-indicator-file-elf-import-hash', - description: - 'A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is an ELF implementation of the Windows PE imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'threat.indicator.file.elf.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'elf', - short: 'A hash of the imports in an ELF file.', - type: 'keyword', - }, 'threat.indicator.file.elf.imports': { dashed_name: 'threat-indicator-file-elf-imports', description: 'List of imported element names and types.', @@ -20181,33 +17341,6 @@ export const EcsNested = { short: 'List of imported element names and types.', type: 'flattened', }, - 'threat.indicator.file.elf.imports_names_entropy': { - dashed_name: 'threat-indicator-file-elf-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.indicator.file.elf.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'threat.indicator.file.elf.imports_names_var_entropy': { - dashed_name: 'threat-indicator-file-elf-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.indicator.file.elf.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'elf', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'threat.indicator.file.elf.sections': { dashed_name: 'threat-indicator-file-elf-sections', description: @@ -20304,18 +17437,6 @@ export const EcsNested = { short: 'ELF Section List type.', type: 'keyword', }, - 'threat.indicator.file.elf.sections.var_entropy': { - dashed_name: 'threat-indicator-file-elf-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'threat.indicator.file.elf.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'elf', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, 'threat.indicator.file.elf.sections.virtual_address': { dashed_name: 'threat-indicator-file-elf-sections-virtual-address', description: 'ELF Section List virtual address.', @@ -20687,67 +17808,6 @@ export const EcsNested = { short: 'Process name.', type: 'keyword', }, - 'threat.indicator.file.pe.go_import_hash': { - dashed_name: 'threat-indicator-file-pe-go-import-hash', - description: - 'A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThe algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma).', - example: '10bddcb4cee42080f76c88d9ff964491', - flat_name: 'threat.indicator.file.pe.go_import_hash', - ignore_above: 1024, - level: 'extended', - name: 'go_import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the Go language imports in a PE file.', - type: 'keyword', - }, - 'threat.indicator.file.pe.go_imports': { - dashed_name: 'threat-indicator-file-pe-go-imports', - description: 'List of imported Go language element names and types.', - flat_name: 'threat.indicator.file.pe.go_imports', - level: 'extended', - name: 'go_imports', - normalize: [], - original_fieldset: 'pe', - short: 'List of imported Go language element names and types.', - type: 'flattened', - }, - 'threat.indicator.file.pe.go_imports_names_entropy': { - dashed_name: 'threat-indicator-file-pe-go-imports-names-entropy', - description: 'Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.indicator.file.pe.go_imports_names_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.indicator.file.pe.go_imports_names_var_entropy': { - dashed_name: 'threat-indicator-file-pe-go-imports-names-var-entropy', - description: 'Variance for Shannon entropy calculation from the list of Go imports.', - flat_name: 'threat.indicator.file.pe.go_imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'go_imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the list of Go imports.', - type: 'long', - }, - 'threat.indicator.file.pe.go_stripped': { - dashed_name: 'threat-indicator-file-pe-go-stripped', - description: - 'Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable.', - flat_name: 'threat.indicator.file.pe.go_stripped', - level: 'extended', - name: 'go_stripped', - normalize: [], - original_fieldset: 'pe', - short: 'Whether the file is a stripped or obfuscated Go executable.', - type: 'boolean', - }, 'threat.indicator.file.pe.imphash': { dashed_name: 'threat-indicator-file-pe-imphash', description: @@ -20762,58 +17822,6 @@ export const EcsNested = { short: 'A hash of the imports in a PE file.', type: 'keyword', }, - 'threat.indicator.file.pe.import_hash': { - dashed_name: 'threat-indicator-file-pe-import-hash', - description: - 'A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nThis is a synonym for imphash.', - example: 'd41d8cd98f00b204e9800998ecf8427e', - flat_name: 'threat.indicator.file.pe.import_hash', - ignore_above: 1024, - level: 'extended', - name: 'import_hash', - normalize: [], - original_fieldset: 'pe', - short: 'A hash of the imports in a PE file.', - type: 'keyword', - }, - 'threat.indicator.file.pe.imports': { - dashed_name: 'threat-indicator-file-pe-imports', - description: 'List of imported element names and types.', - flat_name: 'threat.indicator.file.pe.imports', - level: 'extended', - name: 'imports', - normalize: ['array'], - original_fieldset: 'pe', - short: 'List of imported element names and types.', - type: 'flattened', - }, - 'threat.indicator.file.pe.imports_names_entropy': { - dashed_name: 'threat-indicator-file-pe-imports-names-entropy', - description: - 'Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.indicator.file.pe.imports_names_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, - 'threat.indicator.file.pe.imports_names_var_entropy': { - dashed_name: 'threat-indicator-file-pe-imports-names-var-entropy', - description: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - flat_name: 'threat.indicator.file.pe.imports_names_var_entropy', - format: 'number', - level: 'extended', - name: 'imports_names_var_entropy', - normalize: [], - original_fieldset: 'pe', - short: - 'Variance for Shannon entropy calculation from the list of imported element names and types.', - type: 'long', - }, 'threat.indicator.file.pe.original_file_name': { dashed_name: 'threat-indicator-file-pe-original-file-name', description: 'Internal name of the file, provided at compile-time.', @@ -20854,78 +17862,6 @@ export const EcsNested = { short: 'Internal product name of the file, provided at compile-time.', type: 'keyword', }, - 'threat.indicator.file.pe.sections': { - dashed_name: 'threat-indicator-file-pe-sections', - description: - 'An array containing an object for each section of the PE file.\nThe keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`.', - flat_name: 'threat.indicator.file.pe.sections', - level: 'extended', - name: 'sections', - normalize: ['array'], - original_fieldset: 'pe', - short: 'Section information of the PE file.', - type: 'nested', - }, - 'threat.indicator.file.pe.sections.entropy': { - dashed_name: 'threat-indicator-file-pe-sections-entropy', - description: 'Shannon entropy calculation from the section.', - flat_name: 'threat.indicator.file.pe.sections.entropy', - format: 'number', - level: 'extended', - name: 'sections.entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Shannon entropy calculation from the section.', - type: 'long', - }, - 'threat.indicator.file.pe.sections.name': { - dashed_name: 'threat-indicator-file-pe-sections-name', - description: 'PE Section List name.', - flat_name: 'threat.indicator.file.pe.sections.name', - ignore_above: 1024, - level: 'extended', - name: 'sections.name', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List name.', - type: 'keyword', - }, - 'threat.indicator.file.pe.sections.physical_size': { - dashed_name: 'threat-indicator-file-pe-sections-physical-size', - description: 'PE Section List physical size.', - flat_name: 'threat.indicator.file.pe.sections.physical_size', - format: 'bytes', - level: 'extended', - name: 'sections.physical_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List physical size.', - type: 'long', - }, - 'threat.indicator.file.pe.sections.var_entropy': { - dashed_name: 'threat-indicator-file-pe-sections-var-entropy', - description: 'Variance for Shannon entropy calculation from the section.', - flat_name: 'threat.indicator.file.pe.sections.var_entropy', - format: 'number', - level: 'extended', - name: 'sections.var_entropy', - normalize: [], - original_fieldset: 'pe', - short: 'Variance for Shannon entropy calculation from the section.', - type: 'long', - }, - 'threat.indicator.file.pe.sections.virtual_size': { - dashed_name: 'threat-indicator-file-pe-sections-virtual-size', - description: 'PE Section List virtual size. This is always the same as `physical_size`.', - flat_name: 'threat.indicator.file.pe.sections.virtual_size', - format: 'string', - level: 'extended', - name: 'sections.virtual_size', - normalize: [], - original_fieldset: 'pe', - short: 'PE Section List virtual size. This is always the same as `physical_size`.', - type: 'long', - }, 'threat.indicator.file.size': { dashed_name: 'threat-indicator-file-size', description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', @@ -21515,31 +18451,6 @@ export const EcsNested = { short: 'Date/time indicator was last updated.', type: 'date', }, - 'threat.indicator.name': { - dashed_name: 'threat-indicator-name', - description: 'The display name indicator in an UI friendly format', - example: '5.2.75.227', - expected_values: [ - '5.2.75.227', - '2a02:cf40:add:4002:91f2:a9b2:e09a:6fc6', - 'https://example.com/some/path', - 'example.com', - '373d34874d7bc89fd4cefa6272ee80bf', - 'b0e914d1bbe19433cc9df64ea1ca07fe77f7b150b511b786e46e007941a62bd7', - 'email@example.com', - 'HKLM\\\\SOFTWARE\\\\Microsoft\\\\Active', - 13335, - '00:00:5e:00:53:af', - 8008, - ], - flat_name: 'threat.indicator.name', - ignore_above: 1024, - level: 'extended', - name: 'indicator.name', - normalize: [], - short: 'Indicator display name', - type: 'keyword', - }, 'threat.indicator.port': { dashed_name: 'threat-indicator-port', description: 'Identifies a threat indicator as a port number (irrespective of direction).', diff --git a/packages/kbn-ecs/generated/elf.ts b/packages/kbn-ecs/generated/elf.ts index 12133f6afb486..3036fa8690733 100644 --- a/packages/kbn-ecs/generated/elf.ts +++ b/packages/kbn-ecs/generated/elf.ts @@ -29,28 +29,7 @@ export interface EcsElf { /** * List of exported element names and types. */ - exports?: Record | Array>; - /** - * A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; + exports?: Array>; header?: { /** * Version of the ELF Application Binary Interface (ABI). @@ -86,37 +65,24 @@ export interface EcsElf { version?: string; }; - /** - * A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is an ELF implementation of the Windows PE imphash. - */ - import_hash?: string; /** * List of imported element names and types. */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; + imports?: Array>; /** * An array containing an object for each section of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. */ - sections?: Record | Array>; + sections?: Array>; /** * An array containing an object for each segment of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. */ - segments?: Record | Array>; + segments?: Array>; /** * List of shared libraries used by this ELF object. */ - shared_libraries?: string | string[]; + shared_libraries?: string[]; /** * telfhash symbol hash for ELF file. */ diff --git a/packages/kbn-ecs/generated/email.ts b/packages/kbn-ecs/generated/email.ts index d24658894a9c0..6148733a28a14 100644 --- a/packages/kbn-ecs/generated/email.ts +++ b/packages/kbn-ecs/generated/email.ts @@ -14,19 +14,19 @@ export interface EcsEmail { /** * A list of objects describing the attachment files sent along with an email message. */ - attachments?: Record | Array>; + attachments?: Array>; bcc?: { /** * The email address of BCC recipient */ - address?: string | string[]; + address?: string[]; }; cc?: { /** * The email address of CC recipient */ - address?: string | string[]; + address?: string[]; }; /** @@ -46,7 +46,7 @@ export interface EcsEmail { /** * The email address of the sender, typically from the RFC 5322 `From:` header field. */ - address?: string | string[]; + address?: string[]; }; /** @@ -66,7 +66,7 @@ export interface EcsEmail { /** * The address that replies should be delivered to based on the value in the RFC 5322 `Reply-To:` header. */ - address?: string | string[]; + address?: string[]; }; sender?: { @@ -84,7 +84,7 @@ export interface EcsEmail { /** * The email address of recipient */ - address?: string | string[]; + address?: string[]; }; /** diff --git a/packages/kbn-ecs/generated/event.ts b/packages/kbn-ecs/generated/event.ts index ea95c7cf91222..bab8fe9dfa1ca 100644 --- a/packages/kbn-ecs/generated/event.ts +++ b/packages/kbn-ecs/generated/event.ts @@ -32,17 +32,17 @@ export interface EcsEvent { * `event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory. * This field is an array. This will allow proper categorization of some events that fall in multiple categories. */ - category?: string | string[]; + category?: string[]; /** * Identification code for this event, if one exists. * Some event sources use event codes to identify messages unambiguously, regardless of message language or wording adjustments over time. An example of this is the Windows Event ID. */ code?: string; /** - * `event.created` contains the date/time when the event was first read by an agent, or by your pipeline. - * This field is distinct from `@timestamp` in that `@timestamp` typically contain the time extracted from the original event. + * event.created contains the date/time when the event was first read by an agent, or by your pipeline. + * This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. * In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. - * In case the two timestamps are identical, `@timestamp` should be used. + * In case the two timestamps are identical, @timestamp should be used. */ created?: string; /** @@ -53,11 +53,11 @@ export interface EcsEvent { dataset?: string; /** * Duration of the event in nanoseconds. - * If `event.start` and `event.end` are known this value should be the difference between the end and start time. + * If event.start and event.end are known this value should be the difference between the end and start time. */ duration?: number; /** - * `event.end` contains the date when the event ended or when the activity was last observed. + * event.end contains the date when the event ended or when the activity was last observed. */ end?: string; /** @@ -77,7 +77,7 @@ export interface EcsEvent { /** * This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy. * `event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events. - * The value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data is coming in at a regular interval or not. + * The value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not. */ kind?: string; /** @@ -134,7 +134,7 @@ export interface EcsEvent { */ severity?: number; /** - * `event.start` contains the date when the event started or when the activity was first observed. + * event.start contains the date when the event started or when the activity was first observed. */ start?: string; /** @@ -147,7 +147,7 @@ export interface EcsEvent { * `event.type` represents a categorization "sub-bucket" that, when used along with the `event.category` field values, enables filtering events down to a level appropriate for single visualization. * This field is an array. This will allow proper categorization of some events that fall in multiple event types. */ - type?: string | string[]; + type?: string[]; /** * URL linking to an external system to continue investigation of this event. * This URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. diff --git a/packages/kbn-ecs/generated/faas.ts b/packages/kbn-ecs/generated/faas.ts index c589e8e924b8d..91704dd91348e 100644 --- a/packages/kbn-ecs/generated/faas.ts +++ b/packages/kbn-ecs/generated/faas.ts @@ -27,17 +27,10 @@ export interface EcsFaas { * The name of a serverless function. */ name?: string; - trigger?: { - /** - * The ID of the trigger request , message, event, etc. - */ - request_id?: string; - /** - * The trigger for the function execution. - */ - type?: string; - }; - + /** + * Details about the function trigger. + */ + trigger?: Record; /** * The version of a serverless function. */ diff --git a/packages/kbn-ecs/generated/file.ts b/packages/kbn-ecs/generated/file.ts index 66f60db2fd686..c759adace6246 100644 --- a/packages/kbn-ecs/generated/file.ts +++ b/packages/kbn-ecs/generated/file.ts @@ -20,7 +20,7 @@ export interface EcsFile { * Array of file attributes. * Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write. */ - attributes?: string | string[]; + attributes?: string[]; code_signature?: { /** * The hashing algorithm used to sign the process. @@ -109,28 +109,7 @@ export interface EcsFile { /** * List of exported element names and types. */ - exports?: Record | Array>; - /** - * A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; + exports?: Array>; header?: { /** * Version of the ELF Application Binary Interface (ABI). @@ -166,37 +145,24 @@ export interface EcsFile { version?: string; }; - /** - * A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is an ELF implementation of the Windows PE imphash. - */ - import_hash?: string; /** * List of imported element names and types. */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; + imports?: Array>; /** * An array containing an object for each section of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. */ - sections?: Record | Array>; + sections?: Array>; /** * An array containing an object for each segment of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. */ - segments?: Record | Array>; + segments?: Array>; /** * List of shared libraries used by this ELF object. */ - shared_libraries?: string | string[]; + shared_libraries?: string[]; /** * telfhash symbol hash for ELF file. */ @@ -257,57 +223,6 @@ export interface EcsFile { * Inode representing the file in the filesystem. */ inode?: string; - macho?: { - /** - * A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; - /** - * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is a synonym for symhash. - */ - import_hash?: string; - /** - * List of imported element names and types. - */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; - /** - * An array containing an object for each section of the Mach-O file. - * The keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`. - */ - sections?: Record | Array>; - /** - * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is a Mach-O implementation of the Windows PE imphash - */ - symhash?: string; - }; - /** * MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used. */ @@ -349,49 +264,11 @@ export interface EcsFile { * Internal version of the file, provided at compile-time. */ file_version?: string; - /** - * A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; /** * A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. */ imphash?: string; - /** - * A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is a synonym for imphash. - */ - import_hash?: string; - /** - * List of imported element names and types. - */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; /** * Internal name of the file, provided at compile-time. */ @@ -405,11 +282,6 @@ export interface EcsFile { * Internal product name of the file, provided at compile-time. */ product?: string; - /** - * An array containing an object for each section of the PE file. - * The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`. - */ - sections?: Record | Array>; }; /** @@ -433,16 +305,16 @@ export interface EcsFile { /** * List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. */ - alternative_names?: string | string[]; + alternative_names?: string[]; issuer?: { /** * List of common name (CN) of issuing certificate authority. */ - common_name?: string | string[]; + common_name?: string[]; /** * List of country \(C) codes */ - country?: string | string[]; + country?: string[]; /** * Distinguished name (DN) of issuing certificate authority. */ @@ -450,19 +322,19 @@ export interface EcsFile { /** * List of locality names (L) */ - locality?: string | string[]; + locality?: string[]; /** * List of organizations (O) of issuing certificate authority. */ - organization?: string | string[]; + organization?: string[]; /** * List of organizational units (OU) of issuing certificate authority. */ - organizational_unit?: string | string[]; + organizational_unit?: string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string | string[]; + state_or_province?: string[]; }; /** @@ -501,11 +373,11 @@ export interface EcsFile { /** * List of common names (CN) of subject. */ - common_name?: string | string[]; + common_name?: string[]; /** * List of country \(C) code */ - country?: string | string[]; + country?: string[]; /** * Distinguished name (DN) of the certificate subject entity. */ @@ -513,19 +385,19 @@ export interface EcsFile { /** * List of locality names (L) */ - locality?: string | string[]; + locality?: string[]; /** * List of organizations (O) of subject. */ - organization?: string | string[]; + organization?: string[]; /** * List of organizational units (OU) of subject. */ - organizational_unit?: string | string[]; + organizational_unit?: string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string | string[]; + state_or_province?: string[]; }; /** diff --git a/packages/kbn-ecs/generated/host.ts b/packages/kbn-ecs/generated/host.ts index 3cdc083145d7f..aa2f082dbb60e 100644 --- a/packages/kbn-ecs/generated/host.ts +++ b/packages/kbn-ecs/generated/host.ts @@ -116,15 +116,15 @@ export interface EcsHost { /** * Host ip addresses. */ - ip?: string | string[]; + ip?: string[]; /** * Host MAC addresses. * The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. */ - mac?: string | string[]; + mac?: string[]; /** * Name of the host. - * It can contain what hostname returns on Unix systems, the fully qualified domain name (FQDN), or a name specified by the user. The recommended value is the lowercase FQDN of the host. + * It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. */ name?: string; network?: { diff --git a/packages/kbn-ecs/generated/index.ts b/packages/kbn-ecs/generated/index.ts index e7d4e54e9a6b6..bd3cd6a3a7eac 100644 --- a/packages/kbn-ecs/generated/index.ts +++ b/packages/kbn-ecs/generated/index.ts @@ -32,7 +32,6 @@ import { EcsHost } from './host'; import { EcsHttp } from './http'; import { EcsInterface } from './interface'; import { EcsLog } from './log'; -import { EcsMacho } from './macho'; import { EcsNetwork } from './network'; import { EcsObserver } from './observer'; import { EcsOrchestrator } from './orchestrator'; @@ -58,7 +57,7 @@ import { EcsVlan } from './vlan'; import { EcsVulnerability } from './vulnerability'; import { EcsX509 } from './x509'; -export const EcsVersion = '8.10.0' as const; +export const EcsVersion = '8.6.1' as const; /** * Exporting raw schema files for easy programmatic use @@ -93,7 +92,6 @@ export type { EcsHttp, EcsInterface, EcsLog, - EcsMacho, EcsNetwork, EcsObserver, EcsOrchestrator, diff --git a/packages/kbn-ecs/generated/macho.ts b/packages/kbn-ecs/generated/macho.ts index 023f13395dd6b..4f6ae41df01b3 100644 --- a/packages/kbn-ecs/generated/macho.ts +++ b/packages/kbn-ecs/generated/macho.ts @@ -39,7 +39,7 @@ export interface EcsMacho { /** * List of imported element names and types. */ - imports?: Record | Array>; + imports?: Record; /** * Shannon entropy calculation from the list of imported element names and types. */ @@ -52,7 +52,7 @@ export interface EcsMacho { * An array containing an object for each section of the Mach-O file. * The keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`. */ - sections?: Record | Array>; + sections?: Record; /** * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * This is a Mach-O implementation of the Windows PE imphash diff --git a/packages/kbn-ecs/generated/observer.ts b/packages/kbn-ecs/generated/observer.ts index 775adeed1fa83..ae4c6f5b8e47a 100644 --- a/packages/kbn-ecs/generated/observer.ts +++ b/packages/kbn-ecs/generated/observer.ts @@ -76,12 +76,12 @@ export interface EcsObserver { /** * IP addresses of the observer. */ - ip?: string | string[]; + ip?: string[]; /** * MAC addresses of the observer. * The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. */ - mac?: string | string[]; + mac?: string[]; /** * Custom name of the observer. * This is a name that can be given to an observer. This can be helpful for example if multiple firewalls of the same model are used in an organization. diff --git a/packages/kbn-ecs/generated/orchestrator.ts b/packages/kbn-ecs/generated/orchestrator.ts index 08378f6f1744a..386f182209a29 100644 --- a/packages/kbn-ecs/generated/orchestrator.ts +++ b/packages/kbn-ecs/generated/orchestrator.ts @@ -42,10 +42,6 @@ export interface EcsOrchestrator { */ organization?: string; resource?: { - /** - * The list of annotations added to the resource. - */ - annotation?: string | string[]; /** * Unique ID of the resource being acted upon. */ @@ -53,11 +49,7 @@ export interface EcsOrchestrator { /** * IP address assigned to the resource associated with the event being observed. In the case of a Kubernetes Pod, this array would contain only one element: the IP of the Pod (as opposed to the Node on which the Pod is running). */ - ip?: string | string[]; - /** - * The list of labels added to the resource. - */ - label?: string | string[]; + ip?: string[]; /** * Name of the resource being acted upon. */ diff --git a/packages/kbn-ecs/generated/pe.ts b/packages/kbn-ecs/generated/pe.ts index 431dbcc33490a..91ba52d8f4a11 100644 --- a/packages/kbn-ecs/generated/pe.ts +++ b/packages/kbn-ecs/generated/pe.ts @@ -26,49 +26,11 @@ export interface EcsPe { * Internal version of the file, provided at compile-time. */ file_version?: string; - /** - * A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; /** * A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. */ imphash?: string; - /** - * A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is a synonym for imphash. - */ - import_hash?: string; - /** - * List of imported element names and types. - */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; /** * Internal name of the file, provided at compile-time. */ @@ -82,9 +44,4 @@ export interface EcsPe { * Internal product name of the file, provided at compile-time. */ product?: string; - /** - * An array containing an object for each section of the PE file. - * The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`. - */ - sections?: Record | Array>; } diff --git a/packages/kbn-ecs/generated/process.ts b/packages/kbn-ecs/generated/process.ts index a011f81dca9d0..fad38c5e9775f 100644 --- a/packages/kbn-ecs/generated/process.ts +++ b/packages/kbn-ecs/generated/process.ts @@ -15,7 +15,7 @@ export interface EcsProcess { * Array of process arguments, starting with the absolute path to the executable. * May be filtered to protect sensitive information. */ - args?: string | string[]; + args?: string[]; /** * Length of the process.args array. * This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. @@ -91,28 +91,7 @@ export interface EcsProcess { /** * List of exported element names and types. */ - exports?: Record | Array>; - /** - * A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; + exports?: Array>; header?: { /** * Version of the ELF Application Binary Interface (ABI). @@ -148,37 +127,24 @@ export interface EcsProcess { version?: string; }; - /** - * A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is an ELF implementation of the Windows PE imphash. - */ - import_hash?: string; /** * List of imported element names and types. */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; + imports?: Array>; /** * An array containing an object for each section of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. */ - sections?: Record | Array>; + sections?: Array>; /** * An array containing an object for each segment of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. */ - segments?: Record | Array>; + segments?: Array>; /** * List of shared libraries used by this ELF object. */ - shared_libraries?: string | string[]; + shared_libraries?: string[]; /** * telfhash symbol hash for ELF file. */ @@ -200,7 +166,7 @@ export interface EcsProcess { * Array of process arguments, starting with the absolute path to the executable. * May be filtered to protect sensitive information. */ - args?: string | string[]; + args?: string[]; /** * Length of the process.args array. * This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. @@ -302,22 +268,12 @@ export interface EcsProcess { * The time the process started. */ start?: string; - /** - * Virtual process id. - * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. - */ - vpid?: number; }; /** * The time the process started. */ start?: string; - /** - * Virtual process id. - * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. - */ - vpid?: number; }; /** @@ -406,11 +362,6 @@ export interface EcsProcess { name?: string; }; - /** - * Virtual process id. - * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. - */ - vpid?: number; /** * The working directory of the process. */ @@ -421,7 +372,7 @@ export interface EcsProcess { * Array of environment variable bindings. Captured from a snapshot of the environment at the time of execution. * May be filtered to protect sensitive information. */ - env_vars?: string | string[]; + env_vars?: string[]; /** * Absolute path to the process executable. */ @@ -436,7 +387,7 @@ export interface EcsProcess { * Array of process arguments, starting with the absolute path to the executable. * May be filtered to protect sensitive information. */ - args?: string | string[]; + args?: string[]; /** * Length of the process.args array. * This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. @@ -565,11 +516,6 @@ export interface EcsProcess { name?: string; }; - /** - * Virtual process id. - * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. - */ - vpid?: number; /** * The working directory of the process. */ @@ -618,57 +564,6 @@ export interface EcsProcess { * This field only appears on the top level process object, which is the process that wrote the output or read the input. */ io?: Record; - macho?: { - /** - * A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; - /** - * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is a synonym for symhash. - */ - import_hash?: string; - /** - * List of imported element names and types. - */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; - /** - * An array containing an object for each section of the Mach-O file. - * The keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`. - */ - sections?: Record | Array>; - /** - * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is a Mach-O implementation of the Windows PE imphash - */ - symhash?: string; - }; - /** * Process name. * Sometimes called program name or similar. @@ -679,7 +574,7 @@ export interface EcsProcess { * Array of process arguments, starting with the absolute path to the executable. * May be filtered to protect sensitive information. */ - args?: string | string[]; + args?: string[]; /** * Length of the process.args array. * This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. @@ -755,28 +650,7 @@ export interface EcsProcess { /** * List of exported element names and types. */ - exports?: Record | Array>; - /** - * A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; + exports?: Array>; header?: { /** * Version of the ELF Application Binary Interface (ABI). @@ -812,37 +686,24 @@ export interface EcsProcess { version?: string; }; - /** - * A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is an ELF implementation of the Windows PE imphash. - */ - import_hash?: string; /** * List of imported element names and types. */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; + imports?: Array>; /** * An array containing an object for each section of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. */ - sections?: Record | Array>; + sections?: Array>; /** * An array containing an object for each segment of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. */ - segments?: Record | Array>; + segments?: Array>; /** * List of shared libraries used by this ELF object. */ - shared_libraries?: string | string[]; + shared_libraries?: string[]; /** * telfhash symbol hash for ELF file. */ @@ -894,11 +755,6 @@ export interface EcsProcess { * The time the process started. */ start?: string; - /** - * Virtual process id. - * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. - */ - vpid?: number; }; hash?: { @@ -938,57 +794,6 @@ export interface EcsProcess { * Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY. */ interactive?: boolean; - macho?: { - /** - * A hash of the Go language imports in a Mach-O file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; - /** - * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is a synonym for symhash. - */ - import_hash?: string; - /** - * List of imported element names and types. - */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; - /** - * An array containing an object for each section of the Mach-O file. - * The keys that should be present in these objects are defined by sub-fields underneath `macho.sections.*`. - */ - sections?: Record | Array>; - /** - * A hash of the imports in a Mach-O file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is a Mach-O implementation of the Windows PE imphash - */ - symhash?: string; - }; - /** * Process name. * Sometimes called program name or similar. @@ -1011,49 +816,11 @@ export interface EcsProcess { * Internal version of the file, provided at compile-time. */ file_version?: string; - /** - * A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; /** * A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. */ imphash?: string; - /** - * A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is a synonym for imphash. - */ - import_hash?: string; - /** - * List of imported element names and types. - */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; /** * Internal name of the file, provided at compile-time. */ @@ -1067,11 +834,6 @@ export interface EcsProcess { * Internal product name of the file, provided at compile-time. */ product?: string; - /** - * An array containing an object for each section of the PE file. - * The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`. - */ - sections?: Record | Array>; }; /** @@ -1143,17 +905,6 @@ export interface EcsProcess { }; thread?: { - capabilities?: { - /** - * This is the set of capabilities used by the kernel to perform permission checks for the thread. - */ - effective?: string | string[]; - /** - * This is a limiting superset for the effective capabilities that the thread may assume. - */ - permitted?: string | string[]; - }; - /** * Thread ID. */ @@ -1188,11 +939,6 @@ export interface EcsProcess { name?: string; }; - /** - * Virtual process id. - * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. - */ - vpid?: number; /** * The working directory of the process. */ @@ -1216,49 +962,11 @@ export interface EcsProcess { * Internal version of the file, provided at compile-time. */ file_version?: string; - /** - * A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; /** * A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. */ imphash?: string; - /** - * A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is a synonym for imphash. - */ - import_hash?: string; - /** - * List of imported element names and types. - */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; /** * Internal name of the file, provided at compile-time. */ @@ -1272,11 +980,6 @@ export interface EcsProcess { * Internal product name of the file, provided at compile-time. */ product?: string; - /** - * An array containing an object for each section of the PE file. - * The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`. - */ - sections?: Record | Array>; }; /** @@ -1293,7 +996,7 @@ export interface EcsProcess { * Array of process arguments, starting with the absolute path to the executable. * May be filtered to protect sensitive information. */ - args?: string | string[]; + args?: string[]; /** * Length of the process.args array. * This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. @@ -1354,7 +1057,7 @@ export interface EcsProcess { * Array of process arguments, starting with the absolute path to the executable. * May be filtered to protect sensitive information. */ - args?: string | string[]; + args?: string[]; /** * Length of the process.args array. * This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. @@ -1423,22 +1126,12 @@ export interface EcsProcess { * The time the process started. */ start?: string; - /** - * Virtual process id. - * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. - */ - vpid?: number; }; /** * The time the process started. */ start?: string; - /** - * Virtual process id. - * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. - */ - vpid?: number; }; /** @@ -1527,11 +1220,6 @@ export interface EcsProcess { name?: string; }; - /** - * Virtual process id. - * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. - */ - vpid?: number; /** * The working directory of the process. */ @@ -1554,17 +1242,6 @@ export interface EcsProcess { }; thread?: { - capabilities?: { - /** - * This is the set of capabilities used by the kernel to perform permission checks for the thread. - */ - effective?: string | string[]; - /** - * This is a limiting superset for the effective capabilities that the thread may assume. - */ - permitted?: string | string[]; - }; - /** * Thread ID. */ @@ -1599,11 +1276,6 @@ export interface EcsProcess { name?: string; }; - /** - * Virtual process id. - * The process id within a pid namespace. This is not necessarily unique across all processes on the host but it is unique within the process namespace that the process exists within. - */ - vpid?: number; /** * The working directory of the process. */ diff --git a/packages/kbn-ecs/generated/registry.ts b/packages/kbn-ecs/generated/registry.ts index b591bc79cdcfc..f1f5ade606b12 100644 --- a/packages/kbn-ecs/generated/registry.ts +++ b/packages/kbn-ecs/generated/registry.ts @@ -20,7 +20,7 @@ export interface EcsRegistry { * Content when writing string types. * Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). */ - strings?: string | string[]; + strings?: string[]; /** * Standard registry type for encoding contents */ diff --git a/packages/kbn-ecs/generated/related.ts b/packages/kbn-ecs/generated/related.ts index 07ce7c8e582df..dc6e1d6b40130 100644 --- a/packages/kbn-ecs/generated/related.ts +++ b/packages/kbn-ecs/generated/related.ts @@ -15,17 +15,17 @@ export interface EcsRelated { /** * All the hashes seen on your event. Populating this field, then using it to search for hashes can help in situations where you're unsure what the hash algorithm is (and therefore which key name to search). */ - hash?: string | string[]; + hash?: string[]; /** * All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases. */ - hosts?: string | string[]; + hosts?: string[]; /** * All of the IPs seen on your event. */ - ip?: string | string[]; + ip?: string[]; /** * All the user names or other user identifiers seen on the event. */ - user?: string | string[]; + user?: string[]; } diff --git a/packages/kbn-ecs/generated/rule.ts b/packages/kbn-ecs/generated/rule.ts index 6942149e002b5..d632db2e967ca 100644 --- a/packages/kbn-ecs/generated/rule.ts +++ b/packages/kbn-ecs/generated/rule.ts @@ -14,7 +14,7 @@ export interface EcsRule { /** * Name, organization, or pseudonym of the author or authors who created the rule used to generate this event. */ - author?: string | string[]; + author?: string[]; /** * A categorization value keyword used by the entity using the rule for detection of this event. */ diff --git a/packages/kbn-ecs/generated/schema.ts b/packages/kbn-ecs/generated/schema.ts new file mode 100644 index 0000000000000..72e60f123f788 --- /dev/null +++ b/packages/kbn-ecs/generated/schema.ts @@ -0,0 +1,22185 @@ +/* + * Copyright 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 EcsSchema = { + agent: { + description: + 'The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host.\nExamples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken.', + fields: { + 'agent.build.original': { + dashed_name: 'agent-build-original', + description: + 'Extended build information for the agent.\nThis field is intended to contain any build information that a data source may provide, no specific formatting is required.', + example: + 'metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC]', + flat_name: 'agent.build.original', + ignore_above: 1024, + level: 'core', + name: 'build.original', + normalize: [], + short: 'Extended build information for the agent.', + type: 'keyword', + }, + 'agent.ephemeral_id': { + dashed_name: 'agent-ephemeral-id', + description: + 'Ephemeral identifier of this agent (if one exists).\nThis id normally changes across restarts, but `agent.id` does not.', + example: '8a4f500f', + flat_name: 'agent.ephemeral_id', + ignore_above: 1024, + level: 'extended', + name: 'ephemeral_id', + normalize: [], + short: 'Ephemeral identifier of this agent.', + type: 'keyword', + }, + 'agent.id': { + dashed_name: 'agent-id', + description: + 'Unique identifier of this agent (if one exists).\nExample: For Beats this would be beat.id.', + example: '8a4f500d', + flat_name: 'agent.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + short: 'Unique identifier of this agent.', + type: 'keyword', + }, + 'agent.name': { + dashed_name: 'agent-name', + description: + 'Custom name of the agent.\nThis is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from.', + example: 'foo', + flat_name: 'agent.name', + ignore_above: 1024, + level: 'core', + name: 'name', + normalize: [], + short: 'Custom name of the agent.', + type: 'keyword', + }, + 'agent.type': { + dashed_name: 'agent-type', + description: + 'Type of the agent.\nThe agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine.', + example: 'filebeat', + flat_name: 'agent.type', + ignore_above: 1024, + level: 'core', + name: 'type', + normalize: [], + short: 'Type of the agent.', + type: 'keyword', + }, + 'agent.version': { + dashed_name: 'agent-version', + description: 'Version of the agent.', + example: '6.0.0-rc2', + flat_name: 'agent.version', + ignore_above: 1024, + level: 'core', + name: 'version', + normalize: [], + short: 'Version of the agent.', + type: 'keyword', + }, + }, + footnote: + 'Examples: In the case of Beats for logs, the agent.name is filebeat. For APM, it is the agent running in the app/service. The agent information does not change if data is sent through queuing systems like Kafka, Redis, or processing systems such as Logstash or APM Server.', + group: 2, + name: 'agent', + prefix: 'agent.', + short: 'Fields about the monitoring agent.', + title: 'Agent', + type: 'group', + }, + as: { + description: + 'An autonomous system (AS) is a collection of connected Internet Protocol (IP) routing prefixes under the control of one or more network operators on behalf of a single administrative entity or domain that presents a common, clearly defined routing policy to the internet.', + fields: { + 'as.number': { + dashed_name: 'as-number', + description: + 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', + example: 15169, + flat_name: 'as.number', + level: 'extended', + name: 'number', + normalize: [], + short: 'Unique number allocated to the autonomous system.', + type: 'long', + }, + 'as.organization.name': { + dashed_name: 'as-organization-name', + description: 'Organization name.', + example: 'Google LLC', + flat_name: 'as.organization.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'as.organization.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'organization.name', + normalize: [], + short: 'Organization name.', + type: 'keyword', + }, + }, + group: 2, + name: 'as', + prefix: 'as.', + reusable: { + expected: [ + { as: 'as', at: 'client', full: 'client.as' }, + { as: 'as', at: 'destination', full: 'destination.as' }, + { as: 'as', at: 'server', full: 'server.as' }, + { as: 'as', at: 'source', full: 'source.as' }, + { as: 'as', at: 'threat.indicator', full: 'threat.indicator.as' }, + { + as: 'as', + at: 'threat.enrichments.indicator', + full: 'threat.enrichments.indicator.as', + }, + ], + top_level: false, + }, + short: 'Fields describing an Autonomous System (Internet routing prefix).', + title: 'Autonomous System', + type: 'group', + }, + base: { + description: + 'The `base` field set contains all fields which are at the root of the events. These fields are common across all types of events.', + fields: { + '@timestamp': { + dashed_name: 'timestamp', + description: + 'Date/time when the event originated.\nThis is the date/time extracted from the event, typically representing when the event was generated by the source.\nIf the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline.\nRequired field for all events.', + example: '2016-05-23T08:05:34.853Z', + flat_name: '@timestamp', + level: 'core', + name: '@timestamp', + normalize: [], + required: true, + short: 'Date/time when the event originated.', + type: 'date', + }, + labels: { + dashed_name: 'labels', + description: + 'Custom key/value pairs.\nCan be used to add meta information to events. Should not contain nested objects. All values are stored as keyword.\nExample: `docker` and `k8s` labels.', + example: '{"application": "foo-bar", "env": "production"}', + flat_name: 'labels', + level: 'core', + name: 'labels', + normalize: [], + object_type: 'keyword', + short: 'Custom key/value pairs.', + type: 'object', + }, + message: { + dashed_name: 'message', + description: + 'For log events the message field contains the log message, optimized for viewing in a log viewer.\nFor structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event.\nIf multiple messages exist, they can be combined into one message.', + example: 'Hello World', + flat_name: 'message', + level: 'core', + name: 'message', + normalize: [], + short: 'Log message optimized for viewing in a log viewer.', + type: 'match_only_text', + }, + tags: { + dashed_name: 'tags', + description: 'List of keywords used to tag each event.', + example: '["production", "env2"]', + flat_name: 'tags', + ignore_above: 1024, + level: 'core', + name: 'tags', + normalize: ['array'], + short: 'List of keywords used to tag each event.', + type: 'keyword', + }, + }, + group: 1, + name: 'base', + prefix: '', + root: true, + short: 'All fields defined directly at the root of the events.', + title: 'Base', + type: 'group', + }, + client: { + description: + 'A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records.\nFor TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events.\nClient / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately.', + fields: { + 'client.address': { + dashed_name: 'client-address', + description: + 'Some event client addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field.\nThen it should be duplicated to `.ip` or `.domain`, depending on which one it is.', + flat_name: 'client.address', + ignore_above: 1024, + level: 'extended', + name: 'address', + normalize: [], + short: 'Client network address.', + type: 'keyword', + }, + 'client.as.number': { + dashed_name: 'client-as-number', + description: + 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', + example: 15169, + flat_name: 'client.as.number', + level: 'extended', + name: 'number', + normalize: [], + original_fieldset: 'as', + short: 'Unique number allocated to the autonomous system.', + type: 'long', + }, + 'client.as.organization.name': { + dashed_name: 'client-as-organization-name', + description: 'Organization name.', + example: 'Google LLC', + flat_name: 'client.as.organization.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'client.as.organization.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'organization.name', + normalize: [], + original_fieldset: 'as', + short: 'Organization name.', + type: 'keyword', + }, + 'client.bytes': { + dashed_name: 'client-bytes', + description: 'Bytes sent from the client to the server.', + example: 184, + flat_name: 'client.bytes', + format: 'bytes', + level: 'core', + name: 'bytes', + normalize: [], + short: 'Bytes sent from the client to the server.', + type: 'long', + }, + 'client.domain': { + dashed_name: 'client-domain', + description: + 'The domain name of the client system.\nThis value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.', + example: 'foo.example.com', + flat_name: 'client.domain', + ignore_above: 1024, + level: 'core', + name: 'domain', + normalize: [], + short: 'The domain name of the client.', + type: 'keyword', + }, + 'client.geo.city_name': { + dashed_name: 'client-geo-city-name', + description: 'City name.', + example: 'Montreal', + flat_name: 'client.geo.city_name', + ignore_above: 1024, + level: 'core', + name: 'city_name', + normalize: [], + original_fieldset: 'geo', + short: 'City name.', + type: 'keyword', + }, + 'client.geo.continent_code': { + dashed_name: 'client-geo-continent-code', + description: "Two-letter code representing continent's name.", + example: 'NA', + flat_name: 'client.geo.continent_code', + ignore_above: 1024, + level: 'core', + name: 'continent_code', + normalize: [], + original_fieldset: 'geo', + short: 'Continent code.', + type: 'keyword', + }, + 'client.geo.continent_name': { + dashed_name: 'client-geo-continent-name', + description: 'Name of the continent.', + example: 'North America', + flat_name: 'client.geo.continent_name', + ignore_above: 1024, + level: 'core', + name: 'continent_name', + normalize: [], + original_fieldset: 'geo', + short: 'Name of the continent.', + type: 'keyword', + }, + 'client.geo.country_iso_code': { + dashed_name: 'client-geo-country-iso-code', + description: 'Country ISO code.', + example: 'CA', + flat_name: 'client.geo.country_iso_code', + ignore_above: 1024, + level: 'core', + name: 'country_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Country ISO code.', + type: 'keyword', + }, + 'client.geo.country_name': { + dashed_name: 'client-geo-country-name', + description: 'Country name.', + example: 'Canada', + flat_name: 'client.geo.country_name', + ignore_above: 1024, + level: 'core', + name: 'country_name', + normalize: [], + original_fieldset: 'geo', + short: 'Country name.', + type: 'keyword', + }, + 'client.geo.location': { + dashed_name: 'client-geo-location', + description: 'Longitude and latitude.', + example: '{ "lon": -73.614830, "lat": 45.505918 }', + flat_name: 'client.geo.location', + level: 'core', + name: 'location', + normalize: [], + original_fieldset: 'geo', + short: 'Longitude and latitude.', + type: 'geo_point', + }, + 'client.geo.name': { + dashed_name: 'client-geo-name', + description: + 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', + example: 'boston-dc', + flat_name: 'client.geo.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'geo', + short: 'User-defined description of a location.', + type: 'keyword', + }, + 'client.geo.postal_code': { + dashed_name: 'client-geo-postal-code', + description: + 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', + example: 94040, + flat_name: 'client.geo.postal_code', + ignore_above: 1024, + level: 'core', + name: 'postal_code', + normalize: [], + original_fieldset: 'geo', + short: 'Postal code.', + type: 'keyword', + }, + 'client.geo.region_iso_code': { + dashed_name: 'client-geo-region-iso-code', + description: 'Region ISO code.', + example: 'CA-QC', + flat_name: 'client.geo.region_iso_code', + ignore_above: 1024, + level: 'core', + name: 'region_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Region ISO code.', + type: 'keyword', + }, + 'client.geo.region_name': { + dashed_name: 'client-geo-region-name', + description: 'Region name.', + example: 'Quebec', + flat_name: 'client.geo.region_name', + ignore_above: 1024, + level: 'core', + name: 'region_name', + normalize: [], + original_fieldset: 'geo', + short: 'Region name.', + type: 'keyword', + }, + 'client.geo.timezone': { + dashed_name: 'client-geo-timezone', + description: 'The time zone of the location, such as IANA time zone name.', + example: 'America/Argentina/Buenos_Aires', + flat_name: 'client.geo.timezone', + ignore_above: 1024, + level: 'core', + name: 'timezone', + normalize: [], + original_fieldset: 'geo', + short: 'Time zone.', + type: 'keyword', + }, + 'client.ip': { + dashed_name: 'client-ip', + description: 'IP address of the client (IPv4 or IPv6).', + flat_name: 'client.ip', + level: 'core', + name: 'ip', + normalize: [], + short: 'IP address of the client.', + type: 'ip', + }, + 'client.mac': { + dashed_name: 'client-mac', + description: + 'MAC address of the client.\nThe notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.', + example: '00-00-5E-00-53-23', + flat_name: 'client.mac', + ignore_above: 1024, + level: 'core', + name: 'mac', + normalize: [], + pattern: '^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$', + short: 'MAC address of the client.', + type: 'keyword', + }, + 'client.nat.ip': { + dashed_name: 'client-nat-ip', + description: + 'Translated IP of source based NAT sessions (e.g. internal client to internet).\nTypically connections traversing load balancers, firewalls, or routers.', + flat_name: 'client.nat.ip', + level: 'extended', + name: 'nat.ip', + normalize: [], + short: 'Client NAT ip address', + type: 'ip', + }, + 'client.nat.port': { + dashed_name: 'client-nat-port', + description: + 'Translated port of source based NAT sessions (e.g. internal client to internet).\nTypically connections traversing load balancers, firewalls, or routers.', + flat_name: 'client.nat.port', + format: 'string', + level: 'extended', + name: 'nat.port', + normalize: [], + short: 'Client NAT port', + type: 'long', + }, + 'client.packets': { + dashed_name: 'client-packets', + description: 'Packets sent from the client to the server.', + example: 12, + flat_name: 'client.packets', + level: 'core', + name: 'packets', + normalize: [], + short: 'Packets sent from the client to the server.', + type: 'long', + }, + 'client.port': { + dashed_name: 'client-port', + description: 'Port of the client.', + flat_name: 'client.port', + format: 'string', + level: 'core', + name: 'port', + normalize: [], + short: 'Port of the client.', + type: 'long', + }, + 'client.registered_domain': { + dashed_name: 'client-registered-domain', + description: + 'The highest registered client domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', + example: 'example.com', + flat_name: 'client.registered_domain', + ignore_above: 1024, + level: 'extended', + name: 'registered_domain', + normalize: [], + short: 'The highest registered client domain, stripped of the subdomain.', + type: 'keyword', + }, + 'client.subdomain': { + dashed_name: 'client-subdomain', + description: + 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', + example: 'east', + flat_name: 'client.subdomain', + ignore_above: 1024, + level: 'extended', + name: 'subdomain', + normalize: [], + short: 'The subdomain of the domain.', + type: 'keyword', + }, + 'client.top_level_domain': { + dashed_name: 'client-top-level-domain', + description: + 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', + example: 'co.uk', + flat_name: 'client.top_level_domain', + ignore_above: 1024, + level: 'extended', + name: 'top_level_domain', + normalize: [], + short: 'The effective top level domain (com, org, net, co.uk).', + type: 'keyword', + }, + 'client.user.domain': { + dashed_name: 'client-user-domain', + description: + 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'client.user.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'user', + short: 'Name of the directory the user is a member of.', + type: 'keyword', + }, + 'client.user.email': { + dashed_name: 'client-user-email', + description: 'User email address.', + flat_name: 'client.user.email', + ignore_above: 1024, + level: 'extended', + name: 'email', + normalize: [], + original_fieldset: 'user', + short: 'User email address.', + type: 'keyword', + }, + 'client.user.full_name': { + dashed_name: 'client-user-full-name', + description: "User's full name, if available.", + example: 'Albert Einstein', + flat_name: 'client.user.full_name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'client.user.full_name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full_name', + normalize: [], + original_fieldset: 'user', + short: "User's full name, if available.", + type: 'keyword', + }, + 'client.user.group.domain': { + dashed_name: 'client-user-group-domain', + description: + 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'client.user.group.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'group', + short: 'Name of the directory the group is a member of.', + type: 'keyword', + }, + 'client.user.group.id': { + dashed_name: 'client-user-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'client.user.group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'client.user.group.name': { + dashed_name: 'client-user-group-name', + description: 'Name of the group.', + flat_name: 'client.user.group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'client.user.hash': { + dashed_name: 'client-user-hash', + description: + 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', + flat_name: 'client.user.hash', + ignore_above: 1024, + level: 'extended', + name: 'hash', + normalize: [], + original_fieldset: 'user', + short: 'Unique user hash to correlate information for a user in anonymized form.', + type: 'keyword', + }, + 'client.user.id': { + dashed_name: 'client-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'client.user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'client.user.name': { + dashed_name: 'client-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'client.user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'client.user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'client.user.roles': { + dashed_name: 'client-user-roles', + description: 'Array of user roles at the time of the event.', + example: '["kibana_admin", "reporting_user"]', + flat_name: 'client.user.roles', + ignore_above: 1024, + level: 'extended', + name: 'roles', + normalize: ['array'], + original_fieldset: 'user', + short: 'Array of user roles at the time of the event.', + type: 'keyword', + }, + }, + group: 2, + name: 'client', + nestings: ['client.as', 'client.geo', 'client.user'], + prefix: 'client.', + reused_here: [ + { + full: 'client.as', + schema_name: 'as', + short: 'Fields describing an Autonomous System (Internet routing prefix).', + }, + { + full: 'client.geo', + schema_name: 'geo', + short: 'Fields describing a location.', + }, + { + full: 'client.user', + schema_name: 'user', + short: 'Fields to describe the user relevant to the event.', + }, + ], + short: 'Fields about the client side of a network connection, used with server.', + title: 'Client', + type: 'group', + }, + cloud: { + description: 'Fields related to the cloud or infrastructure the events are coming from.', + fields: { + 'cloud.account.id': { + dashed_name: 'cloud-account-id', + description: + 'The cloud account or organization id used to identify different entities in a multi-tenant environment.\nExamples: AWS account id, Google Cloud ORG Id, or other unique identifier.', + example: 666777888999, + flat_name: 'cloud.account.id', + ignore_above: 1024, + level: 'extended', + name: 'account.id', + normalize: [], + short: 'The cloud account or organization id.', + type: 'keyword', + }, + 'cloud.account.name': { + dashed_name: 'cloud-account-name', + description: + 'The cloud account name or alias used to identify different entities in a multi-tenant environment.\nExamples: AWS account name, Google Cloud ORG display name.', + example: 'elastic-dev', + flat_name: 'cloud.account.name', + ignore_above: 1024, + level: 'extended', + name: 'account.name', + normalize: [], + short: 'The cloud account name.', + type: 'keyword', + }, + 'cloud.availability_zone': { + dashed_name: 'cloud-availability-zone', + description: 'Availability zone in which this host, resource, or service is located.', + example: 'us-east-1c', + flat_name: 'cloud.availability_zone', + ignore_above: 1024, + level: 'extended', + name: 'availability_zone', + normalize: [], + short: 'Availability zone in which this host, resource, or service is located.', + type: 'keyword', + }, + 'cloud.instance.id': { + dashed_name: 'cloud-instance-id', + description: 'Instance ID of the host machine.', + example: 'i-1234567890abcdef0', + flat_name: 'cloud.instance.id', + ignore_above: 1024, + level: 'extended', + name: 'instance.id', + normalize: [], + short: 'Instance ID of the host machine.', + type: 'keyword', + }, + 'cloud.instance.name': { + dashed_name: 'cloud-instance-name', + description: 'Instance name of the host machine.', + flat_name: 'cloud.instance.name', + ignore_above: 1024, + level: 'extended', + name: 'instance.name', + normalize: [], + short: 'Instance name of the host machine.', + type: 'keyword', + }, + 'cloud.machine.type': { + dashed_name: 'cloud-machine-type', + description: 'Machine type of the host machine.', + example: 't2.medium', + flat_name: 'cloud.machine.type', + ignore_above: 1024, + level: 'extended', + name: 'machine.type', + normalize: [], + short: 'Machine type of the host machine.', + type: 'keyword', + }, + 'cloud.origin.account.id': { + dashed_name: 'cloud-origin-account-id', + description: + 'The cloud account or organization id used to identify different entities in a multi-tenant environment.\nExamples: AWS account id, Google Cloud ORG Id, or other unique identifier.', + example: 666777888999, + flat_name: 'cloud.origin.account.id', + ignore_above: 1024, + level: 'extended', + name: 'account.id', + normalize: [], + original_fieldset: 'cloud', + short: 'The cloud account or organization id.', + type: 'keyword', + }, + 'cloud.origin.account.name': { + dashed_name: 'cloud-origin-account-name', + description: + 'The cloud account name or alias used to identify different entities in a multi-tenant environment.\nExamples: AWS account name, Google Cloud ORG display name.', + example: 'elastic-dev', + flat_name: 'cloud.origin.account.name', + ignore_above: 1024, + level: 'extended', + name: 'account.name', + normalize: [], + original_fieldset: 'cloud', + short: 'The cloud account name.', + type: 'keyword', + }, + 'cloud.origin.availability_zone': { + dashed_name: 'cloud-origin-availability-zone', + description: 'Availability zone in which this host, resource, or service is located.', + example: 'us-east-1c', + flat_name: 'cloud.origin.availability_zone', + ignore_above: 1024, + level: 'extended', + name: 'availability_zone', + normalize: [], + original_fieldset: 'cloud', + short: 'Availability zone in which this host, resource, or service is located.', + type: 'keyword', + }, + 'cloud.origin.instance.id': { + dashed_name: 'cloud-origin-instance-id', + description: 'Instance ID of the host machine.', + example: 'i-1234567890abcdef0', + flat_name: 'cloud.origin.instance.id', + ignore_above: 1024, + level: 'extended', + name: 'instance.id', + normalize: [], + original_fieldset: 'cloud', + short: 'Instance ID of the host machine.', + type: 'keyword', + }, + 'cloud.origin.instance.name': { + dashed_name: 'cloud-origin-instance-name', + description: 'Instance name of the host machine.', + flat_name: 'cloud.origin.instance.name', + ignore_above: 1024, + level: 'extended', + name: 'instance.name', + normalize: [], + original_fieldset: 'cloud', + short: 'Instance name of the host machine.', + type: 'keyword', + }, + 'cloud.origin.machine.type': { + dashed_name: 'cloud-origin-machine-type', + description: 'Machine type of the host machine.', + example: 't2.medium', + flat_name: 'cloud.origin.machine.type', + ignore_above: 1024, + level: 'extended', + name: 'machine.type', + normalize: [], + original_fieldset: 'cloud', + short: 'Machine type of the host machine.', + type: 'keyword', + }, + 'cloud.origin.project.id': { + dashed_name: 'cloud-origin-project-id', + description: + 'The cloud project identifier.\nExamples: Google Cloud Project id, Azure Project id.', + example: 'my-project', + flat_name: 'cloud.origin.project.id', + ignore_above: 1024, + level: 'extended', + name: 'project.id', + normalize: [], + original_fieldset: 'cloud', + short: 'The cloud project id.', + type: 'keyword', + }, + 'cloud.origin.project.name': { + dashed_name: 'cloud-origin-project-name', + description: + 'The cloud project name.\nExamples: Google Cloud Project name, Azure Project name.', + example: 'my project', + flat_name: 'cloud.origin.project.name', + ignore_above: 1024, + level: 'extended', + name: 'project.name', + normalize: [], + original_fieldset: 'cloud', + short: 'The cloud project name.', + type: 'keyword', + }, + 'cloud.origin.provider': { + dashed_name: 'cloud-origin-provider', + description: + 'Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean.', + example: 'aws', + flat_name: 'cloud.origin.provider', + ignore_above: 1024, + level: 'extended', + name: 'provider', + normalize: [], + original_fieldset: 'cloud', + short: 'Name of the cloud provider.', + type: 'keyword', + }, + 'cloud.origin.region': { + dashed_name: 'cloud-origin-region', + description: 'Region in which this host, resource, or service is located.', + example: 'us-east-1', + flat_name: 'cloud.origin.region', + ignore_above: 1024, + level: 'extended', + name: 'region', + normalize: [], + original_fieldset: 'cloud', + short: 'Region in which this host, resource, or service is located.', + type: 'keyword', + }, + 'cloud.origin.service.name': { + dashed_name: 'cloud-origin-service-name', + description: + 'The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server.\nExamples: app engine, app service, cloud run, fargate, lambda.', + example: 'lambda', + flat_name: 'cloud.origin.service.name', + ignore_above: 1024, + level: 'extended', + name: 'service.name', + normalize: [], + original_fieldset: 'cloud', + short: 'The cloud service name.', + type: 'keyword', + }, + 'cloud.project.id': { + dashed_name: 'cloud-project-id', + description: + 'The cloud project identifier.\nExamples: Google Cloud Project id, Azure Project id.', + example: 'my-project', + flat_name: 'cloud.project.id', + ignore_above: 1024, + level: 'extended', + name: 'project.id', + normalize: [], + short: 'The cloud project id.', + type: 'keyword', + }, + 'cloud.project.name': { + dashed_name: 'cloud-project-name', + description: + 'The cloud project name.\nExamples: Google Cloud Project name, Azure Project name.', + example: 'my project', + flat_name: 'cloud.project.name', + ignore_above: 1024, + level: 'extended', + name: 'project.name', + normalize: [], + short: 'The cloud project name.', + type: 'keyword', + }, + 'cloud.provider': { + dashed_name: 'cloud-provider', + description: + 'Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean.', + example: 'aws', + flat_name: 'cloud.provider', + ignore_above: 1024, + level: 'extended', + name: 'provider', + normalize: [], + short: 'Name of the cloud provider.', + type: 'keyword', + }, + 'cloud.region': { + dashed_name: 'cloud-region', + description: 'Region in which this host, resource, or service is located.', + example: 'us-east-1', + flat_name: 'cloud.region', + ignore_above: 1024, + level: 'extended', + name: 'region', + normalize: [], + short: 'Region in which this host, resource, or service is located.', + type: 'keyword', + }, + 'cloud.service.name': { + dashed_name: 'cloud-service-name', + description: + 'The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server.\nExamples: app engine, app service, cloud run, fargate, lambda.', + example: 'lambda', + flat_name: 'cloud.service.name', + ignore_above: 1024, + level: 'extended', + name: 'service.name', + normalize: [], + short: 'The cloud service name.', + type: 'keyword', + }, + 'cloud.target.account.id': { + dashed_name: 'cloud-target-account-id', + description: + 'The cloud account or organization id used to identify different entities in a multi-tenant environment.\nExamples: AWS account id, Google Cloud ORG Id, or other unique identifier.', + example: 666777888999, + flat_name: 'cloud.target.account.id', + ignore_above: 1024, + level: 'extended', + name: 'account.id', + normalize: [], + original_fieldset: 'cloud', + short: 'The cloud account or organization id.', + type: 'keyword', + }, + 'cloud.target.account.name': { + dashed_name: 'cloud-target-account-name', + description: + 'The cloud account name or alias used to identify different entities in a multi-tenant environment.\nExamples: AWS account name, Google Cloud ORG display name.', + example: 'elastic-dev', + flat_name: 'cloud.target.account.name', + ignore_above: 1024, + level: 'extended', + name: 'account.name', + normalize: [], + original_fieldset: 'cloud', + short: 'The cloud account name.', + type: 'keyword', + }, + 'cloud.target.availability_zone': { + dashed_name: 'cloud-target-availability-zone', + description: 'Availability zone in which this host, resource, or service is located.', + example: 'us-east-1c', + flat_name: 'cloud.target.availability_zone', + ignore_above: 1024, + level: 'extended', + name: 'availability_zone', + normalize: [], + original_fieldset: 'cloud', + short: 'Availability zone in which this host, resource, or service is located.', + type: 'keyword', + }, + 'cloud.target.instance.id': { + dashed_name: 'cloud-target-instance-id', + description: 'Instance ID of the host machine.', + example: 'i-1234567890abcdef0', + flat_name: 'cloud.target.instance.id', + ignore_above: 1024, + level: 'extended', + name: 'instance.id', + normalize: [], + original_fieldset: 'cloud', + short: 'Instance ID of the host machine.', + type: 'keyword', + }, + 'cloud.target.instance.name': { + dashed_name: 'cloud-target-instance-name', + description: 'Instance name of the host machine.', + flat_name: 'cloud.target.instance.name', + ignore_above: 1024, + level: 'extended', + name: 'instance.name', + normalize: [], + original_fieldset: 'cloud', + short: 'Instance name of the host machine.', + type: 'keyword', + }, + 'cloud.target.machine.type': { + dashed_name: 'cloud-target-machine-type', + description: 'Machine type of the host machine.', + example: 't2.medium', + flat_name: 'cloud.target.machine.type', + ignore_above: 1024, + level: 'extended', + name: 'machine.type', + normalize: [], + original_fieldset: 'cloud', + short: 'Machine type of the host machine.', + type: 'keyword', + }, + 'cloud.target.project.id': { + dashed_name: 'cloud-target-project-id', + description: + 'The cloud project identifier.\nExamples: Google Cloud Project id, Azure Project id.', + example: 'my-project', + flat_name: 'cloud.target.project.id', + ignore_above: 1024, + level: 'extended', + name: 'project.id', + normalize: [], + original_fieldset: 'cloud', + short: 'The cloud project id.', + type: 'keyword', + }, + 'cloud.target.project.name': { + dashed_name: 'cloud-target-project-name', + description: + 'The cloud project name.\nExamples: Google Cloud Project name, Azure Project name.', + example: 'my project', + flat_name: 'cloud.target.project.name', + ignore_above: 1024, + level: 'extended', + name: 'project.name', + normalize: [], + original_fieldset: 'cloud', + short: 'The cloud project name.', + type: 'keyword', + }, + 'cloud.target.provider': { + dashed_name: 'cloud-target-provider', + description: + 'Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean.', + example: 'aws', + flat_name: 'cloud.target.provider', + ignore_above: 1024, + level: 'extended', + name: 'provider', + normalize: [], + original_fieldset: 'cloud', + short: 'Name of the cloud provider.', + type: 'keyword', + }, + 'cloud.target.region': { + dashed_name: 'cloud-target-region', + description: 'Region in which this host, resource, or service is located.', + example: 'us-east-1', + flat_name: 'cloud.target.region', + ignore_above: 1024, + level: 'extended', + name: 'region', + normalize: [], + original_fieldset: 'cloud', + short: 'Region in which this host, resource, or service is located.', + type: 'keyword', + }, + 'cloud.target.service.name': { + dashed_name: 'cloud-target-service-name', + description: + 'The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server.\nExamples: app engine, app service, cloud run, fargate, lambda.', + example: 'lambda', + flat_name: 'cloud.target.service.name', + ignore_above: 1024, + level: 'extended', + name: 'service.name', + normalize: [], + original_fieldset: 'cloud', + short: 'The cloud service name.', + type: 'keyword', + }, + }, + footnote: + "Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.\nThe cloud fields may be self-nested under cloud.origin.* and cloud.target.* to describe origin or target service's cloud information in the context of incoming or outgoing requests, respectively. However, the fieldsets cloud.origin.* and cloud.target.* must not be confused with the root cloud fieldset that is used to describe the cloud context of the actual service under observation. The fieldset cloud.origin.* may only be used in the context of incoming requests or events to provide the originating service's cloud information. The fieldset cloud.target.* may only be used in the context of outgoing requests or events to describe the target service's cloud information.", + group: 2, + name: 'cloud', + nestings: ['cloud.origin', 'cloud.target'], + prefix: 'cloud.', + reusable: { + expected: [ + { + as: 'origin', + at: 'cloud', + beta: 'Reusing the `cloud` fields in this location is currently considered beta.', + full: 'cloud.origin', + short_override: + 'Provides the cloud information of the origin entity in case of an incoming request or event.', + }, + { + as: 'target', + at: 'cloud', + beta: 'Reusing the `cloud` fields in this location is currently considered beta.', + full: 'cloud.target', + short_override: + 'Provides the cloud information of the target entity in case of an outgoing request or event.', + }, + ], + top_level: true, + }, + reused_here: [ + { + beta: 'Reusing the `cloud` fields in this location is currently considered beta.', + full: 'cloud.origin', + schema_name: 'cloud', + short: + 'Provides the cloud information of the origin entity in case of an incoming request or event.', + }, + { + beta: 'Reusing the `cloud` fields in this location is currently considered beta.', + full: 'cloud.target', + schema_name: 'cloud', + short: + 'Provides the cloud information of the target entity in case of an outgoing request or event.', + }, + ], + short: 'Fields about the cloud resource.', + title: 'Cloud', + type: 'group', + }, + code_signature: { + description: 'These fields contain information about binary code signatures.', + fields: { + 'code_signature.digest_algorithm': { + dashed_name: 'code-signature-digest-algorithm', + description: + 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', + example: 'sha256', + flat_name: 'code_signature.digest_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'digest_algorithm', + normalize: [], + short: 'Hashing algorithm used to sign the process.', + type: 'keyword', + }, + 'code_signature.exists': { + dashed_name: 'code-signature-exists', + description: 'Boolean to capture if a signature is present.', + example: 'true', + flat_name: 'code_signature.exists', + level: 'core', + name: 'exists', + normalize: [], + short: 'Boolean to capture if a signature is present.', + type: 'boolean', + }, + 'code_signature.signing_id': { + dashed_name: 'code-signature-signing-id', + description: + 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', + example: 'com.apple.xpc.proxy', + flat_name: 'code_signature.signing_id', + ignore_above: 1024, + level: 'extended', + name: 'signing_id', + normalize: [], + short: 'The identifier used to sign the process.', + type: 'keyword', + }, + 'code_signature.status': { + dashed_name: 'code-signature-status', + description: + 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', + example: 'ERROR_UNTRUSTED_ROOT', + flat_name: 'code_signature.status', + ignore_above: 1024, + level: 'extended', + name: 'status', + normalize: [], + short: 'Additional information about the certificate status.', + type: 'keyword', + }, + 'code_signature.subject_name': { + dashed_name: 'code-signature-subject-name', + description: 'Subject name of the code signer', + example: 'Microsoft Corporation', + flat_name: 'code_signature.subject_name', + ignore_above: 1024, + level: 'core', + name: 'subject_name', + normalize: [], + short: 'Subject name of the code signer', + type: 'keyword', + }, + 'code_signature.team_id': { + dashed_name: 'code-signature-team-id', + description: + 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', + example: 'EQHXZ8M8AV', + flat_name: 'code_signature.team_id', + ignore_above: 1024, + level: 'extended', + name: 'team_id', + normalize: [], + short: 'The team identifier used to sign the process.', + type: 'keyword', + }, + 'code_signature.timestamp': { + dashed_name: 'code-signature-timestamp', + description: 'Date and time when the code signature was generated and signed.', + example: '2021-01-01T12:10:30Z', + flat_name: 'code_signature.timestamp', + level: 'extended', + name: 'timestamp', + normalize: [], + short: 'When the signature was generated and signed.', + type: 'date', + }, + 'code_signature.trusted': { + dashed_name: 'code-signature-trusted', + description: + 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', + example: 'true', + flat_name: 'code_signature.trusted', + level: 'extended', + name: 'trusted', + normalize: [], + short: 'Stores the trust status of the certificate chain.', + type: 'boolean', + }, + 'code_signature.valid': { + dashed_name: 'code-signature-valid', + description: + 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', + example: 'true', + flat_name: 'code_signature.valid', + level: 'extended', + name: 'valid', + normalize: [], + short: + 'Boolean to capture if the digital signature is verified against the binary content.', + type: 'boolean', + }, + }, + group: 2, + name: 'code_signature', + prefix: 'code_signature.', + reusable: { + expected: [ + { as: 'code_signature', at: 'file', full: 'file.code_signature' }, + { as: 'code_signature', at: 'process', full: 'process.code_signature' }, + { as: 'code_signature', at: 'dll', full: 'dll.code_signature' }, + ], + top_level: false, + }, + short: 'These fields contain information about binary code signatures.', + title: 'Code Signature', + type: 'group', + }, + container: { + description: + 'Container fields are used for meta information about the specific container that is the source of information.\nThese fields help correlate data based containers from any runtime.', + fields: { + 'container.cpu.usage': { + dashed_name: 'container-cpu-usage', + description: + 'Percent CPU used which is normalized by the number of CPU cores and it ranges from 0 to 1. Scaling factor: 1000.', + flat_name: 'container.cpu.usage', + level: 'extended', + name: 'cpu.usage', + normalize: [], + scaling_factor: 1000, + short: 'Percent CPU used, between 0 and 1.', + type: 'scaled_float', + }, + 'container.disk.read.bytes': { + dashed_name: 'container-disk-read-bytes', + description: + 'The total number of bytes (gauge) read successfully (aggregated from all disks) since the last metric collection.', + flat_name: 'container.disk.read.bytes', + level: 'extended', + name: 'disk.read.bytes', + normalize: [], + short: 'The number of bytes read by all disks.', + type: 'long', + }, + 'container.disk.write.bytes': { + dashed_name: 'container-disk-write-bytes', + description: + 'The total number of bytes (gauge) written successfully (aggregated from all disks) since the last metric collection.', + flat_name: 'container.disk.write.bytes', + level: 'extended', + name: 'disk.write.bytes', + normalize: [], + short: 'The number of bytes written on all disks.', + type: 'long', + }, + 'container.id': { + dashed_name: 'container-id', + description: 'Unique container id.', + flat_name: 'container.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + short: 'Unique container id.', + type: 'keyword', + }, + 'container.image.hash.all': { + dashed_name: 'container-image-hash-all', + description: + 'An array of digests of the image the container was built on. Each digest consists of the hash algorithm and value in this format: `algorithm:value`. Algorithm names should align with the field names in the ECS hash field set.', + example: '[sha256:f8fefc80e3273dc756f288a63945820d6476ad64883892c771b5e2ece6bf1b26]', + flat_name: 'container.image.hash.all', + ignore_above: 1024, + level: 'extended', + name: 'image.hash.all', + normalize: ['array'], + short: 'An array of digests of the image the container was built on.', + type: 'keyword', + }, + 'container.image.name': { + dashed_name: 'container-image-name', + description: 'Name of the image the container was built on.', + flat_name: 'container.image.name', + ignore_above: 1024, + level: 'extended', + name: 'image.name', + normalize: [], + short: 'Name of the image the container was built on.', + type: 'keyword', + }, + 'container.image.tag': { + dashed_name: 'container-image-tag', + description: 'Container image tags.', + flat_name: 'container.image.tag', + ignore_above: 1024, + level: 'extended', + name: 'image.tag', + normalize: ['array'], + short: 'Container image tags.', + type: 'keyword', + }, + 'container.labels': { + dashed_name: 'container-labels', + description: 'Image labels.', + flat_name: 'container.labels', + level: 'extended', + name: 'labels', + normalize: [], + object_type: 'keyword', + short: 'Image labels.', + type: 'object', + }, + 'container.memory.usage': { + dashed_name: 'container-memory-usage', + description: 'Memory usage percentage and it ranges from 0 to 1. Scaling factor: 1000.', + flat_name: 'container.memory.usage', + level: 'extended', + name: 'memory.usage', + normalize: [], + scaling_factor: 1000, + short: 'Percent memory used, between 0 and 1.', + type: 'scaled_float', + }, + 'container.name': { + dashed_name: 'container-name', + description: 'Container name.', + flat_name: 'container.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'Container name.', + type: 'keyword', + }, + 'container.network.egress.bytes': { + dashed_name: 'container-network-egress-bytes', + description: + 'The number of bytes (gauge) sent out on all network interfaces by the container since the last metric collection.', + flat_name: 'container.network.egress.bytes', + level: 'extended', + name: 'network.egress.bytes', + normalize: [], + short: 'The number of bytes sent on all network interfaces.', + type: 'long', + }, + 'container.network.ingress.bytes': { + dashed_name: 'container-network-ingress-bytes', + description: + 'The number of bytes received (gauge) on all network interfaces by the container since the last metric collection.', + flat_name: 'container.network.ingress.bytes', + level: 'extended', + name: 'network.ingress.bytes', + normalize: [], + short: 'The number of bytes received on all network interfaces.', + type: 'long', + }, + 'container.runtime': { + dashed_name: 'container-runtime', + description: 'Runtime managing this container.', + example: 'docker', + flat_name: 'container.runtime', + ignore_above: 1024, + level: 'extended', + name: 'runtime', + normalize: [], + short: 'Runtime managing this container.', + type: 'keyword', + }, + }, + group: 2, + name: 'container', + prefix: 'container.', + short: 'Fields describing the container that generated this event.', + title: 'Container', + type: 'group', + }, + data_stream: { + beta: 'These fields are in beta and are subject to change.', + description: + 'The data_stream fields take part in defining the new data stream naming scheme.\nIn the new data stream naming scheme the value of the data stream fields combine to the name of the actual data stream in the following manner: `{data_stream.type}-{data_stream.dataset}-{data_stream.namespace}`. This means the fields can only contain characters that are valid as part of names of data streams. More details about this can be found in this https://www.elastic.co/blog/an-introduction-to-the-elastic-data-stream-naming-scheme[blog post].\nAn Elasticsearch data stream consists of one or more backing indices, and a data stream name forms part of the backing indices names. Due to this convention, data streams must also follow index naming restrictions. For example, data stream names cannot include `\\`, `/`, `*`, `?`, `"`, `<`, `>`, `|`, ` ` (space character), `,`, or `#`. Please see the Elasticsearch reference for additional https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html#indices-create-api-path-params[restrictions].', + fields: { + 'data_stream.dataset': { + dashed_name: 'data-stream-dataset', + description: + 'The field can contain anything that makes sense to signify the source of the data.\nExamples include `nginx.access`, `prometheus`, `endpoint` etc. For data streams that otherwise fit, but that do not have dataset set we use the value "generic" for the dataset value. `event.dataset` should have the same value as `data_stream.dataset`.\nBeyond the Elasticsearch data stream naming criteria noted above, the `dataset` value has additional restrictions:\n * Must not contain `-`\n * No longer than 100 characters', + example: 'nginx.access', + flat_name: 'data_stream.dataset', + level: 'extended', + name: 'dataset', + normalize: [], + short: 'The field can contain anything that makes sense to signify the source of the data.', + type: 'constant_keyword', + }, + 'data_stream.namespace': { + dashed_name: 'data-stream-namespace', + description: + 'A user defined namespace. Namespaces are useful to allow grouping of data.\nMany users already organize their indices this way, and the data stream naming scheme now provides this best practice as a default. Many users will populate this field with `default`. If no value is used, it falls back to `default`.\nBeyond the Elasticsearch index naming criteria noted above, `namespace` value has the additional restrictions:\n * Must not contain `-`\n * No longer than 100 characters', + example: 'production', + flat_name: 'data_stream.namespace', + level: 'extended', + name: 'namespace', + normalize: [], + short: 'A user defined namespace. Namespaces are useful to allow grouping of data.', + type: 'constant_keyword', + }, + 'data_stream.type': { + dashed_name: 'data-stream-type', + description: + 'An overarching type for the data stream.\nCurrently allowed values are "logs" and "metrics". We expect to also add "traces" and "synthetics" in the near future.', + example: 'logs', + flat_name: 'data_stream.type', + level: 'extended', + name: 'type', + normalize: [], + short: 'An overarching type for the data stream.', + type: 'constant_keyword', + }, + }, + group: 2, + name: 'data_stream', + prefix: 'data_stream.', + short: 'The data_stream fields take part in defining the new data stream naming scheme.', + title: 'Data Stream', + type: 'group', + }, + destination: { + description: + 'Destination fields capture details about the receiver of a network exchange/packet. These fields are populated from a network event, packet, or other event containing details of a network transaction.\nDestination fields are usually populated in conjunction with source fields. The source and destination fields are considered the baseline and should always be filled if an event contains source and destination details from a network transaction. If the event also contains identification of the client and server roles, then the client and server fields should also be populated.', + fields: { + 'destination.address': { + dashed_name: 'destination-address', + description: + 'Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field.\nThen it should be duplicated to `.ip` or `.domain`, depending on which one it is.', + flat_name: 'destination.address', + ignore_above: 1024, + level: 'extended', + name: 'address', + normalize: [], + short: 'Destination network address.', + type: 'keyword', + }, + 'destination.as.number': { + dashed_name: 'destination-as-number', + description: + 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', + example: 15169, + flat_name: 'destination.as.number', + level: 'extended', + name: 'number', + normalize: [], + original_fieldset: 'as', + short: 'Unique number allocated to the autonomous system.', + type: 'long', + }, + 'destination.as.organization.name': { + dashed_name: 'destination-as-organization-name', + description: 'Organization name.', + example: 'Google LLC', + flat_name: 'destination.as.organization.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'destination.as.organization.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'organization.name', + normalize: [], + original_fieldset: 'as', + short: 'Organization name.', + type: 'keyword', + }, + 'destination.bytes': { + dashed_name: 'destination-bytes', + description: 'Bytes sent from the destination to the source.', + example: 184, + flat_name: 'destination.bytes', + format: 'bytes', + level: 'core', + name: 'bytes', + normalize: [], + short: 'Bytes sent from the destination to the source.', + type: 'long', + }, + 'destination.domain': { + dashed_name: 'destination-domain', + description: + 'The domain name of the destination system.\nThis value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.', + example: 'foo.example.com', + flat_name: 'destination.domain', + ignore_above: 1024, + level: 'core', + name: 'domain', + normalize: [], + short: 'The domain name of the destination.', + type: 'keyword', + }, + 'destination.geo.city_name': { + dashed_name: 'destination-geo-city-name', + description: 'City name.', + example: 'Montreal', + flat_name: 'destination.geo.city_name', + ignore_above: 1024, + level: 'core', + name: 'city_name', + normalize: [], + original_fieldset: 'geo', + short: 'City name.', + type: 'keyword', + }, + 'destination.geo.continent_code': { + dashed_name: 'destination-geo-continent-code', + description: "Two-letter code representing continent's name.", + example: 'NA', + flat_name: 'destination.geo.continent_code', + ignore_above: 1024, + level: 'core', + name: 'continent_code', + normalize: [], + original_fieldset: 'geo', + short: 'Continent code.', + type: 'keyword', + }, + 'destination.geo.continent_name': { + dashed_name: 'destination-geo-continent-name', + description: 'Name of the continent.', + example: 'North America', + flat_name: 'destination.geo.continent_name', + ignore_above: 1024, + level: 'core', + name: 'continent_name', + normalize: [], + original_fieldset: 'geo', + short: 'Name of the continent.', + type: 'keyword', + }, + 'destination.geo.country_iso_code': { + dashed_name: 'destination-geo-country-iso-code', + description: 'Country ISO code.', + example: 'CA', + flat_name: 'destination.geo.country_iso_code', + ignore_above: 1024, + level: 'core', + name: 'country_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Country ISO code.', + type: 'keyword', + }, + 'destination.geo.country_name': { + dashed_name: 'destination-geo-country-name', + description: 'Country name.', + example: 'Canada', + flat_name: 'destination.geo.country_name', + ignore_above: 1024, + level: 'core', + name: 'country_name', + normalize: [], + original_fieldset: 'geo', + short: 'Country name.', + type: 'keyword', + }, + 'destination.geo.location': { + dashed_name: 'destination-geo-location', + description: 'Longitude and latitude.', + example: '{ "lon": -73.614830, "lat": 45.505918 }', + flat_name: 'destination.geo.location', + level: 'core', + name: 'location', + normalize: [], + original_fieldset: 'geo', + short: 'Longitude and latitude.', + type: 'geo_point', + }, + 'destination.geo.name': { + dashed_name: 'destination-geo-name', + description: + 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', + example: 'boston-dc', + flat_name: 'destination.geo.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'geo', + short: 'User-defined description of a location.', + type: 'keyword', + }, + 'destination.geo.postal_code': { + dashed_name: 'destination-geo-postal-code', + description: + 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', + example: 94040, + flat_name: 'destination.geo.postal_code', + ignore_above: 1024, + level: 'core', + name: 'postal_code', + normalize: [], + original_fieldset: 'geo', + short: 'Postal code.', + type: 'keyword', + }, + 'destination.geo.region_iso_code': { + dashed_name: 'destination-geo-region-iso-code', + description: 'Region ISO code.', + example: 'CA-QC', + flat_name: 'destination.geo.region_iso_code', + ignore_above: 1024, + level: 'core', + name: 'region_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Region ISO code.', + type: 'keyword', + }, + 'destination.geo.region_name': { + dashed_name: 'destination-geo-region-name', + description: 'Region name.', + example: 'Quebec', + flat_name: 'destination.geo.region_name', + ignore_above: 1024, + level: 'core', + name: 'region_name', + normalize: [], + original_fieldset: 'geo', + short: 'Region name.', + type: 'keyword', + }, + 'destination.geo.timezone': { + dashed_name: 'destination-geo-timezone', + description: 'The time zone of the location, such as IANA time zone name.', + example: 'America/Argentina/Buenos_Aires', + flat_name: 'destination.geo.timezone', + ignore_above: 1024, + level: 'core', + name: 'timezone', + normalize: [], + original_fieldset: 'geo', + short: 'Time zone.', + type: 'keyword', + }, + 'destination.ip': { + dashed_name: 'destination-ip', + description: 'IP address of the destination (IPv4 or IPv6).', + flat_name: 'destination.ip', + level: 'core', + name: 'ip', + normalize: [], + short: 'IP address of the destination.', + type: 'ip', + }, + 'destination.mac': { + dashed_name: 'destination-mac', + description: + 'MAC address of the destination.\nThe notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.', + example: '00-00-5E-00-53-23', + flat_name: 'destination.mac', + ignore_above: 1024, + level: 'core', + name: 'mac', + normalize: [], + pattern: '^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$', + short: 'MAC address of the destination.', + type: 'keyword', + }, + 'destination.nat.ip': { + dashed_name: 'destination-nat-ip', + description: + 'Translated ip of destination based NAT sessions (e.g. internet to private DMZ)\nTypically used with load balancers, firewalls, or routers.', + flat_name: 'destination.nat.ip', + level: 'extended', + name: 'nat.ip', + normalize: [], + short: 'Destination NAT ip', + type: 'ip', + }, + 'destination.nat.port': { + dashed_name: 'destination-nat-port', + description: + 'Port the source session is translated to by NAT Device.\nTypically used with load balancers, firewalls, or routers.', + flat_name: 'destination.nat.port', + format: 'string', + level: 'extended', + name: 'nat.port', + normalize: [], + short: 'Destination NAT Port', + type: 'long', + }, + 'destination.packets': { + dashed_name: 'destination-packets', + description: 'Packets sent from the destination to the source.', + example: 12, + flat_name: 'destination.packets', + level: 'core', + name: 'packets', + normalize: [], + short: 'Packets sent from the destination to the source.', + type: 'long', + }, + 'destination.port': { + dashed_name: 'destination-port', + description: 'Port of the destination.', + flat_name: 'destination.port', + format: 'string', + level: 'core', + name: 'port', + normalize: [], + short: 'Port of the destination.', + type: 'long', + }, + 'destination.registered_domain': { + dashed_name: 'destination-registered-domain', + description: + 'The highest registered destination domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', + example: 'example.com', + flat_name: 'destination.registered_domain', + ignore_above: 1024, + level: 'extended', + name: 'registered_domain', + normalize: [], + short: 'The highest registered destination domain, stripped of the subdomain.', + type: 'keyword', + }, + 'destination.subdomain': { + dashed_name: 'destination-subdomain', + description: + 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', + example: 'east', + flat_name: 'destination.subdomain', + ignore_above: 1024, + level: 'extended', + name: 'subdomain', + normalize: [], + short: 'The subdomain of the domain.', + type: 'keyword', + }, + 'destination.top_level_domain': { + dashed_name: 'destination-top-level-domain', + description: + 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', + example: 'co.uk', + flat_name: 'destination.top_level_domain', + ignore_above: 1024, + level: 'extended', + name: 'top_level_domain', + normalize: [], + short: 'The effective top level domain (com, org, net, co.uk).', + type: 'keyword', + }, + 'destination.user.domain': { + dashed_name: 'destination-user-domain', + description: + 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'destination.user.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'user', + short: 'Name of the directory the user is a member of.', + type: 'keyword', + }, + 'destination.user.email': { + dashed_name: 'destination-user-email', + description: 'User email address.', + flat_name: 'destination.user.email', + ignore_above: 1024, + level: 'extended', + name: 'email', + normalize: [], + original_fieldset: 'user', + short: 'User email address.', + type: 'keyword', + }, + 'destination.user.full_name': { + dashed_name: 'destination-user-full-name', + description: "User's full name, if available.", + example: 'Albert Einstein', + flat_name: 'destination.user.full_name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'destination.user.full_name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full_name', + normalize: [], + original_fieldset: 'user', + short: "User's full name, if available.", + type: 'keyword', + }, + 'destination.user.group.domain': { + dashed_name: 'destination-user-group-domain', + description: + 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'destination.user.group.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'group', + short: 'Name of the directory the group is a member of.', + type: 'keyword', + }, + 'destination.user.group.id': { + dashed_name: 'destination-user-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'destination.user.group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'destination.user.group.name': { + dashed_name: 'destination-user-group-name', + description: 'Name of the group.', + flat_name: 'destination.user.group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'destination.user.hash': { + dashed_name: 'destination-user-hash', + description: + 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', + flat_name: 'destination.user.hash', + ignore_above: 1024, + level: 'extended', + name: 'hash', + normalize: [], + original_fieldset: 'user', + short: 'Unique user hash to correlate information for a user in anonymized form.', + type: 'keyword', + }, + 'destination.user.id': { + dashed_name: 'destination-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'destination.user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'destination.user.name': { + dashed_name: 'destination-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'destination.user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'destination.user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'destination.user.roles': { + dashed_name: 'destination-user-roles', + description: 'Array of user roles at the time of the event.', + example: '["kibana_admin", "reporting_user"]', + flat_name: 'destination.user.roles', + ignore_above: 1024, + level: 'extended', + name: 'roles', + normalize: ['array'], + original_fieldset: 'user', + short: 'Array of user roles at the time of the event.', + type: 'keyword', + }, + }, + group: 2, + name: 'destination', + nestings: ['destination.as', 'destination.geo', 'destination.user'], + prefix: 'destination.', + reused_here: [ + { + full: 'destination.as', + schema_name: 'as', + short: 'Fields describing an Autonomous System (Internet routing prefix).', + }, + { + full: 'destination.geo', + schema_name: 'geo', + short: 'Fields describing a location.', + }, + { + full: 'destination.user', + schema_name: 'user', + short: 'Fields to describe the user relevant to the event.', + }, + ], + short: 'Fields about the destination side of a network connection, used with source.', + title: 'Destination', + type: 'group', + }, + device: { + beta: 'These fields are in beta and are subject to change.', + description: + 'Fields that describe a device instance and its characteristics. Data collected for applications and processes running on a (mobile) device can be enriched with these fields to describe the identity, type and other characteristics of the device.\nThis field group definition is based on the Device namespace of the OpenTelemetry Semantic Conventions (https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/device/).', + fields: { + 'device.id': { + dashed_name: 'device-id', + description: + 'The unique identifier of a device. The identifier must not change across application sessions but stay fixex for an instance of a (mobile) device. \nOn iOS, this value must be equal to the vendor identifier (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android, this value must be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application.\nFor GDPR and data protection law reasons this identifier should not carry information that would allow to identify a user.', + example: '00000000-54b3-e7c7-0000-000046bffd97', + flat_name: 'device.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + short: 'The unique identifier of a device.', + type: 'keyword', + }, + 'device.manufacturer': { + dashed_name: 'device-manufacturer', + description: 'The vendor name of the device manufacturer.', + example: 'Samsung', + flat_name: 'device.manufacturer', + ignore_above: 1024, + level: 'extended', + name: 'manufacturer', + normalize: [], + short: 'The vendor name of the device manufacturer.', + type: 'keyword', + }, + 'device.model.identifier': { + dashed_name: 'device-model-identifier', + description: 'The machine readable identifier of the device model.', + example: 'SM-G920F', + flat_name: 'device.model.identifier', + ignore_above: 1024, + level: 'extended', + name: 'model.identifier', + normalize: [], + short: 'The machine readable identifier of the device model.', + type: 'keyword', + }, + 'device.model.name': { + dashed_name: 'device-model-name', + description: 'The human readable marketing name of the device model.', + example: 'Samsung Galaxy S6', + flat_name: 'device.model.name', + ignore_above: 1024, + level: 'extended', + name: 'model.name', + normalize: [], + short: 'The human readable marketing name of the device model.', + type: 'keyword', + }, + }, + group: 2, + name: 'device', + prefix: 'device.', + short: 'Fields characterizing a (mobile) device a process or application is running on.', + title: 'Device', + type: 'group', + }, + dll: { + description: + 'These fields contain information about code libraries dynamically loaded into processes.\n\nMany operating systems refer to "shared code libraries" with different names, but this field set refers to all of the following:\n* Dynamic-link library (`.dll`) commonly used on Windows\n* Shared Object (`.so`) commonly used on Unix-like operating systems\n* Dynamic library (`.dylib`) commonly used on macOS', + fields: { + 'dll.code_signature.digest_algorithm': { + dashed_name: 'dll-code-signature-digest-algorithm', + description: + 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', + example: 'sha256', + flat_name: 'dll.code_signature.digest_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'digest_algorithm', + normalize: [], + original_fieldset: 'code_signature', + short: 'Hashing algorithm used to sign the process.', + type: 'keyword', + }, + 'dll.code_signature.exists': { + dashed_name: 'dll-code-signature-exists', + description: 'Boolean to capture if a signature is present.', + example: 'true', + flat_name: 'dll.code_signature.exists', + level: 'core', + name: 'exists', + normalize: [], + original_fieldset: 'code_signature', + short: 'Boolean to capture if a signature is present.', + type: 'boolean', + }, + 'dll.code_signature.signing_id': { + dashed_name: 'dll-code-signature-signing-id', + description: + 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', + example: 'com.apple.xpc.proxy', + flat_name: 'dll.code_signature.signing_id', + ignore_above: 1024, + level: 'extended', + name: 'signing_id', + normalize: [], + original_fieldset: 'code_signature', + short: 'The identifier used to sign the process.', + type: 'keyword', + }, + 'dll.code_signature.status': { + dashed_name: 'dll-code-signature-status', + description: + 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', + example: 'ERROR_UNTRUSTED_ROOT', + flat_name: 'dll.code_signature.status', + ignore_above: 1024, + level: 'extended', + name: 'status', + normalize: [], + original_fieldset: 'code_signature', + short: 'Additional information about the certificate status.', + type: 'keyword', + }, + 'dll.code_signature.subject_name': { + dashed_name: 'dll-code-signature-subject-name', + description: 'Subject name of the code signer', + example: 'Microsoft Corporation', + flat_name: 'dll.code_signature.subject_name', + ignore_above: 1024, + level: 'core', + name: 'subject_name', + normalize: [], + original_fieldset: 'code_signature', + short: 'Subject name of the code signer', + type: 'keyword', + }, + 'dll.code_signature.team_id': { + dashed_name: 'dll-code-signature-team-id', + description: + 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', + example: 'EQHXZ8M8AV', + flat_name: 'dll.code_signature.team_id', + ignore_above: 1024, + level: 'extended', + name: 'team_id', + normalize: [], + original_fieldset: 'code_signature', + short: 'The team identifier used to sign the process.', + type: 'keyword', + }, + 'dll.code_signature.timestamp': { + dashed_name: 'dll-code-signature-timestamp', + description: 'Date and time when the code signature was generated and signed.', + example: '2021-01-01T12:10:30Z', + flat_name: 'dll.code_signature.timestamp', + level: 'extended', + name: 'timestamp', + normalize: [], + original_fieldset: 'code_signature', + short: 'When the signature was generated and signed.', + type: 'date', + }, + 'dll.code_signature.trusted': { + dashed_name: 'dll-code-signature-trusted', + description: + 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', + example: 'true', + flat_name: 'dll.code_signature.trusted', + level: 'extended', + name: 'trusted', + normalize: [], + original_fieldset: 'code_signature', + short: 'Stores the trust status of the certificate chain.', + type: 'boolean', + }, + 'dll.code_signature.valid': { + dashed_name: 'dll-code-signature-valid', + description: + 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', + example: 'true', + flat_name: 'dll.code_signature.valid', + level: 'extended', + name: 'valid', + normalize: [], + original_fieldset: 'code_signature', + short: + 'Boolean to capture if the digital signature is verified against the binary content.', + type: 'boolean', + }, + 'dll.hash.md5': { + dashed_name: 'dll-hash-md5', + description: 'MD5 hash.', + flat_name: 'dll.hash.md5', + ignore_above: 1024, + level: 'extended', + name: 'md5', + normalize: [], + original_fieldset: 'hash', + short: 'MD5 hash.', + type: 'keyword', + }, + 'dll.hash.sha1': { + dashed_name: 'dll-hash-sha1', + description: 'SHA1 hash.', + flat_name: 'dll.hash.sha1', + ignore_above: 1024, + level: 'extended', + name: 'sha1', + normalize: [], + original_fieldset: 'hash', + short: 'SHA1 hash.', + type: 'keyword', + }, + 'dll.hash.sha256': { + dashed_name: 'dll-hash-sha256', + description: 'SHA256 hash.', + flat_name: 'dll.hash.sha256', + ignore_above: 1024, + level: 'extended', + name: 'sha256', + normalize: [], + original_fieldset: 'hash', + short: 'SHA256 hash.', + type: 'keyword', + }, + 'dll.hash.sha384': { + dashed_name: 'dll-hash-sha384', + description: 'SHA384 hash.', + flat_name: 'dll.hash.sha384', + ignore_above: 1024, + level: 'extended', + name: 'sha384', + normalize: [], + original_fieldset: 'hash', + short: 'SHA384 hash.', + type: 'keyword', + }, + 'dll.hash.sha512': { + dashed_name: 'dll-hash-sha512', + description: 'SHA512 hash.', + flat_name: 'dll.hash.sha512', + ignore_above: 1024, + level: 'extended', + name: 'sha512', + normalize: [], + original_fieldset: 'hash', + short: 'SHA512 hash.', + type: 'keyword', + }, + 'dll.hash.ssdeep': { + dashed_name: 'dll-hash-ssdeep', + description: 'SSDEEP hash.', + flat_name: 'dll.hash.ssdeep', + ignore_above: 1024, + level: 'extended', + name: 'ssdeep', + normalize: [], + original_fieldset: 'hash', + short: 'SSDEEP hash.', + type: 'keyword', + }, + 'dll.hash.tlsh': { + dashed_name: 'dll-hash-tlsh', + description: 'TLSH hash.', + flat_name: 'dll.hash.tlsh', + ignore_above: 1024, + level: 'extended', + name: 'tlsh', + normalize: [], + original_fieldset: 'hash', + short: 'TLSH hash.', + type: 'keyword', + }, + 'dll.name': { + dashed_name: 'dll-name', + description: 'Name of the library.\nThis generally maps to the name of the file on disk.', + example: 'kernel32.dll', + flat_name: 'dll.name', + ignore_above: 1024, + level: 'core', + name: 'name', + normalize: [], + short: 'Name of the library.', + type: 'keyword', + }, + 'dll.path': { + dashed_name: 'dll-path', + description: 'Full file path of the library.', + example: 'C:\\Windows\\System32\\kernel32.dll', + flat_name: 'dll.path', + ignore_above: 1024, + level: 'extended', + name: 'path', + normalize: [], + short: 'Full file path of the library.', + type: 'keyword', + }, + 'dll.pe.architecture': { + dashed_name: 'dll-pe-architecture', + description: 'CPU architecture target for the file.', + example: 'x64', + flat_name: 'dll.pe.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + original_fieldset: 'pe', + short: 'CPU architecture target for the file.', + type: 'keyword', + }, + 'dll.pe.company': { + dashed_name: 'dll-pe-company', + description: 'Internal company name of the file, provided at compile-time.', + example: 'Microsoft Corporation', + flat_name: 'dll.pe.company', + ignore_above: 1024, + level: 'extended', + name: 'company', + normalize: [], + original_fieldset: 'pe', + short: 'Internal company name of the file, provided at compile-time.', + type: 'keyword', + }, + 'dll.pe.description': { + dashed_name: 'dll-pe-description', + description: 'Internal description of the file, provided at compile-time.', + example: 'Paint', + flat_name: 'dll.pe.description', + ignore_above: 1024, + level: 'extended', + name: 'description', + normalize: [], + original_fieldset: 'pe', + short: 'Internal description of the file, provided at compile-time.', + type: 'keyword', + }, + 'dll.pe.file_version': { + dashed_name: 'dll-pe-file-version', + description: 'Internal version of the file, provided at compile-time.', + example: '6.3.9600.17415', + flat_name: 'dll.pe.file_version', + ignore_above: 1024, + level: 'extended', + name: 'file_version', + normalize: [], + original_fieldset: 'pe', + short: 'Process name.', + type: 'keyword', + }, + 'dll.pe.imphash': { + dashed_name: 'dll-pe-imphash', + description: + 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', + example: '0c6803c4e922103c4dca5963aad36ddf', + flat_name: 'dll.pe.imphash', + ignore_above: 1024, + level: 'extended', + name: 'imphash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'dll.pe.original_file_name': { + dashed_name: 'dll-pe-original-file-name', + description: 'Internal name of the file, provided at compile-time.', + example: 'MSPAINT.EXE', + flat_name: 'dll.pe.original_file_name', + ignore_above: 1024, + level: 'extended', + name: 'original_file_name', + normalize: [], + original_fieldset: 'pe', + short: 'Internal name of the file, provided at compile-time.', + type: 'keyword', + }, + 'dll.pe.pehash': { + dashed_name: 'dll-pe-pehash', + description: + 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', + example: '73ff189b63cd6be375a7ff25179a38d347651975', + flat_name: 'dll.pe.pehash', + ignore_above: 1024, + level: 'extended', + name: 'pehash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the PE header and data from one or more PE sections.', + type: 'keyword', + }, + 'dll.pe.product': { + dashed_name: 'dll-pe-product', + description: 'Internal product name of the file, provided at compile-time.', + example: 'Microsoft® Windows® Operating System', + flat_name: 'dll.pe.product', + ignore_above: 1024, + level: 'extended', + name: 'product', + normalize: [], + original_fieldset: 'pe', + short: 'Internal product name of the file, provided at compile-time.', + type: 'keyword', + }, + }, + group: 2, + name: 'dll', + nestings: ['dll.code_signature', 'dll.hash', 'dll.pe'], + prefix: 'dll.', + reused_here: [ + { + full: 'dll.hash', + schema_name: 'hash', + short: 'Hashes, usually file hashes.', + }, + { + full: 'dll.pe', + schema_name: 'pe', + short: 'These fields contain Windows Portable Executable (PE) metadata.', + }, + { + full: 'dll.code_signature', + schema_name: 'code_signature', + short: 'These fields contain information about binary code signatures.', + }, + ], + short: + 'These fields contain information about code libraries dynamically loaded into processes.', + title: 'DLL', + type: 'group', + }, + dns: { + description: + 'Fields describing DNS queries and answers.\nDNS events should either represent a single DNS query prior to getting answers (`dns.type:query`) or they should represent a full exchange and contain the query details as well as all of the answers that were provided for this query (`dns.type:answer`).', + fields: { + 'dns.answers': { + dashed_name: 'dns-answers', + description: + 'An array containing an object for each answer section returned by the server.\nThe main keys that should be present in these objects are defined by ECS. Records that have more information may contain more keys than what ECS defines.\nNot all DNS data sources give all details about DNS answers. At minimum, answer objects must contain the `data` key. If more information is available, map as much of it to ECS as possible, and add any additional fields to the answer objects as custom fields.', + flat_name: 'dns.answers', + level: 'extended', + name: 'answers', + normalize: ['array'], + short: 'Array of DNS answers.', + type: 'object', + }, + 'dns.answers.class': { + dashed_name: 'dns-answers-class', + description: 'The class of DNS data contained in this resource record.', + example: 'IN', + flat_name: 'dns.answers.class', + ignore_above: 1024, + level: 'extended', + name: 'answers.class', + normalize: [], + short: 'The class of DNS data contained in this resource record.', + type: 'keyword', + }, + 'dns.answers.data': { + dashed_name: 'dns-answers-data', + description: + 'The data describing the resource.\nThe meaning of this data depends on the type and class of the resource record.', + example: '10.10.10.10', + flat_name: 'dns.answers.data', + ignore_above: 1024, + level: 'extended', + name: 'answers.data', + normalize: [], + short: 'The data describing the resource.', + type: 'keyword', + }, + 'dns.answers.name': { + dashed_name: 'dns-answers-name', + description: + "The domain name to which this resource record pertains.\nIf a chain of CNAME is being resolved, each answer's `name` should be the one that corresponds with the answer's `data`. It should not simply be the original `question.name` repeated.", + example: 'www.example.com', + flat_name: 'dns.answers.name', + ignore_above: 1024, + level: 'extended', + name: 'answers.name', + normalize: [], + short: 'The domain name to which this resource record pertains.', + type: 'keyword', + }, + 'dns.answers.ttl': { + dashed_name: 'dns-answers-ttl', + description: + 'The time interval in seconds that this resource record may be cached before it should be discarded. Zero values mean that the data should not be cached.', + example: 180, + flat_name: 'dns.answers.ttl', + level: 'extended', + name: 'answers.ttl', + normalize: [], + short: + 'The time interval in seconds that this resource record may be cached before it should be discarded.', + type: 'long', + }, + 'dns.answers.type': { + dashed_name: 'dns-answers-type', + description: 'The type of data contained in this resource record.', + example: 'CNAME', + flat_name: 'dns.answers.type', + ignore_above: 1024, + level: 'extended', + name: 'answers.type', + normalize: [], + short: 'The type of data contained in this resource record.', + type: 'keyword', + }, + 'dns.header_flags': { + dashed_name: 'dns-header-flags', + description: 'Array of 2 letter DNS header flags.', + example: '["RD", "RA"]', + expected_values: ['AA', 'TC', 'RD', 'RA', 'AD', 'CD', 'DO'], + flat_name: 'dns.header_flags', + ignore_above: 1024, + level: 'extended', + name: 'header_flags', + normalize: ['array'], + short: 'Array of DNS header flags.', + type: 'keyword', + }, + 'dns.id': { + dashed_name: 'dns-id', + description: + 'The DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response.', + example: 62111, + flat_name: 'dns.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + short: + 'The DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response.', + type: 'keyword', + }, + 'dns.op_code': { + dashed_name: 'dns-op-code', + description: + 'The DNS operation code that specifies the kind of query in the message. This value is set by the originator of a query and copied into the response.', + example: 'QUERY', + flat_name: 'dns.op_code', + ignore_above: 1024, + level: 'extended', + name: 'op_code', + normalize: [], + short: 'The DNS operation code that specifies the kind of query in the message.', + type: 'keyword', + }, + 'dns.question.class': { + dashed_name: 'dns-question-class', + description: 'The class of records being queried.', + example: 'IN', + flat_name: 'dns.question.class', + ignore_above: 1024, + level: 'extended', + name: 'question.class', + normalize: [], + short: 'The class of records being queried.', + type: 'keyword', + }, + 'dns.question.name': { + dashed_name: 'dns-question-name', + description: + 'The name being queried.\nIf the name field contains non-printable characters (below 32 or above 126), those characters should be represented as escaped base 10 integers (\\DDD). Back slashes and quotes should be escaped. Tabs, carriage returns, and line feeds should be converted to \\t, \\r, and \\n respectively.', + example: 'www.example.com', + flat_name: 'dns.question.name', + ignore_above: 1024, + level: 'extended', + name: 'question.name', + normalize: [], + short: 'The name being queried.', + type: 'keyword', + }, + 'dns.question.registered_domain': { + dashed_name: 'dns-question-registered-domain', + description: + 'The highest registered domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', + example: 'example.com', + flat_name: 'dns.question.registered_domain', + ignore_above: 1024, + level: 'extended', + name: 'question.registered_domain', + normalize: [], + short: 'The highest registered domain, stripped of the subdomain.', + type: 'keyword', + }, + 'dns.question.subdomain': { + dashed_name: 'dns-question-subdomain', + description: + 'The subdomain is all of the labels under the registered_domain.\nIf the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', + example: 'www', + flat_name: 'dns.question.subdomain', + ignore_above: 1024, + level: 'extended', + name: 'question.subdomain', + normalize: [], + short: 'The subdomain of the domain.', + type: 'keyword', + }, + 'dns.question.top_level_domain': { + dashed_name: 'dns-question-top-level-domain', + description: + 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', + example: 'co.uk', + flat_name: 'dns.question.top_level_domain', + ignore_above: 1024, + level: 'extended', + name: 'question.top_level_domain', + normalize: [], + short: 'The effective top level domain (com, org, net, co.uk).', + type: 'keyword', + }, + 'dns.question.type': { + dashed_name: 'dns-question-type', + description: 'The type of record being queried.', + example: 'AAAA', + flat_name: 'dns.question.type', + ignore_above: 1024, + level: 'extended', + name: 'question.type', + normalize: [], + short: 'The type of record being queried.', + type: 'keyword', + }, + 'dns.resolved_ip': { + dashed_name: 'dns-resolved-ip', + description: + 'Array containing all IPs seen in `answers.data`.\nThe `answers` array can be difficult to use, because of the variety of data formats it can contain. Extracting all IP addresses seen in there to `dns.resolved_ip` makes it possible to index them as IP addresses, and makes them easier to visualize and query for.', + example: '["10.10.10.10", "10.10.10.11"]', + flat_name: 'dns.resolved_ip', + level: 'extended', + name: 'resolved_ip', + normalize: ['array'], + short: 'Array containing all IPs seen in answers.data', + type: 'ip', + }, + 'dns.response_code': { + dashed_name: 'dns-response-code', + description: 'The DNS response code.', + example: 'NOERROR', + flat_name: 'dns.response_code', + ignore_above: 1024, + level: 'extended', + name: 'response_code', + normalize: [], + short: 'The DNS response code.', + type: 'keyword', + }, + 'dns.type': { + dashed_name: 'dns-type', + description: + 'The type of DNS event captured, query or answer.\nIf your source of DNS events only gives you DNS queries, you should only create dns events of type `dns.type:query`.\nIf your source of DNS events gives you answers as well, you should create one event per query (optionally as soon as the query is seen). And a second event containing all query details as well as an array of answers.', + example: 'answer', + flat_name: 'dns.type', + ignore_above: 1024, + level: 'extended', + name: 'type', + normalize: [], + short: 'The type of DNS event captured, query or answer.', + type: 'keyword', + }, + }, + group: 2, + name: 'dns', + prefix: 'dns.', + short: 'Fields describing DNS queries and answers.', + title: 'DNS', + type: 'group', + }, + ecs: { + description: 'Meta-information specific to ECS.', + fields: { + 'ecs.version': { + dashed_name: 'ecs-version', + description: + 'ECS version this event conforms to. `ecs.version` is a required field and must exist in all events.\nWhen querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events.', + example: '1.0.0', + flat_name: 'ecs.version', + ignore_above: 1024, + level: 'core', + name: 'version', + normalize: [], + required: true, + short: 'ECS version this event conforms to.', + type: 'keyword', + }, + }, + group: 2, + name: 'ecs', + prefix: 'ecs.', + short: 'Meta-information specific to ECS.', + title: 'ECS', + type: 'group', + }, + elf: { + beta: 'These fields are in beta and are subject to change.', + description: 'These fields contain Linux Executable Linkable Format (ELF) metadata.', + fields: { + 'elf.architecture': { + dashed_name: 'elf-architecture', + description: 'Machine architecture of the ELF file.', + example: 'x86-64', + flat_name: 'elf.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + short: 'Machine architecture of the ELF file.', + type: 'keyword', + }, + 'elf.byte_order': { + dashed_name: 'elf-byte-order', + description: 'Byte sequence of ELF file.', + example: 'Little Endian', + flat_name: 'elf.byte_order', + ignore_above: 1024, + level: 'extended', + name: 'byte_order', + normalize: [], + short: 'Byte sequence of ELF file.', + type: 'keyword', + }, + 'elf.cpu_type': { + dashed_name: 'elf-cpu-type', + description: 'CPU type of the ELF file.', + example: 'Intel', + flat_name: 'elf.cpu_type', + ignore_above: 1024, + level: 'extended', + name: 'cpu_type', + normalize: [], + short: 'CPU type of the ELF file.', + type: 'keyword', + }, + 'elf.creation_date': { + dashed_name: 'elf-creation-date', + description: + "Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.", + flat_name: 'elf.creation_date', + level: 'extended', + name: 'creation_date', + normalize: [], + short: 'Build or compile date.', + type: 'date', + }, + 'elf.exports': { + dashed_name: 'elf-exports', + description: 'List of exported element names and types.', + flat_name: 'elf.exports', + level: 'extended', + name: 'exports', + normalize: ['array'], + short: 'List of exported element names and types.', + type: 'flattened', + }, + 'elf.header.abi_version': { + dashed_name: 'elf-header-abi-version', + description: 'Version of the ELF Application Binary Interface (ABI).', + flat_name: 'elf.header.abi_version', + ignore_above: 1024, + level: 'extended', + name: 'header.abi_version', + normalize: [], + short: 'Version of the ELF Application Binary Interface (ABI).', + type: 'keyword', + }, + 'elf.header.class': { + dashed_name: 'elf-header-class', + description: 'Header class of the ELF file.', + flat_name: 'elf.header.class', + ignore_above: 1024, + level: 'extended', + name: 'header.class', + normalize: [], + short: 'Header class of the ELF file.', + type: 'keyword', + }, + 'elf.header.data': { + dashed_name: 'elf-header-data', + description: 'Data table of the ELF header.', + flat_name: 'elf.header.data', + ignore_above: 1024, + level: 'extended', + name: 'header.data', + normalize: [], + short: 'Data table of the ELF header.', + type: 'keyword', + }, + 'elf.header.entrypoint': { + dashed_name: 'elf-header-entrypoint', + description: 'Header entrypoint of the ELF file.', + flat_name: 'elf.header.entrypoint', + format: 'string', + level: 'extended', + name: 'header.entrypoint', + normalize: [], + short: 'Header entrypoint of the ELF file.', + type: 'long', + }, + 'elf.header.object_version': { + dashed_name: 'elf-header-object-version', + description: '"0x1" for original ELF files.', + flat_name: 'elf.header.object_version', + ignore_above: 1024, + level: 'extended', + name: 'header.object_version', + normalize: [], + short: '"0x1" for original ELF files.', + type: 'keyword', + }, + 'elf.header.os_abi': { + dashed_name: 'elf-header-os-abi', + description: 'Application Binary Interface (ABI) of the Linux OS.', + flat_name: 'elf.header.os_abi', + ignore_above: 1024, + level: 'extended', + name: 'header.os_abi', + normalize: [], + short: 'Application Binary Interface (ABI) of the Linux OS.', + type: 'keyword', + }, + 'elf.header.type': { + dashed_name: 'elf-header-type', + description: 'Header type of the ELF file.', + flat_name: 'elf.header.type', + ignore_above: 1024, + level: 'extended', + name: 'header.type', + normalize: [], + short: 'Header type of the ELF file.', + type: 'keyword', + }, + 'elf.header.version': { + dashed_name: 'elf-header-version', + description: 'Version of the ELF header.', + flat_name: 'elf.header.version', + ignore_above: 1024, + level: 'extended', + name: 'header.version', + normalize: [], + short: 'Version of the ELF header.', + type: 'keyword', + }, + 'elf.imports': { + dashed_name: 'elf-imports', + description: 'List of imported element names and types.', + flat_name: 'elf.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'elf.sections': { + dashed_name: 'elf-sections', + description: + 'An array containing an object for each section of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.', + flat_name: 'elf.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + short: 'Section information of the ELF file.', + type: 'nested', + }, + 'elf.sections.chi2': { + dashed_name: 'elf-sections-chi2', + description: 'Chi-square probability distribution of the section.', + flat_name: 'elf.sections.chi2', + format: 'number', + level: 'extended', + name: 'sections.chi2', + normalize: [], + short: 'Chi-square probability distribution of the section.', + type: 'long', + }, + 'elf.sections.entropy': { + dashed_name: 'elf-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'elf.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'elf.sections.flags': { + dashed_name: 'elf-sections-flags', + description: 'ELF Section List flags.', + flat_name: 'elf.sections.flags', + ignore_above: 1024, + level: 'extended', + name: 'sections.flags', + normalize: [], + short: 'ELF Section List flags.', + type: 'keyword', + }, + 'elf.sections.name': { + dashed_name: 'elf-sections-name', + description: 'ELF Section List name.', + flat_name: 'elf.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + short: 'ELF Section List name.', + type: 'keyword', + }, + 'elf.sections.physical_offset': { + dashed_name: 'elf-sections-physical-offset', + description: 'ELF Section List offset.', + flat_name: 'elf.sections.physical_offset', + ignore_above: 1024, + level: 'extended', + name: 'sections.physical_offset', + normalize: [], + short: 'ELF Section List offset.', + type: 'keyword', + }, + 'elf.sections.physical_size': { + dashed_name: 'elf-sections-physical-size', + description: 'ELF Section List physical size.', + flat_name: 'elf.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + short: 'ELF Section List physical size.', + type: 'long', + }, + 'elf.sections.type': { + dashed_name: 'elf-sections-type', + description: 'ELF Section List type.', + flat_name: 'elf.sections.type', + ignore_above: 1024, + level: 'extended', + name: 'sections.type', + normalize: [], + short: 'ELF Section List type.', + type: 'keyword', + }, + 'elf.sections.virtual_address': { + dashed_name: 'elf-sections-virtual-address', + description: 'ELF Section List virtual address.', + flat_name: 'elf.sections.virtual_address', + format: 'string', + level: 'extended', + name: 'sections.virtual_address', + normalize: [], + short: 'ELF Section List virtual address.', + type: 'long', + }, + 'elf.sections.virtual_size': { + dashed_name: 'elf-sections-virtual-size', + description: 'ELF Section List virtual size.', + flat_name: 'elf.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + short: 'ELF Section List virtual size.', + type: 'long', + }, + 'elf.segments': { + dashed_name: 'elf-segments', + description: + 'An array containing an object for each segment of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.', + flat_name: 'elf.segments', + level: 'extended', + name: 'segments', + normalize: ['array'], + short: 'ELF object segment list.', + type: 'nested', + }, + 'elf.segments.sections': { + dashed_name: 'elf-segments-sections', + description: 'ELF object segment sections.', + flat_name: 'elf.segments.sections', + ignore_above: 1024, + level: 'extended', + name: 'segments.sections', + normalize: [], + short: 'ELF object segment sections.', + type: 'keyword', + }, + 'elf.segments.type': { + dashed_name: 'elf-segments-type', + description: 'ELF object segment type.', + flat_name: 'elf.segments.type', + ignore_above: 1024, + level: 'extended', + name: 'segments.type', + normalize: [], + short: 'ELF object segment type.', + type: 'keyword', + }, + 'elf.shared_libraries': { + dashed_name: 'elf-shared-libraries', + description: 'List of shared libraries used by this ELF object.', + flat_name: 'elf.shared_libraries', + ignore_above: 1024, + level: 'extended', + name: 'shared_libraries', + normalize: ['array'], + short: 'List of shared libraries used by this ELF object.', + type: 'keyword', + }, + 'elf.telfhash': { + dashed_name: 'elf-telfhash', + description: 'telfhash symbol hash for ELF file.', + flat_name: 'elf.telfhash', + ignore_above: 1024, + level: 'extended', + name: 'telfhash', + normalize: [], + short: 'telfhash hash for ELF file.', + type: 'keyword', + }, + }, + group: 2, + name: 'elf', + prefix: 'elf.', + reusable: { + expected: [ + { + as: 'elf', + at: 'file', + beta: 'This field reuse is beta and subject to change.', + full: 'file.elf', + }, + { + as: 'elf', + at: 'process', + beta: 'This field reuse is beta and subject to change.', + full: 'process.elf', + }, + ], + top_level: false, + }, + short: 'These fields contain Linux Executable Linkable Format (ELF) metadata.', + title: 'ELF Header', + type: 'group', + }, + email: { + description: + 'Event details relating to an email transaction.\nThis field set focuses on the email message header, body, and attachments. Network protocols that send and receive email messages such as SMTP are outside the scope of the `email.*` fields.', + fields: { + 'email.attachments': { + dashed_name: 'email-attachments', + description: + 'A list of objects describing the attachment files sent along with an email message.', + flat_name: 'email.attachments', + level: 'extended', + name: 'attachments', + normalize: ['array'], + short: 'List of objects describing the attachments.', + type: 'nested', + }, + 'email.attachments.file.extension': { + dashed_name: 'email-attachments-file-extension', + description: 'Attachment file extension, excluding the leading dot.', + example: 'txt', + flat_name: 'email.attachments.file.extension', + ignore_above: 1024, + level: 'extended', + name: 'attachments.file.extension', + normalize: [], + short: 'Attachment file extension.', + type: 'keyword', + }, + 'email.attachments.file.hash.md5': { + dashed_name: 'email-attachments-file-hash-md5', + description: 'MD5 hash.', + flat_name: 'email.attachments.file.hash.md5', + ignore_above: 1024, + level: 'extended', + name: 'md5', + normalize: [], + original_fieldset: 'hash', + short: 'MD5 hash.', + type: 'keyword', + }, + 'email.attachments.file.hash.sha1': { + dashed_name: 'email-attachments-file-hash-sha1', + description: 'SHA1 hash.', + flat_name: 'email.attachments.file.hash.sha1', + ignore_above: 1024, + level: 'extended', + name: 'sha1', + normalize: [], + original_fieldset: 'hash', + short: 'SHA1 hash.', + type: 'keyword', + }, + 'email.attachments.file.hash.sha256': { + dashed_name: 'email-attachments-file-hash-sha256', + description: 'SHA256 hash.', + flat_name: 'email.attachments.file.hash.sha256', + ignore_above: 1024, + level: 'extended', + name: 'sha256', + normalize: [], + original_fieldset: 'hash', + short: 'SHA256 hash.', + type: 'keyword', + }, + 'email.attachments.file.hash.sha384': { + dashed_name: 'email-attachments-file-hash-sha384', + description: 'SHA384 hash.', + flat_name: 'email.attachments.file.hash.sha384', + ignore_above: 1024, + level: 'extended', + name: 'sha384', + normalize: [], + original_fieldset: 'hash', + short: 'SHA384 hash.', + type: 'keyword', + }, + 'email.attachments.file.hash.sha512': { + dashed_name: 'email-attachments-file-hash-sha512', + description: 'SHA512 hash.', + flat_name: 'email.attachments.file.hash.sha512', + ignore_above: 1024, + level: 'extended', + name: 'sha512', + normalize: [], + original_fieldset: 'hash', + short: 'SHA512 hash.', + type: 'keyword', + }, + 'email.attachments.file.hash.ssdeep': { + dashed_name: 'email-attachments-file-hash-ssdeep', + description: 'SSDEEP hash.', + flat_name: 'email.attachments.file.hash.ssdeep', + ignore_above: 1024, + level: 'extended', + name: 'ssdeep', + normalize: [], + original_fieldset: 'hash', + short: 'SSDEEP hash.', + type: 'keyword', + }, + 'email.attachments.file.hash.tlsh': { + dashed_name: 'email-attachments-file-hash-tlsh', + description: 'TLSH hash.', + flat_name: 'email.attachments.file.hash.tlsh', + ignore_above: 1024, + level: 'extended', + name: 'tlsh', + normalize: [], + original_fieldset: 'hash', + short: 'TLSH hash.', + type: 'keyword', + }, + 'email.attachments.file.mime_type': { + dashed_name: 'email-attachments-file-mime-type', + description: + 'The MIME media type of the attachment.\nThis value will typically be extracted from the `Content-Type` MIME header field.', + example: 'text/plain', + flat_name: 'email.attachments.file.mime_type', + ignore_above: 1024, + level: 'extended', + name: 'attachments.file.mime_type', + normalize: [], + short: 'MIME type of the attachment file.', + type: 'keyword', + }, + 'email.attachments.file.name': { + dashed_name: 'email-attachments-file-name', + description: 'Name of the attachment file including the file extension.', + example: 'attachment.txt', + flat_name: 'email.attachments.file.name', + ignore_above: 1024, + level: 'extended', + name: 'attachments.file.name', + normalize: [], + short: 'Name of the attachment file.', + type: 'keyword', + }, + 'email.attachments.file.size': { + dashed_name: 'email-attachments-file-size', + description: 'Attachment file size in bytes.', + example: 64329, + flat_name: 'email.attachments.file.size', + level: 'extended', + name: 'attachments.file.size', + normalize: [], + short: 'Attachment file size.', + type: 'long', + }, + 'email.bcc.address': { + dashed_name: 'email-bcc-address', + description: 'The email address of BCC recipient', + example: 'bcc.user1@example.com', + flat_name: 'email.bcc.address', + ignore_above: 1024, + level: 'extended', + name: 'bcc.address', + normalize: ['array'], + short: 'Email address of BCC recipient', + type: 'keyword', + }, + 'email.cc.address': { + dashed_name: 'email-cc-address', + description: 'The email address of CC recipient', + example: 'cc.user1@example.com', + flat_name: 'email.cc.address', + ignore_above: 1024, + level: 'extended', + name: 'cc.address', + normalize: ['array'], + short: 'Email address of CC recipient', + type: 'keyword', + }, + 'email.content_type': { + dashed_name: 'email-content-type', + description: + 'Information about how the message is to be displayed.\nTypically a MIME type.', + example: 'text/plain', + flat_name: 'email.content_type', + ignore_above: 1024, + level: 'extended', + name: 'content_type', + normalize: [], + short: 'MIME type of the email message.', + type: 'keyword', + }, + 'email.delivery_timestamp': { + dashed_name: 'email-delivery-timestamp', + description: + 'The date and time when the email message was received by the service or client.', + example: '2020-11-10T22:12:34.8196921Z', + flat_name: 'email.delivery_timestamp', + level: 'extended', + name: 'delivery_timestamp', + normalize: [], + short: 'Date and time when message was delivered.', + type: 'date', + }, + 'email.direction': { + dashed_name: 'email-direction', + description: 'The direction of the message based on the sending and receiving domains.', + example: 'inbound', + flat_name: 'email.direction', + ignore_above: 1024, + level: 'extended', + name: 'direction', + normalize: [], + short: 'Direction of the message.', + type: 'keyword', + }, + 'email.from.address': { + dashed_name: 'email-from-address', + description: + 'The email address of the sender, typically from the RFC 5322 `From:` header field.', + example: 'sender@example.com', + flat_name: 'email.from.address', + ignore_above: 1024, + level: 'extended', + name: 'from.address', + normalize: ['array'], + short: "The sender's email address.", + type: 'keyword', + }, + 'email.local_id': { + dashed_name: 'email-local-id', + description: + 'Unique identifier given to the email by the source that created the event.\nIdentifier is not persistent across hops.', + example: 'c26dbea0-80d5-463b-b93c-4e8b708219ce', + flat_name: 'email.local_id', + ignore_above: 1024, + level: 'extended', + name: 'local_id', + normalize: [], + short: 'Unique identifier given by the source.', + type: 'keyword', + }, + 'email.message_id': { + dashed_name: 'email-message-id', + description: + 'Identifier from the RFC 5322 `Message-ID:` email header that refers to a particular email message.', + example: '81ce15$8r2j59@mail01.example.com', + flat_name: 'email.message_id', + level: 'extended', + name: 'message_id', + normalize: [], + short: 'Value from the Message-ID header.', + type: 'wildcard', + }, + 'email.origination_timestamp': { + dashed_name: 'email-origination-timestamp', + description: + 'The date and time the email message was composed. Many email clients will fill in this value automatically when the message is sent by a user.', + example: '2020-11-10T22:12:34.8196921Z', + flat_name: 'email.origination_timestamp', + level: 'extended', + name: 'origination_timestamp', + normalize: [], + short: 'Date and time the email was composed.', + type: 'date', + }, + 'email.reply_to.address': { + dashed_name: 'email-reply-to-address', + description: + 'The address that replies should be delivered to based on the value in the RFC 5322 `Reply-To:` header.', + example: 'reply.here@example.com', + flat_name: 'email.reply_to.address', + ignore_above: 1024, + level: 'extended', + name: 'reply_to.address', + normalize: ['array'], + short: 'Address replies should be delivered to.', + type: 'keyword', + }, + 'email.sender.address': { + dashed_name: 'email-sender-address', + description: + 'Per RFC 5322, specifies the address responsible for the actual transmission of the message.', + flat_name: 'email.sender.address', + ignore_above: 1024, + level: 'extended', + name: 'sender.address', + normalize: [], + short: 'Address of the message sender.', + type: 'keyword', + }, + 'email.subject': { + dashed_name: 'email-subject', + description: 'A brief summary of the topic of the message.', + example: 'Please see this important message.', + flat_name: 'email.subject', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'email.subject.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'subject', + normalize: [], + short: 'The subject of the email message.', + type: 'keyword', + }, + 'email.to.address': { + dashed_name: 'email-to-address', + description: 'The email address of recipient', + example: 'user1@example.com', + flat_name: 'email.to.address', + ignore_above: 1024, + level: 'extended', + name: 'to.address', + normalize: ['array'], + short: 'Email address of recipient', + type: 'keyword', + }, + 'email.x_mailer': { + dashed_name: 'email-x-mailer', + description: + 'The name of the application that was used to draft and send the original email message.', + example: 'Spambot v2.5', + flat_name: 'email.x_mailer', + ignore_above: 1024, + level: 'extended', + name: 'x_mailer', + normalize: [], + short: 'Application that drafted email.', + type: 'keyword', + }, + }, + group: 2, + name: 'email', + nestings: ['email.attachments.file.hash'], + prefix: 'email.', + reused_here: [ + { + full: 'email.attachments.file.hash', + schema_name: 'hash', + short: 'Hashes, usually file hashes.', + }, + ], + short: 'Describes an email transaction.', + title: 'Email', + type: 'group', + }, + error: { + description: + 'These fields can represent errors of any kind.\nUse them for errors that happen while fetching events or in cases where the event itself contains an error.', + fields: { + 'error.code': { + dashed_name: 'error-code', + description: 'Error code describing the error.', + flat_name: 'error.code', + ignore_above: 1024, + level: 'core', + name: 'code', + normalize: [], + short: 'Error code describing the error.', + type: 'keyword', + }, + 'error.id': { + dashed_name: 'error-id', + description: 'Unique identifier for the error.', + flat_name: 'error.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + short: 'Unique identifier for the error.', + type: 'keyword', + }, + 'error.message': { + dashed_name: 'error-message', + description: 'Error message.', + flat_name: 'error.message', + level: 'core', + name: 'message', + normalize: [], + short: 'Error message.', + type: 'match_only_text', + }, + 'error.stack_trace': { + dashed_name: 'error-stack-trace', + description: 'The stack trace of this error in plain text.', + flat_name: 'error.stack_trace', + level: 'extended', + multi_fields: [ + { + flat_name: 'error.stack_trace.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'stack_trace', + normalize: [], + short: 'The stack trace of this error in plain text.', + type: 'wildcard', + }, + 'error.type': { + dashed_name: 'error-type', + description: 'The type of the error, for example the class name of the exception.', + example: 'java.lang.NullPointerException', + flat_name: 'error.type', + ignore_above: 1024, + level: 'extended', + name: 'type', + normalize: [], + short: 'The type of the error, for example the class name of the exception.', + type: 'keyword', + }, + }, + group: 2, + name: 'error', + prefix: 'error.', + short: 'Fields about errors of any kind.', + title: 'Error', + type: 'group', + }, + event: { + description: + 'The event fields are used for context information about the log or metric event itself.\nA log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host and device temperature. See the `event.kind` definition in this section for additional details about metric and state events.', + fields: { + 'event.action': { + dashed_name: 'event-action', + description: + 'The action captured by the event.\nThis describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer.', + example: 'user-password-change', + flat_name: 'event.action', + ignore_above: 1024, + level: 'core', + name: 'action', + normalize: [], + short: 'The action captured by the event.', + type: 'keyword', + }, + 'event.agent_id_status': { + dashed_name: 'event-agent-id-status', + description: + "Agents are normally responsible for populating the `agent.id` field value. If the system receiving events is capable of validating the value based on authentication information for the client then this field can be used to reflect the outcome of that validation.\nFor example if the agent's connection is authenticated with mTLS and the client cert contains the ID of the agent to which the cert was issued then the `agent.id` value in events can be checked against the certificate. If the values match then `event.agent_id_status: verified` is added to the event, otherwise one of the other allowed values should be used.\nIf no validation is performed then the field should be omitted.\nThe allowed values are:\n`verified` - The `agent.id` field value matches expected value obtained from auth metadata.\n`mismatch` - The `agent.id` field value does not match the expected value obtained from auth metadata.\n`missing` - There was no `agent.id` field in the event to validate.\n`auth_metadata_missing` - There was no auth metadata or it was missing information about the agent ID.", + example: 'verified', + flat_name: 'event.agent_id_status', + ignore_above: 1024, + level: 'extended', + name: 'agent_id_status', + normalize: [], + short: "Validation status of the event's agent.id field.", + type: 'keyword', + }, + 'event.category': { + allowed_values: [ + { + description: + 'Events in this category are related to the challenge and response process in which credentials are supplied and verified to allow the creation of a session. Common sources for these logs are Windows event logs and ssh logs. Visualize and analyze events in this category to look for failed logins, and other authentication-related activity.', + expected_event_types: ['start', 'end', 'info'], + name: 'authentication', + }, + { + description: + 'Events in the configuration category have to deal with creating, modifying, or deleting the settings or parameters of an application, process, or system.\nExample sources include security policy change logs, configuration auditing logging, and system integrity monitoring.', + expected_event_types: ['access', 'change', 'creation', 'deletion', 'info'], + name: 'configuration', + }, + { + description: + 'The database category denotes events and metrics relating to a data storage and retrieval system. Note that use of this category is not limited to relational database systems. Examples include event logs from MS SQL, MySQL, Elasticsearch, MongoDB, etc. Use this category to visualize and analyze database activity such as accesses and changes.', + expected_event_types: ['access', 'change', 'info', 'error'], + name: 'database', + }, + { + description: + 'Events in the driver category have to do with operating system device drivers and similar software entities such as Windows drivers, kernel extensions, kernel modules, etc.\nUse events and metrics in this category to visualize and analyze driver-related activity and status on hosts.', + expected_event_types: ['change', 'end', 'info', 'start'], + name: 'driver', + }, + { + description: + 'This category is used for events relating to email messages, email attachments, and email network or protocol activity.\nEmails events can be produced by email security gateways, mail transfer agents, email cloud service providers, or mail server monitoring applications.', + expected_event_types: ['info'], + name: 'email', + }, + { + description: + 'Relating to a set of information that has been created on, or has existed on a filesystem. Use this category of events to visualize and analyze the creation, access, and deletions of files. Events in this category can come from both host-based and network-based sources. An example source of a network-based detection of a file transfer would be the Zeek file.log.', + expected_event_types: ['change', 'creation', 'deletion', 'info'], + name: 'file', + }, + { + description: + 'Use this category to visualize and analyze information such as host inventory or host lifecycle events.\nMost of the events in this category can usually be observed from the outside, such as from a hypervisor or a control plane\'s point of view. Some can also be seen from within, such as "start" or "end".\nNote that this category is for information about hosts themselves; it is not meant to capture activity "happening on a host".', + expected_event_types: ['access', 'change', 'end', 'info', 'start'], + name: 'host', + }, + { + description: + 'Identity and access management (IAM) events relating to users, groups, and administration. Use this category to visualize and analyze IAM-related logs and data from active directory, LDAP, Okta, Duo, and other IAM systems.', + expected_event_types: [ + 'admin', + 'change', + 'creation', + 'deletion', + 'group', + 'info', + 'user', + ], + name: 'iam', + }, + { + description: + 'Relating to intrusion detections from IDS/IPS systems and functions, both network and host-based. Use this category to visualize and analyze intrusion detection alerts from systems such as Snort, Suricata, and Palo Alto threat detections.', + expected_event_types: ['allowed', 'denied', 'info'], + name: 'intrusion_detection', + }, + { + description: + 'Malware detection events and alerts. Use this category to visualize and analyze malware detections from EDR/EPP systems such as Elastic Endpoint Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems such as Suricata, or other sources of malware-related events such as Palo Alto Networks threat logs and Wildfire logs.', + expected_event_types: ['info'], + name: 'malware', + }, + { + description: + 'Relating to all network activity, including network connection lifecycle, network traffic, and essentially any event that includes an IP address. Many events containing decoded network protocol transactions fit into this category. Use events in this category to visualize or analyze counts of network ports, protocols, addresses, geolocation information, etc.', + expected_event_types: [ + 'access', + 'allowed', + 'connection', + 'denied', + 'end', + 'info', + 'protocol', + 'start', + ], + name: 'network', + }, + { + description: + 'Relating to software packages installed on hosts. Use this category to visualize and analyze inventory of software installed on various hosts, or to determine host vulnerability in the absence of vulnerability scan data.', + expected_event_types: ['access', 'change', 'deletion', 'info', 'installation', 'start'], + name: 'package', + }, + { + description: + 'Use this category of events to visualize and analyze process-specific information such as lifecycle events or process ancestry.', + expected_event_types: ['access', 'change', 'end', 'info', 'start'], + name: 'process', + }, + { + description: + 'Having to do with settings and assets stored in the Windows registry. Use this category to visualize and analyze activity such as registry access and modifications.', + expected_event_types: ['access', 'change', 'creation', 'deletion'], + name: 'registry', + }, + { + description: + 'The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections between assets. Data for this category may come from Windows Event logs, SSH logs, or stateless sessions such as HTTP cookie-based sessions, etc.', + expected_event_types: ['start', 'end', 'info'], + name: 'session', + }, + { + description: + "Use this category to visualize and analyze events describing threat actors' targets, motives, or behaviors.", + expected_event_types: ['indicator'], + name: 'threat', + }, + { + description: + 'Relating to vulnerability scan results. Use this category to analyze vulnerabilities detected by Tenable, Qualys, internal scanners, and other vulnerability management sources.', + expected_event_types: ['info'], + name: 'vulnerability', + }, + { + description: + 'Relating to web server access. Use this category to create a dashboard of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: events from network observers such as Zeek http log may also be included in this category.', + expected_event_types: ['access', 'error', 'info'], + name: 'web', + }, + ], + dashed_name: 'event-category', + description: + 'This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy.\n`event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory.\nThis field is an array. This will allow proper categorization of some events that fall in multiple categories.', + example: 'authentication', + flat_name: 'event.category', + ignore_above: 1024, + level: 'core', + name: 'category', + normalize: ['array'], + short: 'Event category. The second categorization field in the hierarchy.', + type: 'keyword', + }, + 'event.code': { + dashed_name: 'event-code', + description: + 'Identification code for this event, if one exists.\nSome event sources use event codes to identify messages unambiguously, regardless of message language or wording adjustments over time. An example of this is the Windows Event ID.', + example: 4648, + flat_name: 'event.code', + ignore_above: 1024, + level: 'extended', + name: 'code', + normalize: [], + short: 'Identification code for this event.', + type: 'keyword', + }, + 'event.created': { + dashed_name: 'event-created', + description: + "event.created contains the date/time when the event was first read by an agent, or by your pipeline.\nThis field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event.\nIn most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source.\nIn case the two timestamps are identical, @timestamp should be used.", + example: '2016-05-23T08:05:34.857Z', + flat_name: 'event.created', + level: 'core', + name: 'created', + normalize: [], + short: 'Time when the event was first read by an agent or by your pipeline.', + type: 'date', + }, + 'event.dataset': { + dashed_name: 'event-dataset', + description: + "Name of the dataset.\nIf an event source publishes more than one type of log or events (e.g. access log, error log), the dataset is used to specify which one the event comes from.\nIt's recommended but not required to start the dataset name with the module name, followed by a dot, then the dataset name.", + example: 'apache.access', + flat_name: 'event.dataset', + ignore_above: 1024, + level: 'core', + name: 'dataset', + normalize: [], + short: 'Name of the dataset.', + type: 'keyword', + }, + 'event.duration': { + dashed_name: 'event-duration', + description: + 'Duration of the event in nanoseconds.\nIf event.start and event.end are known this value should be the difference between the end and start time.', + flat_name: 'event.duration', + format: 'duration', + input_format: 'nanoseconds', + level: 'core', + name: 'duration', + normalize: [], + output_format: 'asMilliseconds', + output_precision: 1, + short: 'Duration of the event in nanoseconds.', + type: 'long', + }, + 'event.end': { + dashed_name: 'event-end', + description: + 'event.end contains the date when the event ended or when the activity was last observed.', + flat_name: 'event.end', + level: 'extended', + name: 'end', + normalize: [], + short: + 'event.end contains the date when the event ended or when the activity was last observed.', + type: 'date', + }, + 'event.hash': { + dashed_name: 'event-hash', + description: + 'Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity.', + example: '123456789012345678901234567890ABCD', + flat_name: 'event.hash', + ignore_above: 1024, + level: 'extended', + name: 'hash', + normalize: [], + short: + 'Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity.', + type: 'keyword', + }, + 'event.id': { + dashed_name: 'event-id', + description: 'Unique ID to describe the event.', + example: '8a4f500d', + flat_name: 'event.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + short: 'Unique ID to describe the event.', + type: 'keyword', + }, + 'event.ingested': { + dashed_name: 'event-ingested', + description: + "Timestamp when an event arrived in the central data store.\nThis is different from `@timestamp`, which is when the event originally occurred. It's also different from `event.created`, which is meant to capture the first time an agent saw the event.\nIn normal conditions, assuming no tampering, the timestamps should chronologically look like this: `@timestamp` < `event.created` < `event.ingested`.", + example: '2016-05-23T08:05:35.101Z', + flat_name: 'event.ingested', + level: 'core', + name: 'ingested', + normalize: [], + short: 'Timestamp when an event arrived in the central data store.', + type: 'date', + }, + 'event.kind': { + allowed_values: [ + { + description: + 'This value indicates an event such as an alert or notable event, triggered by a detection rule executing externally to the Elastic Stack.\n`event.kind:alert` is often populated for events coming from firewalls, intrusion detection systems, endpoint detection and response systems, and so on.\nThis value is not used by Elastic solutions for alert documents that are created by rules executing within the Kibana alerting framework.', + name: 'alert', + }, + { + description: + 'The `enrichment` value indicates an event collected to provide additional context, often to other events.\nAn example is collecting indicators of compromise (IOCs) from a threat intelligence provider with the intent to use those values to enrich other events. The IOC events from the intelligence provider should be categorized as `event.kind:enrichment`.', + name: 'enrichment', + }, + { + description: + 'This value is the most general and most common value for this field. It is used to represent events that indicate that something happened.', + name: 'event', + }, + { + description: + 'This value is used to indicate that this event describes a numeric measurement taken at given point in time.\nExamples include CPU utilization, memory usage, or device temperature.\nMetric events are often collected on a predictable frequency, such as once every few seconds, or once a minute, but can also be used to describe ad-hoc numeric metric queries.', + name: 'metric', + }, + { + description: + "The state value is similar to metric, indicating that this event describes a measurement taken at given point in time, except that the measurement does not result in a numeric value, but rather one of a fixed set of categorical values that represent conditions or states.\nExamples include periodic events reporting Elasticsearch cluster state (green/yellow/red), the state of a TCP connection (open, closed, fin_wait, etc.), the state of a host with respect to a software vulnerability (vulnerable, not vulnerable), and the state of a system regarding compliance with a regulatory standard (compliant, not compliant).\nNote that an event that describes a change of state would not use `event.kind:state`, but instead would use 'event.kind:event' since a state change fits the more general event definition of something that happened.\nState events are often collected on a predictable frequency, such as once every few seconds, once a minute, once an hour, or once a day, but can also be used to describe ad-hoc state queries.", + name: 'state', + }, + { + description: + 'This value indicates that an error occurred during the ingestion of this event, and that event data may be missing, inconsistent, or incorrect. `event.kind:pipeline_error` is often associated with parsing errors.', + name: 'pipeline_error', + }, + { + description: + 'This value is used by Elastic solutions (e.g., Security, Observability) for alert documents that are created by rules executing within the Kibana alerting framework.\nUsage of this value is reserved, and data ingestion pipelines must not populate `event.kind` with the value "signal".', + name: 'signal', + }, + ], + dashed_name: 'event-kind', + description: + 'This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy.\n`event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events.\nThe value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not.', + example: 'alert', + flat_name: 'event.kind', + ignore_above: 1024, + level: 'core', + name: 'kind', + normalize: [], + short: 'The kind of the event. The highest categorization field in the hierarchy.', + type: 'keyword', + }, + 'event.module': { + dashed_name: 'event-module', + description: + 'Name of the module this data is coming from.\nIf your monitoring agent supports the concept of modules or plugins to process events of a given source (e.g. Apache logs), `event.module` should contain the name of this module.', + example: 'apache', + flat_name: 'event.module', + ignore_above: 1024, + level: 'core', + name: 'module', + normalize: [], + short: 'Name of the module this data is coming from.', + type: 'keyword', + }, + 'event.original': { + dashed_name: 'event-original', + description: + 'Raw text message of entire event. Used to demonstrate log integrity or where the full log message (before splitting it up in multiple parts) may be required, e.g. for reindex.\nThis field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. If users wish to override this and index this field, please see `Field data types` in the `Elasticsearch Reference`.', + doc_values: false, + example: + 'Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232', + flat_name: 'event.original', + index: false, + level: 'core', + name: 'original', + normalize: [], + short: 'Raw text message of entire event.', + type: 'keyword', + }, + 'event.outcome': { + allowed_values: [ + { + description: + 'Indicates that this event describes a failed result. A common example is `event.category:file AND event.type:access AND event.outcome:failure` to indicate that a file access was attempted, but was not successful.', + name: 'failure', + }, + { + description: + 'Indicates that this event describes a successful result. A common example is `event.category:file AND event.type:create AND event.outcome:success` to indicate that a file was successfully created.', + name: 'success', + }, + { + description: + "Indicates that this event describes only an attempt for which the result is unknown from the perspective of the event producer. For example, if the event contains information only about the request side of a transaction that results in a response, populating `event.outcome:unknown` in the request event is appropriate. The unknown value should not be used when an outcome doesn't make logical sense for the event. In such cases `event.outcome` should not be populated.", + name: 'unknown', + }, + ], + dashed_name: 'event-outcome', + description: + 'This is one of four ECS Categorization Fields, and indicates the lowest level in the ECS category hierarchy.\n`event.outcome` simply denotes whether the event represents a success or a failure from the perspective of the entity that produced the event.\nNote that when a single transaction is described in multiple events, each event may populate different values of `event.outcome`, according to their perspective.\nAlso note that in the case of a compound event (a single event that contains multiple logical events), this field should be populated with the value that best captures the overall success or failure from the perspective of the event producer.\nFurther note that not all events will have an associated outcome. For example, this field is generally not populated for metric events, events with `event.type:info`, or any events for which an outcome does not make logical sense.', + example: 'success', + flat_name: 'event.outcome', + ignore_above: 1024, + level: 'core', + name: 'outcome', + normalize: [], + short: 'The outcome of the event. The lowest level categorization field in the hierarchy.', + type: 'keyword', + }, + 'event.provider': { + dashed_name: 'event-provider', + description: + 'Source of the event.\nEvent transports such as Syslog or the Windows Event Log typically mention the source of an event. It can be the name of the software that generated the event (e.g. Sysmon, httpd), or of a subsystem of the operating system (kernel, Microsoft-Windows-Security-Auditing).', + example: 'kernel', + flat_name: 'event.provider', + ignore_above: 1024, + level: 'extended', + name: 'provider', + normalize: [], + short: 'Source of the event.', + type: 'keyword', + }, + 'event.reason': { + dashed_name: 'event-reason', + description: + 'Reason why this event happened, according to the source.\nThis describes the why of a particular action or outcome captured in the event. Where `event.action` captures the action from the event, `event.reason` describes why that action was taken. For example, a web proxy with an `event.action` which denied the request may also populate `event.reason` with the reason why (e.g. `blocked site`).', + example: 'Terminated an unexpected process', + flat_name: 'event.reason', + ignore_above: 1024, + level: 'extended', + name: 'reason', + normalize: [], + short: 'Reason why this event happened, according to the source', + type: 'keyword', + }, + 'event.reference': { + dashed_name: 'event-reference', + description: + 'Reference URL linking to additional information about this event.\nThis URL links to a static definition of this event. Alert events, indicated by `event.kind:alert`, are a common use case for this field.', + example: 'https://system.example.com/event/#0001234', + flat_name: 'event.reference', + ignore_above: 1024, + level: 'extended', + name: 'reference', + normalize: [], + short: 'Event reference URL', + type: 'keyword', + }, + 'event.risk_score': { + dashed_name: 'event-risk-score', + description: + "Risk score or priority of the event (e.g. security solutions). Use your system's original value here.", + flat_name: 'event.risk_score', + level: 'core', + name: 'risk_score', + normalize: [], + short: + "Risk score or priority of the event (e.g. security solutions). Use your system's original value here.", + type: 'float', + }, + 'event.risk_score_norm': { + dashed_name: 'event-risk-score-norm', + description: + 'Normalized risk score or priority of the event, on a scale of 0 to 100.\nThis is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems.', + flat_name: 'event.risk_score_norm', + level: 'extended', + name: 'risk_score_norm', + normalize: [], + short: 'Normalized risk score or priority of the event (0-100).', + type: 'float', + }, + 'event.sequence': { + dashed_name: 'event-sequence', + description: + 'Sequence number of the event.\nThe sequence number is a value published by some event sources, to make the exact ordering of events unambiguous, regardless of the timestamp precision.', + flat_name: 'event.sequence', + format: 'string', + level: 'extended', + name: 'sequence', + normalize: [], + short: 'Sequence number of the event.', + type: 'long', + }, + 'event.severity': { + dashed_name: 'event-severity', + description: + "The numeric severity of the event according to your event source.\nWhat the different severity values mean can be different between sources and use cases. It's up to the implementer to make sure severities are consistent across events from the same source.\nThe Syslog severity belongs in `log.syslog.severity.code`. `event.severity` is meant to represent the severity according to the event source (e.g. firewall, IDS). If the event source does not publish its own severity, you may optionally copy the `log.syslog.severity.code` to `event.severity`.", + example: 7, + flat_name: 'event.severity', + format: 'string', + level: 'core', + name: 'severity', + normalize: [], + short: 'Numeric severity of the event.', + type: 'long', + }, + 'event.start': { + dashed_name: 'event-start', + description: + 'event.start contains the date when the event started or when the activity was first observed.', + flat_name: 'event.start', + level: 'extended', + name: 'start', + normalize: [], + short: + 'event.start contains the date when the event started or when the activity was first observed.', + type: 'date', + }, + 'event.timezone': { + dashed_name: 'event-timezone', + description: + 'This field should be populated when the event\'s timestamp does not include timezone information already (e.g. default Syslog timestamps). It\'s optional otherwise.\nAcceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00").', + flat_name: 'event.timezone', + ignore_above: 1024, + level: 'extended', + name: 'timezone', + normalize: [], + short: 'Event time zone.', + type: 'keyword', + }, + 'event.type': { + allowed_values: [ + { + description: + 'The access event type is used for the subset of events within a category that indicate that something was accessed. Common examples include `event.category:database AND event.type:access`, or `event.category:file AND event.type:access`. Note for file access, both directory listings and file opens should be included in this subcategory. You can further distinguish access operations using the ECS `event.action` field.', + name: 'access', + }, + { + description: + 'The admin event type is used for the subset of events within a category that are related to admin objects. For example, administrative changes within an IAM framework that do not specifically affect a user or group (e.g., adding new applications to a federation solution or connecting discrete forests in Active Directory) would fall into this subcategory. Common example: `event.category:iam AND event.type:change AND event.type:admin`. You can further distinguish admin operations using the ECS `event.action` field.', + name: 'admin', + }, + { + description: + 'The allowed event type is used for the subset of events within a category that indicate that something was allowed. Common examples include `event.category:network AND event.type:connection AND event.type:allowed` (to indicate a network firewall event for which the firewall disposition was to allow the connection to complete) and `event.category:intrusion_detection AND event.type:allowed` (to indicate a network intrusion prevention system event for which the IPS disposition was to allow the connection to complete). You can further distinguish allowed operations using the ECS `event.action` field, populating with values of your choosing, such as "allow", "detect", or "pass".', + name: 'allowed', + }, + { + description: + 'The change event type is used for the subset of events within a category that indicate that something has changed. If semantics best describe an event as modified, then include them in this subcategory. Common examples include `event.category:process AND event.type:change`, and `event.category:file AND event.type:change`. You can further distinguish change operations using the ECS `event.action` field.', + name: 'change', + }, + { + description: + 'Used primarily with `event.category:network` this value is used for the subset of network traffic that includes sufficient information for the event to be included in flow or connection analysis. Events in this subcategory will contain at least source and destination IP addresses, source and destination TCP/UDP ports, and will usually contain counts of bytes and/or packets transferred. Events in this subcategory may contain unidirectional or bidirectional information, including summary information. Use this subcategory to visualize and analyze network connections. Flow analysis, including Netflow, IPFIX, and other flow-related events fit in this subcategory. Note that firewall events from many Next-Generation Firewall (NGFW) devices will also fit into this subcategory. A common filter for flow/connection information would be `event.category:network AND event.type:connection AND event.type:end` (to view or analyze all completed network connections, ignoring mid-flow reports). You can further distinguish connection events using the ECS `event.action` field, populating with values of your choosing, such as "timeout", or "reset".', + name: 'connection', + }, + { + description: + 'The "creation" event type is used for the subset of events within a category that indicate that something was created. A common example is `event.category:file AND event.type:creation`.', + name: 'creation', + }, + { + description: + 'The deletion event type is used for the subset of events within a category that indicate that something was deleted. A common example is `event.category:file AND event.type:deletion` to indicate that a file has been deleted.', + name: 'deletion', + }, + { + description: + 'The denied event type is used for the subset of events within a category that indicate that something was denied. Common examples include `event.category:network AND event.type:denied` (to indicate a network firewall event for which the firewall disposition was to deny the connection) and `event.category:intrusion_detection AND event.type:denied` (to indicate a network intrusion prevention system event for which the IPS disposition was to deny the connection to complete). You can further distinguish denied operations using the ECS `event.action` field, populating with values of your choosing, such as "blocked", "dropped", or "quarantined".', + name: 'denied', + }, + { + description: + 'The end event type is used for the subset of events within a category that indicate something has ended. A common example is `event.category:process AND event.type:end`.', + name: 'end', + }, + { + description: + 'The error event type is used for the subset of events within a category that indicate or describe an error. A common example is `event.category:database AND event.type:error`. Note that pipeline errors that occur during the event ingestion process should not use this `event.type` value. Instead, they should use `event.kind:pipeline_error`.', + name: 'error', + }, + { + description: + 'The group event type is used for the subset of events within a category that are related to group objects. Common example: `event.category:iam AND event.type:creation AND event.type:group`. You can further distinguish group operations using the ECS `event.action` field.', + name: 'group', + }, + { + description: + 'The indicator event type is used for the subset of events within a category that contain details about indicators of compromise (IOCs).\nA common example is `event.category:threat AND event.type:indicator`.', + name: 'indicator', + }, + { + description: + 'The info event type is used for the subset of events within a category that indicate that they are purely informational, and don\'t report a state change, or any type of action. For example, an initial run of a file integrity monitoring system (FIM), where an agent reports all files under management, would fall into the "info" subcategory. Similarly, an event containing a dump of all currently running processes (as opposed to reporting that a process started/ended) would fall into the "info" subcategory. An additional common examples is `event.category:intrusion_detection AND event.type:info`.', + name: 'info', + }, + { + description: + 'The installation event type is used for the subset of events within a category that indicate that something was installed. A common example is `event.category:package` AND `event.type:installation`.', + name: 'installation', + }, + { + description: + 'The protocol event type is used for the subset of events within a category that indicate that they contain protocol details or analysis, beyond simply identifying the protocol. Generally, network events that contain specific protocol details will fall into this subcategory. A common example is `event.category:network AND event.type:protocol AND event.type:connection AND event.type:end` (to indicate that the event is a network connection event sent at the end of a connection that also includes a protocol detail breakdown). Note that events that only indicate the name or id of the protocol should not use the protocol value. Further note that when the protocol subcategory is used, the identified protocol is populated in the ECS `network.protocol` field.', + name: 'protocol', + }, + { + description: + 'The start event type is used for the subset of events within a category that indicate something has started. A common example is `event.category:process AND event.type:start`.', + name: 'start', + }, + { + description: + 'The user event type is used for the subset of events within a category that are related to user objects. Common example: `event.category:iam AND event.type:deletion AND event.type:user`. You can further distinguish user operations using the ECS `event.action` field.', + name: 'user', + }, + ], + dashed_name: 'event-type', + description: + 'This is one of four ECS Categorization Fields, and indicates the third level in the ECS category hierarchy.\n`event.type` represents a categorization "sub-bucket" that, when used along with the `event.category` field values, enables filtering events down to a level appropriate for single visualization.\nThis field is an array. This will allow proper categorization of some events that fall in multiple event types.', + flat_name: 'event.type', + ignore_above: 1024, + level: 'core', + name: 'type', + normalize: ['array'], + short: 'Event type. The third categorization field in the hierarchy.', + type: 'keyword', + }, + 'event.url': { + dashed_name: 'event-url', + description: + 'URL linking to an external system to continue investigation of this event.\nThis URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field.', + example: 'https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe', + flat_name: 'event.url', + ignore_above: 1024, + level: 'extended', + name: 'url', + normalize: [], + short: 'Event investigation URL', + type: 'keyword', + }, + }, + group: 2, + name: 'event', + prefix: 'event.', + short: 'Fields breaking down the event details.', + title: 'Event', + type: 'group', + }, + faas: { + beta: 'These fields are in beta and are subject to change.', + description: + 'The user fields describe information about the function as a service (FaaS) that is relevant to the event.', + fields: { + 'faas.coldstart': { + dashed_name: 'faas-coldstart', + description: 'Boolean value indicating a cold start of a function.', + flat_name: 'faas.coldstart', + level: 'extended', + name: 'coldstart', + normalize: [], + short: 'Boolean value indicating a cold start of a function.', + type: 'boolean', + }, + 'faas.execution': { + dashed_name: 'faas-execution', + description: 'The execution ID of the current function execution.', + example: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28', + flat_name: 'faas.execution', + ignore_above: 1024, + level: 'extended', + name: 'execution', + normalize: [], + short: 'The execution ID of the current function execution.', + type: 'keyword', + }, + 'faas.id': { + dashed_name: 'faas-id', + description: + "The unique identifier of a serverless function.\nFor AWS Lambda it's the function ARN (Amazon Resource Name) without a version or alias suffix.", + example: 'arn:aws:lambda:us-west-2:123456789012:function:my-function', + flat_name: 'faas.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + short: 'The unique identifier of a serverless function.', + type: 'keyword', + }, + 'faas.name': { + dashed_name: 'faas-name', + description: 'The name of a serverless function.', + example: 'my-function', + flat_name: 'faas.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'The name of a serverless function.', + type: 'keyword', + }, + 'faas.trigger': { + dashed_name: 'faas-trigger', + description: 'Details about the function trigger.', + flat_name: 'faas.trigger', + level: 'extended', + name: 'trigger', + normalize: [], + short: 'Details about the function trigger.', + type: 'nested', + }, + 'faas.trigger.request_id': { + dashed_name: 'faas-trigger-request-id', + description: 'The ID of the trigger request , message, event, etc.', + example: 123456789, + flat_name: 'faas.trigger.request_id', + ignore_above: 1024, + level: 'extended', + name: 'trigger.request_id', + normalize: [], + short: 'The ID of the trigger request , message, event, etc.', + type: 'keyword', + }, + 'faas.trigger.type': { + dashed_name: 'faas-trigger-type', + description: 'The trigger for the function execution.', + example: 'http', + expected_values: ['http', 'pubsub', 'datasource', 'timer', 'other'], + flat_name: 'faas.trigger.type', + ignore_above: 1024, + level: 'extended', + name: 'trigger.type', + normalize: [], + short: 'The trigger for the function execution.', + type: 'keyword', + }, + 'faas.version': { + dashed_name: 'faas-version', + description: 'The version of a serverless function.', + example: '123', + flat_name: 'faas.version', + ignore_above: 1024, + level: 'extended', + name: 'version', + normalize: [], + short: 'The version of a serverless function.', + type: 'keyword', + }, + }, + group: 2, + name: 'faas', + prefix: 'faas.', + short: 'Fields describing functions as a service.', + title: 'FaaS', + type: 'group', + }, + file: { + description: + 'A file is defined as a set of information that has been created on, or has existed on a filesystem.\nFile objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric.', + fields: { + 'file.accessed': { + dashed_name: 'file-accessed', + description: + 'Last time the file was accessed.\nNote that not all filesystems keep track of access time.', + flat_name: 'file.accessed', + level: 'extended', + name: 'accessed', + normalize: [], + short: 'Last time the file was accessed.', + type: 'date', + }, + 'file.attributes': { + dashed_name: 'file-attributes', + description: + "Array of file attributes.\nAttributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write.", + example: '["readonly", "system"]', + flat_name: 'file.attributes', + ignore_above: 1024, + level: 'extended', + name: 'attributes', + normalize: ['array'], + short: 'Array of file attributes.', + type: 'keyword', + }, + 'file.code_signature.digest_algorithm': { + dashed_name: 'file-code-signature-digest-algorithm', + description: + 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', + example: 'sha256', + flat_name: 'file.code_signature.digest_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'digest_algorithm', + normalize: [], + original_fieldset: 'code_signature', + short: 'Hashing algorithm used to sign the process.', + type: 'keyword', + }, + 'file.code_signature.exists': { + dashed_name: 'file-code-signature-exists', + description: 'Boolean to capture if a signature is present.', + example: 'true', + flat_name: 'file.code_signature.exists', + level: 'core', + name: 'exists', + normalize: [], + original_fieldset: 'code_signature', + short: 'Boolean to capture if a signature is present.', + type: 'boolean', + }, + 'file.code_signature.signing_id': { + dashed_name: 'file-code-signature-signing-id', + description: + 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', + example: 'com.apple.xpc.proxy', + flat_name: 'file.code_signature.signing_id', + ignore_above: 1024, + level: 'extended', + name: 'signing_id', + normalize: [], + original_fieldset: 'code_signature', + short: 'The identifier used to sign the process.', + type: 'keyword', + }, + 'file.code_signature.status': { + dashed_name: 'file-code-signature-status', + description: + 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', + example: 'ERROR_UNTRUSTED_ROOT', + flat_name: 'file.code_signature.status', + ignore_above: 1024, + level: 'extended', + name: 'status', + normalize: [], + original_fieldset: 'code_signature', + short: 'Additional information about the certificate status.', + type: 'keyword', + }, + 'file.code_signature.subject_name': { + dashed_name: 'file-code-signature-subject-name', + description: 'Subject name of the code signer', + example: 'Microsoft Corporation', + flat_name: 'file.code_signature.subject_name', + ignore_above: 1024, + level: 'core', + name: 'subject_name', + normalize: [], + original_fieldset: 'code_signature', + short: 'Subject name of the code signer', + type: 'keyword', + }, + 'file.code_signature.team_id': { + dashed_name: 'file-code-signature-team-id', + description: + 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', + example: 'EQHXZ8M8AV', + flat_name: 'file.code_signature.team_id', + ignore_above: 1024, + level: 'extended', + name: 'team_id', + normalize: [], + original_fieldset: 'code_signature', + short: 'The team identifier used to sign the process.', + type: 'keyword', + }, + 'file.code_signature.timestamp': { + dashed_name: 'file-code-signature-timestamp', + description: 'Date and time when the code signature was generated and signed.', + example: '2021-01-01T12:10:30Z', + flat_name: 'file.code_signature.timestamp', + level: 'extended', + name: 'timestamp', + normalize: [], + original_fieldset: 'code_signature', + short: 'When the signature was generated and signed.', + type: 'date', + }, + 'file.code_signature.trusted': { + dashed_name: 'file-code-signature-trusted', + description: + 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', + example: 'true', + flat_name: 'file.code_signature.trusted', + level: 'extended', + name: 'trusted', + normalize: [], + original_fieldset: 'code_signature', + short: 'Stores the trust status of the certificate chain.', + type: 'boolean', + }, + 'file.code_signature.valid': { + dashed_name: 'file-code-signature-valid', + description: + 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', + example: 'true', + flat_name: 'file.code_signature.valid', + level: 'extended', + name: 'valid', + normalize: [], + original_fieldset: 'code_signature', + short: + 'Boolean to capture if the digital signature is verified against the binary content.', + type: 'boolean', + }, + 'file.created': { + dashed_name: 'file-created', + description: 'File creation time.\nNote that not all filesystems store the creation time.', + flat_name: 'file.created', + level: 'extended', + name: 'created', + normalize: [], + short: 'File creation time.', + type: 'date', + }, + 'file.ctime': { + dashed_name: 'file-ctime', + description: + 'Last time the file attributes or metadata changed.\nNote that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file.', + flat_name: 'file.ctime', + level: 'extended', + name: 'ctime', + normalize: [], + short: 'Last time the file attributes or metadata changed.', + type: 'date', + }, + 'file.device': { + dashed_name: 'file-device', + description: 'Device that is the source of the file.', + example: 'sda', + flat_name: 'file.device', + ignore_above: 1024, + level: 'extended', + name: 'device', + normalize: [], + short: 'Device that is the source of the file.', + type: 'keyword', + }, + 'file.directory': { + dashed_name: 'file-directory', + description: + 'Directory where the file is located. It should include the drive letter, when appropriate.', + example: '/home/alice', + flat_name: 'file.directory', + ignore_above: 1024, + level: 'extended', + name: 'directory', + normalize: [], + short: 'Directory where the file is located.', + type: 'keyword', + }, + 'file.drive_letter': { + dashed_name: 'file-drive-letter', + description: + 'Drive letter where the file is located. This field is only relevant on Windows.\nThe value should be uppercase, and not include the colon.', + example: 'C', + flat_name: 'file.drive_letter', + ignore_above: 1, + level: 'extended', + name: 'drive_letter', + normalize: [], + short: 'Drive letter where the file is located.', + type: 'keyword', + }, + 'file.elf.architecture': { + dashed_name: 'file-elf-architecture', + description: 'Machine architecture of the ELF file.', + example: 'x86-64', + flat_name: 'file.elf.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + original_fieldset: 'elf', + short: 'Machine architecture of the ELF file.', + type: 'keyword', + }, + 'file.elf.byte_order': { + dashed_name: 'file-elf-byte-order', + description: 'Byte sequence of ELF file.', + example: 'Little Endian', + flat_name: 'file.elf.byte_order', + ignore_above: 1024, + level: 'extended', + name: 'byte_order', + normalize: [], + original_fieldset: 'elf', + short: 'Byte sequence of ELF file.', + type: 'keyword', + }, + 'file.elf.cpu_type': { + dashed_name: 'file-elf-cpu-type', + description: 'CPU type of the ELF file.', + example: 'Intel', + flat_name: 'file.elf.cpu_type', + ignore_above: 1024, + level: 'extended', + name: 'cpu_type', + normalize: [], + original_fieldset: 'elf', + short: 'CPU type of the ELF file.', + type: 'keyword', + }, + 'file.elf.creation_date': { + dashed_name: 'file-elf-creation-date', + description: + "Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.", + flat_name: 'file.elf.creation_date', + level: 'extended', + name: 'creation_date', + normalize: [], + original_fieldset: 'elf', + short: 'Build or compile date.', + type: 'date', + }, + 'file.elf.exports': { + dashed_name: 'file-elf-exports', + description: 'List of exported element names and types.', + flat_name: 'file.elf.exports', + level: 'extended', + name: 'exports', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of exported element names and types.', + type: 'flattened', + }, + 'file.elf.header.abi_version': { + dashed_name: 'file-elf-header-abi-version', + description: 'Version of the ELF Application Binary Interface (ABI).', + flat_name: 'file.elf.header.abi_version', + ignore_above: 1024, + level: 'extended', + name: 'header.abi_version', + normalize: [], + original_fieldset: 'elf', + short: 'Version of the ELF Application Binary Interface (ABI).', + type: 'keyword', + }, + 'file.elf.header.class': { + dashed_name: 'file-elf-header-class', + description: 'Header class of the ELF file.', + flat_name: 'file.elf.header.class', + ignore_above: 1024, + level: 'extended', + name: 'header.class', + normalize: [], + original_fieldset: 'elf', + short: 'Header class of the ELF file.', + type: 'keyword', + }, + 'file.elf.header.data': { + dashed_name: 'file-elf-header-data', + description: 'Data table of the ELF header.', + flat_name: 'file.elf.header.data', + ignore_above: 1024, + level: 'extended', + name: 'header.data', + normalize: [], + original_fieldset: 'elf', + short: 'Data table of the ELF header.', + type: 'keyword', + }, + 'file.elf.header.entrypoint': { + dashed_name: 'file-elf-header-entrypoint', + description: 'Header entrypoint of the ELF file.', + flat_name: 'file.elf.header.entrypoint', + format: 'string', + level: 'extended', + name: 'header.entrypoint', + normalize: [], + original_fieldset: 'elf', + short: 'Header entrypoint of the ELF file.', + type: 'long', + }, + 'file.elf.header.object_version': { + dashed_name: 'file-elf-header-object-version', + description: '"0x1" for original ELF files.', + flat_name: 'file.elf.header.object_version', + ignore_above: 1024, + level: 'extended', + name: 'header.object_version', + normalize: [], + original_fieldset: 'elf', + short: '"0x1" for original ELF files.', + type: 'keyword', + }, + 'file.elf.header.os_abi': { + dashed_name: 'file-elf-header-os-abi', + description: 'Application Binary Interface (ABI) of the Linux OS.', + flat_name: 'file.elf.header.os_abi', + ignore_above: 1024, + level: 'extended', + name: 'header.os_abi', + normalize: [], + original_fieldset: 'elf', + short: 'Application Binary Interface (ABI) of the Linux OS.', + type: 'keyword', + }, + 'file.elf.header.type': { + dashed_name: 'file-elf-header-type', + description: 'Header type of the ELF file.', + flat_name: 'file.elf.header.type', + ignore_above: 1024, + level: 'extended', + name: 'header.type', + normalize: [], + original_fieldset: 'elf', + short: 'Header type of the ELF file.', + type: 'keyword', + }, + 'file.elf.header.version': { + dashed_name: 'file-elf-header-version', + description: 'Version of the ELF header.', + flat_name: 'file.elf.header.version', + ignore_above: 1024, + level: 'extended', + name: 'header.version', + normalize: [], + original_fieldset: 'elf', + short: 'Version of the ELF header.', + type: 'keyword', + }, + 'file.elf.imports': { + dashed_name: 'file-elf-imports', + description: 'List of imported element names and types.', + flat_name: 'file.elf.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'file.elf.sections': { + dashed_name: 'file-elf-sections', + description: + 'An array containing an object for each section of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.', + flat_name: 'file.elf.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'elf', + short: 'Section information of the ELF file.', + type: 'nested', + }, + 'file.elf.sections.chi2': { + dashed_name: 'file-elf-sections-chi2', + description: 'Chi-square probability distribution of the section.', + flat_name: 'file.elf.sections.chi2', + format: 'number', + level: 'extended', + name: 'sections.chi2', + normalize: [], + original_fieldset: 'elf', + short: 'Chi-square probability distribution of the section.', + type: 'long', + }, + 'file.elf.sections.entropy': { + dashed_name: 'file-elf-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'file.elf.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'file.elf.sections.flags': { + dashed_name: 'file-elf-sections-flags', + description: 'ELF Section List flags.', + flat_name: 'file.elf.sections.flags', + ignore_above: 1024, + level: 'extended', + name: 'sections.flags', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List flags.', + type: 'keyword', + }, + 'file.elf.sections.name': { + dashed_name: 'file-elf-sections-name', + description: 'ELF Section List name.', + flat_name: 'file.elf.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List name.', + type: 'keyword', + }, + 'file.elf.sections.physical_offset': { + dashed_name: 'file-elf-sections-physical-offset', + description: 'ELF Section List offset.', + flat_name: 'file.elf.sections.physical_offset', + ignore_above: 1024, + level: 'extended', + name: 'sections.physical_offset', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List offset.', + type: 'keyword', + }, + 'file.elf.sections.physical_size': { + dashed_name: 'file-elf-sections-physical-size', + description: 'ELF Section List physical size.', + flat_name: 'file.elf.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List physical size.', + type: 'long', + }, + 'file.elf.sections.type': { + dashed_name: 'file-elf-sections-type', + description: 'ELF Section List type.', + flat_name: 'file.elf.sections.type', + ignore_above: 1024, + level: 'extended', + name: 'sections.type', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List type.', + type: 'keyword', + }, + 'file.elf.sections.virtual_address': { + dashed_name: 'file-elf-sections-virtual-address', + description: 'ELF Section List virtual address.', + flat_name: 'file.elf.sections.virtual_address', + format: 'string', + level: 'extended', + name: 'sections.virtual_address', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List virtual address.', + type: 'long', + }, + 'file.elf.sections.virtual_size': { + dashed_name: 'file-elf-sections-virtual-size', + description: 'ELF Section List virtual size.', + flat_name: 'file.elf.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List virtual size.', + type: 'long', + }, + 'file.elf.segments': { + dashed_name: 'file-elf-segments', + description: + 'An array containing an object for each segment of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.', + flat_name: 'file.elf.segments', + level: 'extended', + name: 'segments', + normalize: ['array'], + original_fieldset: 'elf', + short: 'ELF object segment list.', + type: 'nested', + }, + 'file.elf.segments.sections': { + dashed_name: 'file-elf-segments-sections', + description: 'ELF object segment sections.', + flat_name: 'file.elf.segments.sections', + ignore_above: 1024, + level: 'extended', + name: 'segments.sections', + normalize: [], + original_fieldset: 'elf', + short: 'ELF object segment sections.', + type: 'keyword', + }, + 'file.elf.segments.type': { + dashed_name: 'file-elf-segments-type', + description: 'ELF object segment type.', + flat_name: 'file.elf.segments.type', + ignore_above: 1024, + level: 'extended', + name: 'segments.type', + normalize: [], + original_fieldset: 'elf', + short: 'ELF object segment type.', + type: 'keyword', + }, + 'file.elf.shared_libraries': { + dashed_name: 'file-elf-shared-libraries', + description: 'List of shared libraries used by this ELF object.', + flat_name: 'file.elf.shared_libraries', + ignore_above: 1024, + level: 'extended', + name: 'shared_libraries', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of shared libraries used by this ELF object.', + type: 'keyword', + }, + 'file.elf.telfhash': { + dashed_name: 'file-elf-telfhash', + description: 'telfhash symbol hash for ELF file.', + flat_name: 'file.elf.telfhash', + ignore_above: 1024, + level: 'extended', + name: 'telfhash', + normalize: [], + original_fieldset: 'elf', + short: 'telfhash hash for ELF file.', + type: 'keyword', + }, + 'file.extension': { + dashed_name: 'file-extension', + description: + 'File extension, excluding the leading dot.\nNote that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").', + example: 'png', + flat_name: 'file.extension', + ignore_above: 1024, + level: 'extended', + name: 'extension', + normalize: [], + short: 'File extension, excluding the leading dot.', + type: 'keyword', + }, + 'file.fork_name': { + dashed_name: 'file-fork-name', + description: + 'A fork is additional data associated with a filesystem object.\nOn Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.\nOn NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\\path\\to\\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.', + example: 'Zone.Identifer', + flat_name: 'file.fork_name', + ignore_above: 1024, + level: 'extended', + name: 'fork_name', + normalize: [], + short: 'A fork is additional data associated with a filesystem object.', + type: 'keyword', + }, + 'file.gid': { + dashed_name: 'file-gid', + description: 'Primary group ID (GID) of the file.', + example: '1001', + flat_name: 'file.gid', + ignore_above: 1024, + level: 'extended', + name: 'gid', + normalize: [], + short: 'Primary group ID (GID) of the file.', + type: 'keyword', + }, + 'file.group': { + dashed_name: 'file-group', + description: 'Primary group name of the file.', + example: 'alice', + flat_name: 'file.group', + ignore_above: 1024, + level: 'extended', + name: 'group', + normalize: [], + short: 'Primary group name of the file.', + type: 'keyword', + }, + 'file.hash.md5': { + dashed_name: 'file-hash-md5', + description: 'MD5 hash.', + flat_name: 'file.hash.md5', + ignore_above: 1024, + level: 'extended', + name: 'md5', + normalize: [], + original_fieldset: 'hash', + short: 'MD5 hash.', + type: 'keyword', + }, + 'file.hash.sha1': { + dashed_name: 'file-hash-sha1', + description: 'SHA1 hash.', + flat_name: 'file.hash.sha1', + ignore_above: 1024, + level: 'extended', + name: 'sha1', + normalize: [], + original_fieldset: 'hash', + short: 'SHA1 hash.', + type: 'keyword', + }, + 'file.hash.sha256': { + dashed_name: 'file-hash-sha256', + description: 'SHA256 hash.', + flat_name: 'file.hash.sha256', + ignore_above: 1024, + level: 'extended', + name: 'sha256', + normalize: [], + original_fieldset: 'hash', + short: 'SHA256 hash.', + type: 'keyword', + }, + 'file.hash.sha384': { + dashed_name: 'file-hash-sha384', + description: 'SHA384 hash.', + flat_name: 'file.hash.sha384', + ignore_above: 1024, + level: 'extended', + name: 'sha384', + normalize: [], + original_fieldset: 'hash', + short: 'SHA384 hash.', + type: 'keyword', + }, + 'file.hash.sha512': { + dashed_name: 'file-hash-sha512', + description: 'SHA512 hash.', + flat_name: 'file.hash.sha512', + ignore_above: 1024, + level: 'extended', + name: 'sha512', + normalize: [], + original_fieldset: 'hash', + short: 'SHA512 hash.', + type: 'keyword', + }, + 'file.hash.ssdeep': { + dashed_name: 'file-hash-ssdeep', + description: 'SSDEEP hash.', + flat_name: 'file.hash.ssdeep', + ignore_above: 1024, + level: 'extended', + name: 'ssdeep', + normalize: [], + original_fieldset: 'hash', + short: 'SSDEEP hash.', + type: 'keyword', + }, + 'file.hash.tlsh': { + dashed_name: 'file-hash-tlsh', + description: 'TLSH hash.', + flat_name: 'file.hash.tlsh', + ignore_above: 1024, + level: 'extended', + name: 'tlsh', + normalize: [], + original_fieldset: 'hash', + short: 'TLSH hash.', + type: 'keyword', + }, + 'file.inode': { + dashed_name: 'file-inode', + description: 'Inode representing the file in the filesystem.', + example: '256383', + flat_name: 'file.inode', + ignore_above: 1024, + level: 'extended', + name: 'inode', + normalize: [], + short: 'Inode representing the file in the filesystem.', + type: 'keyword', + }, + 'file.mime_type': { + dashed_name: 'file-mime-type', + description: + 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', + flat_name: 'file.mime_type', + ignore_above: 1024, + level: 'extended', + name: 'mime_type', + normalize: [], + short: 'Media type of file, document, or arrangement of bytes.', + type: 'keyword', + }, + 'file.mode': { + dashed_name: 'file-mode', + description: 'Mode of the file in octal representation.', + example: '0640', + flat_name: 'file.mode', + ignore_above: 1024, + level: 'extended', + name: 'mode', + normalize: [], + short: 'Mode of the file in octal representation.', + type: 'keyword', + }, + 'file.mtime': { + dashed_name: 'file-mtime', + description: 'Last time the file content was modified.', + flat_name: 'file.mtime', + level: 'extended', + name: 'mtime', + normalize: [], + short: 'Last time the file content was modified.', + type: 'date', + }, + 'file.name': { + dashed_name: 'file-name', + description: 'Name of the file including the extension, without the directory.', + example: 'example.png', + flat_name: 'file.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'Name of the file including the extension, without the directory.', + type: 'keyword', + }, + 'file.owner': { + dashed_name: 'file-owner', + description: "File owner's username.", + example: 'alice', + flat_name: 'file.owner', + ignore_above: 1024, + level: 'extended', + name: 'owner', + normalize: [], + short: "File owner's username.", + type: 'keyword', + }, + 'file.path': { + dashed_name: 'file-path', + description: + 'Full path to the file, including the file name. It should include the drive letter, when appropriate.', + example: '/home/alice/example.png', + flat_name: 'file.path', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'file.path.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'path', + normalize: [], + short: 'Full path to the file, including the file name.', + type: 'keyword', + }, + 'file.pe.architecture': { + dashed_name: 'file-pe-architecture', + description: 'CPU architecture target for the file.', + example: 'x64', + flat_name: 'file.pe.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + original_fieldset: 'pe', + short: 'CPU architecture target for the file.', + type: 'keyword', + }, + 'file.pe.company': { + dashed_name: 'file-pe-company', + description: 'Internal company name of the file, provided at compile-time.', + example: 'Microsoft Corporation', + flat_name: 'file.pe.company', + ignore_above: 1024, + level: 'extended', + name: 'company', + normalize: [], + original_fieldset: 'pe', + short: 'Internal company name of the file, provided at compile-time.', + type: 'keyword', + }, + 'file.pe.description': { + dashed_name: 'file-pe-description', + description: 'Internal description of the file, provided at compile-time.', + example: 'Paint', + flat_name: 'file.pe.description', + ignore_above: 1024, + level: 'extended', + name: 'description', + normalize: [], + original_fieldset: 'pe', + short: 'Internal description of the file, provided at compile-time.', + type: 'keyword', + }, + 'file.pe.file_version': { + dashed_name: 'file-pe-file-version', + description: 'Internal version of the file, provided at compile-time.', + example: '6.3.9600.17415', + flat_name: 'file.pe.file_version', + ignore_above: 1024, + level: 'extended', + name: 'file_version', + normalize: [], + original_fieldset: 'pe', + short: 'Process name.', + type: 'keyword', + }, + 'file.pe.imphash': { + dashed_name: 'file-pe-imphash', + description: + 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', + example: '0c6803c4e922103c4dca5963aad36ddf', + flat_name: 'file.pe.imphash', + ignore_above: 1024, + level: 'extended', + name: 'imphash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'file.pe.original_file_name': { + dashed_name: 'file-pe-original-file-name', + description: 'Internal name of the file, provided at compile-time.', + example: 'MSPAINT.EXE', + flat_name: 'file.pe.original_file_name', + ignore_above: 1024, + level: 'extended', + name: 'original_file_name', + normalize: [], + original_fieldset: 'pe', + short: 'Internal name of the file, provided at compile-time.', + type: 'keyword', + }, + 'file.pe.pehash': { + dashed_name: 'file-pe-pehash', + description: + 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', + example: '73ff189b63cd6be375a7ff25179a38d347651975', + flat_name: 'file.pe.pehash', + ignore_above: 1024, + level: 'extended', + name: 'pehash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the PE header and data from one or more PE sections.', + type: 'keyword', + }, + 'file.pe.product': { + dashed_name: 'file-pe-product', + description: 'Internal product name of the file, provided at compile-time.', + example: 'Microsoft® Windows® Operating System', + flat_name: 'file.pe.product', + ignore_above: 1024, + level: 'extended', + name: 'product', + normalize: [], + original_fieldset: 'pe', + short: 'Internal product name of the file, provided at compile-time.', + type: 'keyword', + }, + 'file.size': { + dashed_name: 'file-size', + description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', + example: 16384, + flat_name: 'file.size', + level: 'extended', + name: 'size', + normalize: [], + short: 'File size in bytes.', + type: 'long', + }, + 'file.target_path': { + dashed_name: 'file-target-path', + description: 'Target path for symlinks.', + flat_name: 'file.target_path', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'file.target_path.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'target_path', + normalize: [], + short: 'Target path for symlinks.', + type: 'keyword', + }, + 'file.type': { + dashed_name: 'file-type', + description: 'File type (file, dir, or symlink).', + example: 'file', + flat_name: 'file.type', + ignore_above: 1024, + level: 'extended', + name: 'type', + normalize: [], + short: 'File type (file, dir, or symlink).', + type: 'keyword', + }, + 'file.uid': { + dashed_name: 'file-uid', + description: 'The user ID (UID) or security identifier (SID) of the file owner.', + example: '1001', + flat_name: 'file.uid', + ignore_above: 1024, + level: 'extended', + name: 'uid', + normalize: [], + short: 'The user ID (UID) or security identifier (SID) of the file owner.', + type: 'keyword', + }, + 'file.x509.alternative_names': { + dashed_name: 'file-x509-alternative-names', + description: + 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', + example: '*.elastic.co', + flat_name: 'file.x509.alternative_names', + ignore_above: 1024, + level: 'extended', + name: 'alternative_names', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of subject alternative names (SAN).', + type: 'keyword', + }, + 'file.x509.issuer.common_name': { + dashed_name: 'file-x509-issuer-common-name', + description: 'List of common name (CN) of issuing certificate authority.', + example: 'Example SHA2 High Assurance Server CA', + flat_name: 'file.x509.issuer.common_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common name (CN) of issuing certificate authority.', + type: 'keyword', + }, + 'file.x509.issuer.country': { + dashed_name: 'file-x509-issuer-country', + description: 'List of country \\(C) codes', + example: 'US', + flat_name: 'file.x509.issuer.country', + ignore_above: 1024, + level: 'extended', + name: 'issuer.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) codes', + type: 'keyword', + }, + 'file.x509.issuer.distinguished_name': { + dashed_name: 'file-x509-issuer-distinguished-name', + description: 'Distinguished name (DN) of issuing certificate authority.', + example: + 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', + flat_name: 'file.x509.issuer.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of issuing certificate authority.', + type: 'keyword', + }, + 'file.x509.issuer.locality': { + dashed_name: 'file-x509-issuer-locality', + description: 'List of locality names (L)', + example: 'Mountain View', + flat_name: 'file.x509.issuer.locality', + ignore_above: 1024, + level: 'extended', + name: 'issuer.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'file.x509.issuer.organization': { + dashed_name: 'file-x509-issuer-organization', + description: 'List of organizations (O) of issuing certificate authority.', + example: 'Example Inc', + flat_name: 'file.x509.issuer.organization', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of issuing certificate authority.', + type: 'keyword', + }, + 'file.x509.issuer.organizational_unit': { + dashed_name: 'file-x509-issuer-organizational-unit', + description: 'List of organizational units (OU) of issuing certificate authority.', + example: 'www.example.com', + flat_name: 'file.x509.issuer.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of issuing certificate authority.', + type: 'keyword', + }, + 'file.x509.issuer.state_or_province': { + dashed_name: 'file-x509-issuer-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'file.x509.issuer.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'issuer.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'file.x509.not_after': { + dashed_name: 'file-x509-not-after', + description: 'Time at which the certificate is no longer considered valid.', + example: '2020-07-16T03:15:39Z', + flat_name: 'file.x509.not_after', + level: 'extended', + name: 'not_after', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is no longer considered valid.', + type: 'date', + }, + 'file.x509.not_before': { + dashed_name: 'file-x509-not-before', + description: 'Time at which the certificate is first considered valid.', + example: '2019-08-16T01:40:25Z', + flat_name: 'file.x509.not_before', + level: 'extended', + name: 'not_before', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is first considered valid.', + type: 'date', + }, + 'file.x509.public_key_algorithm': { + dashed_name: 'file-x509-public-key-algorithm', + description: 'Algorithm used to generate the public key.', + example: 'RSA', + flat_name: 'file.x509.public_key_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'public_key_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Algorithm used to generate the public key.', + type: 'keyword', + }, + 'file.x509.public_key_curve': { + dashed_name: 'file-x509-public-key-curve', + description: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + example: 'nistp521', + flat_name: 'file.x509.public_key_curve', + ignore_above: 1024, + level: 'extended', + name: 'public_key_curve', + normalize: [], + original_fieldset: 'x509', + short: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + type: 'keyword', + }, + 'file.x509.public_key_exponent': { + dashed_name: 'file-x509-public-key-exponent', + description: 'Exponent used to derive the public key. This is algorithm specific.', + doc_values: false, + example: 65537, + flat_name: 'file.x509.public_key_exponent', + index: false, + level: 'extended', + name: 'public_key_exponent', + normalize: [], + original_fieldset: 'x509', + short: 'Exponent used to derive the public key. This is algorithm specific.', + type: 'long', + }, + 'file.x509.public_key_size': { + dashed_name: 'file-x509-public-key-size', + description: 'The size of the public key space in bits.', + example: 2048, + flat_name: 'file.x509.public_key_size', + level: 'extended', + name: 'public_key_size', + normalize: [], + original_fieldset: 'x509', + short: 'The size of the public key space in bits.', + type: 'long', + }, + 'file.x509.serial_number': { + dashed_name: 'file-x509-serial-number', + description: + 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', + example: '55FBB9C7DEBF09809D12CCAA', + flat_name: 'file.x509.serial_number', + ignore_above: 1024, + level: 'extended', + name: 'serial_number', + normalize: [], + original_fieldset: 'x509', + short: 'Unique serial number issued by the certificate authority.', + type: 'keyword', + }, + 'file.x509.signature_algorithm': { + dashed_name: 'file-x509-signature-algorithm', + description: + 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', + example: 'SHA256-RSA', + flat_name: 'file.x509.signature_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'signature_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Identifier for certificate signature algorithm.', + type: 'keyword', + }, + 'file.x509.subject.common_name': { + dashed_name: 'file-x509-subject-common-name', + description: 'List of common names (CN) of subject.', + example: 'shared.global.example.net', + flat_name: 'file.x509.subject.common_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common names (CN) of subject.', + type: 'keyword', + }, + 'file.x509.subject.country': { + dashed_name: 'file-x509-subject-country', + description: 'List of country \\(C) code', + example: 'US', + flat_name: 'file.x509.subject.country', + ignore_above: 1024, + level: 'extended', + name: 'subject.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) code', + type: 'keyword', + }, + 'file.x509.subject.distinguished_name': { + dashed_name: 'file-x509-subject-distinguished-name', + description: 'Distinguished name (DN) of the certificate subject entity.', + example: + 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', + flat_name: 'file.x509.subject.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of the certificate subject entity.', + type: 'keyword', + }, + 'file.x509.subject.locality': { + dashed_name: 'file-x509-subject-locality', + description: 'List of locality names (L)', + example: 'San Francisco', + flat_name: 'file.x509.subject.locality', + ignore_above: 1024, + level: 'extended', + name: 'subject.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'file.x509.subject.organization': { + dashed_name: 'file-x509-subject-organization', + description: 'List of organizations (O) of subject.', + example: 'Example, Inc.', + flat_name: 'file.x509.subject.organization', + ignore_above: 1024, + level: 'extended', + name: 'subject.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of subject.', + type: 'keyword', + }, + 'file.x509.subject.organizational_unit': { + dashed_name: 'file-x509-subject-organizational-unit', + description: 'List of organizational units (OU) of subject.', + flat_name: 'file.x509.subject.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'subject.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of subject.', + type: 'keyword', + }, + 'file.x509.subject.state_or_province': { + dashed_name: 'file-x509-subject-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'file.x509.subject.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'subject.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'file.x509.version_number': { + dashed_name: 'file-x509-version-number', + description: 'Version of x509 format.', + example: 3, + flat_name: 'file.x509.version_number', + ignore_above: 1024, + level: 'extended', + name: 'version_number', + normalize: [], + original_fieldset: 'x509', + short: 'Version of x509 format.', + type: 'keyword', + }, + }, + group: 2, + name: 'file', + nestings: ['file.code_signature', 'file.elf', 'file.hash', 'file.pe', 'file.x509'], + prefix: 'file.', + reusable: { + expected: [ + { as: 'file', at: 'threat.indicator', full: 'threat.indicator.file' }, + { + as: 'file', + at: 'threat.enrichments.indicator', + full: 'threat.enrichments.indicator.file', + }, + ], + top_level: true, + }, + reused_here: [ + { + full: 'file.hash', + schema_name: 'hash', + short: 'Hashes, usually file hashes.', + }, + { + full: 'file.pe', + schema_name: 'pe', + short: 'These fields contain Windows Portable Executable (PE) metadata.', + }, + { + full: 'file.x509', + schema_name: 'x509', + short: 'These fields contain x509 certificate metadata.', + }, + { + full: 'file.code_signature', + schema_name: 'code_signature', + short: 'These fields contain information about binary code signatures.', + }, + { + beta: 'This field reuse is beta and subject to change.', + full: 'file.elf', + schema_name: 'elf', + short: 'These fields contain Linux Executable Linkable Format (ELF) metadata.', + }, + ], + short: 'Fields describing files.', + title: 'File', + type: 'group', + }, + geo: { + description: + 'Geo fields can carry data about a specific location related to an event.\nThis geolocation information can be derived from techniques such as Geo IP, or be user-supplied.', + fields: { + 'geo.city_name': { + dashed_name: 'geo-city-name', + description: 'City name.', + example: 'Montreal', + flat_name: 'geo.city_name', + ignore_above: 1024, + level: 'core', + name: 'city_name', + normalize: [], + short: 'City name.', + type: 'keyword', + }, + 'geo.continent_code': { + dashed_name: 'geo-continent-code', + description: "Two-letter code representing continent's name.", + example: 'NA', + flat_name: 'geo.continent_code', + ignore_above: 1024, + level: 'core', + name: 'continent_code', + normalize: [], + short: 'Continent code.', + type: 'keyword', + }, + 'geo.continent_name': { + dashed_name: 'geo-continent-name', + description: 'Name of the continent.', + example: 'North America', + flat_name: 'geo.continent_name', + ignore_above: 1024, + level: 'core', + name: 'continent_name', + normalize: [], + short: 'Name of the continent.', + type: 'keyword', + }, + 'geo.country_iso_code': { + dashed_name: 'geo-country-iso-code', + description: 'Country ISO code.', + example: 'CA', + flat_name: 'geo.country_iso_code', + ignore_above: 1024, + level: 'core', + name: 'country_iso_code', + normalize: [], + short: 'Country ISO code.', + type: 'keyword', + }, + 'geo.country_name': { + dashed_name: 'geo-country-name', + description: 'Country name.', + example: 'Canada', + flat_name: 'geo.country_name', + ignore_above: 1024, + level: 'core', + name: 'country_name', + normalize: [], + short: 'Country name.', + type: 'keyword', + }, + 'geo.location': { + dashed_name: 'geo-location', + description: 'Longitude and latitude.', + example: '{ "lon": -73.614830, "lat": 45.505918 }', + flat_name: 'geo.location', + level: 'core', + name: 'location', + normalize: [], + short: 'Longitude and latitude.', + type: 'geo_point', + }, + 'geo.name': { + dashed_name: 'geo-name', + description: + 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', + example: 'boston-dc', + flat_name: 'geo.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'User-defined description of a location.', + type: 'keyword', + }, + 'geo.postal_code': { + dashed_name: 'geo-postal-code', + description: + 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', + example: 94040, + flat_name: 'geo.postal_code', + ignore_above: 1024, + level: 'core', + name: 'postal_code', + normalize: [], + short: 'Postal code.', + type: 'keyword', + }, + 'geo.region_iso_code': { + dashed_name: 'geo-region-iso-code', + description: 'Region ISO code.', + example: 'CA-QC', + flat_name: 'geo.region_iso_code', + ignore_above: 1024, + level: 'core', + name: 'region_iso_code', + normalize: [], + short: 'Region ISO code.', + type: 'keyword', + }, + 'geo.region_name': { + dashed_name: 'geo-region-name', + description: 'Region name.', + example: 'Quebec', + flat_name: 'geo.region_name', + ignore_above: 1024, + level: 'core', + name: 'region_name', + normalize: [], + short: 'Region name.', + type: 'keyword', + }, + 'geo.timezone': { + dashed_name: 'geo-timezone', + description: 'The time zone of the location, such as IANA time zone name.', + example: 'America/Argentina/Buenos_Aires', + flat_name: 'geo.timezone', + ignore_above: 1024, + level: 'core', + name: 'timezone', + normalize: [], + short: 'Time zone.', + type: 'keyword', + }, + }, + group: 2, + name: 'geo', + prefix: 'geo.', + reusable: { + expected: [ + { as: 'geo', at: 'client', full: 'client.geo' }, + { as: 'geo', at: 'destination', full: 'destination.geo' }, + { as: 'geo', at: 'observer', full: 'observer.geo' }, + { as: 'geo', at: 'host', full: 'host.geo' }, + { as: 'geo', at: 'server', full: 'server.geo' }, + { as: 'geo', at: 'source', full: 'source.geo' }, + { as: 'geo', at: 'threat.indicator', full: 'threat.indicator.geo' }, + { + as: 'geo', + at: 'threat.enrichments.indicator', + full: 'threat.enrichments.indicator.geo', + }, + ], + top_level: false, + }, + short: 'Fields describing a location.', + title: 'Geo', + type: 'group', + }, + group: { + description: 'The group fields are meant to represent groups that are relevant to the event.', + fields: { + 'group.domain': { + dashed_name: 'group-domain', + description: + 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'group.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + short: 'Name of the directory the group is a member of.', + type: 'keyword', + }, + 'group.id': { + dashed_name: 'group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'group.name': { + dashed_name: 'group-name', + description: 'Name of the group.', + flat_name: 'group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'Name of the group.', + type: 'keyword', + }, + }, + group: 2, + name: 'group', + prefix: 'group.', + reusable: { + expected: [ + { as: 'group', at: 'user', full: 'user.group' }, + { + as: 'group', + at: 'process', + full: 'process.group', + short_override: 'The effective group (egid).', + }, + { + as: 'real_group', + at: 'process', + full: 'process.real_group', + short_override: 'The real group (rgid).', + }, + { + as: 'saved_group', + at: 'process', + full: 'process.saved_group', + short_override: 'The saved group (sgid).', + }, + { + as: 'supplemental_groups', + at: 'process', + full: 'process.supplemental_groups', + normalize: ['array'], + short_override: 'An array of supplemental groups.', + }, + { + as: 'attested_groups', + at: 'process', + beta: 'Reusing the `group` fields in this location is currently considered beta.', + full: 'process.attested_groups', + normalize: ['array'], + short_override: + 'The externally attested groups based on an external source such as the Kube API.', + }, + ], + top_level: true, + }, + short: "User's group relevant to the event.", + title: 'Group', + type: 'group', + }, + hash: { + description: + 'The hash fields represent different bitwise hash algorithms and their values.\nField names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512).\nNote that this fieldset is used for common hashes that may be computed over a range of generic bytes. Entity-specific hashes such as ja3 or imphash are placed in the fieldsets to which they relate (tls and pe, respectively).', + fields: { + 'hash.md5': { + dashed_name: 'hash-md5', + description: 'MD5 hash.', + flat_name: 'hash.md5', + ignore_above: 1024, + level: 'extended', + name: 'md5', + normalize: [], + short: 'MD5 hash.', + type: 'keyword', + }, + 'hash.sha1': { + dashed_name: 'hash-sha1', + description: 'SHA1 hash.', + flat_name: 'hash.sha1', + ignore_above: 1024, + level: 'extended', + name: 'sha1', + normalize: [], + short: 'SHA1 hash.', + type: 'keyword', + }, + 'hash.sha256': { + dashed_name: 'hash-sha256', + description: 'SHA256 hash.', + flat_name: 'hash.sha256', + ignore_above: 1024, + level: 'extended', + name: 'sha256', + normalize: [], + short: 'SHA256 hash.', + type: 'keyword', + }, + 'hash.sha384': { + dashed_name: 'hash-sha384', + description: 'SHA384 hash.', + flat_name: 'hash.sha384', + ignore_above: 1024, + level: 'extended', + name: 'sha384', + normalize: [], + short: 'SHA384 hash.', + type: 'keyword', + }, + 'hash.sha512': { + dashed_name: 'hash-sha512', + description: 'SHA512 hash.', + flat_name: 'hash.sha512', + ignore_above: 1024, + level: 'extended', + name: 'sha512', + normalize: [], + short: 'SHA512 hash.', + type: 'keyword', + }, + 'hash.ssdeep': { + dashed_name: 'hash-ssdeep', + description: 'SSDEEP hash.', + flat_name: 'hash.ssdeep', + ignore_above: 1024, + level: 'extended', + name: 'ssdeep', + normalize: [], + short: 'SSDEEP hash.', + type: 'keyword', + }, + 'hash.tlsh': { + dashed_name: 'hash-tlsh', + description: 'TLSH hash.', + flat_name: 'hash.tlsh', + ignore_above: 1024, + level: 'extended', + name: 'tlsh', + normalize: [], + short: 'TLSH hash.', + type: 'keyword', + }, + }, + group: 2, + name: 'hash', + prefix: 'hash.', + reusable: { + expected: [ + { as: 'hash', at: 'file', full: 'file.hash' }, + { as: 'hash', at: 'process', full: 'process.hash' }, + { as: 'hash', at: 'dll', full: 'dll.hash' }, + { + as: 'hash', + at: 'email.attachments.file', + full: 'email.attachments.file.hash', + }, + ], + top_level: false, + }, + short: 'Hashes, usually file hashes.', + title: 'Hash', + type: 'group', + }, + host: { + description: + 'A host is defined as a general computing instance.\nECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.', + fields: { + 'host.architecture': { + dashed_name: 'host-architecture', + description: 'Operating system architecture.', + example: 'x86_64', + flat_name: 'host.architecture', + ignore_above: 1024, + level: 'core', + name: 'architecture', + normalize: [], + short: 'Operating system architecture.', + type: 'keyword', + }, + 'host.boot.id': { + beta: 'This field is beta and subject to change.', + dashed_name: 'host-boot-id', + description: + 'Linux boot uuid taken from /proc/sys/kernel/random/boot_id. Note the boot_id value from /proc may or may not be the same in containers as on the host. Some container runtimes will bind mount a new boot_id value onto the proc file in each container.', + example: '88a1f0ed-5ae5-41ee-af6b-41921c311872', + flat_name: 'host.boot.id', + ignore_above: 1024, + level: 'extended', + name: 'boot.id', + normalize: [], + short: 'Linux boot uuid taken from /proc/sys/kernel/random/boot_id', + type: 'keyword', + }, + 'host.cpu.usage': { + dashed_name: 'host-cpu-usage', + description: + 'Percent CPU used which is normalized by the number of CPU cores and it ranges from 0 to 1.\nScaling factor: 1000.\nFor example: For a two core host, this value should be the average of the two cores, between 0 and 1.', + flat_name: 'host.cpu.usage', + level: 'extended', + name: 'cpu.usage', + normalize: [], + scaling_factor: 1000, + short: 'Percent CPU used, between 0 and 1.', + type: 'scaled_float', + }, + 'host.disk.read.bytes': { + dashed_name: 'host-disk-read-bytes', + description: + 'The total number of bytes (gauge) read successfully (aggregated from all disks) since the last metric collection.', + flat_name: 'host.disk.read.bytes', + level: 'extended', + name: 'disk.read.bytes', + normalize: [], + short: 'The number of bytes read by all disks.', + type: 'long', + }, + 'host.disk.write.bytes': { + dashed_name: 'host-disk-write-bytes', + description: + 'The total number of bytes (gauge) written successfully (aggregated from all disks) since the last metric collection.', + flat_name: 'host.disk.write.bytes', + level: 'extended', + name: 'disk.write.bytes', + normalize: [], + short: 'The number of bytes written on all disks.', + type: 'long', + }, + 'host.domain': { + dashed_name: 'host-domain', + description: + "Name of the domain of which the host is a member.\nFor example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider.", + example: 'CONTOSO', + flat_name: 'host.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + short: 'Name of the directory the group is a member of.', + type: 'keyword', + }, + 'host.geo.city_name': { + dashed_name: 'host-geo-city-name', + description: 'City name.', + example: 'Montreal', + flat_name: 'host.geo.city_name', + ignore_above: 1024, + level: 'core', + name: 'city_name', + normalize: [], + original_fieldset: 'geo', + short: 'City name.', + type: 'keyword', + }, + 'host.geo.continent_code': { + dashed_name: 'host-geo-continent-code', + description: "Two-letter code representing continent's name.", + example: 'NA', + flat_name: 'host.geo.continent_code', + ignore_above: 1024, + level: 'core', + name: 'continent_code', + normalize: [], + original_fieldset: 'geo', + short: 'Continent code.', + type: 'keyword', + }, + 'host.geo.continent_name': { + dashed_name: 'host-geo-continent-name', + description: 'Name of the continent.', + example: 'North America', + flat_name: 'host.geo.continent_name', + ignore_above: 1024, + level: 'core', + name: 'continent_name', + normalize: [], + original_fieldset: 'geo', + short: 'Name of the continent.', + type: 'keyword', + }, + 'host.geo.country_iso_code': { + dashed_name: 'host-geo-country-iso-code', + description: 'Country ISO code.', + example: 'CA', + flat_name: 'host.geo.country_iso_code', + ignore_above: 1024, + level: 'core', + name: 'country_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Country ISO code.', + type: 'keyword', + }, + 'host.geo.country_name': { + dashed_name: 'host-geo-country-name', + description: 'Country name.', + example: 'Canada', + flat_name: 'host.geo.country_name', + ignore_above: 1024, + level: 'core', + name: 'country_name', + normalize: [], + original_fieldset: 'geo', + short: 'Country name.', + type: 'keyword', + }, + 'host.geo.location': { + dashed_name: 'host-geo-location', + description: 'Longitude and latitude.', + example: '{ "lon": -73.614830, "lat": 45.505918 }', + flat_name: 'host.geo.location', + level: 'core', + name: 'location', + normalize: [], + original_fieldset: 'geo', + short: 'Longitude and latitude.', + type: 'geo_point', + }, + 'host.geo.name': { + dashed_name: 'host-geo-name', + description: + 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', + example: 'boston-dc', + flat_name: 'host.geo.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'geo', + short: 'User-defined description of a location.', + type: 'keyword', + }, + 'host.geo.postal_code': { + dashed_name: 'host-geo-postal-code', + description: + 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', + example: 94040, + flat_name: 'host.geo.postal_code', + ignore_above: 1024, + level: 'core', + name: 'postal_code', + normalize: [], + original_fieldset: 'geo', + short: 'Postal code.', + type: 'keyword', + }, + 'host.geo.region_iso_code': { + dashed_name: 'host-geo-region-iso-code', + description: 'Region ISO code.', + example: 'CA-QC', + flat_name: 'host.geo.region_iso_code', + ignore_above: 1024, + level: 'core', + name: 'region_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Region ISO code.', + type: 'keyword', + }, + 'host.geo.region_name': { + dashed_name: 'host-geo-region-name', + description: 'Region name.', + example: 'Quebec', + flat_name: 'host.geo.region_name', + ignore_above: 1024, + level: 'core', + name: 'region_name', + normalize: [], + original_fieldset: 'geo', + short: 'Region name.', + type: 'keyword', + }, + 'host.geo.timezone': { + dashed_name: 'host-geo-timezone', + description: 'The time zone of the location, such as IANA time zone name.', + example: 'America/Argentina/Buenos_Aires', + flat_name: 'host.geo.timezone', + ignore_above: 1024, + level: 'core', + name: 'timezone', + normalize: [], + original_fieldset: 'geo', + short: 'Time zone.', + type: 'keyword', + }, + 'host.hostname': { + dashed_name: 'host-hostname', + description: + 'Hostname of the host.\nIt normally contains what the `hostname` command returns on the host machine.', + flat_name: 'host.hostname', + ignore_above: 1024, + level: 'core', + name: 'hostname', + normalize: [], + short: 'Hostname of the host.', + type: 'keyword', + }, + 'host.id': { + dashed_name: 'host-id', + description: + 'Unique host id.\nAs hostname is not always unique, use values that are meaningful in your environment.\nExample: The current usage of `beat.name`.', + flat_name: 'host.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + short: 'Unique host id.', + type: 'keyword', + }, + 'host.ip': { + dashed_name: 'host-ip', + description: 'Host ip addresses.', + flat_name: 'host.ip', + level: 'core', + name: 'ip', + normalize: ['array'], + short: 'Host ip addresses.', + type: 'ip', + }, + 'host.mac': { + dashed_name: 'host-mac', + description: + 'Host MAC addresses.\nThe notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.', + example: '["00-00-5E-00-53-23", "00-00-5E-00-53-24"]', + flat_name: 'host.mac', + ignore_above: 1024, + level: 'core', + name: 'mac', + normalize: ['array'], + pattern: '^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$', + short: 'Host MAC addresses.', + type: 'keyword', + }, + 'host.name': { + dashed_name: 'host-name', + description: + 'Name of the host.\nIt can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.', + flat_name: 'host.name', + ignore_above: 1024, + level: 'core', + name: 'name', + normalize: [], + short: 'Name of the host.', + type: 'keyword', + }, + 'host.network.egress.bytes': { + dashed_name: 'host-network-egress-bytes', + description: + 'The number of bytes (gauge) sent out on all network interfaces by the host since the last metric collection.', + flat_name: 'host.network.egress.bytes', + level: 'extended', + name: 'network.egress.bytes', + normalize: [], + short: 'The number of bytes sent on all network interfaces.', + type: 'long', + }, + 'host.network.egress.packets': { + dashed_name: 'host-network-egress-packets', + description: + 'The number of packets (gauge) sent out on all network interfaces by the host since the last metric collection.', + flat_name: 'host.network.egress.packets', + level: 'extended', + name: 'network.egress.packets', + normalize: [], + short: 'The number of packets sent on all network interfaces.', + type: 'long', + }, + 'host.network.ingress.bytes': { + dashed_name: 'host-network-ingress-bytes', + description: + 'The number of bytes received (gauge) on all network interfaces by the host since the last metric collection.', + flat_name: 'host.network.ingress.bytes', + level: 'extended', + name: 'network.ingress.bytes', + normalize: [], + short: 'The number of bytes received on all network interfaces.', + type: 'long', + }, + 'host.network.ingress.packets': { + dashed_name: 'host-network-ingress-packets', + description: + 'The number of packets (gauge) received on all network interfaces by the host since the last metric collection.', + flat_name: 'host.network.ingress.packets', + level: 'extended', + name: 'network.ingress.packets', + normalize: [], + short: 'The number of packets received on all network interfaces.', + type: 'long', + }, + 'host.os.family': { + dashed_name: 'host-os-family', + description: 'OS family (such as redhat, debian, freebsd, windows).', + example: 'debian', + flat_name: 'host.os.family', + ignore_above: 1024, + level: 'extended', + name: 'family', + normalize: [], + original_fieldset: 'os', + short: 'OS family (such as redhat, debian, freebsd, windows).', + type: 'keyword', + }, + 'host.os.full': { + dashed_name: 'host-os-full', + description: 'Operating system name, including the version or code name.', + example: 'Mac OS Mojave', + flat_name: 'host.os.full', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'host.os.full.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full', + normalize: [], + original_fieldset: 'os', + short: 'Operating system name, including the version or code name.', + type: 'keyword', + }, + 'host.os.kernel': { + dashed_name: 'host-os-kernel', + description: 'Operating system kernel version as a raw string.', + example: '4.4.0-112-generic', + flat_name: 'host.os.kernel', + ignore_above: 1024, + level: 'extended', + name: 'kernel', + normalize: [], + original_fieldset: 'os', + short: 'Operating system kernel version as a raw string.', + type: 'keyword', + }, + 'host.os.name': { + dashed_name: 'host-os-name', + description: 'Operating system name, without the version.', + example: 'Mac OS X', + flat_name: 'host.os.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'host.os.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'os', + short: 'Operating system name, without the version.', + type: 'keyword', + }, + 'host.os.platform': { + dashed_name: 'host-os-platform', + description: 'Operating system platform (such centos, ubuntu, windows).', + example: 'darwin', + flat_name: 'host.os.platform', + ignore_above: 1024, + level: 'extended', + name: 'platform', + normalize: [], + original_fieldset: 'os', + short: 'Operating system platform (such centos, ubuntu, windows).', + type: 'keyword', + }, + 'host.os.type': { + dashed_name: 'host-os-type', + description: + "Use the `os.type` field to categorize the operating system into one of the broad commercial families.\nIf the OS you're dealing with is not listed as an expected value, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition.", + example: 'macos', + expected_values: ['linux', 'macos', 'unix', 'windows', 'ios', 'android'], + flat_name: 'host.os.type', + ignore_above: 1024, + level: 'extended', + name: 'type', + normalize: [], + original_fieldset: 'os', + short: 'Which commercial OS family (one of: linux, macos, unix, windows, ios or android).', + type: 'keyword', + }, + 'host.os.version': { + dashed_name: 'host-os-version', + description: 'Operating system version as a raw string.', + example: '10.14.1', + flat_name: 'host.os.version', + ignore_above: 1024, + level: 'extended', + name: 'version', + normalize: [], + original_fieldset: 'os', + short: 'Operating system version as a raw string.', + type: 'keyword', + }, + 'host.pid_ns_ino': { + beta: 'This field is beta and subject to change.', + dashed_name: 'host-pid-ns-ino', + description: + 'This is the inode number of the namespace in the namespace file system (nsfs). Unsigned int inum in include/linux/ns_common.h.', + example: 256383, + flat_name: 'host.pid_ns_ino', + ignore_above: 1024, + level: 'extended', + name: 'pid_ns_ino', + normalize: [], + short: 'Pid namespace inode', + type: 'keyword', + }, + 'host.risk.calculated_level': { + dashed_name: 'host-risk-calculated-level', + description: + 'A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.', + example: 'High', + flat_name: 'host.risk.calculated_level', + ignore_above: 1024, + level: 'extended', + name: 'calculated_level', + normalize: [], + original_fieldset: 'risk', + short: + 'A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.', + type: 'keyword', + }, + 'host.risk.calculated_score': { + dashed_name: 'host-risk-calculated-score', + description: + 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.', + example: 880.73, + flat_name: 'host.risk.calculated_score', + level: 'extended', + name: 'calculated_score', + normalize: [], + original_fieldset: 'risk', + short: + 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.', + type: 'float', + }, + 'host.risk.calculated_score_norm': { + dashed_name: 'host-risk-calculated-score-norm', + description: + 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring, and normalized to a range of 0 to 100.', + example: 88.73, + flat_name: 'host.risk.calculated_score_norm', + level: 'extended', + name: 'calculated_score_norm', + normalize: [], + original_fieldset: 'risk', + short: 'A normalized risk score calculated by an internal system.', + type: 'float', + }, + 'host.risk.static_level': { + dashed_name: 'host-risk-static-level', + description: + 'A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.', + example: 'High', + flat_name: 'host.risk.static_level', + ignore_above: 1024, + level: 'extended', + name: 'static_level', + normalize: [], + original_fieldset: 'risk', + short: + 'A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.', + type: 'keyword', + }, + 'host.risk.static_score': { + dashed_name: 'host-risk-static-score', + description: + 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.', + example: 830, + flat_name: 'host.risk.static_score', + level: 'extended', + name: 'static_score', + normalize: [], + original_fieldset: 'risk', + short: + 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.', + type: 'float', + }, + 'host.risk.static_score_norm': { + dashed_name: 'host-risk-static-score-norm', + description: + 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform, and normalized to a range of 0 to 100.', + example: 83, + flat_name: 'host.risk.static_score_norm', + level: 'extended', + name: 'static_score_norm', + normalize: [], + original_fieldset: 'risk', + short: 'A normalized risk score calculated by an external system.', + type: 'float', + }, + 'host.type': { + dashed_name: 'host-type', + description: + 'Type of host.\nFor Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.', + flat_name: 'host.type', + ignore_above: 1024, + level: 'core', + name: 'type', + normalize: [], + short: 'Type of host.', + type: 'keyword', + }, + 'host.uptime': { + dashed_name: 'host-uptime', + description: 'Seconds the host has been up.', + example: 1325, + flat_name: 'host.uptime', + level: 'extended', + name: 'uptime', + normalize: [], + short: 'Seconds the host has been up.', + type: 'long', + }, + }, + group: 2, + name: 'host', + nestings: ['host.geo', 'host.os', 'host.risk'], + prefix: 'host.', + reused_here: [ + { + full: 'host.geo', + schema_name: 'geo', + short: 'Fields describing a location.', + }, + { + full: 'host.os', + schema_name: 'os', + short: 'OS fields contain information about the operating system.', + }, + { + full: 'host.risk', + schema_name: 'risk', + short: 'Fields for describing risk score and level.', + }, + ], + short: 'Fields describing the relevant computing instance.', + title: 'Host', + type: 'group', + }, + http: { + description: + 'Fields related to HTTP activity. Use the `url` field set to store the url of the request.', + fields: { + 'http.request.body.bytes': { + dashed_name: 'http-request-body-bytes', + description: 'Size in bytes of the request body.', + example: 887, + flat_name: 'http.request.body.bytes', + format: 'bytes', + level: 'extended', + name: 'request.body.bytes', + normalize: [], + short: 'Size in bytes of the request body.', + type: 'long', + }, + 'http.request.body.content': { + dashed_name: 'http-request-body-content', + description: 'The full HTTP request body.', + example: 'Hello world', + flat_name: 'http.request.body.content', + level: 'extended', + multi_fields: [ + { + flat_name: 'http.request.body.content.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'request.body.content', + normalize: [], + short: 'The full HTTP request body.', + type: 'wildcard', + }, + 'http.request.bytes': { + dashed_name: 'http-request-bytes', + description: 'Total size in bytes of the request (body and headers).', + example: 1437, + flat_name: 'http.request.bytes', + format: 'bytes', + level: 'extended', + name: 'request.bytes', + normalize: [], + short: 'Total size in bytes of the request (body and headers).', + type: 'long', + }, + 'http.request.id': { + dashed_name: 'http-request-id', + description: + 'A unique identifier for each HTTP request to correlate logs between clients and servers in transactions.\nThe id may be contained in a non-standard HTTP header, such as `X-Request-ID` or `X-Correlation-ID`.', + example: '123e4567-e89b-12d3-a456-426614174000', + flat_name: 'http.request.id', + ignore_above: 1024, + level: 'extended', + name: 'request.id', + normalize: [], + short: 'HTTP request ID.', + type: 'keyword', + }, + 'http.request.method': { + dashed_name: 'http-request-method', + description: + 'HTTP request method.\nThe value should retain its casing from the original event. For example, `GET`, `get`, and `GeT` are all considered valid values for this field.', + example: 'POST', + flat_name: 'http.request.method', + ignore_above: 1024, + level: 'extended', + name: 'request.method', + normalize: [], + short: 'HTTP request method.', + type: 'keyword', + }, + 'http.request.mime_type': { + dashed_name: 'http-request-mime-type', + description: + "Mime type of the body of the request.\nThis value must only be populated based on the content of the request body, not on the `Content-Type` header. Comparing the mime type of a request with the request's Content-Type header can be helpful in detecting threats or misconfigured clients.", + example: 'image/gif', + flat_name: 'http.request.mime_type', + ignore_above: 1024, + level: 'extended', + name: 'request.mime_type', + normalize: [], + short: 'Mime type of the body of the request.', + type: 'keyword', + }, + 'http.request.referrer': { + dashed_name: 'http-request-referrer', + description: 'Referrer for this HTTP request.', + example: 'https://blog.example.com/', + flat_name: 'http.request.referrer', + ignore_above: 1024, + level: 'extended', + name: 'request.referrer', + normalize: [], + short: 'Referrer for this HTTP request.', + type: 'keyword', + }, + 'http.response.body.bytes': { + dashed_name: 'http-response-body-bytes', + description: 'Size in bytes of the response body.', + example: 887, + flat_name: 'http.response.body.bytes', + format: 'bytes', + level: 'extended', + name: 'response.body.bytes', + normalize: [], + short: 'Size in bytes of the response body.', + type: 'long', + }, + 'http.response.body.content': { + dashed_name: 'http-response-body-content', + description: 'The full HTTP response body.', + example: 'Hello world', + flat_name: 'http.response.body.content', + level: 'extended', + multi_fields: [ + { + flat_name: 'http.response.body.content.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'response.body.content', + normalize: [], + short: 'The full HTTP response body.', + type: 'wildcard', + }, + 'http.response.bytes': { + dashed_name: 'http-response-bytes', + description: 'Total size in bytes of the response (body and headers).', + example: 1437, + flat_name: 'http.response.bytes', + format: 'bytes', + level: 'extended', + name: 'response.bytes', + normalize: [], + short: 'Total size in bytes of the response (body and headers).', + type: 'long', + }, + 'http.response.mime_type': { + dashed_name: 'http-response-mime-type', + description: + "Mime type of the body of the response.\nThis value must only be populated based on the content of the response body, not on the `Content-Type` header. Comparing the mime type of a response with the response's Content-Type header can be helpful in detecting misconfigured servers.", + example: 'image/gif', + flat_name: 'http.response.mime_type', + ignore_above: 1024, + level: 'extended', + name: 'response.mime_type', + normalize: [], + short: 'Mime type of the body of the response.', + type: 'keyword', + }, + 'http.response.status_code': { + dashed_name: 'http-response-status-code', + description: 'HTTP response status code.', + example: 404, + flat_name: 'http.response.status_code', + format: 'string', + level: 'extended', + name: 'response.status_code', + normalize: [], + short: 'HTTP response status code.', + type: 'long', + }, + 'http.version': { + dashed_name: 'http-version', + description: 'HTTP version.', + example: 1.1, + flat_name: 'http.version', + ignore_above: 1024, + level: 'extended', + name: 'version', + normalize: [], + short: 'HTTP version.', + type: 'keyword', + }, + }, + group: 2, + name: 'http', + prefix: 'http.', + short: 'Fields describing an HTTP request.', + title: 'HTTP', + type: 'group', + }, + interface: { + description: + 'The interface fields are used to record ingress and egress interface information when reported by an observer (e.g. firewall, router, load balancer) in the context of the observer handling a network connection. In the case of a single observer interface (e.g. network sensor on a span port) only the observer.ingress information should be populated.', + fields: { + 'interface.alias': { + dashed_name: 'interface-alias', + description: + 'Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming.', + example: 'outside', + flat_name: 'interface.alias', + ignore_above: 1024, + level: 'extended', + name: 'alias', + normalize: [], + short: 'Interface alias', + type: 'keyword', + }, + 'interface.id': { + dashed_name: 'interface-id', + description: 'Interface ID as reported by an observer (typically SNMP interface ID).', + example: 10, + flat_name: 'interface.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + short: 'Interface ID', + type: 'keyword', + }, + 'interface.name': { + dashed_name: 'interface-name', + description: 'Interface name as reported by the system.', + example: 'eth0', + flat_name: 'interface.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'Interface name', + type: 'keyword', + }, + }, + group: 2, + name: 'interface', + prefix: 'interface.', + reusable: { + expected: [ + { + as: 'interface', + at: 'observer.ingress', + full: 'observer.ingress.interface', + }, + { + as: 'interface', + at: 'observer.egress', + full: 'observer.egress.interface', + }, + ], + top_level: false, + }, + short: 'Fields to describe observer interface information.', + title: 'Interface', + type: 'group', + }, + log: { + description: + "Details about the event's logging mechanism or logging transport.\nThe log.* fields are typically populated with details about the logging mechanism used to create and/or transport the event. For example, syslog details belong under `log.syslog.*`.\nThe details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields.", + fields: { + 'log.file.path': { + dashed_name: 'log-file-path', + description: + "Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate.\nIf the event wasn't read from a log file, do not populate this field.", + example: '/var/log/fun-times.log', + flat_name: 'log.file.path', + ignore_above: 1024, + level: 'extended', + name: 'file.path', + normalize: [], + short: 'Full path to the log file this event came from.', + type: 'keyword', + }, + 'log.level': { + dashed_name: 'log-level', + description: + "Original log level of the log event.\nIf the source of the event provides a log level or textual severity, this is the one that goes in `log.level`. If your source doesn't specify one, you may put your event transport's severity here (e.g. Syslog severity).\nSome examples are `warn`, `err`, `i`, `informational`.", + example: 'error', + flat_name: 'log.level', + ignore_above: 1024, + level: 'core', + name: 'level', + normalize: [], + short: 'Log level of the log event.', + type: 'keyword', + }, + 'log.logger': { + dashed_name: 'log-logger', + description: + 'The name of the logger inside an application. This is usually the name of the class which initialized the logger, or can be a custom name.', + example: 'org.elasticsearch.bootstrap.Bootstrap', + flat_name: 'log.logger', + ignore_above: 1024, + level: 'core', + name: 'logger', + normalize: [], + short: 'Name of the logger.', + type: 'keyword', + }, + 'log.origin.file.line': { + dashed_name: 'log-origin-file-line', + description: + 'The line number of the file containing the source code which originated the log event.', + example: 42, + flat_name: 'log.origin.file.line', + level: 'extended', + name: 'origin.file.line', + normalize: [], + short: 'The line number of the file which originated the log event.', + type: 'long', + }, + 'log.origin.file.name': { + dashed_name: 'log-origin-file-name', + description: + 'The name of the file containing the source code which originated the log event.\nNote that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`.', + example: 'Bootstrap.java', + flat_name: 'log.origin.file.name', + ignore_above: 1024, + level: 'extended', + name: 'origin.file.name', + normalize: [], + short: 'The code file which originated the log event.', + type: 'keyword', + }, + 'log.origin.function': { + dashed_name: 'log-origin-function', + description: 'The name of the function or method which originated the log event.', + example: 'init', + flat_name: 'log.origin.function', + ignore_above: 1024, + level: 'extended', + name: 'origin.function', + normalize: [], + short: 'The function which originated the log event.', + type: 'keyword', + }, + 'log.syslog': { + dashed_name: 'log-syslog', + description: + 'The Syslog metadata of the event, if the event was transmitted via Syslog. Please see RFCs 5424 or 3164.', + flat_name: 'log.syslog', + level: 'extended', + name: 'syslog', + normalize: [], + short: 'Syslog metadata', + type: 'object', + }, + 'log.syslog.appname': { + dashed_name: 'log-syslog-appname', + description: 'The device or application that originated the Syslog message, if available.', + example: 'sshd', + flat_name: 'log.syslog.appname', + ignore_above: 1024, + level: 'extended', + name: 'syslog.appname', + normalize: [], + short: 'The device or application that originated the Syslog message.', + type: 'keyword', + }, + 'log.syslog.facility.code': { + dashed_name: 'log-syslog-facility-code', + description: + 'The Syslog numeric facility of the log event, if available.\nAccording to RFCs 5424 and 3164, this value should be an integer between 0 and 23.', + example: 23, + flat_name: 'log.syslog.facility.code', + format: 'string', + level: 'extended', + name: 'syslog.facility.code', + normalize: [], + short: 'Syslog numeric facility of the event.', + type: 'long', + }, + 'log.syslog.facility.name': { + dashed_name: 'log-syslog-facility-name', + description: 'The Syslog text-based facility of the log event, if available.', + example: 'local7', + flat_name: 'log.syslog.facility.name', + ignore_above: 1024, + level: 'extended', + name: 'syslog.facility.name', + normalize: [], + short: 'Syslog text-based facility of the event.', + type: 'keyword', + }, + 'log.syslog.hostname': { + dashed_name: 'log-syslog-hostname', + description: + 'The hostname, FQDN, or IP of the machine that originally sent the Syslog message. This is sourced from the hostname field of the syslog header. Depending on the environment, this value may be different from the host that handled the event, especially if the host handling the events is acting as a collector.', + example: 'example-host', + flat_name: 'log.syslog.hostname', + ignore_above: 1024, + level: 'extended', + name: 'syslog.hostname', + normalize: [], + short: 'The host that originated the Syslog message.', + type: 'keyword', + }, + 'log.syslog.msgid': { + dashed_name: 'log-syslog-msgid', + description: + 'An identifier for the type of Syslog message, if available. Only applicable for RFC 5424 messages.', + example: 'ID47', + flat_name: 'log.syslog.msgid', + ignore_above: 1024, + level: 'extended', + name: 'syslog.msgid', + normalize: [], + short: 'An identifier for the type of Syslog message.', + type: 'keyword', + }, + 'log.syslog.priority': { + dashed_name: 'log-syslog-priority', + description: + 'Syslog numeric priority of the event, if available.\nAccording to RFCs 5424 and 3164, the priority is 8 * facility + severity. This number is therefore expected to contain a value between 0 and 191.', + example: 135, + flat_name: 'log.syslog.priority', + format: 'string', + level: 'extended', + name: 'syslog.priority', + normalize: [], + short: 'Syslog priority of the event.', + type: 'long', + }, + 'log.syslog.procid': { + dashed_name: 'log-syslog-procid', + description: 'The process name or ID that originated the Syslog message, if available.', + example: 12345, + flat_name: 'log.syslog.procid', + ignore_above: 1024, + level: 'extended', + name: 'syslog.procid', + normalize: [], + short: 'The process name or ID that originated the Syslog message.', + type: 'keyword', + }, + 'log.syslog.severity.code': { + dashed_name: 'log-syslog-severity-code', + description: + "The Syslog numeric severity of the log event, if available.\nIf the event source publishing via Syslog provides a different numeric severity value (e.g. firewall, IDS), your source's numeric severity should go to `event.severity`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `event.severity`.", + example: 3, + flat_name: 'log.syslog.severity.code', + level: 'extended', + name: 'syslog.severity.code', + normalize: [], + short: 'Syslog numeric severity of the event.', + type: 'long', + }, + 'log.syslog.severity.name': { + dashed_name: 'log-syslog-severity-name', + description: + "The Syslog numeric severity of the log event, if available.\nIf the event source publishing via Syslog provides a different severity value (e.g. firewall, IDS), your source's text severity should go to `log.level`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `log.level`.", + example: 'Error', + flat_name: 'log.syslog.severity.name', + ignore_above: 1024, + level: 'extended', + name: 'syslog.severity.name', + normalize: [], + short: 'Syslog text-based severity of the event.', + type: 'keyword', + }, + 'log.syslog.structured_data': { + dashed_name: 'log-syslog-structured-data', + description: + 'Structured data expressed in RFC 5424 messages, if available. These are key-value pairs formed from the structured data portion of the syslog message, as defined in RFC 5424 Section 6.3.', + flat_name: 'log.syslog.structured_data', + level: 'extended', + name: 'syslog.structured_data', + normalize: [], + short: 'Structured data expressed in RFC 5424 messages.', + type: 'flattened', + }, + 'log.syslog.version': { + dashed_name: 'log-syslog-version', + description: + 'The version of the Syslog protocol specification. Only applicable for RFC 5424 messages.', + example: 1, + flat_name: 'log.syslog.version', + ignore_above: 1024, + level: 'extended', + name: 'syslog.version', + normalize: [], + short: 'Syslog protocol version.', + type: 'keyword', + }, + }, + group: 2, + name: 'log', + prefix: 'log.', + short: "Details about the event's logging mechanism.", + title: 'Log', + type: 'group', + }, + network: { + description: + 'The network is defined as the communication path over which a host or network event happens.\nThe network.* fields should be populated with details about the network activity associated with an event.', + fields: { + 'network.application': { + dashed_name: 'network-application', + description: + "When a specific application or service is identified from network connection details (source/dest IPs, ports, certificates, or wire format), this field captures the application's or service's name.\nFor example, the original event identifies the network connection being from a specific web service in a `https` network connection, like `facebook` or `twitter`.\nThe field value must be normalized to lowercase for querying.", + example: 'aim', + flat_name: 'network.application', + ignore_above: 1024, + level: 'extended', + name: 'application', + normalize: [], + short: 'Application level protocol name.', + type: 'keyword', + }, + 'network.bytes': { + dashed_name: 'network-bytes', + description: + 'Total bytes transferred in both directions.\nIf `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum.', + example: 368, + flat_name: 'network.bytes', + format: 'bytes', + level: 'core', + name: 'bytes', + normalize: [], + short: 'Total bytes transferred in both directions.', + type: 'long', + }, + 'network.community_id': { + dashed_name: 'network-community-id', + description: + 'A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows.\nLearn more at https://github.com/corelight/community-id-spec.', + example: '1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=', + flat_name: 'network.community_id', + ignore_above: 1024, + level: 'extended', + name: 'community_id', + normalize: [], + short: 'A hash of source and destination IPs and ports.', + type: 'keyword', + }, + 'network.direction': { + dashed_name: 'network-direction', + description: + 'Direction of the network traffic.\nWhen mapping events from a host-based monitoring context, populate this field from the host\'s point of view, using the values "ingress" or "egress".\nWhen mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of the network perimeter, using the values "inbound", "outbound", "internal" or "external".\nNote that "internal" is not crossing perimeter boundaries, and is meant to describe communication between two hosts within the perimeter. Note also that "external" is meant to describe traffic between two hosts that are external to the perimeter. This could for example be useful for ISPs or VPN service providers.', + example: 'inbound', + expected_values: [ + 'ingress', + 'egress', + 'inbound', + 'outbound', + 'internal', + 'external', + 'unknown', + ], + flat_name: 'network.direction', + ignore_above: 1024, + level: 'core', + name: 'direction', + normalize: [], + short: 'Direction of the network traffic.', + type: 'keyword', + }, + 'network.forwarded_ip': { + dashed_name: 'network-forwarded-ip', + description: 'Host IP address when the source IP address is the proxy.', + example: '192.1.1.2', + flat_name: 'network.forwarded_ip', + level: 'core', + name: 'forwarded_ip', + normalize: [], + short: 'Host IP address when the source IP address is the proxy.', + type: 'ip', + }, + 'network.iana_number': { + dashed_name: 'network-iana-number', + description: + 'IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number.', + example: 6, + flat_name: 'network.iana_number', + ignore_above: 1024, + level: 'extended', + name: 'iana_number', + normalize: [], + short: 'IANA Protocol Number.', + type: 'keyword', + }, + 'network.inner': { + dashed_name: 'network-inner', + description: + 'Network.inner fields are added in addition to network.vlan fields to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.)', + flat_name: 'network.inner', + level: 'extended', + name: 'inner', + normalize: [], + short: 'Inner VLAN tag information', + type: 'object', + }, + 'network.inner.vlan.id': { + dashed_name: 'network-inner-vlan-id', + description: 'VLAN ID as reported by the observer.', + example: 10, + flat_name: 'network.inner.vlan.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'vlan', + short: 'VLAN ID as reported by the observer.', + type: 'keyword', + }, + 'network.inner.vlan.name': { + dashed_name: 'network-inner-vlan-name', + description: 'Optional VLAN name as reported by the observer.', + example: 'outside', + flat_name: 'network.inner.vlan.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'vlan', + short: 'Optional VLAN name as reported by the observer.', + type: 'keyword', + }, + 'network.name': { + dashed_name: 'network-name', + description: 'Name given by operators to sections of their network.', + example: 'Guest Wifi', + flat_name: 'network.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'Name given by operators to sections of their network.', + type: 'keyword', + }, + 'network.packets': { + dashed_name: 'network-packets', + description: + 'Total packets transferred in both directions.\nIf `source.packets` and `destination.packets` are known, `network.packets` is their sum.', + example: 24, + flat_name: 'network.packets', + level: 'core', + name: 'packets', + normalize: [], + short: 'Total packets transferred in both directions.', + type: 'long', + }, + 'network.protocol': { + dashed_name: 'network-protocol', + description: + 'In the OSI Model this would be the Application Layer protocol. For example, `http`, `dns`, or `ssh`.\nThe field value must be normalized to lowercase for querying.', + example: 'http', + flat_name: 'network.protocol', + ignore_above: 1024, + level: 'core', + name: 'protocol', + normalize: [], + short: 'Application protocol name.', + type: 'keyword', + }, + 'network.transport': { + dashed_name: 'network-transport', + description: + 'Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.)\nThe field value must be normalized to lowercase for querying.', + example: 'tcp', + flat_name: 'network.transport', + ignore_above: 1024, + level: 'core', + name: 'transport', + normalize: [], + short: 'Protocol Name corresponding to the field `iana_number`.', + type: 'keyword', + }, + 'network.type': { + dashed_name: 'network-type', + description: + 'In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc\nThe field value must be normalized to lowercase for querying.', + example: 'ipv4', + flat_name: 'network.type', + ignore_above: 1024, + level: 'core', + name: 'type', + normalize: [], + short: 'In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc', + type: 'keyword', + }, + 'network.vlan.id': { + dashed_name: 'network-vlan-id', + description: 'VLAN ID as reported by the observer.', + example: 10, + flat_name: 'network.vlan.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'vlan', + short: 'VLAN ID as reported by the observer.', + type: 'keyword', + }, + 'network.vlan.name': { + dashed_name: 'network-vlan-name', + description: 'Optional VLAN name as reported by the observer.', + example: 'outside', + flat_name: 'network.vlan.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'vlan', + short: 'Optional VLAN name as reported by the observer.', + type: 'keyword', + }, + }, + group: 2, + name: 'network', + nestings: ['network.inner.vlan', 'network.vlan'], + prefix: 'network.', + reused_here: [ + { + full: 'network.vlan', + schema_name: 'vlan', + short: 'Fields to describe observed VLAN information.', + }, + { + full: 'network.inner.vlan', + schema_name: 'vlan', + short: 'Fields to describe observed VLAN information.', + }, + ], + short: 'Fields describing the communication path over which the event happened.', + title: 'Network', + type: 'group', + }, + observer: { + description: + 'An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics.\nThis could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, web proxies, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS.', + fields: { + 'observer.egress': { + dashed_name: 'observer-egress', + description: + 'Observer.egress holds information like interface number and name, vlan, and zone information to classify egress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic.', + flat_name: 'observer.egress', + level: 'extended', + name: 'egress', + normalize: [], + short: 'Object field for egress information', + type: 'object', + }, + 'observer.egress.interface.alias': { + dashed_name: 'observer-egress-interface-alias', + description: + 'Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming.', + example: 'outside', + flat_name: 'observer.egress.interface.alias', + ignore_above: 1024, + level: 'extended', + name: 'alias', + normalize: [], + original_fieldset: 'interface', + short: 'Interface alias', + type: 'keyword', + }, + 'observer.egress.interface.id': { + dashed_name: 'observer-egress-interface-id', + description: 'Interface ID as reported by an observer (typically SNMP interface ID).', + example: 10, + flat_name: 'observer.egress.interface.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'interface', + short: 'Interface ID', + type: 'keyword', + }, + 'observer.egress.interface.name': { + dashed_name: 'observer-egress-interface-name', + description: 'Interface name as reported by the system.', + example: 'eth0', + flat_name: 'observer.egress.interface.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'interface', + short: 'Interface name', + type: 'keyword', + }, + 'observer.egress.vlan.id': { + dashed_name: 'observer-egress-vlan-id', + description: 'VLAN ID as reported by the observer.', + example: 10, + flat_name: 'observer.egress.vlan.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'vlan', + short: 'VLAN ID as reported by the observer.', + type: 'keyword', + }, + 'observer.egress.vlan.name': { + dashed_name: 'observer-egress-vlan-name', + description: 'Optional VLAN name as reported by the observer.', + example: 'outside', + flat_name: 'observer.egress.vlan.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'vlan', + short: 'Optional VLAN name as reported by the observer.', + type: 'keyword', + }, + 'observer.egress.zone': { + dashed_name: 'observer-egress-zone', + description: + 'Network zone of outbound traffic as reported by the observer to categorize the destination area of egress traffic, e.g. Internal, External, DMZ, HR, Legal, etc.', + example: 'Public_Internet', + flat_name: 'observer.egress.zone', + ignore_above: 1024, + level: 'extended', + name: 'egress.zone', + normalize: [], + short: 'Observer Egress zone', + type: 'keyword', + }, + 'observer.geo.city_name': { + dashed_name: 'observer-geo-city-name', + description: 'City name.', + example: 'Montreal', + flat_name: 'observer.geo.city_name', + ignore_above: 1024, + level: 'core', + name: 'city_name', + normalize: [], + original_fieldset: 'geo', + short: 'City name.', + type: 'keyword', + }, + 'observer.geo.continent_code': { + dashed_name: 'observer-geo-continent-code', + description: "Two-letter code representing continent's name.", + example: 'NA', + flat_name: 'observer.geo.continent_code', + ignore_above: 1024, + level: 'core', + name: 'continent_code', + normalize: [], + original_fieldset: 'geo', + short: 'Continent code.', + type: 'keyword', + }, + 'observer.geo.continent_name': { + dashed_name: 'observer-geo-continent-name', + description: 'Name of the continent.', + example: 'North America', + flat_name: 'observer.geo.continent_name', + ignore_above: 1024, + level: 'core', + name: 'continent_name', + normalize: [], + original_fieldset: 'geo', + short: 'Name of the continent.', + type: 'keyword', + }, + 'observer.geo.country_iso_code': { + dashed_name: 'observer-geo-country-iso-code', + description: 'Country ISO code.', + example: 'CA', + flat_name: 'observer.geo.country_iso_code', + ignore_above: 1024, + level: 'core', + name: 'country_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Country ISO code.', + type: 'keyword', + }, + 'observer.geo.country_name': { + dashed_name: 'observer-geo-country-name', + description: 'Country name.', + example: 'Canada', + flat_name: 'observer.geo.country_name', + ignore_above: 1024, + level: 'core', + name: 'country_name', + normalize: [], + original_fieldset: 'geo', + short: 'Country name.', + type: 'keyword', + }, + 'observer.geo.location': { + dashed_name: 'observer-geo-location', + description: 'Longitude and latitude.', + example: '{ "lon": -73.614830, "lat": 45.505918 }', + flat_name: 'observer.geo.location', + level: 'core', + name: 'location', + normalize: [], + original_fieldset: 'geo', + short: 'Longitude and latitude.', + type: 'geo_point', + }, + 'observer.geo.name': { + dashed_name: 'observer-geo-name', + description: + 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', + example: 'boston-dc', + flat_name: 'observer.geo.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'geo', + short: 'User-defined description of a location.', + type: 'keyword', + }, + 'observer.geo.postal_code': { + dashed_name: 'observer-geo-postal-code', + description: + 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', + example: 94040, + flat_name: 'observer.geo.postal_code', + ignore_above: 1024, + level: 'core', + name: 'postal_code', + normalize: [], + original_fieldset: 'geo', + short: 'Postal code.', + type: 'keyword', + }, + 'observer.geo.region_iso_code': { + dashed_name: 'observer-geo-region-iso-code', + description: 'Region ISO code.', + example: 'CA-QC', + flat_name: 'observer.geo.region_iso_code', + ignore_above: 1024, + level: 'core', + name: 'region_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Region ISO code.', + type: 'keyword', + }, + 'observer.geo.region_name': { + dashed_name: 'observer-geo-region-name', + description: 'Region name.', + example: 'Quebec', + flat_name: 'observer.geo.region_name', + ignore_above: 1024, + level: 'core', + name: 'region_name', + normalize: [], + original_fieldset: 'geo', + short: 'Region name.', + type: 'keyword', + }, + 'observer.geo.timezone': { + dashed_name: 'observer-geo-timezone', + description: 'The time zone of the location, such as IANA time zone name.', + example: 'America/Argentina/Buenos_Aires', + flat_name: 'observer.geo.timezone', + ignore_above: 1024, + level: 'core', + name: 'timezone', + normalize: [], + original_fieldset: 'geo', + short: 'Time zone.', + type: 'keyword', + }, + 'observer.hostname': { + dashed_name: 'observer-hostname', + description: 'Hostname of the observer.', + flat_name: 'observer.hostname', + ignore_above: 1024, + level: 'core', + name: 'hostname', + normalize: [], + short: 'Hostname of the observer.', + type: 'keyword', + }, + 'observer.ingress': { + dashed_name: 'observer-ingress', + description: + 'Observer.ingress holds information like interface number and name, vlan, and zone information to classify ingress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic.', + flat_name: 'observer.ingress', + level: 'extended', + name: 'ingress', + normalize: [], + short: 'Object field for ingress information', + type: 'object', + }, + 'observer.ingress.interface.alias': { + dashed_name: 'observer-ingress-interface-alias', + description: + 'Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming.', + example: 'outside', + flat_name: 'observer.ingress.interface.alias', + ignore_above: 1024, + level: 'extended', + name: 'alias', + normalize: [], + original_fieldset: 'interface', + short: 'Interface alias', + type: 'keyword', + }, + 'observer.ingress.interface.id': { + dashed_name: 'observer-ingress-interface-id', + description: 'Interface ID as reported by an observer (typically SNMP interface ID).', + example: 10, + flat_name: 'observer.ingress.interface.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'interface', + short: 'Interface ID', + type: 'keyword', + }, + 'observer.ingress.interface.name': { + dashed_name: 'observer-ingress-interface-name', + description: 'Interface name as reported by the system.', + example: 'eth0', + flat_name: 'observer.ingress.interface.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'interface', + short: 'Interface name', + type: 'keyword', + }, + 'observer.ingress.vlan.id': { + dashed_name: 'observer-ingress-vlan-id', + description: 'VLAN ID as reported by the observer.', + example: 10, + flat_name: 'observer.ingress.vlan.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'vlan', + short: 'VLAN ID as reported by the observer.', + type: 'keyword', + }, + 'observer.ingress.vlan.name': { + dashed_name: 'observer-ingress-vlan-name', + description: 'Optional VLAN name as reported by the observer.', + example: 'outside', + flat_name: 'observer.ingress.vlan.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'vlan', + short: 'Optional VLAN name as reported by the observer.', + type: 'keyword', + }, + 'observer.ingress.zone': { + dashed_name: 'observer-ingress-zone', + description: + 'Network zone of incoming traffic as reported by the observer to categorize the source area of ingress traffic. e.g. internal, External, DMZ, HR, Legal, etc.', + example: 'DMZ', + flat_name: 'observer.ingress.zone', + ignore_above: 1024, + level: 'extended', + name: 'ingress.zone', + normalize: [], + short: 'Observer ingress zone', + type: 'keyword', + }, + 'observer.ip': { + dashed_name: 'observer-ip', + description: 'IP addresses of the observer.', + flat_name: 'observer.ip', + level: 'core', + name: 'ip', + normalize: ['array'], + short: 'IP addresses of the observer.', + type: 'ip', + }, + 'observer.mac': { + dashed_name: 'observer-mac', + description: + 'MAC addresses of the observer.\nThe notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.', + example: '["00-00-5E-00-53-23", "00-00-5E-00-53-24"]', + flat_name: 'observer.mac', + ignore_above: 1024, + level: 'core', + name: 'mac', + normalize: ['array'], + pattern: '^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$', + short: 'MAC addresses of the observer.', + type: 'keyword', + }, + 'observer.name': { + dashed_name: 'observer-name', + description: + 'Custom name of the observer.\nThis is a name that can be given to an observer. This can be helpful for example if multiple firewalls of the same model are used in an organization.\nIf no custom name is needed, the field can be left empty.', + example: '1_proxySG', + flat_name: 'observer.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'Custom name of the observer.', + type: 'keyword', + }, + 'observer.os.family': { + dashed_name: 'observer-os-family', + description: 'OS family (such as redhat, debian, freebsd, windows).', + example: 'debian', + flat_name: 'observer.os.family', + ignore_above: 1024, + level: 'extended', + name: 'family', + normalize: [], + original_fieldset: 'os', + short: 'OS family (such as redhat, debian, freebsd, windows).', + type: 'keyword', + }, + 'observer.os.full': { + dashed_name: 'observer-os-full', + description: 'Operating system name, including the version or code name.', + example: 'Mac OS Mojave', + flat_name: 'observer.os.full', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'observer.os.full.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full', + normalize: [], + original_fieldset: 'os', + short: 'Operating system name, including the version or code name.', + type: 'keyword', + }, + 'observer.os.kernel': { + dashed_name: 'observer-os-kernel', + description: 'Operating system kernel version as a raw string.', + example: '4.4.0-112-generic', + flat_name: 'observer.os.kernel', + ignore_above: 1024, + level: 'extended', + name: 'kernel', + normalize: [], + original_fieldset: 'os', + short: 'Operating system kernel version as a raw string.', + type: 'keyword', + }, + 'observer.os.name': { + dashed_name: 'observer-os-name', + description: 'Operating system name, without the version.', + example: 'Mac OS X', + flat_name: 'observer.os.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'observer.os.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'os', + short: 'Operating system name, without the version.', + type: 'keyword', + }, + 'observer.os.platform': { + dashed_name: 'observer-os-platform', + description: 'Operating system platform (such centos, ubuntu, windows).', + example: 'darwin', + flat_name: 'observer.os.platform', + ignore_above: 1024, + level: 'extended', + name: 'platform', + normalize: [], + original_fieldset: 'os', + short: 'Operating system platform (such centos, ubuntu, windows).', + type: 'keyword', + }, + 'observer.os.type': { + dashed_name: 'observer-os-type', + description: + "Use the `os.type` field to categorize the operating system into one of the broad commercial families.\nIf the OS you're dealing with is not listed as an expected value, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition.", + example: 'macos', + expected_values: ['linux', 'macos', 'unix', 'windows', 'ios', 'android'], + flat_name: 'observer.os.type', + ignore_above: 1024, + level: 'extended', + name: 'type', + normalize: [], + original_fieldset: 'os', + short: 'Which commercial OS family (one of: linux, macos, unix, windows, ios or android).', + type: 'keyword', + }, + 'observer.os.version': { + dashed_name: 'observer-os-version', + description: 'Operating system version as a raw string.', + example: '10.14.1', + flat_name: 'observer.os.version', + ignore_above: 1024, + level: 'extended', + name: 'version', + normalize: [], + original_fieldset: 'os', + short: 'Operating system version as a raw string.', + type: 'keyword', + }, + 'observer.product': { + dashed_name: 'observer-product', + description: 'The product name of the observer.', + example: 's200', + flat_name: 'observer.product', + ignore_above: 1024, + level: 'extended', + name: 'product', + normalize: [], + short: 'The product name of the observer.', + type: 'keyword', + }, + 'observer.serial_number': { + dashed_name: 'observer-serial-number', + description: 'Observer serial number.', + flat_name: 'observer.serial_number', + ignore_above: 1024, + level: 'extended', + name: 'serial_number', + normalize: [], + short: 'Observer serial number.', + type: 'keyword', + }, + 'observer.type': { + dashed_name: 'observer-type', + description: + 'The type of the observer the data is coming from.\nThere is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`.', + example: 'firewall', + flat_name: 'observer.type', + ignore_above: 1024, + level: 'core', + name: 'type', + normalize: [], + short: 'The type of the observer the data is coming from.', + type: 'keyword', + }, + 'observer.vendor': { + dashed_name: 'observer-vendor', + description: 'Vendor name of the observer.', + example: 'Symantec', + flat_name: 'observer.vendor', + ignore_above: 1024, + level: 'core', + name: 'vendor', + normalize: [], + short: 'Vendor name of the observer.', + type: 'keyword', + }, + 'observer.version': { + dashed_name: 'observer-version', + description: 'Observer version.', + flat_name: 'observer.version', + ignore_above: 1024, + level: 'core', + name: 'version', + normalize: [], + short: 'Observer version.', + type: 'keyword', + }, + }, + group: 2, + name: 'observer', + nestings: [ + 'observer.egress.interface', + 'observer.egress.vlan', + 'observer.geo', + 'observer.ingress.interface', + 'observer.ingress.vlan', + 'observer.os', + ], + prefix: 'observer.', + reused_here: [ + { + full: 'observer.geo', + schema_name: 'geo', + short: 'Fields describing a location.', + }, + { + full: 'observer.ingress.interface', + schema_name: 'interface', + short: 'Fields to describe observer interface information.', + }, + { + full: 'observer.egress.interface', + schema_name: 'interface', + short: 'Fields to describe observer interface information.', + }, + { + full: 'observer.os', + schema_name: 'os', + short: 'OS fields contain information about the operating system.', + }, + { + full: 'observer.ingress.vlan', + schema_name: 'vlan', + short: 'Fields to describe observed VLAN information.', + }, + { + full: 'observer.egress.vlan', + schema_name: 'vlan', + short: 'Fields to describe observed VLAN information.', + }, + ], + short: 'Fields describing an entity observing the event from outside the host.', + title: 'Observer', + type: 'group', + }, + orchestrator: { + description: + 'Fields that describe the resources which container orchestrators manage or act upon.', + fields: { + 'orchestrator.api_version': { + dashed_name: 'orchestrator-api-version', + description: 'API version being used to carry out the action', + example: 'v1beta1', + flat_name: 'orchestrator.api_version', + ignore_above: 1024, + level: 'extended', + name: 'api_version', + normalize: [], + short: 'API version being used to carry out the action', + type: 'keyword', + }, + 'orchestrator.cluster.id': { + dashed_name: 'orchestrator-cluster-id', + description: 'Unique ID of the cluster.', + flat_name: 'orchestrator.cluster.id', + ignore_above: 1024, + level: 'extended', + name: 'cluster.id', + normalize: [], + short: 'Unique ID of the cluster.', + type: 'keyword', + }, + 'orchestrator.cluster.name': { + dashed_name: 'orchestrator-cluster-name', + description: 'Name of the cluster.', + flat_name: 'orchestrator.cluster.name', + ignore_above: 1024, + level: 'extended', + name: 'cluster.name', + normalize: [], + short: 'Name of the cluster.', + type: 'keyword', + }, + 'orchestrator.cluster.url': { + dashed_name: 'orchestrator-cluster-url', + description: 'URL of the API used to manage the cluster.', + flat_name: 'orchestrator.cluster.url', + ignore_above: 1024, + level: 'extended', + name: 'cluster.url', + normalize: [], + short: 'URL of the API used to manage the cluster.', + type: 'keyword', + }, + 'orchestrator.cluster.version': { + dashed_name: 'orchestrator-cluster-version', + description: 'The version of the cluster.', + flat_name: 'orchestrator.cluster.version', + ignore_above: 1024, + level: 'extended', + name: 'cluster.version', + normalize: [], + short: 'The version of the cluster.', + type: 'keyword', + }, + 'orchestrator.namespace': { + dashed_name: 'orchestrator-namespace', + description: 'Namespace in which the action is taking place.', + example: 'kube-system', + flat_name: 'orchestrator.namespace', + ignore_above: 1024, + level: 'extended', + name: 'namespace', + normalize: [], + short: 'Namespace in which the action is taking place.', + type: 'keyword', + }, + 'orchestrator.organization': { + dashed_name: 'orchestrator-organization', + description: 'Organization affected by the event (for multi-tenant orchestrator setups).', + example: 'elastic', + flat_name: 'orchestrator.organization', + ignore_above: 1024, + level: 'extended', + name: 'organization', + normalize: [], + short: 'Organization affected by the event (for multi-tenant orchestrator setups).', + type: 'keyword', + }, + 'orchestrator.resource.id': { + dashed_name: 'orchestrator-resource-id', + description: 'Unique ID of the resource being acted upon.', + flat_name: 'orchestrator.resource.id', + ignore_above: 1024, + level: 'extended', + name: 'resource.id', + normalize: [], + short: 'Unique ID of the resource being acted upon.', + type: 'keyword', + }, + 'orchestrator.resource.ip': { + dashed_name: 'orchestrator-resource-ip', + description: + 'IP address assigned to the resource associated with the event being observed. In the case of a Kubernetes Pod, this array would contain only one element: the IP of the Pod (as opposed to the Node on which the Pod is running).', + flat_name: 'orchestrator.resource.ip', + level: 'extended', + name: 'resource.ip', + normalize: ['array'], + short: 'IP address assigned to the resource associated with the event being observed.', + type: 'ip', + }, + 'orchestrator.resource.name': { + dashed_name: 'orchestrator-resource-name', + description: 'Name of the resource being acted upon.', + example: 'test-pod-cdcws', + flat_name: 'orchestrator.resource.name', + ignore_above: 1024, + level: 'extended', + name: 'resource.name', + normalize: [], + short: 'Name of the resource being acted upon.', + type: 'keyword', + }, + 'orchestrator.resource.parent.type': { + dashed_name: 'orchestrator-resource-parent-type', + description: + 'Type or kind of the parent resource associated with the event being observed. In Kubernetes, this will be the name of a built-in workload resource (e.g., Deployment, StatefulSet, DaemonSet).', + example: 'DaemonSet', + flat_name: 'orchestrator.resource.parent.type', + ignore_above: 1024, + level: 'extended', + name: 'resource.parent.type', + normalize: [], + short: 'Type or kind of the parent resource associated with the event being observed.', + type: 'keyword', + }, + 'orchestrator.resource.type': { + dashed_name: 'orchestrator-resource-type', + description: 'Type of resource being acted upon.', + example: 'service', + flat_name: 'orchestrator.resource.type', + ignore_above: 1024, + level: 'extended', + name: 'resource.type', + normalize: [], + short: 'Type of resource being acted upon.', + type: 'keyword', + }, + 'orchestrator.type': { + dashed_name: 'orchestrator-type', + description: 'Orchestrator cluster type (e.g. kubernetes, nomad or cloudfoundry).', + example: 'kubernetes', + flat_name: 'orchestrator.type', + ignore_above: 1024, + level: 'extended', + name: 'type', + normalize: [], + short: 'Orchestrator cluster type (e.g. kubernetes, nomad or cloudfoundry).', + type: 'keyword', + }, + }, + group: 2, + name: 'orchestrator', + prefix: 'orchestrator.', + short: 'Fields relevant to container orchestrators.', + title: 'Orchestrator', + type: 'group', + }, + organization: { + description: + 'The organization fields enrich data with information about the company or entity the data is associated with.\nThese fields help you arrange or filter data stored in an index by one or multiple organizations.', + fields: { + 'organization.id': { + dashed_name: 'organization-id', + description: 'Unique identifier for the organization.', + flat_name: 'organization.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + short: 'Unique identifier for the organization.', + type: 'keyword', + }, + 'organization.name': { + dashed_name: 'organization-name', + description: 'Organization name.', + flat_name: 'organization.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'organization.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + short: 'Organization name.', + type: 'keyword', + }, + }, + group: 2, + name: 'organization', + prefix: 'organization.', + short: 'Fields describing the organization or company the event is associated with.', + title: 'Organization', + type: 'group', + }, + os: { + description: 'The OS fields contain information about the operating system.', + fields: { + 'os.family': { + dashed_name: 'os-family', + description: 'OS family (such as redhat, debian, freebsd, windows).', + example: 'debian', + flat_name: 'os.family', + ignore_above: 1024, + level: 'extended', + name: 'family', + normalize: [], + short: 'OS family (such as redhat, debian, freebsd, windows).', + type: 'keyword', + }, + 'os.full': { + dashed_name: 'os-full', + description: 'Operating system name, including the version or code name.', + example: 'Mac OS Mojave', + flat_name: 'os.full', + ignore_above: 1024, + level: 'extended', + multi_fields: [{ flat_name: 'os.full.text', name: 'text', type: 'match_only_text' }], + name: 'full', + normalize: [], + short: 'Operating system name, including the version or code name.', + type: 'keyword', + }, + 'os.kernel': { + dashed_name: 'os-kernel', + description: 'Operating system kernel version as a raw string.', + example: '4.4.0-112-generic', + flat_name: 'os.kernel', + ignore_above: 1024, + level: 'extended', + name: 'kernel', + normalize: [], + short: 'Operating system kernel version as a raw string.', + type: 'keyword', + }, + 'os.name': { + dashed_name: 'os-name', + description: 'Operating system name, without the version.', + example: 'Mac OS X', + flat_name: 'os.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [{ flat_name: 'os.name.text', name: 'text', type: 'match_only_text' }], + name: 'name', + normalize: [], + short: 'Operating system name, without the version.', + type: 'keyword', + }, + 'os.platform': { + dashed_name: 'os-platform', + description: 'Operating system platform (such centos, ubuntu, windows).', + example: 'darwin', + flat_name: 'os.platform', + ignore_above: 1024, + level: 'extended', + name: 'platform', + normalize: [], + short: 'Operating system platform (such centos, ubuntu, windows).', + type: 'keyword', + }, + 'os.type': { + dashed_name: 'os-type', + description: + "Use the `os.type` field to categorize the operating system into one of the broad commercial families.\nIf the OS you're dealing with is not listed as an expected value, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition.", + example: 'macos', + expected_values: ['linux', 'macos', 'unix', 'windows', 'ios', 'android'], + flat_name: 'os.type', + ignore_above: 1024, + level: 'extended', + name: 'type', + normalize: [], + short: 'Which commercial OS family (one of: linux, macos, unix, windows, ios or android).', + type: 'keyword', + }, + 'os.version': { + dashed_name: 'os-version', + description: 'Operating system version as a raw string.', + example: '10.14.1', + flat_name: 'os.version', + ignore_above: 1024, + level: 'extended', + name: 'version', + normalize: [], + short: 'Operating system version as a raw string.', + type: 'keyword', + }, + }, + group: 2, + name: 'os', + prefix: 'os.', + reusable: { + expected: [ + { as: 'os', at: 'observer', full: 'observer.os' }, + { as: 'os', at: 'host', full: 'host.os' }, + { as: 'os', at: 'user_agent', full: 'user_agent.os' }, + ], + top_level: false, + }, + short: 'OS fields contain information about the operating system.', + title: 'Operating System', + type: 'group', + }, + package: { + description: + 'These fields contain information about an installed software package. It contains general information about a package, such as name, version or size. It also contains installation details, such as time or location.', + fields: { + 'package.architecture': { + dashed_name: 'package-architecture', + description: 'Package architecture.', + example: 'x86_64', + flat_name: 'package.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + short: 'Package architecture.', + type: 'keyword', + }, + 'package.build_version': { + dashed_name: 'package-build-version', + description: + 'Additional information about the build version of the installed package.\nFor example use the commit SHA of a non-released package.', + example: '36f4f7e89dd61b0988b12ee000b98966867710cd', + flat_name: 'package.build_version', + ignore_above: 1024, + level: 'extended', + name: 'build_version', + normalize: [], + short: 'Build version information', + type: 'keyword', + }, + 'package.checksum': { + dashed_name: 'package-checksum', + description: 'Checksum of the installed package for verification.', + example: '68b329da9893e34099c7d8ad5cb9c940', + flat_name: 'package.checksum', + ignore_above: 1024, + level: 'extended', + name: 'checksum', + normalize: [], + short: 'Checksum of the installed package for verification.', + type: 'keyword', + }, + 'package.description': { + dashed_name: 'package-description', + description: 'Description of the package.', + example: 'Open source programming language to build simple/reliable/efficient software.', + flat_name: 'package.description', + ignore_above: 1024, + level: 'extended', + name: 'description', + normalize: [], + short: 'Description of the package.', + type: 'keyword', + }, + 'package.install_scope': { + dashed_name: 'package-install-scope', + description: 'Indicating how the package was installed, e.g. user-local, global.', + example: 'global', + flat_name: 'package.install_scope', + ignore_above: 1024, + level: 'extended', + name: 'install_scope', + normalize: [], + short: 'Indicating how the package was installed, e.g. user-local, global.', + type: 'keyword', + }, + 'package.installed': { + dashed_name: 'package-installed', + description: 'Time when package was installed.', + flat_name: 'package.installed', + level: 'extended', + name: 'installed', + normalize: [], + short: 'Time when package was installed.', + type: 'date', + }, + 'package.license': { + dashed_name: 'package-license', + description: + 'License under which the package was released.\nUse a short name, e.g. the license identifier from SPDX License List where possible (https://spdx.org/licenses/).', + example: 'Apache License 2.0', + flat_name: 'package.license', + ignore_above: 1024, + level: 'extended', + name: 'license', + normalize: [], + short: 'Package license', + type: 'keyword', + }, + 'package.name': { + dashed_name: 'package-name', + description: 'Package name', + example: 'go', + flat_name: 'package.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'Package name', + type: 'keyword', + }, + 'package.path': { + dashed_name: 'package-path', + description: 'Path where the package is installed.', + example: '/usr/local/Cellar/go/1.12.9/', + flat_name: 'package.path', + ignore_above: 1024, + level: 'extended', + name: 'path', + normalize: [], + short: 'Path where the package is installed.', + type: 'keyword', + }, + 'package.reference': { + dashed_name: 'package-reference', + description: 'Home page or reference URL of the software in this package, if available.', + example: 'https://golang.org', + flat_name: 'package.reference', + ignore_above: 1024, + level: 'extended', + name: 'reference', + normalize: [], + short: 'Package home page or reference URL', + type: 'keyword', + }, + 'package.size': { + dashed_name: 'package-size', + description: 'Package size in bytes.', + example: 62231, + flat_name: 'package.size', + format: 'string', + level: 'extended', + name: 'size', + normalize: [], + short: 'Package size in bytes.', + type: 'long', + }, + 'package.type': { + dashed_name: 'package-type', + description: + 'Type of package.\nThis should contain the package file type, rather than the package manager name. Examples: rpm, dpkg, brew, npm, gem, nupkg, jar.', + example: 'rpm', + flat_name: 'package.type', + ignore_above: 1024, + level: 'extended', + name: 'type', + normalize: [], + short: 'Package type', + type: 'keyword', + }, + 'package.version': { + dashed_name: 'package-version', + description: 'Package version', + example: '1.12.9', + flat_name: 'package.version', + ignore_above: 1024, + level: 'extended', + name: 'version', + normalize: [], + short: 'Package version', + type: 'keyword', + }, + }, + group: 2, + name: 'package', + prefix: 'package.', + short: 'These fields contain information about an installed software package.', + title: 'Package', + type: 'group', + }, + pe: { + description: 'These fields contain Windows Portable Executable (PE) metadata.', + fields: { + 'pe.architecture': { + dashed_name: 'pe-architecture', + description: 'CPU architecture target for the file.', + example: 'x64', + flat_name: 'pe.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + short: 'CPU architecture target for the file.', + type: 'keyword', + }, + 'pe.company': { + dashed_name: 'pe-company', + description: 'Internal company name of the file, provided at compile-time.', + example: 'Microsoft Corporation', + flat_name: 'pe.company', + ignore_above: 1024, + level: 'extended', + name: 'company', + normalize: [], + short: 'Internal company name of the file, provided at compile-time.', + type: 'keyword', + }, + 'pe.description': { + dashed_name: 'pe-description', + description: 'Internal description of the file, provided at compile-time.', + example: 'Paint', + flat_name: 'pe.description', + ignore_above: 1024, + level: 'extended', + name: 'description', + normalize: [], + short: 'Internal description of the file, provided at compile-time.', + type: 'keyword', + }, + 'pe.file_version': { + dashed_name: 'pe-file-version', + description: 'Internal version of the file, provided at compile-time.', + example: '6.3.9600.17415', + flat_name: 'pe.file_version', + ignore_above: 1024, + level: 'extended', + name: 'file_version', + normalize: [], + short: 'Process name.', + type: 'keyword', + }, + 'pe.imphash': { + dashed_name: 'pe-imphash', + description: + 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', + example: '0c6803c4e922103c4dca5963aad36ddf', + flat_name: 'pe.imphash', + ignore_above: 1024, + level: 'extended', + name: 'imphash', + normalize: [], + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'pe.original_file_name': { + dashed_name: 'pe-original-file-name', + description: 'Internal name of the file, provided at compile-time.', + example: 'MSPAINT.EXE', + flat_name: 'pe.original_file_name', + ignore_above: 1024, + level: 'extended', + name: 'original_file_name', + normalize: [], + short: 'Internal name of the file, provided at compile-time.', + type: 'keyword', + }, + 'pe.pehash': { + dashed_name: 'pe-pehash', + description: + 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', + example: '73ff189b63cd6be375a7ff25179a38d347651975', + flat_name: 'pe.pehash', + ignore_above: 1024, + level: 'extended', + name: 'pehash', + normalize: [], + short: 'A hash of the PE header and data from one or more PE sections.', + type: 'keyword', + }, + 'pe.product': { + dashed_name: 'pe-product', + description: 'Internal product name of the file, provided at compile-time.', + example: 'Microsoft® Windows® Operating System', + flat_name: 'pe.product', + ignore_above: 1024, + level: 'extended', + name: 'product', + normalize: [], + short: 'Internal product name of the file, provided at compile-time.', + type: 'keyword', + }, + }, + group: 2, + name: 'pe', + prefix: 'pe.', + reusable: { + expected: [ + { as: 'pe', at: 'file', full: 'file.pe' }, + { as: 'pe', at: 'dll', full: 'dll.pe' }, + { as: 'pe', at: 'process', full: 'process.pe' }, + ], + top_level: false, + }, + short: 'These fields contain Windows Portable Executable (PE) metadata.', + title: 'PE Header', + type: 'group', + }, + process: { + description: + 'These fields contain information about a process.\nThese fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation.', + fields: { + 'process.args': { + dashed_name: 'process-args', + description: + 'Array of process arguments, starting with the absolute path to the executable.\nMay be filtered to protect sensitive information.', + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]', + flat_name: 'process.args', + ignore_above: 1024, + level: 'extended', + name: 'args', + normalize: ['array'], + short: 'Array of process arguments.', + type: 'keyword', + }, + 'process.args_count': { + dashed_name: 'process-args-count', + description: + 'Length of the process.args array.\nThis field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.', + example: 4, + flat_name: 'process.args_count', + level: 'extended', + name: 'args_count', + normalize: [], + short: 'Length of the process.args array.', + type: 'long', + }, + 'process.code_signature.digest_algorithm': { + dashed_name: 'process-code-signature-digest-algorithm', + description: + 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', + example: 'sha256', + flat_name: 'process.code_signature.digest_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'digest_algorithm', + normalize: [], + original_fieldset: 'code_signature', + short: 'Hashing algorithm used to sign the process.', + type: 'keyword', + }, + 'process.code_signature.exists': { + dashed_name: 'process-code-signature-exists', + description: 'Boolean to capture if a signature is present.', + example: 'true', + flat_name: 'process.code_signature.exists', + level: 'core', + name: 'exists', + normalize: [], + original_fieldset: 'code_signature', + short: 'Boolean to capture if a signature is present.', + type: 'boolean', + }, + 'process.code_signature.signing_id': { + dashed_name: 'process-code-signature-signing-id', + description: + 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', + example: 'com.apple.xpc.proxy', + flat_name: 'process.code_signature.signing_id', + ignore_above: 1024, + level: 'extended', + name: 'signing_id', + normalize: [], + original_fieldset: 'code_signature', + short: 'The identifier used to sign the process.', + type: 'keyword', + }, + 'process.code_signature.status': { + dashed_name: 'process-code-signature-status', + description: + 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', + example: 'ERROR_UNTRUSTED_ROOT', + flat_name: 'process.code_signature.status', + ignore_above: 1024, + level: 'extended', + name: 'status', + normalize: [], + original_fieldset: 'code_signature', + short: 'Additional information about the certificate status.', + type: 'keyword', + }, + 'process.code_signature.subject_name': { + dashed_name: 'process-code-signature-subject-name', + description: 'Subject name of the code signer', + example: 'Microsoft Corporation', + flat_name: 'process.code_signature.subject_name', + ignore_above: 1024, + level: 'core', + name: 'subject_name', + normalize: [], + original_fieldset: 'code_signature', + short: 'Subject name of the code signer', + type: 'keyword', + }, + 'process.code_signature.team_id': { + dashed_name: 'process-code-signature-team-id', + description: + 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', + example: 'EQHXZ8M8AV', + flat_name: 'process.code_signature.team_id', + ignore_above: 1024, + level: 'extended', + name: 'team_id', + normalize: [], + original_fieldset: 'code_signature', + short: 'The team identifier used to sign the process.', + type: 'keyword', + }, + 'process.code_signature.timestamp': { + dashed_name: 'process-code-signature-timestamp', + description: 'Date and time when the code signature was generated and signed.', + example: '2021-01-01T12:10:30Z', + flat_name: 'process.code_signature.timestamp', + level: 'extended', + name: 'timestamp', + normalize: [], + original_fieldset: 'code_signature', + short: 'When the signature was generated and signed.', + type: 'date', + }, + 'process.code_signature.trusted': { + dashed_name: 'process-code-signature-trusted', + description: + 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', + example: 'true', + flat_name: 'process.code_signature.trusted', + level: 'extended', + name: 'trusted', + normalize: [], + original_fieldset: 'code_signature', + short: 'Stores the trust status of the certificate chain.', + type: 'boolean', + }, + 'process.code_signature.valid': { + dashed_name: 'process-code-signature-valid', + description: + 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', + example: 'true', + flat_name: 'process.code_signature.valid', + level: 'extended', + name: 'valid', + normalize: [], + original_fieldset: 'code_signature', + short: + 'Boolean to capture if the digital signature is verified against the binary content.', + type: 'boolean', + }, + 'process.command_line': { + dashed_name: 'process-command-line', + description: + 'Full command line that started the process, including the absolute path to the executable, and all arguments.\nSome arguments may be filtered to protect sensitive information.', + example: '/usr/bin/ssh -l user 10.0.0.16', + flat_name: 'process.command_line', + level: 'extended', + multi_fields: [ + { + flat_name: 'process.command_line.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'command_line', + normalize: [], + short: 'Full command line that started the process.', + type: 'wildcard', + }, + 'process.elf.architecture': { + dashed_name: 'process-elf-architecture', + description: 'Machine architecture of the ELF file.', + example: 'x86-64', + flat_name: 'process.elf.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + original_fieldset: 'elf', + short: 'Machine architecture of the ELF file.', + type: 'keyword', + }, + 'process.elf.byte_order': { + dashed_name: 'process-elf-byte-order', + description: 'Byte sequence of ELF file.', + example: 'Little Endian', + flat_name: 'process.elf.byte_order', + ignore_above: 1024, + level: 'extended', + name: 'byte_order', + normalize: [], + original_fieldset: 'elf', + short: 'Byte sequence of ELF file.', + type: 'keyword', + }, + 'process.elf.cpu_type': { + dashed_name: 'process-elf-cpu-type', + description: 'CPU type of the ELF file.', + example: 'Intel', + flat_name: 'process.elf.cpu_type', + ignore_above: 1024, + level: 'extended', + name: 'cpu_type', + normalize: [], + original_fieldset: 'elf', + short: 'CPU type of the ELF file.', + type: 'keyword', + }, + 'process.elf.creation_date': { + dashed_name: 'process-elf-creation-date', + description: + "Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.", + flat_name: 'process.elf.creation_date', + level: 'extended', + name: 'creation_date', + normalize: [], + original_fieldset: 'elf', + short: 'Build or compile date.', + type: 'date', + }, + 'process.elf.exports': { + dashed_name: 'process-elf-exports', + description: 'List of exported element names and types.', + flat_name: 'process.elf.exports', + level: 'extended', + name: 'exports', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of exported element names and types.', + type: 'flattened', + }, + 'process.elf.header.abi_version': { + dashed_name: 'process-elf-header-abi-version', + description: 'Version of the ELF Application Binary Interface (ABI).', + flat_name: 'process.elf.header.abi_version', + ignore_above: 1024, + level: 'extended', + name: 'header.abi_version', + normalize: [], + original_fieldset: 'elf', + short: 'Version of the ELF Application Binary Interface (ABI).', + type: 'keyword', + }, + 'process.elf.header.class': { + dashed_name: 'process-elf-header-class', + description: 'Header class of the ELF file.', + flat_name: 'process.elf.header.class', + ignore_above: 1024, + level: 'extended', + name: 'header.class', + normalize: [], + original_fieldset: 'elf', + short: 'Header class of the ELF file.', + type: 'keyword', + }, + 'process.elf.header.data': { + dashed_name: 'process-elf-header-data', + description: 'Data table of the ELF header.', + flat_name: 'process.elf.header.data', + ignore_above: 1024, + level: 'extended', + name: 'header.data', + normalize: [], + original_fieldset: 'elf', + short: 'Data table of the ELF header.', + type: 'keyword', + }, + 'process.elf.header.entrypoint': { + dashed_name: 'process-elf-header-entrypoint', + description: 'Header entrypoint of the ELF file.', + flat_name: 'process.elf.header.entrypoint', + format: 'string', + level: 'extended', + name: 'header.entrypoint', + normalize: [], + original_fieldset: 'elf', + short: 'Header entrypoint of the ELF file.', + type: 'long', + }, + 'process.elf.header.object_version': { + dashed_name: 'process-elf-header-object-version', + description: '"0x1" for original ELF files.', + flat_name: 'process.elf.header.object_version', + ignore_above: 1024, + level: 'extended', + name: 'header.object_version', + normalize: [], + original_fieldset: 'elf', + short: '"0x1" for original ELF files.', + type: 'keyword', + }, + 'process.elf.header.os_abi': { + dashed_name: 'process-elf-header-os-abi', + description: 'Application Binary Interface (ABI) of the Linux OS.', + flat_name: 'process.elf.header.os_abi', + ignore_above: 1024, + level: 'extended', + name: 'header.os_abi', + normalize: [], + original_fieldset: 'elf', + short: 'Application Binary Interface (ABI) of the Linux OS.', + type: 'keyword', + }, + 'process.elf.header.type': { + dashed_name: 'process-elf-header-type', + description: 'Header type of the ELF file.', + flat_name: 'process.elf.header.type', + ignore_above: 1024, + level: 'extended', + name: 'header.type', + normalize: [], + original_fieldset: 'elf', + short: 'Header type of the ELF file.', + type: 'keyword', + }, + 'process.elf.header.version': { + dashed_name: 'process-elf-header-version', + description: 'Version of the ELF header.', + flat_name: 'process.elf.header.version', + ignore_above: 1024, + level: 'extended', + name: 'header.version', + normalize: [], + original_fieldset: 'elf', + short: 'Version of the ELF header.', + type: 'keyword', + }, + 'process.elf.imports': { + dashed_name: 'process-elf-imports', + description: 'List of imported element names and types.', + flat_name: 'process.elf.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'process.elf.sections': { + dashed_name: 'process-elf-sections', + description: + 'An array containing an object for each section of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.', + flat_name: 'process.elf.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'elf', + short: 'Section information of the ELF file.', + type: 'nested', + }, + 'process.elf.sections.chi2': { + dashed_name: 'process-elf-sections-chi2', + description: 'Chi-square probability distribution of the section.', + flat_name: 'process.elf.sections.chi2', + format: 'number', + level: 'extended', + name: 'sections.chi2', + normalize: [], + original_fieldset: 'elf', + short: 'Chi-square probability distribution of the section.', + type: 'long', + }, + 'process.elf.sections.entropy': { + dashed_name: 'process-elf-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'process.elf.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.elf.sections.flags': { + dashed_name: 'process-elf-sections-flags', + description: 'ELF Section List flags.', + flat_name: 'process.elf.sections.flags', + ignore_above: 1024, + level: 'extended', + name: 'sections.flags', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List flags.', + type: 'keyword', + }, + 'process.elf.sections.name': { + dashed_name: 'process-elf-sections-name', + description: 'ELF Section List name.', + flat_name: 'process.elf.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List name.', + type: 'keyword', + }, + 'process.elf.sections.physical_offset': { + dashed_name: 'process-elf-sections-physical-offset', + description: 'ELF Section List offset.', + flat_name: 'process.elf.sections.physical_offset', + ignore_above: 1024, + level: 'extended', + name: 'sections.physical_offset', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List offset.', + type: 'keyword', + }, + 'process.elf.sections.physical_size': { + dashed_name: 'process-elf-sections-physical-size', + description: 'ELF Section List physical size.', + flat_name: 'process.elf.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List physical size.', + type: 'long', + }, + 'process.elf.sections.type': { + dashed_name: 'process-elf-sections-type', + description: 'ELF Section List type.', + flat_name: 'process.elf.sections.type', + ignore_above: 1024, + level: 'extended', + name: 'sections.type', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List type.', + type: 'keyword', + }, + 'process.elf.sections.virtual_address': { + dashed_name: 'process-elf-sections-virtual-address', + description: 'ELF Section List virtual address.', + flat_name: 'process.elf.sections.virtual_address', + format: 'string', + level: 'extended', + name: 'sections.virtual_address', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List virtual address.', + type: 'long', + }, + 'process.elf.sections.virtual_size': { + dashed_name: 'process-elf-sections-virtual-size', + description: 'ELF Section List virtual size.', + flat_name: 'process.elf.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List virtual size.', + type: 'long', + }, + 'process.elf.segments': { + dashed_name: 'process-elf-segments', + description: + 'An array containing an object for each segment of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.', + flat_name: 'process.elf.segments', + level: 'extended', + name: 'segments', + normalize: ['array'], + original_fieldset: 'elf', + short: 'ELF object segment list.', + type: 'nested', + }, + 'process.elf.segments.sections': { + dashed_name: 'process-elf-segments-sections', + description: 'ELF object segment sections.', + flat_name: 'process.elf.segments.sections', + ignore_above: 1024, + level: 'extended', + name: 'segments.sections', + normalize: [], + original_fieldset: 'elf', + short: 'ELF object segment sections.', + type: 'keyword', + }, + 'process.elf.segments.type': { + dashed_name: 'process-elf-segments-type', + description: 'ELF object segment type.', + flat_name: 'process.elf.segments.type', + ignore_above: 1024, + level: 'extended', + name: 'segments.type', + normalize: [], + original_fieldset: 'elf', + short: 'ELF object segment type.', + type: 'keyword', + }, + 'process.elf.shared_libraries': { + dashed_name: 'process-elf-shared-libraries', + description: 'List of shared libraries used by this ELF object.', + flat_name: 'process.elf.shared_libraries', + ignore_above: 1024, + level: 'extended', + name: 'shared_libraries', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of shared libraries used by this ELF object.', + type: 'keyword', + }, + 'process.elf.telfhash': { + dashed_name: 'process-elf-telfhash', + description: 'telfhash symbol hash for ELF file.', + flat_name: 'process.elf.telfhash', + ignore_above: 1024, + level: 'extended', + name: 'telfhash', + normalize: [], + original_fieldset: 'elf', + short: 'telfhash hash for ELF file.', + type: 'keyword', + }, + 'process.end': { + dashed_name: 'process-end', + description: 'The time the process ended.', + example: '2016-05-23T08:05:34.853Z', + flat_name: 'process.end', + level: 'extended', + name: 'end', + normalize: [], + short: 'The time the process ended.', + type: 'date', + }, + 'process.entity_id': { + dashed_name: 'process-entity-id', + description: + 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', + example: 'c2c455d9f99375d', + flat_name: 'process.entity_id', + ignore_above: 1024, + level: 'extended', + name: 'entity_id', + normalize: [], + short: 'Unique identifier for the process.', + type: 'keyword', + }, + 'process.entry_leader.args': { + dashed_name: 'process-entry-leader-args', + description: + 'Array of process arguments, starting with the absolute path to the executable.\nMay be filtered to protect sensitive information.', + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]', + flat_name: 'process.entry_leader.args', + ignore_above: 1024, + level: 'extended', + name: 'args', + normalize: ['array'], + original_fieldset: 'process', + short: 'Array of process arguments.', + type: 'keyword', + }, + 'process.entry_leader.args_count': { + dashed_name: 'process-entry-leader-args-count', + description: + 'Length of the process.args array.\nThis field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.', + example: 4, + flat_name: 'process.entry_leader.args_count', + level: 'extended', + name: 'args_count', + normalize: [], + original_fieldset: 'process', + short: 'Length of the process.args array.', + type: 'long', + }, + 'process.entry_leader.attested_groups.name': { + dashed_name: 'process-entry-leader-attested-groups-name', + description: 'Name of the group.', + flat_name: 'process.entry_leader.attested_groups.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.entry_leader.attested_user.id': { + dashed_name: 'process-entry-leader-attested-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.entry_leader.attested_user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.entry_leader.attested_user.name': { + dashed_name: 'process-entry-leader-attested-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.entry_leader.attested_user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.entry_leader.attested_user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.entry_leader.command_line': { + dashed_name: 'process-entry-leader-command-line', + description: + 'Full command line that started the process, including the absolute path to the executable, and all arguments.\nSome arguments may be filtered to protect sensitive information.', + example: '/usr/bin/ssh -l user 10.0.0.16', + flat_name: 'process.entry_leader.command_line', + level: 'extended', + multi_fields: [ + { + flat_name: 'process.entry_leader.command_line.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'command_line', + normalize: [], + original_fieldset: 'process', + short: 'Full command line that started the process.', + type: 'wildcard', + }, + 'process.entry_leader.entity_id': { + dashed_name: 'process-entry-leader-entity-id', + description: + 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', + example: 'c2c455d9f99375d', + flat_name: 'process.entry_leader.entity_id', + ignore_above: 1024, + level: 'extended', + name: 'entity_id', + normalize: [], + original_fieldset: 'process', + short: 'Unique identifier for the process.', + type: 'keyword', + }, + 'process.entry_leader.entry_meta.source.ip': { + dashed_name: 'process-entry-leader-entry-meta-source-ip', + description: 'IP address of the source (IPv4 or IPv6).', + flat_name: 'process.entry_leader.entry_meta.source.ip', + level: 'core', + name: 'ip', + normalize: [], + original_fieldset: 'source', + short: 'IP address of the source.', + type: 'ip', + }, + 'process.entry_leader.entry_meta.type': { + dashed_name: 'process-entry-leader-entry-meta-type', + description: + 'The entry type for the entry session leader. Values include: init(e.g systemd), sshd, ssm, kubelet, teleport, terminal, console\nNote: This field is only set on process.session_leader.', + flat_name: 'process.entry_leader.entry_meta.type', + ignore_above: 1024, + level: 'extended', + name: 'entry_meta.type', + normalize: [], + original_fieldset: 'process', + short: 'The entry type for the entry session leader.', + type: 'keyword', + }, + 'process.entry_leader.executable': { + dashed_name: 'process-entry-leader-executable', + description: 'Absolute path to the process executable.', + example: '/usr/bin/ssh', + flat_name: 'process.entry_leader.executable', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.entry_leader.executable.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'executable', + normalize: [], + original_fieldset: 'process', + short: 'Absolute path to the process executable.', + type: 'keyword', + }, + 'process.entry_leader.group.id': { + dashed_name: 'process-entry-leader-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.entry_leader.group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.entry_leader.group.name': { + dashed_name: 'process-entry-leader-group-name', + description: 'Name of the group.', + flat_name: 'process.entry_leader.group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.entry_leader.interactive': { + dashed_name: 'process-entry-leader-interactive', + description: + 'Whether the process is connected to an interactive shell.\nProcess interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.\nNote: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.', + example: true, + flat_name: 'process.entry_leader.interactive', + level: 'extended', + name: 'interactive', + normalize: [], + original_fieldset: 'process', + short: 'Whether the process is connected to an interactive shell.', + type: 'boolean', + }, + 'process.entry_leader.name': { + dashed_name: 'process-entry-leader-name', + description: 'Process name.\nSometimes called program name or similar.', + example: 'ssh', + flat_name: 'process.entry_leader.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.entry_leader.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'process', + short: 'Process name.', + type: 'keyword', + }, + 'process.entry_leader.parent.entity_id': { + dashed_name: 'process-entry-leader-parent-entity-id', + description: + 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', + example: 'c2c455d9f99375d', + flat_name: 'process.entry_leader.parent.entity_id', + ignore_above: 1024, + level: 'extended', + name: 'entity_id', + normalize: [], + original_fieldset: 'process', + short: 'Unique identifier for the process.', + type: 'keyword', + }, + 'process.entry_leader.parent.pid': { + dashed_name: 'process-entry-leader-parent-pid', + description: 'Process id.', + example: 4242, + flat_name: 'process.entry_leader.parent.pid', + format: 'string', + level: 'core', + name: 'pid', + normalize: [], + original_fieldset: 'process', + short: 'Process id.', + type: 'long', + }, + 'process.entry_leader.parent.session_leader.entity_id': { + dashed_name: 'process-entry-leader-parent-session-leader-entity-id', + description: + 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', + example: 'c2c455d9f99375d', + flat_name: 'process.entry_leader.parent.session_leader.entity_id', + ignore_above: 1024, + level: 'extended', + name: 'entity_id', + normalize: [], + original_fieldset: 'process', + short: 'Unique identifier for the process.', + type: 'keyword', + }, + 'process.entry_leader.parent.session_leader.pid': { + dashed_name: 'process-entry-leader-parent-session-leader-pid', + description: 'Process id.', + example: 4242, + flat_name: 'process.entry_leader.parent.session_leader.pid', + format: 'string', + level: 'core', + name: 'pid', + normalize: [], + original_fieldset: 'process', + short: 'Process id.', + type: 'long', + }, + 'process.entry_leader.parent.session_leader.start': { + dashed_name: 'process-entry-leader-parent-session-leader-start', + description: 'The time the process started.', + example: '2016-05-23T08:05:34.853Z', + flat_name: 'process.entry_leader.parent.session_leader.start', + level: 'extended', + name: 'start', + normalize: [], + original_fieldset: 'process', + short: 'The time the process started.', + type: 'date', + }, + 'process.entry_leader.parent.start': { + dashed_name: 'process-entry-leader-parent-start', + description: 'The time the process started.', + example: '2016-05-23T08:05:34.853Z', + flat_name: 'process.entry_leader.parent.start', + level: 'extended', + name: 'start', + normalize: [], + original_fieldset: 'process', + short: 'The time the process started.', + type: 'date', + }, + 'process.entry_leader.pid': { + dashed_name: 'process-entry-leader-pid', + description: 'Process id.', + example: 4242, + flat_name: 'process.entry_leader.pid', + format: 'string', + level: 'core', + name: 'pid', + normalize: [], + original_fieldset: 'process', + short: 'Process id.', + type: 'long', + }, + 'process.entry_leader.real_group.id': { + dashed_name: 'process-entry-leader-real-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.entry_leader.real_group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.entry_leader.real_group.name': { + dashed_name: 'process-entry-leader-real-group-name', + description: 'Name of the group.', + flat_name: 'process.entry_leader.real_group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.entry_leader.real_user.id': { + dashed_name: 'process-entry-leader-real-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.entry_leader.real_user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.entry_leader.real_user.name': { + dashed_name: 'process-entry-leader-real-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.entry_leader.real_user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.entry_leader.real_user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.entry_leader.same_as_process': { + dashed_name: 'process-entry-leader-same-as-process', + description: + "This boolean is used to identify if a leader process is the same as the top level process.\nFor example, if `process.group_leader.same_as_process = true`, it means the process event in question is the leader of its process group. Details under `process.*` like `pid` would be the same under `process.group_leader.*` The same applies for both `process.session_leader` and `process.entry_leader`.\nThis field exists to the benefit of EQL and other rule engines since it's not possible to compare equality between two fields in a single document. e.g `process.entity_id` = `process.group_leader.entity_id` (top level process is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` (top level process is the entry session leader)\nInstead these rules could be written like: `process.group_leader.same_as_process: true` OR `process.entry_leader.same_as_process: true`\nNote: This field is only set on `process.entry_leader`, `process.session_leader` and `process.group_leader`.", + example: true, + flat_name: 'process.entry_leader.same_as_process', + level: 'extended', + name: 'same_as_process', + normalize: [], + original_fieldset: 'process', + short: + 'This boolean is used to identify if a leader process is the same as the top level process.', + type: 'boolean', + }, + 'process.entry_leader.saved_group.id': { + dashed_name: 'process-entry-leader-saved-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.entry_leader.saved_group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.entry_leader.saved_group.name': { + dashed_name: 'process-entry-leader-saved-group-name', + description: 'Name of the group.', + flat_name: 'process.entry_leader.saved_group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.entry_leader.saved_user.id': { + dashed_name: 'process-entry-leader-saved-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.entry_leader.saved_user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.entry_leader.saved_user.name': { + dashed_name: 'process-entry-leader-saved-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.entry_leader.saved_user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.entry_leader.saved_user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.entry_leader.start': { + dashed_name: 'process-entry-leader-start', + description: 'The time the process started.', + example: '2016-05-23T08:05:34.853Z', + flat_name: 'process.entry_leader.start', + level: 'extended', + name: 'start', + normalize: [], + original_fieldset: 'process', + short: 'The time the process started.', + type: 'date', + }, + 'process.entry_leader.supplemental_groups.id': { + dashed_name: 'process-entry-leader-supplemental-groups-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.entry_leader.supplemental_groups.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.entry_leader.supplemental_groups.name': { + dashed_name: 'process-entry-leader-supplemental-groups-name', + description: 'Name of the group.', + flat_name: 'process.entry_leader.supplemental_groups.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.entry_leader.tty': { + dashed_name: 'process-entry-leader-tty', + description: + 'Information about the controlling TTY device. If set, the process belongs to an interactive session.', + flat_name: 'process.entry_leader.tty', + level: 'extended', + name: 'tty', + normalize: [], + original_fieldset: 'process', + short: 'Information about the controlling TTY device.', + type: 'object', + }, + 'process.entry_leader.tty.char_device.major': { + dashed_name: 'process-entry-leader-tty-char-device-major', + description: + 'The major number identifies the driver associated with the device. The character device\'s major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.', + example: 4, + flat_name: 'process.entry_leader.tty.char_device.major', + level: 'extended', + name: 'tty.char_device.major', + normalize: [], + original_fieldset: 'process', + short: "The TTY character device's major number.", + type: 'long', + }, + 'process.entry_leader.tty.char_device.minor': { + dashed_name: 'process-entry-leader-tty-char-device-minor', + description: + 'The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.', + example: 1, + flat_name: 'process.entry_leader.tty.char_device.minor', + level: 'extended', + name: 'tty.char_device.minor', + normalize: [], + original_fieldset: 'process', + short: "The TTY character device's minor number.", + type: 'long', + }, + 'process.entry_leader.user.id': { + dashed_name: 'process-entry-leader-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.entry_leader.user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.entry_leader.user.name': { + dashed_name: 'process-entry-leader-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.entry_leader.user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.entry_leader.user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.entry_leader.working_directory': { + dashed_name: 'process-entry-leader-working-directory', + description: 'The working directory of the process.', + example: '/home/alice', + flat_name: 'process.entry_leader.working_directory', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.entry_leader.working_directory.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'working_directory', + normalize: [], + original_fieldset: 'process', + short: 'The working directory of the process.', + type: 'keyword', + }, + 'process.env_vars': { + beta: 'This field is beta and subject to change.', + dashed_name: 'process-env-vars', + description: + 'Array of environment variable bindings. Captured from a snapshot of the environment at the time of execution.\nMay be filtered to protect sensitive information.', + example: '["PATH=/usr/local/bin:/usr/bin", "USER=ubuntu"]', + flat_name: 'process.env_vars', + ignore_above: 1024, + level: 'extended', + name: 'env_vars', + normalize: ['array'], + short: 'Array of environment variable bindings.', + type: 'keyword', + }, + 'process.executable': { + dashed_name: 'process-executable', + description: 'Absolute path to the process executable.', + example: '/usr/bin/ssh', + flat_name: 'process.executable', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.executable.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'executable', + normalize: [], + short: 'Absolute path to the process executable.', + type: 'keyword', + }, + 'process.exit_code': { + dashed_name: 'process-exit-code', + description: + 'The exit code of the process, if this is a termination event.\nThe field should be absent if there is no exit code for the event (e.g. process start).', + example: 137, + flat_name: 'process.exit_code', + level: 'extended', + name: 'exit_code', + normalize: [], + short: 'The exit code of the process.', + type: 'long', + }, + 'process.group_leader.args': { + dashed_name: 'process-group-leader-args', + description: + 'Array of process arguments, starting with the absolute path to the executable.\nMay be filtered to protect sensitive information.', + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]', + flat_name: 'process.group_leader.args', + ignore_above: 1024, + level: 'extended', + name: 'args', + normalize: ['array'], + original_fieldset: 'process', + short: 'Array of process arguments.', + type: 'keyword', + }, + 'process.group_leader.args_count': { + dashed_name: 'process-group-leader-args-count', + description: + 'Length of the process.args array.\nThis field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.', + example: 4, + flat_name: 'process.group_leader.args_count', + level: 'extended', + name: 'args_count', + normalize: [], + original_fieldset: 'process', + short: 'Length of the process.args array.', + type: 'long', + }, + 'process.group_leader.command_line': { + dashed_name: 'process-group-leader-command-line', + description: + 'Full command line that started the process, including the absolute path to the executable, and all arguments.\nSome arguments may be filtered to protect sensitive information.', + example: '/usr/bin/ssh -l user 10.0.0.16', + flat_name: 'process.group_leader.command_line', + level: 'extended', + multi_fields: [ + { + flat_name: 'process.group_leader.command_line.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'command_line', + normalize: [], + original_fieldset: 'process', + short: 'Full command line that started the process.', + type: 'wildcard', + }, + 'process.group_leader.entity_id': { + dashed_name: 'process-group-leader-entity-id', + description: + 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', + example: 'c2c455d9f99375d', + flat_name: 'process.group_leader.entity_id', + ignore_above: 1024, + level: 'extended', + name: 'entity_id', + normalize: [], + original_fieldset: 'process', + short: 'Unique identifier for the process.', + type: 'keyword', + }, + 'process.group_leader.executable': { + dashed_name: 'process-group-leader-executable', + description: 'Absolute path to the process executable.', + example: '/usr/bin/ssh', + flat_name: 'process.group_leader.executable', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.group_leader.executable.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'executable', + normalize: [], + original_fieldset: 'process', + short: 'Absolute path to the process executable.', + type: 'keyword', + }, + 'process.group_leader.group.id': { + dashed_name: 'process-group-leader-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.group_leader.group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.group_leader.group.name': { + dashed_name: 'process-group-leader-group-name', + description: 'Name of the group.', + flat_name: 'process.group_leader.group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.group_leader.interactive': { + dashed_name: 'process-group-leader-interactive', + description: + 'Whether the process is connected to an interactive shell.\nProcess interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.\nNote: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.', + example: true, + flat_name: 'process.group_leader.interactive', + level: 'extended', + name: 'interactive', + normalize: [], + original_fieldset: 'process', + short: 'Whether the process is connected to an interactive shell.', + type: 'boolean', + }, + 'process.group_leader.name': { + dashed_name: 'process-group-leader-name', + description: 'Process name.\nSometimes called program name or similar.', + example: 'ssh', + flat_name: 'process.group_leader.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.group_leader.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'process', + short: 'Process name.', + type: 'keyword', + }, + 'process.group_leader.pid': { + dashed_name: 'process-group-leader-pid', + description: 'Process id.', + example: 4242, + flat_name: 'process.group_leader.pid', + format: 'string', + level: 'core', + name: 'pid', + normalize: [], + original_fieldset: 'process', + short: 'Process id.', + type: 'long', + }, + 'process.group_leader.real_group.id': { + dashed_name: 'process-group-leader-real-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.group_leader.real_group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.group_leader.real_group.name': { + dashed_name: 'process-group-leader-real-group-name', + description: 'Name of the group.', + flat_name: 'process.group_leader.real_group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.group_leader.real_user.id': { + dashed_name: 'process-group-leader-real-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.group_leader.real_user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.group_leader.real_user.name': { + dashed_name: 'process-group-leader-real-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.group_leader.real_user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.group_leader.real_user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.group_leader.same_as_process': { + dashed_name: 'process-group-leader-same-as-process', + description: + "This boolean is used to identify if a leader process is the same as the top level process.\nFor example, if `process.group_leader.same_as_process = true`, it means the process event in question is the leader of its process group. Details under `process.*` like `pid` would be the same under `process.group_leader.*` The same applies for both `process.session_leader` and `process.entry_leader`.\nThis field exists to the benefit of EQL and other rule engines since it's not possible to compare equality between two fields in a single document. e.g `process.entity_id` = `process.group_leader.entity_id` (top level process is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` (top level process is the entry session leader)\nInstead these rules could be written like: `process.group_leader.same_as_process: true` OR `process.entry_leader.same_as_process: true`\nNote: This field is only set on `process.entry_leader`, `process.session_leader` and `process.group_leader`.", + example: true, + flat_name: 'process.group_leader.same_as_process', + level: 'extended', + name: 'same_as_process', + normalize: [], + original_fieldset: 'process', + short: + 'This boolean is used to identify if a leader process is the same as the top level process.', + type: 'boolean', + }, + 'process.group_leader.saved_group.id': { + dashed_name: 'process-group-leader-saved-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.group_leader.saved_group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.group_leader.saved_group.name': { + dashed_name: 'process-group-leader-saved-group-name', + description: 'Name of the group.', + flat_name: 'process.group_leader.saved_group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.group_leader.saved_user.id': { + dashed_name: 'process-group-leader-saved-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.group_leader.saved_user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.group_leader.saved_user.name': { + dashed_name: 'process-group-leader-saved-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.group_leader.saved_user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.group_leader.saved_user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.group_leader.start': { + dashed_name: 'process-group-leader-start', + description: 'The time the process started.', + example: '2016-05-23T08:05:34.853Z', + flat_name: 'process.group_leader.start', + level: 'extended', + name: 'start', + normalize: [], + original_fieldset: 'process', + short: 'The time the process started.', + type: 'date', + }, + 'process.group_leader.supplemental_groups.id': { + dashed_name: 'process-group-leader-supplemental-groups-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.group_leader.supplemental_groups.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.group_leader.supplemental_groups.name': { + dashed_name: 'process-group-leader-supplemental-groups-name', + description: 'Name of the group.', + flat_name: 'process.group_leader.supplemental_groups.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.group_leader.tty': { + dashed_name: 'process-group-leader-tty', + description: + 'Information about the controlling TTY device. If set, the process belongs to an interactive session.', + flat_name: 'process.group_leader.tty', + level: 'extended', + name: 'tty', + normalize: [], + original_fieldset: 'process', + short: 'Information about the controlling TTY device.', + type: 'object', + }, + 'process.group_leader.tty.char_device.major': { + dashed_name: 'process-group-leader-tty-char-device-major', + description: + 'The major number identifies the driver associated with the device. The character device\'s major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.', + example: 4, + flat_name: 'process.group_leader.tty.char_device.major', + level: 'extended', + name: 'tty.char_device.major', + normalize: [], + original_fieldset: 'process', + short: "The TTY character device's major number.", + type: 'long', + }, + 'process.group_leader.tty.char_device.minor': { + dashed_name: 'process-group-leader-tty-char-device-minor', + description: + 'The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.', + example: 1, + flat_name: 'process.group_leader.tty.char_device.minor', + level: 'extended', + name: 'tty.char_device.minor', + normalize: [], + original_fieldset: 'process', + short: "The TTY character device's minor number.", + type: 'long', + }, + 'process.group_leader.user.id': { + dashed_name: 'process-group-leader-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.group_leader.user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.group_leader.user.name': { + dashed_name: 'process-group-leader-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.group_leader.user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.group_leader.user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.group_leader.working_directory': { + dashed_name: 'process-group-leader-working-directory', + description: 'The working directory of the process.', + example: '/home/alice', + flat_name: 'process.group_leader.working_directory', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.group_leader.working_directory.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'working_directory', + normalize: [], + original_fieldset: 'process', + short: 'The working directory of the process.', + type: 'keyword', + }, + 'process.hash.md5': { + dashed_name: 'process-hash-md5', + description: 'MD5 hash.', + flat_name: 'process.hash.md5', + ignore_above: 1024, + level: 'extended', + name: 'md5', + normalize: [], + original_fieldset: 'hash', + short: 'MD5 hash.', + type: 'keyword', + }, + 'process.hash.sha1': { + dashed_name: 'process-hash-sha1', + description: 'SHA1 hash.', + flat_name: 'process.hash.sha1', + ignore_above: 1024, + level: 'extended', + name: 'sha1', + normalize: [], + original_fieldset: 'hash', + short: 'SHA1 hash.', + type: 'keyword', + }, + 'process.hash.sha256': { + dashed_name: 'process-hash-sha256', + description: 'SHA256 hash.', + flat_name: 'process.hash.sha256', + ignore_above: 1024, + level: 'extended', + name: 'sha256', + normalize: [], + original_fieldset: 'hash', + short: 'SHA256 hash.', + type: 'keyword', + }, + 'process.hash.sha384': { + dashed_name: 'process-hash-sha384', + description: 'SHA384 hash.', + flat_name: 'process.hash.sha384', + ignore_above: 1024, + level: 'extended', + name: 'sha384', + normalize: [], + original_fieldset: 'hash', + short: 'SHA384 hash.', + type: 'keyword', + }, + 'process.hash.sha512': { + dashed_name: 'process-hash-sha512', + description: 'SHA512 hash.', + flat_name: 'process.hash.sha512', + ignore_above: 1024, + level: 'extended', + name: 'sha512', + normalize: [], + original_fieldset: 'hash', + short: 'SHA512 hash.', + type: 'keyword', + }, + 'process.hash.ssdeep': { + dashed_name: 'process-hash-ssdeep', + description: 'SSDEEP hash.', + flat_name: 'process.hash.ssdeep', + ignore_above: 1024, + level: 'extended', + name: 'ssdeep', + normalize: [], + original_fieldset: 'hash', + short: 'SSDEEP hash.', + type: 'keyword', + }, + 'process.hash.tlsh': { + dashed_name: 'process-hash-tlsh', + description: 'TLSH hash.', + flat_name: 'process.hash.tlsh', + ignore_above: 1024, + level: 'extended', + name: 'tlsh', + normalize: [], + original_fieldset: 'hash', + short: 'TLSH hash.', + type: 'keyword', + }, + 'process.interactive': { + dashed_name: 'process-interactive', + description: + 'Whether the process is connected to an interactive shell.\nProcess interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.\nNote: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.', + example: true, + flat_name: 'process.interactive', + level: 'extended', + name: 'interactive', + normalize: [], + short: 'Whether the process is connected to an interactive shell.', + type: 'boolean', + }, + 'process.io': { + beta: 'This field is beta and subject to change.', + dashed_name: 'process-io', + description: + 'A chunk of input or output (IO) from a single process.\nThis field only appears on the top level process object, which is the process that wrote the output or read the input.', + flat_name: 'process.io', + level: 'extended', + name: 'io', + normalize: [], + short: 'A chunk of input or output (IO) from a single process.', + type: 'object', + }, + 'process.io.bytes_skipped': { + beta: 'This field is beta and subject to change.', + dashed_name: 'process-io-bytes-skipped', + description: + 'An array of byte offsets and lengths denoting where IO data has been skipped.', + flat_name: 'process.io.bytes_skipped', + level: 'extended', + name: 'io.bytes_skipped', + normalize: ['array'], + short: 'An array of byte offsets and lengths denoting where IO data has been skipped.', + type: 'object', + }, + 'process.io.bytes_skipped.length': { + beta: 'This field is beta and subject to change.', + dashed_name: 'process-io-bytes-skipped-length', + description: 'The length of bytes skipped.', + flat_name: 'process.io.bytes_skipped.length', + level: 'extended', + name: 'io.bytes_skipped.length', + normalize: [], + short: 'The length of bytes skipped.', + type: 'long', + }, + 'process.io.bytes_skipped.offset': { + beta: 'This field is beta and subject to change.', + dashed_name: 'process-io-bytes-skipped-offset', + description: + "The byte offset into this event's io.text (or io.bytes in the future) where length bytes were skipped.", + flat_name: 'process.io.bytes_skipped.offset', + level: 'extended', + name: 'io.bytes_skipped.offset', + normalize: [], + short: + "The byte offset into this event's io.text (or io.bytes in the future) where length bytes were skipped.", + type: 'long', + }, + 'process.io.max_bytes_per_process_exceeded': { + beta: 'This field is beta and subject to change.', + dashed_name: 'process-io-max-bytes-per-process-exceeded', + description: + 'If true, the process producing the output has exceeded the max_kilobytes_per_process configuration setting.', + flat_name: 'process.io.max_bytes_per_process_exceeded', + level: 'extended', + name: 'io.max_bytes_per_process_exceeded', + normalize: [], + short: + 'If true, the process producing the output has exceeded the max_kilobytes_per_process configuration setting.', + type: 'boolean', + }, + 'process.io.text': { + beta: 'This field is beta and subject to change.', + dashed_name: 'process-io-text', + description: + 'A chunk of output or input sanitized to UTF-8.\nBest efforts are made to ensure complete lines are captured in these events. Assumptions should NOT be made that multiple lines will appear in the same event. TTY output may contain terminal control codes such as for cursor movement, so some string queries may not match due to terminal codes inserted between characters of a word.', + flat_name: 'process.io.text', + level: 'extended', + name: 'io.text', + normalize: [], + short: 'A chunk of output or input sanitized to UTF-8.', + type: 'wildcard', + }, + 'process.io.total_bytes_captured': { + beta: 'This field is beta and subject to change.', + dashed_name: 'process-io-total-bytes-captured', + description: 'The total number of bytes captured in this event.', + flat_name: 'process.io.total_bytes_captured', + level: 'extended', + name: 'io.total_bytes_captured', + normalize: [], + short: 'The total number of bytes captured in this event.', + type: 'long', + }, + 'process.io.total_bytes_skipped': { + beta: 'This field is beta and subject to change.', + dashed_name: 'process-io-total-bytes-skipped', + description: + 'The total number of bytes that were not captured due to implementation restrictions such as buffer size limits. Implementors should strive to ensure this value is always zero', + flat_name: 'process.io.total_bytes_skipped', + level: 'extended', + name: 'io.total_bytes_skipped', + normalize: [], + short: + 'The total number of bytes that were not captured due to implementation restrictions such as buffer size limits.', + type: 'long', + }, + 'process.io.type': { + beta: 'This field is beta and subject to change.', + dashed_name: 'process-io-type', + description: + "The type of object on which the IO action (read or write) was taken.\nCurrently only 'tty' is supported. Other types may be added in the future for 'file' and 'socket' support.", + flat_name: 'process.io.type', + ignore_above: 1024, + level: 'extended', + name: 'io.type', + normalize: [], + short: 'The type of object on which the IO action (read or write) was taken.', + type: 'keyword', + }, + 'process.name': { + dashed_name: 'process-name', + description: 'Process name.\nSometimes called program name or similar.', + example: 'ssh', + flat_name: 'process.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + short: 'Process name.', + type: 'keyword', + }, + 'process.parent.args': { + dashed_name: 'process-parent-args', + description: + 'Array of process arguments, starting with the absolute path to the executable.\nMay be filtered to protect sensitive information.', + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]', + flat_name: 'process.parent.args', + ignore_above: 1024, + level: 'extended', + name: 'args', + normalize: ['array'], + original_fieldset: 'process', + short: 'Array of process arguments.', + type: 'keyword', + }, + 'process.parent.args_count': { + dashed_name: 'process-parent-args-count', + description: + 'Length of the process.args array.\nThis field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.', + example: 4, + flat_name: 'process.parent.args_count', + level: 'extended', + name: 'args_count', + normalize: [], + original_fieldset: 'process', + short: 'Length of the process.args array.', + type: 'long', + }, + 'process.parent.code_signature.digest_algorithm': { + dashed_name: 'process-parent-code-signature-digest-algorithm', + description: + 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', + example: 'sha256', + flat_name: 'process.parent.code_signature.digest_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'digest_algorithm', + normalize: [], + original_fieldset: 'code_signature', + short: 'Hashing algorithm used to sign the process.', + type: 'keyword', + }, + 'process.parent.code_signature.exists': { + dashed_name: 'process-parent-code-signature-exists', + description: 'Boolean to capture if a signature is present.', + example: 'true', + flat_name: 'process.parent.code_signature.exists', + level: 'core', + name: 'exists', + normalize: [], + original_fieldset: 'code_signature', + short: 'Boolean to capture if a signature is present.', + type: 'boolean', + }, + 'process.parent.code_signature.signing_id': { + dashed_name: 'process-parent-code-signature-signing-id', + description: + 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', + example: 'com.apple.xpc.proxy', + flat_name: 'process.parent.code_signature.signing_id', + ignore_above: 1024, + level: 'extended', + name: 'signing_id', + normalize: [], + original_fieldset: 'code_signature', + short: 'The identifier used to sign the process.', + type: 'keyword', + }, + 'process.parent.code_signature.status': { + dashed_name: 'process-parent-code-signature-status', + description: + 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', + example: 'ERROR_UNTRUSTED_ROOT', + flat_name: 'process.parent.code_signature.status', + ignore_above: 1024, + level: 'extended', + name: 'status', + normalize: [], + original_fieldset: 'code_signature', + short: 'Additional information about the certificate status.', + type: 'keyword', + }, + 'process.parent.code_signature.subject_name': { + dashed_name: 'process-parent-code-signature-subject-name', + description: 'Subject name of the code signer', + example: 'Microsoft Corporation', + flat_name: 'process.parent.code_signature.subject_name', + ignore_above: 1024, + level: 'core', + name: 'subject_name', + normalize: [], + original_fieldset: 'code_signature', + short: 'Subject name of the code signer', + type: 'keyword', + }, + 'process.parent.code_signature.team_id': { + dashed_name: 'process-parent-code-signature-team-id', + description: + 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', + example: 'EQHXZ8M8AV', + flat_name: 'process.parent.code_signature.team_id', + ignore_above: 1024, + level: 'extended', + name: 'team_id', + normalize: [], + original_fieldset: 'code_signature', + short: 'The team identifier used to sign the process.', + type: 'keyword', + }, + 'process.parent.code_signature.timestamp': { + dashed_name: 'process-parent-code-signature-timestamp', + description: 'Date and time when the code signature was generated and signed.', + example: '2021-01-01T12:10:30Z', + flat_name: 'process.parent.code_signature.timestamp', + level: 'extended', + name: 'timestamp', + normalize: [], + original_fieldset: 'code_signature', + short: 'When the signature was generated and signed.', + type: 'date', + }, + 'process.parent.code_signature.trusted': { + dashed_name: 'process-parent-code-signature-trusted', + description: + 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', + example: 'true', + flat_name: 'process.parent.code_signature.trusted', + level: 'extended', + name: 'trusted', + normalize: [], + original_fieldset: 'code_signature', + short: 'Stores the trust status of the certificate chain.', + type: 'boolean', + }, + 'process.parent.code_signature.valid': { + dashed_name: 'process-parent-code-signature-valid', + description: + 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', + example: 'true', + flat_name: 'process.parent.code_signature.valid', + level: 'extended', + name: 'valid', + normalize: [], + original_fieldset: 'code_signature', + short: + 'Boolean to capture if the digital signature is verified against the binary content.', + type: 'boolean', + }, + 'process.parent.command_line': { + dashed_name: 'process-parent-command-line', + description: + 'Full command line that started the process, including the absolute path to the executable, and all arguments.\nSome arguments may be filtered to protect sensitive information.', + example: '/usr/bin/ssh -l user 10.0.0.16', + flat_name: 'process.parent.command_line', + level: 'extended', + multi_fields: [ + { + flat_name: 'process.parent.command_line.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'command_line', + normalize: [], + original_fieldset: 'process', + short: 'Full command line that started the process.', + type: 'wildcard', + }, + 'process.parent.elf.architecture': { + dashed_name: 'process-parent-elf-architecture', + description: 'Machine architecture of the ELF file.', + example: 'x86-64', + flat_name: 'process.parent.elf.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + original_fieldset: 'elf', + short: 'Machine architecture of the ELF file.', + type: 'keyword', + }, + 'process.parent.elf.byte_order': { + dashed_name: 'process-parent-elf-byte-order', + description: 'Byte sequence of ELF file.', + example: 'Little Endian', + flat_name: 'process.parent.elf.byte_order', + ignore_above: 1024, + level: 'extended', + name: 'byte_order', + normalize: [], + original_fieldset: 'elf', + short: 'Byte sequence of ELF file.', + type: 'keyword', + }, + 'process.parent.elf.cpu_type': { + dashed_name: 'process-parent-elf-cpu-type', + description: 'CPU type of the ELF file.', + example: 'Intel', + flat_name: 'process.parent.elf.cpu_type', + ignore_above: 1024, + level: 'extended', + name: 'cpu_type', + normalize: [], + original_fieldset: 'elf', + short: 'CPU type of the ELF file.', + type: 'keyword', + }, + 'process.parent.elf.creation_date': { + dashed_name: 'process-parent-elf-creation-date', + description: + "Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.", + flat_name: 'process.parent.elf.creation_date', + level: 'extended', + name: 'creation_date', + normalize: [], + original_fieldset: 'elf', + short: 'Build or compile date.', + type: 'date', + }, + 'process.parent.elf.exports': { + dashed_name: 'process-parent-elf-exports', + description: 'List of exported element names and types.', + flat_name: 'process.parent.elf.exports', + level: 'extended', + name: 'exports', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of exported element names and types.', + type: 'flattened', + }, + 'process.parent.elf.header.abi_version': { + dashed_name: 'process-parent-elf-header-abi-version', + description: 'Version of the ELF Application Binary Interface (ABI).', + flat_name: 'process.parent.elf.header.abi_version', + ignore_above: 1024, + level: 'extended', + name: 'header.abi_version', + normalize: [], + original_fieldset: 'elf', + short: 'Version of the ELF Application Binary Interface (ABI).', + type: 'keyword', + }, + 'process.parent.elf.header.class': { + dashed_name: 'process-parent-elf-header-class', + description: 'Header class of the ELF file.', + flat_name: 'process.parent.elf.header.class', + ignore_above: 1024, + level: 'extended', + name: 'header.class', + normalize: [], + original_fieldset: 'elf', + short: 'Header class of the ELF file.', + type: 'keyword', + }, + 'process.parent.elf.header.data': { + dashed_name: 'process-parent-elf-header-data', + description: 'Data table of the ELF header.', + flat_name: 'process.parent.elf.header.data', + ignore_above: 1024, + level: 'extended', + name: 'header.data', + normalize: [], + original_fieldset: 'elf', + short: 'Data table of the ELF header.', + type: 'keyword', + }, + 'process.parent.elf.header.entrypoint': { + dashed_name: 'process-parent-elf-header-entrypoint', + description: 'Header entrypoint of the ELF file.', + flat_name: 'process.parent.elf.header.entrypoint', + format: 'string', + level: 'extended', + name: 'header.entrypoint', + normalize: [], + original_fieldset: 'elf', + short: 'Header entrypoint of the ELF file.', + type: 'long', + }, + 'process.parent.elf.header.object_version': { + dashed_name: 'process-parent-elf-header-object-version', + description: '"0x1" for original ELF files.', + flat_name: 'process.parent.elf.header.object_version', + ignore_above: 1024, + level: 'extended', + name: 'header.object_version', + normalize: [], + original_fieldset: 'elf', + short: '"0x1" for original ELF files.', + type: 'keyword', + }, + 'process.parent.elf.header.os_abi': { + dashed_name: 'process-parent-elf-header-os-abi', + description: 'Application Binary Interface (ABI) of the Linux OS.', + flat_name: 'process.parent.elf.header.os_abi', + ignore_above: 1024, + level: 'extended', + name: 'header.os_abi', + normalize: [], + original_fieldset: 'elf', + short: 'Application Binary Interface (ABI) of the Linux OS.', + type: 'keyword', + }, + 'process.parent.elf.header.type': { + dashed_name: 'process-parent-elf-header-type', + description: 'Header type of the ELF file.', + flat_name: 'process.parent.elf.header.type', + ignore_above: 1024, + level: 'extended', + name: 'header.type', + normalize: [], + original_fieldset: 'elf', + short: 'Header type of the ELF file.', + type: 'keyword', + }, + 'process.parent.elf.header.version': { + dashed_name: 'process-parent-elf-header-version', + description: 'Version of the ELF header.', + flat_name: 'process.parent.elf.header.version', + ignore_above: 1024, + level: 'extended', + name: 'header.version', + normalize: [], + original_fieldset: 'elf', + short: 'Version of the ELF header.', + type: 'keyword', + }, + 'process.parent.elf.imports': { + dashed_name: 'process-parent-elf-imports', + description: 'List of imported element names and types.', + flat_name: 'process.parent.elf.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'process.parent.elf.sections': { + dashed_name: 'process-parent-elf-sections', + description: + 'An array containing an object for each section of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.', + flat_name: 'process.parent.elf.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'elf', + short: 'Section information of the ELF file.', + type: 'nested', + }, + 'process.parent.elf.sections.chi2': { + dashed_name: 'process-parent-elf-sections-chi2', + description: 'Chi-square probability distribution of the section.', + flat_name: 'process.parent.elf.sections.chi2', + format: 'number', + level: 'extended', + name: 'sections.chi2', + normalize: [], + original_fieldset: 'elf', + short: 'Chi-square probability distribution of the section.', + type: 'long', + }, + 'process.parent.elf.sections.entropy': { + dashed_name: 'process-parent-elf-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'process.parent.elf.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'process.parent.elf.sections.flags': { + dashed_name: 'process-parent-elf-sections-flags', + description: 'ELF Section List flags.', + flat_name: 'process.parent.elf.sections.flags', + ignore_above: 1024, + level: 'extended', + name: 'sections.flags', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List flags.', + type: 'keyword', + }, + 'process.parent.elf.sections.name': { + dashed_name: 'process-parent-elf-sections-name', + description: 'ELF Section List name.', + flat_name: 'process.parent.elf.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List name.', + type: 'keyword', + }, + 'process.parent.elf.sections.physical_offset': { + dashed_name: 'process-parent-elf-sections-physical-offset', + description: 'ELF Section List offset.', + flat_name: 'process.parent.elf.sections.physical_offset', + ignore_above: 1024, + level: 'extended', + name: 'sections.physical_offset', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List offset.', + type: 'keyword', + }, + 'process.parent.elf.sections.physical_size': { + dashed_name: 'process-parent-elf-sections-physical-size', + description: 'ELF Section List physical size.', + flat_name: 'process.parent.elf.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List physical size.', + type: 'long', + }, + 'process.parent.elf.sections.type': { + dashed_name: 'process-parent-elf-sections-type', + description: 'ELF Section List type.', + flat_name: 'process.parent.elf.sections.type', + ignore_above: 1024, + level: 'extended', + name: 'sections.type', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List type.', + type: 'keyword', + }, + 'process.parent.elf.sections.virtual_address': { + dashed_name: 'process-parent-elf-sections-virtual-address', + description: 'ELF Section List virtual address.', + flat_name: 'process.parent.elf.sections.virtual_address', + format: 'string', + level: 'extended', + name: 'sections.virtual_address', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List virtual address.', + type: 'long', + }, + 'process.parent.elf.sections.virtual_size': { + dashed_name: 'process-parent-elf-sections-virtual-size', + description: 'ELF Section List virtual size.', + flat_name: 'process.parent.elf.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List virtual size.', + type: 'long', + }, + 'process.parent.elf.segments': { + dashed_name: 'process-parent-elf-segments', + description: + 'An array containing an object for each segment of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.', + flat_name: 'process.parent.elf.segments', + level: 'extended', + name: 'segments', + normalize: ['array'], + original_fieldset: 'elf', + short: 'ELF object segment list.', + type: 'nested', + }, + 'process.parent.elf.segments.sections': { + dashed_name: 'process-parent-elf-segments-sections', + description: 'ELF object segment sections.', + flat_name: 'process.parent.elf.segments.sections', + ignore_above: 1024, + level: 'extended', + name: 'segments.sections', + normalize: [], + original_fieldset: 'elf', + short: 'ELF object segment sections.', + type: 'keyword', + }, + 'process.parent.elf.segments.type': { + dashed_name: 'process-parent-elf-segments-type', + description: 'ELF object segment type.', + flat_name: 'process.parent.elf.segments.type', + ignore_above: 1024, + level: 'extended', + name: 'segments.type', + normalize: [], + original_fieldset: 'elf', + short: 'ELF object segment type.', + type: 'keyword', + }, + 'process.parent.elf.shared_libraries': { + dashed_name: 'process-parent-elf-shared-libraries', + description: 'List of shared libraries used by this ELF object.', + flat_name: 'process.parent.elf.shared_libraries', + ignore_above: 1024, + level: 'extended', + name: 'shared_libraries', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of shared libraries used by this ELF object.', + type: 'keyword', + }, + 'process.parent.elf.telfhash': { + dashed_name: 'process-parent-elf-telfhash', + description: 'telfhash symbol hash for ELF file.', + flat_name: 'process.parent.elf.telfhash', + ignore_above: 1024, + level: 'extended', + name: 'telfhash', + normalize: [], + original_fieldset: 'elf', + short: 'telfhash hash for ELF file.', + type: 'keyword', + }, + 'process.parent.end': { + dashed_name: 'process-parent-end', + description: 'The time the process ended.', + example: '2016-05-23T08:05:34.853Z', + flat_name: 'process.parent.end', + level: 'extended', + name: 'end', + normalize: [], + original_fieldset: 'process', + short: 'The time the process ended.', + type: 'date', + }, + 'process.parent.entity_id': { + dashed_name: 'process-parent-entity-id', + description: + 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', + example: 'c2c455d9f99375d', + flat_name: 'process.parent.entity_id', + ignore_above: 1024, + level: 'extended', + name: 'entity_id', + normalize: [], + original_fieldset: 'process', + short: 'Unique identifier for the process.', + type: 'keyword', + }, + 'process.parent.executable': { + dashed_name: 'process-parent-executable', + description: 'Absolute path to the process executable.', + example: '/usr/bin/ssh', + flat_name: 'process.parent.executable', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.parent.executable.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'executable', + normalize: [], + original_fieldset: 'process', + short: 'Absolute path to the process executable.', + type: 'keyword', + }, + 'process.parent.exit_code': { + dashed_name: 'process-parent-exit-code', + description: + 'The exit code of the process, if this is a termination event.\nThe field should be absent if there is no exit code for the event (e.g. process start).', + example: 137, + flat_name: 'process.parent.exit_code', + level: 'extended', + name: 'exit_code', + normalize: [], + original_fieldset: 'process', + short: 'The exit code of the process.', + type: 'long', + }, + 'process.parent.group.id': { + dashed_name: 'process-parent-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.parent.group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.parent.group.name': { + dashed_name: 'process-parent-group-name', + description: 'Name of the group.', + flat_name: 'process.parent.group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.parent.group_leader.entity_id': { + dashed_name: 'process-parent-group-leader-entity-id', + description: + 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', + example: 'c2c455d9f99375d', + flat_name: 'process.parent.group_leader.entity_id', + ignore_above: 1024, + level: 'extended', + name: 'entity_id', + normalize: [], + original_fieldset: 'process', + short: 'Unique identifier for the process.', + type: 'keyword', + }, + 'process.parent.group_leader.pid': { + dashed_name: 'process-parent-group-leader-pid', + description: 'Process id.', + example: 4242, + flat_name: 'process.parent.group_leader.pid', + format: 'string', + level: 'core', + name: 'pid', + normalize: [], + original_fieldset: 'process', + short: 'Process id.', + type: 'long', + }, + 'process.parent.group_leader.start': { + dashed_name: 'process-parent-group-leader-start', + description: 'The time the process started.', + example: '2016-05-23T08:05:34.853Z', + flat_name: 'process.parent.group_leader.start', + level: 'extended', + name: 'start', + normalize: [], + original_fieldset: 'process', + short: 'The time the process started.', + type: 'date', + }, + 'process.parent.hash.md5': { + dashed_name: 'process-parent-hash-md5', + description: 'MD5 hash.', + flat_name: 'process.parent.hash.md5', + ignore_above: 1024, + level: 'extended', + name: 'md5', + normalize: [], + original_fieldset: 'hash', + short: 'MD5 hash.', + type: 'keyword', + }, + 'process.parent.hash.sha1': { + dashed_name: 'process-parent-hash-sha1', + description: 'SHA1 hash.', + flat_name: 'process.parent.hash.sha1', + ignore_above: 1024, + level: 'extended', + name: 'sha1', + normalize: [], + original_fieldset: 'hash', + short: 'SHA1 hash.', + type: 'keyword', + }, + 'process.parent.hash.sha256': { + dashed_name: 'process-parent-hash-sha256', + description: 'SHA256 hash.', + flat_name: 'process.parent.hash.sha256', + ignore_above: 1024, + level: 'extended', + name: 'sha256', + normalize: [], + original_fieldset: 'hash', + short: 'SHA256 hash.', + type: 'keyword', + }, + 'process.parent.hash.sha384': { + dashed_name: 'process-parent-hash-sha384', + description: 'SHA384 hash.', + flat_name: 'process.parent.hash.sha384', + ignore_above: 1024, + level: 'extended', + name: 'sha384', + normalize: [], + original_fieldset: 'hash', + short: 'SHA384 hash.', + type: 'keyword', + }, + 'process.parent.hash.sha512': { + dashed_name: 'process-parent-hash-sha512', + description: 'SHA512 hash.', + flat_name: 'process.parent.hash.sha512', + ignore_above: 1024, + level: 'extended', + name: 'sha512', + normalize: [], + original_fieldset: 'hash', + short: 'SHA512 hash.', + type: 'keyword', + }, + 'process.parent.hash.ssdeep': { + dashed_name: 'process-parent-hash-ssdeep', + description: 'SSDEEP hash.', + flat_name: 'process.parent.hash.ssdeep', + ignore_above: 1024, + level: 'extended', + name: 'ssdeep', + normalize: [], + original_fieldset: 'hash', + short: 'SSDEEP hash.', + type: 'keyword', + }, + 'process.parent.hash.tlsh': { + dashed_name: 'process-parent-hash-tlsh', + description: 'TLSH hash.', + flat_name: 'process.parent.hash.tlsh', + ignore_above: 1024, + level: 'extended', + name: 'tlsh', + normalize: [], + original_fieldset: 'hash', + short: 'TLSH hash.', + type: 'keyword', + }, + 'process.parent.interactive': { + dashed_name: 'process-parent-interactive', + description: + 'Whether the process is connected to an interactive shell.\nProcess interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.\nNote: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.', + example: true, + flat_name: 'process.parent.interactive', + level: 'extended', + name: 'interactive', + normalize: [], + original_fieldset: 'process', + short: 'Whether the process is connected to an interactive shell.', + type: 'boolean', + }, + 'process.parent.name': { + dashed_name: 'process-parent-name', + description: 'Process name.\nSometimes called program name or similar.', + example: 'ssh', + flat_name: 'process.parent.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.parent.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'process', + short: 'Process name.', + type: 'keyword', + }, + 'process.parent.pe.architecture': { + dashed_name: 'process-parent-pe-architecture', + description: 'CPU architecture target for the file.', + example: 'x64', + flat_name: 'process.parent.pe.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + original_fieldset: 'pe', + short: 'CPU architecture target for the file.', + type: 'keyword', + }, + 'process.parent.pe.company': { + dashed_name: 'process-parent-pe-company', + description: 'Internal company name of the file, provided at compile-time.', + example: 'Microsoft Corporation', + flat_name: 'process.parent.pe.company', + ignore_above: 1024, + level: 'extended', + name: 'company', + normalize: [], + original_fieldset: 'pe', + short: 'Internal company name of the file, provided at compile-time.', + type: 'keyword', + }, + 'process.parent.pe.description': { + dashed_name: 'process-parent-pe-description', + description: 'Internal description of the file, provided at compile-time.', + example: 'Paint', + flat_name: 'process.parent.pe.description', + ignore_above: 1024, + level: 'extended', + name: 'description', + normalize: [], + original_fieldset: 'pe', + short: 'Internal description of the file, provided at compile-time.', + type: 'keyword', + }, + 'process.parent.pe.file_version': { + dashed_name: 'process-parent-pe-file-version', + description: 'Internal version of the file, provided at compile-time.', + example: '6.3.9600.17415', + flat_name: 'process.parent.pe.file_version', + ignore_above: 1024, + level: 'extended', + name: 'file_version', + normalize: [], + original_fieldset: 'pe', + short: 'Process name.', + type: 'keyword', + }, + 'process.parent.pe.imphash': { + dashed_name: 'process-parent-pe-imphash', + description: + 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', + example: '0c6803c4e922103c4dca5963aad36ddf', + flat_name: 'process.parent.pe.imphash', + ignore_above: 1024, + level: 'extended', + name: 'imphash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'process.parent.pe.original_file_name': { + dashed_name: 'process-parent-pe-original-file-name', + description: 'Internal name of the file, provided at compile-time.', + example: 'MSPAINT.EXE', + flat_name: 'process.parent.pe.original_file_name', + ignore_above: 1024, + level: 'extended', + name: 'original_file_name', + normalize: [], + original_fieldset: 'pe', + short: 'Internal name of the file, provided at compile-time.', + type: 'keyword', + }, + 'process.parent.pe.pehash': { + dashed_name: 'process-parent-pe-pehash', + description: + 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', + example: '73ff189b63cd6be375a7ff25179a38d347651975', + flat_name: 'process.parent.pe.pehash', + ignore_above: 1024, + level: 'extended', + name: 'pehash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the PE header and data from one or more PE sections.', + type: 'keyword', + }, + 'process.parent.pe.product': { + dashed_name: 'process-parent-pe-product', + description: 'Internal product name of the file, provided at compile-time.', + example: 'Microsoft® Windows® Operating System', + flat_name: 'process.parent.pe.product', + ignore_above: 1024, + level: 'extended', + name: 'product', + normalize: [], + original_fieldset: 'pe', + short: 'Internal product name of the file, provided at compile-time.', + type: 'keyword', + }, + 'process.parent.pgid': { + dashed_name: 'process-parent-pgid', + description: + 'Deprecated for removal in next major version release. This field is superseded by `process.group_leader.pid`.\nIdentifier of the group of processes the process belongs to.', + flat_name: 'process.parent.pgid', + format: 'string', + level: 'extended', + name: 'pgid', + normalize: [], + original_fieldset: 'process', + short: 'Deprecated identifier of the group of processes the process belongs to.', + type: 'long', + }, + 'process.parent.pid': { + dashed_name: 'process-parent-pid', + description: 'Process id.', + example: 4242, + flat_name: 'process.parent.pid', + format: 'string', + level: 'core', + name: 'pid', + normalize: [], + original_fieldset: 'process', + short: 'Process id.', + type: 'long', + }, + 'process.parent.real_group.id': { + dashed_name: 'process-parent-real-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.parent.real_group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.parent.real_group.name': { + dashed_name: 'process-parent-real-group-name', + description: 'Name of the group.', + flat_name: 'process.parent.real_group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.parent.real_user.id': { + dashed_name: 'process-parent-real-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.parent.real_user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.parent.real_user.name': { + dashed_name: 'process-parent-real-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.parent.real_user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.parent.real_user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.parent.saved_group.id': { + dashed_name: 'process-parent-saved-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.parent.saved_group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.parent.saved_group.name': { + dashed_name: 'process-parent-saved-group-name', + description: 'Name of the group.', + flat_name: 'process.parent.saved_group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.parent.saved_user.id': { + dashed_name: 'process-parent-saved-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.parent.saved_user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.parent.saved_user.name': { + dashed_name: 'process-parent-saved-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.parent.saved_user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.parent.saved_user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.parent.start': { + dashed_name: 'process-parent-start', + description: 'The time the process started.', + example: '2016-05-23T08:05:34.853Z', + flat_name: 'process.parent.start', + level: 'extended', + name: 'start', + normalize: [], + original_fieldset: 'process', + short: 'The time the process started.', + type: 'date', + }, + 'process.parent.supplemental_groups.id': { + dashed_name: 'process-parent-supplemental-groups-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.parent.supplemental_groups.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.parent.supplemental_groups.name': { + dashed_name: 'process-parent-supplemental-groups-name', + description: 'Name of the group.', + flat_name: 'process.parent.supplemental_groups.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.parent.thread.id': { + dashed_name: 'process-parent-thread-id', + description: 'Thread ID.', + example: 4242, + flat_name: 'process.parent.thread.id', + format: 'string', + level: 'extended', + name: 'thread.id', + normalize: [], + original_fieldset: 'process', + short: 'Thread ID.', + type: 'long', + }, + 'process.parent.thread.name': { + dashed_name: 'process-parent-thread-name', + description: 'Thread name.', + example: 'thread-0', + flat_name: 'process.parent.thread.name', + ignore_above: 1024, + level: 'extended', + name: 'thread.name', + normalize: [], + original_fieldset: 'process', + short: 'Thread name.', + type: 'keyword', + }, + 'process.parent.title': { + dashed_name: 'process-parent-title', + description: + 'Process title.\nThe proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened.', + flat_name: 'process.parent.title', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.parent.title.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'title', + normalize: [], + original_fieldset: 'process', + short: 'Process title.', + type: 'keyword', + }, + 'process.parent.tty': { + dashed_name: 'process-parent-tty', + description: + 'Information about the controlling TTY device. If set, the process belongs to an interactive session.', + flat_name: 'process.parent.tty', + level: 'extended', + name: 'tty', + normalize: [], + original_fieldset: 'process', + short: 'Information about the controlling TTY device.', + type: 'object', + }, + 'process.parent.tty.char_device.major': { + dashed_name: 'process-parent-tty-char-device-major', + description: + 'The major number identifies the driver associated with the device. The character device\'s major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.', + example: 4, + flat_name: 'process.parent.tty.char_device.major', + level: 'extended', + name: 'tty.char_device.major', + normalize: [], + original_fieldset: 'process', + short: "The TTY character device's major number.", + type: 'long', + }, + 'process.parent.tty.char_device.minor': { + dashed_name: 'process-parent-tty-char-device-minor', + description: + 'The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.', + example: 1, + flat_name: 'process.parent.tty.char_device.minor', + level: 'extended', + name: 'tty.char_device.minor', + normalize: [], + original_fieldset: 'process', + short: "The TTY character device's minor number.", + type: 'long', + }, + 'process.parent.uptime': { + dashed_name: 'process-parent-uptime', + description: 'Seconds the process has been up.', + example: 1325, + flat_name: 'process.parent.uptime', + level: 'extended', + name: 'uptime', + normalize: [], + original_fieldset: 'process', + short: 'Seconds the process has been up.', + type: 'long', + }, + 'process.parent.user.id': { + dashed_name: 'process-parent-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.parent.user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.parent.user.name': { + dashed_name: 'process-parent-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.parent.user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.parent.user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.parent.working_directory': { + dashed_name: 'process-parent-working-directory', + description: 'The working directory of the process.', + example: '/home/alice', + flat_name: 'process.parent.working_directory', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.parent.working_directory.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'working_directory', + normalize: [], + original_fieldset: 'process', + short: 'The working directory of the process.', + type: 'keyword', + }, + 'process.pe.architecture': { + dashed_name: 'process-pe-architecture', + description: 'CPU architecture target for the file.', + example: 'x64', + flat_name: 'process.pe.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + original_fieldset: 'pe', + short: 'CPU architecture target for the file.', + type: 'keyword', + }, + 'process.pe.company': { + dashed_name: 'process-pe-company', + description: 'Internal company name of the file, provided at compile-time.', + example: 'Microsoft Corporation', + flat_name: 'process.pe.company', + ignore_above: 1024, + level: 'extended', + name: 'company', + normalize: [], + original_fieldset: 'pe', + short: 'Internal company name of the file, provided at compile-time.', + type: 'keyword', + }, + 'process.pe.description': { + dashed_name: 'process-pe-description', + description: 'Internal description of the file, provided at compile-time.', + example: 'Paint', + flat_name: 'process.pe.description', + ignore_above: 1024, + level: 'extended', + name: 'description', + normalize: [], + original_fieldset: 'pe', + short: 'Internal description of the file, provided at compile-time.', + type: 'keyword', + }, + 'process.pe.file_version': { + dashed_name: 'process-pe-file-version', + description: 'Internal version of the file, provided at compile-time.', + example: '6.3.9600.17415', + flat_name: 'process.pe.file_version', + ignore_above: 1024, + level: 'extended', + name: 'file_version', + normalize: [], + original_fieldset: 'pe', + short: 'Process name.', + type: 'keyword', + }, + 'process.pe.imphash': { + dashed_name: 'process-pe-imphash', + description: + 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', + example: '0c6803c4e922103c4dca5963aad36ddf', + flat_name: 'process.pe.imphash', + ignore_above: 1024, + level: 'extended', + name: 'imphash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'process.pe.original_file_name': { + dashed_name: 'process-pe-original-file-name', + description: 'Internal name of the file, provided at compile-time.', + example: 'MSPAINT.EXE', + flat_name: 'process.pe.original_file_name', + ignore_above: 1024, + level: 'extended', + name: 'original_file_name', + normalize: [], + original_fieldset: 'pe', + short: 'Internal name of the file, provided at compile-time.', + type: 'keyword', + }, + 'process.pe.pehash': { + dashed_name: 'process-pe-pehash', + description: + 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', + example: '73ff189b63cd6be375a7ff25179a38d347651975', + flat_name: 'process.pe.pehash', + ignore_above: 1024, + level: 'extended', + name: 'pehash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the PE header and data from one or more PE sections.', + type: 'keyword', + }, + 'process.pe.product': { + dashed_name: 'process-pe-product', + description: 'Internal product name of the file, provided at compile-time.', + example: 'Microsoft® Windows® Operating System', + flat_name: 'process.pe.product', + ignore_above: 1024, + level: 'extended', + name: 'product', + normalize: [], + original_fieldset: 'pe', + short: 'Internal product name of the file, provided at compile-time.', + type: 'keyword', + }, + 'process.pgid': { + dashed_name: 'process-pgid', + description: + 'Deprecated for removal in next major version release. This field is superseded by `process.group_leader.pid`.\nIdentifier of the group of processes the process belongs to.', + flat_name: 'process.pgid', + format: 'string', + level: 'extended', + name: 'pgid', + normalize: [], + short: 'Deprecated identifier of the group of processes the process belongs to.', + type: 'long', + }, + 'process.pid': { + dashed_name: 'process-pid', + description: 'Process id.', + example: 4242, + flat_name: 'process.pid', + format: 'string', + level: 'core', + name: 'pid', + normalize: [], + short: 'Process id.', + type: 'long', + }, + 'process.previous.args': { + dashed_name: 'process-previous-args', + description: + 'Array of process arguments, starting with the absolute path to the executable.\nMay be filtered to protect sensitive information.', + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]', + flat_name: 'process.previous.args', + ignore_above: 1024, + level: 'extended', + name: 'args', + normalize: ['array'], + original_fieldset: 'process', + short: 'Array of process arguments.', + type: 'keyword', + }, + 'process.previous.args_count': { + dashed_name: 'process-previous-args-count', + description: + 'Length of the process.args array.\nThis field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.', + example: 4, + flat_name: 'process.previous.args_count', + level: 'extended', + name: 'args_count', + normalize: [], + original_fieldset: 'process', + short: 'Length of the process.args array.', + type: 'long', + }, + 'process.previous.executable': { + dashed_name: 'process-previous-executable', + description: 'Absolute path to the process executable.', + example: '/usr/bin/ssh', + flat_name: 'process.previous.executable', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.previous.executable.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'executable', + normalize: [], + original_fieldset: 'process', + short: 'Absolute path to the process executable.', + type: 'keyword', + }, + 'process.real_group.id': { + dashed_name: 'process-real-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.real_group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.real_group.name': { + dashed_name: 'process-real-group-name', + description: 'Name of the group.', + flat_name: 'process.real_group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.real_user.id': { + dashed_name: 'process-real-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.real_user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.real_user.name': { + dashed_name: 'process-real-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.real_user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.real_user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.saved_group.id': { + dashed_name: 'process-saved-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.saved_group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.saved_group.name': { + dashed_name: 'process-saved-group-name', + description: 'Name of the group.', + flat_name: 'process.saved_group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.saved_user.id': { + dashed_name: 'process-saved-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.saved_user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.saved_user.name': { + dashed_name: 'process-saved-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.saved_user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.saved_user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.session_leader.args': { + dashed_name: 'process-session-leader-args', + description: + 'Array of process arguments, starting with the absolute path to the executable.\nMay be filtered to protect sensitive information.', + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]', + flat_name: 'process.session_leader.args', + ignore_above: 1024, + level: 'extended', + name: 'args', + normalize: ['array'], + original_fieldset: 'process', + short: 'Array of process arguments.', + type: 'keyword', + }, + 'process.session_leader.args_count': { + dashed_name: 'process-session-leader-args-count', + description: + 'Length of the process.args array.\nThis field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity.', + example: 4, + flat_name: 'process.session_leader.args_count', + level: 'extended', + name: 'args_count', + normalize: [], + original_fieldset: 'process', + short: 'Length of the process.args array.', + type: 'long', + }, + 'process.session_leader.command_line': { + dashed_name: 'process-session-leader-command-line', + description: + 'Full command line that started the process, including the absolute path to the executable, and all arguments.\nSome arguments may be filtered to protect sensitive information.', + example: '/usr/bin/ssh -l user 10.0.0.16', + flat_name: 'process.session_leader.command_line', + level: 'extended', + multi_fields: [ + { + flat_name: 'process.session_leader.command_line.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'command_line', + normalize: [], + original_fieldset: 'process', + short: 'Full command line that started the process.', + type: 'wildcard', + }, + 'process.session_leader.entity_id': { + dashed_name: 'process-session-leader-entity-id', + description: + 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', + example: 'c2c455d9f99375d', + flat_name: 'process.session_leader.entity_id', + ignore_above: 1024, + level: 'extended', + name: 'entity_id', + normalize: [], + original_fieldset: 'process', + short: 'Unique identifier for the process.', + type: 'keyword', + }, + 'process.session_leader.executable': { + dashed_name: 'process-session-leader-executable', + description: 'Absolute path to the process executable.', + example: '/usr/bin/ssh', + flat_name: 'process.session_leader.executable', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.session_leader.executable.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'executable', + normalize: [], + original_fieldset: 'process', + short: 'Absolute path to the process executable.', + type: 'keyword', + }, + 'process.session_leader.group.id': { + dashed_name: 'process-session-leader-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.session_leader.group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.session_leader.group.name': { + dashed_name: 'process-session-leader-group-name', + description: 'Name of the group.', + flat_name: 'process.session_leader.group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.session_leader.interactive': { + dashed_name: 'process-session-leader-interactive', + description: + 'Whether the process is connected to an interactive shell.\nProcess interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive.\nNote: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY.', + example: true, + flat_name: 'process.session_leader.interactive', + level: 'extended', + name: 'interactive', + normalize: [], + original_fieldset: 'process', + short: 'Whether the process is connected to an interactive shell.', + type: 'boolean', + }, + 'process.session_leader.name': { + dashed_name: 'process-session-leader-name', + description: 'Process name.\nSometimes called program name or similar.', + example: 'ssh', + flat_name: 'process.session_leader.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.session_leader.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'process', + short: 'Process name.', + type: 'keyword', + }, + 'process.session_leader.parent.entity_id': { + dashed_name: 'process-session-leader-parent-entity-id', + description: + 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', + example: 'c2c455d9f99375d', + flat_name: 'process.session_leader.parent.entity_id', + ignore_above: 1024, + level: 'extended', + name: 'entity_id', + normalize: [], + original_fieldset: 'process', + short: 'Unique identifier for the process.', + type: 'keyword', + }, + 'process.session_leader.parent.pid': { + dashed_name: 'process-session-leader-parent-pid', + description: 'Process id.', + example: 4242, + flat_name: 'process.session_leader.parent.pid', + format: 'string', + level: 'core', + name: 'pid', + normalize: [], + original_fieldset: 'process', + short: 'Process id.', + type: 'long', + }, + 'process.session_leader.parent.session_leader.entity_id': { + dashed_name: 'process-session-leader-parent-session-leader-entity-id', + description: + 'Unique identifier for the process.\nThe implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process.\nConstructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts.', + example: 'c2c455d9f99375d', + flat_name: 'process.session_leader.parent.session_leader.entity_id', + ignore_above: 1024, + level: 'extended', + name: 'entity_id', + normalize: [], + original_fieldset: 'process', + short: 'Unique identifier for the process.', + type: 'keyword', + }, + 'process.session_leader.parent.session_leader.pid': { + dashed_name: 'process-session-leader-parent-session-leader-pid', + description: 'Process id.', + example: 4242, + flat_name: 'process.session_leader.parent.session_leader.pid', + format: 'string', + level: 'core', + name: 'pid', + normalize: [], + original_fieldset: 'process', + short: 'Process id.', + type: 'long', + }, + 'process.session_leader.parent.session_leader.start': { + dashed_name: 'process-session-leader-parent-session-leader-start', + description: 'The time the process started.', + example: '2016-05-23T08:05:34.853Z', + flat_name: 'process.session_leader.parent.session_leader.start', + level: 'extended', + name: 'start', + normalize: [], + original_fieldset: 'process', + short: 'The time the process started.', + type: 'date', + }, + 'process.session_leader.parent.start': { + dashed_name: 'process-session-leader-parent-start', + description: 'The time the process started.', + example: '2016-05-23T08:05:34.853Z', + flat_name: 'process.session_leader.parent.start', + level: 'extended', + name: 'start', + normalize: [], + original_fieldset: 'process', + short: 'The time the process started.', + type: 'date', + }, + 'process.session_leader.pid': { + dashed_name: 'process-session-leader-pid', + description: 'Process id.', + example: 4242, + flat_name: 'process.session_leader.pid', + format: 'string', + level: 'core', + name: 'pid', + normalize: [], + original_fieldset: 'process', + short: 'Process id.', + type: 'long', + }, + 'process.session_leader.real_group.id': { + dashed_name: 'process-session-leader-real-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.session_leader.real_group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.session_leader.real_group.name': { + dashed_name: 'process-session-leader-real-group-name', + description: 'Name of the group.', + flat_name: 'process.session_leader.real_group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.session_leader.real_user.id': { + dashed_name: 'process-session-leader-real-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.session_leader.real_user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.session_leader.real_user.name': { + dashed_name: 'process-session-leader-real-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.session_leader.real_user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.session_leader.real_user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.session_leader.same_as_process': { + dashed_name: 'process-session-leader-same-as-process', + description: + "This boolean is used to identify if a leader process is the same as the top level process.\nFor example, if `process.group_leader.same_as_process = true`, it means the process event in question is the leader of its process group. Details under `process.*` like `pid` would be the same under `process.group_leader.*` The same applies for both `process.session_leader` and `process.entry_leader`.\nThis field exists to the benefit of EQL and other rule engines since it's not possible to compare equality between two fields in a single document. e.g `process.entity_id` = `process.group_leader.entity_id` (top level process is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` (top level process is the entry session leader)\nInstead these rules could be written like: `process.group_leader.same_as_process: true` OR `process.entry_leader.same_as_process: true`\nNote: This field is only set on `process.entry_leader`, `process.session_leader` and `process.group_leader`.", + example: true, + flat_name: 'process.session_leader.same_as_process', + level: 'extended', + name: 'same_as_process', + normalize: [], + original_fieldset: 'process', + short: + 'This boolean is used to identify if a leader process is the same as the top level process.', + type: 'boolean', + }, + 'process.session_leader.saved_group.id': { + dashed_name: 'process-session-leader-saved-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.session_leader.saved_group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.session_leader.saved_group.name': { + dashed_name: 'process-session-leader-saved-group-name', + description: 'Name of the group.', + flat_name: 'process.session_leader.saved_group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.session_leader.saved_user.id': { + dashed_name: 'process-session-leader-saved-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.session_leader.saved_user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.session_leader.saved_user.name': { + dashed_name: 'process-session-leader-saved-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.session_leader.saved_user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.session_leader.saved_user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.session_leader.start': { + dashed_name: 'process-session-leader-start', + description: 'The time the process started.', + example: '2016-05-23T08:05:34.853Z', + flat_name: 'process.session_leader.start', + level: 'extended', + name: 'start', + normalize: [], + original_fieldset: 'process', + short: 'The time the process started.', + type: 'date', + }, + 'process.session_leader.supplemental_groups.id': { + dashed_name: 'process-session-leader-supplemental-groups-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.session_leader.supplemental_groups.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.session_leader.supplemental_groups.name': { + dashed_name: 'process-session-leader-supplemental-groups-name', + description: 'Name of the group.', + flat_name: 'process.session_leader.supplemental_groups.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.session_leader.tty': { + dashed_name: 'process-session-leader-tty', + description: + 'Information about the controlling TTY device. If set, the process belongs to an interactive session.', + flat_name: 'process.session_leader.tty', + level: 'extended', + name: 'tty', + normalize: [], + original_fieldset: 'process', + short: 'Information about the controlling TTY device.', + type: 'object', + }, + 'process.session_leader.tty.char_device.major': { + dashed_name: 'process-session-leader-tty-char-device-major', + description: + 'The major number identifies the driver associated with the device. The character device\'s major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.', + example: 4, + flat_name: 'process.session_leader.tty.char_device.major', + level: 'extended', + name: 'tty.char_device.major', + normalize: [], + original_fieldset: 'process', + short: "The TTY character device's major number.", + type: 'long', + }, + 'process.session_leader.tty.char_device.minor': { + dashed_name: 'process-session-leader-tty-char-device-minor', + description: + 'The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.', + example: 1, + flat_name: 'process.session_leader.tty.char_device.minor', + level: 'extended', + name: 'tty.char_device.minor', + normalize: [], + original_fieldset: 'process', + short: "The TTY character device's minor number.", + type: 'long', + }, + 'process.session_leader.user.id': { + dashed_name: 'process-session-leader-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.session_leader.user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.session_leader.user.name': { + dashed_name: 'process-session-leader-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.session_leader.user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.session_leader.user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.session_leader.working_directory': { + dashed_name: 'process-session-leader-working-directory', + description: 'The working directory of the process.', + example: '/home/alice', + flat_name: 'process.session_leader.working_directory', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.session_leader.working_directory.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'working_directory', + normalize: [], + original_fieldset: 'process', + short: 'The working directory of the process.', + type: 'keyword', + }, + 'process.start': { + dashed_name: 'process-start', + description: 'The time the process started.', + example: '2016-05-23T08:05:34.853Z', + flat_name: 'process.start', + level: 'extended', + name: 'start', + normalize: [], + short: 'The time the process started.', + type: 'date', + }, + 'process.supplemental_groups.id': { + dashed_name: 'process-supplemental-groups-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'process.supplemental_groups.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'process.supplemental_groups.name': { + dashed_name: 'process-supplemental-groups-name', + description: 'Name of the group.', + flat_name: 'process.supplemental_groups.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'process.thread.id': { + dashed_name: 'process-thread-id', + description: 'Thread ID.', + example: 4242, + flat_name: 'process.thread.id', + format: 'string', + level: 'extended', + name: 'thread.id', + normalize: [], + short: 'Thread ID.', + type: 'long', + }, + 'process.thread.name': { + dashed_name: 'process-thread-name', + description: 'Thread name.', + example: 'thread-0', + flat_name: 'process.thread.name', + ignore_above: 1024, + level: 'extended', + name: 'thread.name', + normalize: [], + short: 'Thread name.', + type: 'keyword', + }, + 'process.title': { + dashed_name: 'process-title', + description: + 'Process title.\nThe proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened.', + flat_name: 'process.title', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.title.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'title', + normalize: [], + short: 'Process title.', + type: 'keyword', + }, + 'process.tty': { + dashed_name: 'process-tty', + description: + 'Information about the controlling TTY device. If set, the process belongs to an interactive session.', + flat_name: 'process.tty', + level: 'extended', + name: 'tty', + normalize: [], + short: 'Information about the controlling TTY device.', + type: 'object', + }, + 'process.tty.char_device.major': { + dashed_name: 'process-tty-char-device-major', + description: + 'The major number identifies the driver associated with the device. The character device\'s major and minor numbers can be algorithmically combined to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". For more details, please refer to the Linux kernel documentation.', + example: 4, + flat_name: 'process.tty.char_device.major', + level: 'extended', + name: 'tty.char_device.major', + normalize: [], + short: "The TTY character device's major number.", + type: 'long', + }, + 'process.tty.char_device.minor': { + dashed_name: 'process-tty-char-device-minor', + description: + 'The minor number is used only by the driver specified by the major number; other parts of the kernel don’t use it, and merely pass it along to the driver. It is common for a driver to control several devices; the minor number provides a way for the driver to differentiate among them.', + example: 1, + flat_name: 'process.tty.char_device.minor', + level: 'extended', + name: 'tty.char_device.minor', + normalize: [], + short: "The TTY character device's minor number.", + type: 'long', + }, + 'process.tty.columns': { + beta: 'This field is beta and subject to change.', + dashed_name: 'process-tty-columns', + description: + "The number of character columns per line. e.g terminal width\nTerminal sizes can change, so this value reflects the maximum value for a given IO event. i.e. where event.action = 'text_output'", + example: 80, + flat_name: 'process.tty.columns', + level: 'extended', + name: 'tty.columns', + normalize: [], + short: 'The number of character columns per line. e.g terminal width', + type: 'long', + }, + 'process.tty.rows': { + beta: 'This field is beta and subject to change.', + dashed_name: 'process-tty-rows', + description: + "The number of character rows in the terminal. e.g terminal height\nTerminal sizes can change, so this value reflects the maximum value for a given IO event. i.e. where event.action = 'text_output'", + example: 24, + flat_name: 'process.tty.rows', + level: 'extended', + name: 'tty.rows', + normalize: [], + short: 'The number of character rows in the terminal. e.g terminal height', + type: 'long', + }, + 'process.uptime': { + dashed_name: 'process-uptime', + description: 'Seconds the process has been up.', + example: 1325, + flat_name: 'process.uptime', + level: 'extended', + name: 'uptime', + normalize: [], + short: 'Seconds the process has been up.', + type: 'long', + }, + 'process.user.id': { + dashed_name: 'process-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'process.user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'process.user.name': { + dashed_name: 'process-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'process.user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'process.user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'process.working_directory': { + dashed_name: 'process-working-directory', + description: 'The working directory of the process.', + example: '/home/alice', + flat_name: 'process.working_directory', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'process.working_directory.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'working_directory', + normalize: [], + short: 'The working directory of the process.', + type: 'keyword', + }, + }, + group: 2, + name: 'process', + nestings: [ + 'process.attested_groups', + 'process.attested_user', + 'process.code_signature', + 'process.elf', + 'process.entry_leader', + 'process.entry_leader.parent', + 'process.entry_leader.parent.session_leader', + 'process.entry_meta.source', + 'process.group', + 'process.group_leader', + 'process.hash', + 'process.parent', + 'process.parent.group_leader', + 'process.pe', + 'process.previous', + 'process.real_group', + 'process.real_user', + 'process.saved_group', + 'process.saved_user', + 'process.session_leader', + 'process.session_leader.parent', + 'process.session_leader.parent.session_leader', + 'process.supplemental_groups', + 'process.user', + ], + prefix: 'process.', + reusable: { + expected: [ + { + as: 'parent', + at: 'process', + full: 'process.parent', + short_override: 'Information about the parent process.', + }, + { + as: 'entry_leader', + at: 'process', + full: 'process.entry_leader', + short_override: + 'First process from terminal or remote access via SSH, SSM, etc OR a service directly started by the init process.', + }, + { + as: 'session_leader', + at: 'process', + full: 'process.session_leader', + short_override: + 'Often the same as entry_leader. When it differs, it represents a session started within another session. e.g. using tmux', + }, + { + as: 'group_leader', + at: 'process', + full: 'process.group_leader', + short_override: + 'Information about the process group leader. In some cases this may be the same as the top level process.', + }, + { + as: 'group_leader', + at: 'process.parent', + full: 'process.parent.group_leader', + short_override: + "Information about the parent's process group leader. Only pid, start and entity_id fields are set.", + }, + { + as: 'parent', + at: 'process.entry_leader', + full: 'process.entry_leader.parent', + short_override: + "Information about the entry leader's parent process. Only pid, start and entity_id fields are set.", + }, + { + as: 'parent', + at: 'process.session_leader', + full: 'process.session_leader.parent', + short_override: + "Information about the session leader's parent process. Only pid, start and entity_id fields are set.", + }, + { + as: 'session_leader', + at: 'process.entry_leader.parent', + full: 'process.entry_leader.parent.session_leader', + short_override: + 'Information about the parent session of the entry leader. Only pid, start and entity_id fields are set.', + }, + { + as: 'session_leader', + at: 'process.session_leader.parent', + full: 'process.session_leader.parent.session_leader', + short_override: + 'Information about the parent session of the session leader. Only pid, start and entity_id fields are set.', + }, + { + as: 'previous', + at: 'process', + full: 'process.previous', + normalize: ['array'], + short_override: + 'An array of previous executions for the process, including the initial fork. Only executable and args are set.', + }, + ], + top_level: true, + }, + reused_here: [ + { + full: 'process.group', + schema_name: 'group', + short: 'The effective group (egid).', + }, + { + full: 'process.real_group', + schema_name: 'group', + short: 'The real group (rgid).', + }, + { + full: 'process.saved_group', + schema_name: 'group', + short: 'The saved group (sgid).', + }, + { + full: 'process.supplemental_groups', + normalize: ['array'], + schema_name: 'group', + short: 'An array of supplemental groups.', + }, + { + beta: 'Reusing the `group` fields in this location is currently considered beta.', + full: 'process.attested_groups', + normalize: ['array'], + schema_name: 'group', + short: 'The externally attested groups based on an external source such as the Kube API.', + }, + { + full: 'process.hash', + schema_name: 'hash', + short: 'Hashes, usually file hashes.', + }, + { + full: 'process.pe', + schema_name: 'pe', + short: 'These fields contain Windows Portable Executable (PE) metadata.', + }, + { + full: 'process.code_signature', + schema_name: 'code_signature', + short: 'These fields contain information about binary code signatures.', + }, + { + beta: 'This field reuse is beta and subject to change.', + full: 'process.elf', + schema_name: 'elf', + short: 'These fields contain Linux Executable Linkable Format (ELF) metadata.', + }, + { + full: 'process.entry_meta.source', + schema_name: 'source', + short: 'Remote client information such as ip, port and geo location.', + }, + { + full: 'process.user', + schema_name: 'user', + short: 'The effective user (euid).', + }, + { + full: 'process.saved_user', + schema_name: 'user', + short: 'The saved user (suid).', + }, + { + full: 'process.real_user', + schema_name: 'user', + short: 'The real user (ruid). Identifies the real owner of the process.', + }, + { + beta: 'Reusing the `user` fields in this location is currently considered beta.', + full: 'process.attested_user', + schema_name: 'user', + short: 'The externally attested user based on an external source such as the Kube API.', + }, + { + full: 'process.parent', + schema_name: 'process', + short: 'Information about the parent process.', + }, + { + full: 'process.entry_leader', + schema_name: 'process', + short: + 'First process from terminal or remote access via SSH, SSM, etc OR a service directly started by the init process.', + }, + { + full: 'process.session_leader', + schema_name: 'process', + short: + 'Often the same as entry_leader. When it differs, it represents a session started within another session. e.g. using tmux', + }, + { + full: 'process.group_leader', + schema_name: 'process', + short: + 'Information about the process group leader. In some cases this may be the same as the top level process.', + }, + { + full: 'process.parent.group_leader', + schema_name: 'process', + short: + "Information about the parent's process group leader. Only pid, start and entity_id fields are set.", + }, + { + full: 'process.entry_leader.parent', + schema_name: 'process', + short: + "Information about the entry leader's parent process. Only pid, start and entity_id fields are set.", + }, + { + full: 'process.session_leader.parent', + schema_name: 'process', + short: + "Information about the session leader's parent process. Only pid, start and entity_id fields are set.", + }, + { + full: 'process.entry_leader.parent.session_leader', + schema_name: 'process', + short: + 'Information about the parent session of the entry leader. Only pid, start and entity_id fields are set.', + }, + { + full: 'process.session_leader.parent.session_leader', + schema_name: 'process', + short: + 'Information about the parent session of the session leader. Only pid, start and entity_id fields are set.', + }, + { + full: 'process.previous', + normalize: ['array'], + schema_name: 'process', + short: + 'An array of previous executions for the process, including the initial fork. Only executable and args are set.', + }, + ], + short: 'These fields contain information about a process.', + title: 'Process', + type: 'group', + }, + registry: { + description: 'Fields related to Windows Registry operations.', + fields: { + 'registry.data.bytes': { + dashed_name: 'registry-data-bytes', + description: + 'Original bytes written with base64 encoding.\nFor Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values.', + example: 'ZQBuAC0AVQBTAAAAZQBuAAAAAAA=', + flat_name: 'registry.data.bytes', + ignore_above: 1024, + level: 'extended', + name: 'data.bytes', + normalize: [], + short: 'Original bytes written with base64 encoding.', + type: 'keyword', + }, + 'registry.data.strings': { + dashed_name: 'registry-data-strings', + description: + 'Content when writing string types.\nPopulated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`).', + example: '["C:\\rta\\red_ttp\\bin\\myapp.exe"]', + flat_name: 'registry.data.strings', + level: 'core', + name: 'data.strings', + normalize: ['array'], + short: 'List of strings representing what was written to the registry.', + type: 'wildcard', + }, + 'registry.data.type': { + dashed_name: 'registry-data-type', + description: 'Standard registry type for encoding contents', + example: 'REG_SZ', + flat_name: 'registry.data.type', + ignore_above: 1024, + level: 'core', + name: 'data.type', + normalize: [], + short: 'Standard registry type for encoding contents', + type: 'keyword', + }, + 'registry.hive': { + dashed_name: 'registry-hive', + description: 'Abbreviated name for the hive.', + example: 'HKLM', + flat_name: 'registry.hive', + ignore_above: 1024, + level: 'core', + name: 'hive', + normalize: [], + short: 'Abbreviated name for the hive.', + type: 'keyword', + }, + 'registry.key': { + dashed_name: 'registry-key', + description: 'Hive-relative path of keys.', + example: + 'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\winword.exe', + flat_name: 'registry.key', + ignore_above: 1024, + level: 'core', + name: 'key', + normalize: [], + short: 'Hive-relative path of keys.', + type: 'keyword', + }, + 'registry.path': { + dashed_name: 'registry-path', + description: 'Full path, including hive, key and value', + example: + 'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\winword.exe\\Debugger', + flat_name: 'registry.path', + ignore_above: 1024, + level: 'core', + name: 'path', + normalize: [], + short: 'Full path, including hive, key and value', + type: 'keyword', + }, + 'registry.value': { + dashed_name: 'registry-value', + description: 'Name of the value written.', + example: 'Debugger', + flat_name: 'registry.value', + ignore_above: 1024, + level: 'core', + name: 'value', + normalize: [], + short: 'Name of the value written.', + type: 'keyword', + }, + }, + group: 2, + name: 'registry', + prefix: 'registry.', + reusable: { + expected: [ + { + as: 'registry', + at: 'threat.indicator', + full: 'threat.indicator.registry', + }, + { + as: 'registry', + at: 'threat.enrichments.indicator', + full: 'threat.enrichments.indicator.registry', + }, + ], + top_level: true, + }, + short: 'Fields related to Windows Registry operations.', + title: 'Registry', + type: 'group', + }, + related: { + description: + 'This field set is meant to facilitate pivoting around a piece of data.\nSome pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`.\nA concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:192.0.2.15`.', + fields: { + 'related.hash': { + dashed_name: 'related-hash', + description: + "All the hashes seen on your event. Populating this field, then using it to search for hashes can help in situations where you're unsure what the hash algorithm is (and therefore which key name to search).", + flat_name: 'related.hash', + ignore_above: 1024, + level: 'extended', + name: 'hash', + normalize: ['array'], + short: 'All the hashes seen on your event.', + type: 'keyword', + }, + 'related.hosts': { + dashed_name: 'related-hosts', + description: + 'All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases.', + flat_name: 'related.hosts', + ignore_above: 1024, + level: 'extended', + name: 'hosts', + normalize: ['array'], + short: 'All the host identifiers seen on your event.', + type: 'keyword', + }, + 'related.ip': { + dashed_name: 'related-ip', + description: 'All of the IPs seen on your event.', + flat_name: 'related.ip', + level: 'extended', + name: 'ip', + normalize: ['array'], + short: 'All of the IPs seen on your event.', + type: 'ip', + }, + 'related.user': { + dashed_name: 'related-user', + description: 'All the user names or other user identifiers seen on the event.', + flat_name: 'related.user', + ignore_above: 1024, + level: 'extended', + name: 'user', + normalize: ['array'], + short: 'All the user names or other user identifiers seen on the event.', + type: 'keyword', + }, + }, + group: 2, + name: 'related', + prefix: 'related.', + short: 'Fields meant to facilitate pivoting around a piece of data.', + title: 'Related', + type: 'group', + }, + risk: { + beta: 'These fields are in beta and are subject to change.', + description: + 'Fields for describing risk score and risk level of entities such as hosts and users. These fields are not allowed to be nested under `event.*`. Please continue to use `event.risk_score` and `event.risk_score_norm` for event risk.', + fields: { + 'risk.calculated_level': { + dashed_name: 'risk-calculated-level', + description: + 'A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.', + example: 'High', + flat_name: 'risk.calculated_level', + ignore_above: 1024, + level: 'extended', + name: 'calculated_level', + normalize: [], + short: + 'A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.', + type: 'keyword', + }, + 'risk.calculated_score': { + dashed_name: 'risk-calculated-score', + description: + 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.', + example: 880.73, + flat_name: 'risk.calculated_score', + level: 'extended', + name: 'calculated_score', + normalize: [], + short: + 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.', + type: 'float', + }, + 'risk.calculated_score_norm': { + dashed_name: 'risk-calculated-score-norm', + description: + 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring, and normalized to a range of 0 to 100.', + example: 88.73, + flat_name: 'risk.calculated_score_norm', + level: 'extended', + name: 'calculated_score_norm', + normalize: [], + short: 'A normalized risk score calculated by an internal system.', + type: 'float', + }, + 'risk.static_level': { + dashed_name: 'risk-static-level', + description: + 'A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.', + example: 'High', + flat_name: 'risk.static_level', + ignore_above: 1024, + level: 'extended', + name: 'static_level', + normalize: [], + short: + 'A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.', + type: 'keyword', + }, + 'risk.static_score': { + dashed_name: 'risk-static-score', + description: + 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.', + example: 830, + flat_name: 'risk.static_score', + level: 'extended', + name: 'static_score', + normalize: [], + short: + 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.', + type: 'float', + }, + 'risk.static_score_norm': { + dashed_name: 'risk-static-score-norm', + description: + 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform, and normalized to a range of 0 to 100.', + example: 83, + flat_name: 'risk.static_score_norm', + level: 'extended', + name: 'static_score_norm', + normalize: [], + short: 'A normalized risk score calculated by an external system.', + type: 'float', + }, + }, + group: 2, + name: 'risk', + prefix: 'risk.', + reusable: { + expected: [ + { as: 'risk', at: 'host', full: 'host.risk' }, + { as: 'risk', at: 'user', full: 'user.risk' }, + ], + top_level: false, + }, + short: 'Fields for describing risk score and level.', + title: 'Risk information', + type: 'group', + }, + rule: { + description: + 'Rule fields are used to capture the specifics of any observer or agent rules that generate alerts or other notable events.\nExamples of data sources that would populate the rule fields include: network admission control platforms, network or host IDS/IPS, network firewalls, web application firewalls, url filters, endpoint detection and response (EDR) systems, etc.', + fields: { + 'rule.author': { + dashed_name: 'rule-author', + description: + 'Name, organization, or pseudonym of the author or authors who created the rule used to generate this event.', + example: '["Star-Lord"]', + flat_name: 'rule.author', + ignore_above: 1024, + level: 'extended', + name: 'author', + normalize: ['array'], + short: 'Rule author', + type: 'keyword', + }, + 'rule.category': { + dashed_name: 'rule-category', + description: + 'A categorization value keyword used by the entity using the rule for detection of this event.', + example: 'Attempted Information Leak', + flat_name: 'rule.category', + ignore_above: 1024, + level: 'extended', + name: 'category', + normalize: [], + short: 'Rule category', + type: 'keyword', + }, + 'rule.description': { + dashed_name: 'rule-description', + description: 'The description of the rule generating the event.', + example: 'Block requests to public DNS over HTTPS / TLS protocols', + flat_name: 'rule.description', + ignore_above: 1024, + level: 'extended', + name: 'description', + normalize: [], + short: 'Rule description', + type: 'keyword', + }, + 'rule.id': { + dashed_name: 'rule-id', + description: + 'A rule ID that is unique within the scope of an agent, observer, or other entity using the rule for detection of this event.', + example: 101, + flat_name: 'rule.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + short: 'Rule ID', + type: 'keyword', + }, + 'rule.license': { + dashed_name: 'rule-license', + description: + 'Name of the license under which the rule used to generate this event is made available.', + example: 'Apache 2.0', + flat_name: 'rule.license', + ignore_above: 1024, + level: 'extended', + name: 'license', + normalize: [], + short: 'Rule license', + type: 'keyword', + }, + 'rule.name': { + dashed_name: 'rule-name', + description: 'The name of the rule or signature generating the event.', + example: 'BLOCK_DNS_over_TLS', + flat_name: 'rule.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'Rule name', + type: 'keyword', + }, + 'rule.reference': { + dashed_name: 'rule-reference', + description: + "Reference URL to additional information about the rule used to generate this event.\nThe URL can point to the vendor's documentation about the rule. If that's not available, it can also be a link to a more general page describing this type of alert.", + example: 'https://en.wikipedia.org/wiki/DNS_over_TLS', + flat_name: 'rule.reference', + ignore_above: 1024, + level: 'extended', + name: 'reference', + normalize: [], + short: 'Rule reference URL', + type: 'keyword', + }, + 'rule.ruleset': { + dashed_name: 'rule-ruleset', + description: + 'Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member.', + example: 'Standard_Protocol_Filters', + flat_name: 'rule.ruleset', + ignore_above: 1024, + level: 'extended', + name: 'ruleset', + normalize: [], + short: 'Rule ruleset', + type: 'keyword', + }, + 'rule.uuid': { + dashed_name: 'rule-uuid', + description: + 'A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event.', + example: 1100110011, + flat_name: 'rule.uuid', + ignore_above: 1024, + level: 'extended', + name: 'uuid', + normalize: [], + short: 'Rule UUID', + type: 'keyword', + }, + 'rule.version': { + dashed_name: 'rule-version', + description: 'The version / revision of the rule being used for analysis.', + example: 1.1, + flat_name: 'rule.version', + ignore_above: 1024, + level: 'extended', + name: 'version', + normalize: [], + short: 'Rule version', + type: 'keyword', + }, + }, + group: 2, + name: 'rule', + prefix: 'rule.', + short: 'Fields to capture details about rules used to generate alerts or other notable events.', + title: 'Rule', + type: 'group', + }, + server: { + description: + 'A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records.\nFor TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events.\nClient / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately.', + fields: { + 'server.address': { + dashed_name: 'server-address', + description: + 'Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field.\nThen it should be duplicated to `.ip` or `.domain`, depending on which one it is.', + flat_name: 'server.address', + ignore_above: 1024, + level: 'extended', + name: 'address', + normalize: [], + short: 'Server network address.', + type: 'keyword', + }, + 'server.as.number': { + dashed_name: 'server-as-number', + description: + 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', + example: 15169, + flat_name: 'server.as.number', + level: 'extended', + name: 'number', + normalize: [], + original_fieldset: 'as', + short: 'Unique number allocated to the autonomous system.', + type: 'long', + }, + 'server.as.organization.name': { + dashed_name: 'server-as-organization-name', + description: 'Organization name.', + example: 'Google LLC', + flat_name: 'server.as.organization.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'server.as.organization.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'organization.name', + normalize: [], + original_fieldset: 'as', + short: 'Organization name.', + type: 'keyword', + }, + 'server.bytes': { + dashed_name: 'server-bytes', + description: 'Bytes sent from the server to the client.', + example: 184, + flat_name: 'server.bytes', + format: 'bytes', + level: 'core', + name: 'bytes', + normalize: [], + short: 'Bytes sent from the server to the client.', + type: 'long', + }, + 'server.domain': { + dashed_name: 'server-domain', + description: + 'The domain name of the server system.\nThis value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.', + example: 'foo.example.com', + flat_name: 'server.domain', + ignore_above: 1024, + level: 'core', + name: 'domain', + normalize: [], + short: 'The domain name of the server.', + type: 'keyword', + }, + 'server.geo.city_name': { + dashed_name: 'server-geo-city-name', + description: 'City name.', + example: 'Montreal', + flat_name: 'server.geo.city_name', + ignore_above: 1024, + level: 'core', + name: 'city_name', + normalize: [], + original_fieldset: 'geo', + short: 'City name.', + type: 'keyword', + }, + 'server.geo.continent_code': { + dashed_name: 'server-geo-continent-code', + description: "Two-letter code representing continent's name.", + example: 'NA', + flat_name: 'server.geo.continent_code', + ignore_above: 1024, + level: 'core', + name: 'continent_code', + normalize: [], + original_fieldset: 'geo', + short: 'Continent code.', + type: 'keyword', + }, + 'server.geo.continent_name': { + dashed_name: 'server-geo-continent-name', + description: 'Name of the continent.', + example: 'North America', + flat_name: 'server.geo.continent_name', + ignore_above: 1024, + level: 'core', + name: 'continent_name', + normalize: [], + original_fieldset: 'geo', + short: 'Name of the continent.', + type: 'keyword', + }, + 'server.geo.country_iso_code': { + dashed_name: 'server-geo-country-iso-code', + description: 'Country ISO code.', + example: 'CA', + flat_name: 'server.geo.country_iso_code', + ignore_above: 1024, + level: 'core', + name: 'country_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Country ISO code.', + type: 'keyword', + }, + 'server.geo.country_name': { + dashed_name: 'server-geo-country-name', + description: 'Country name.', + example: 'Canada', + flat_name: 'server.geo.country_name', + ignore_above: 1024, + level: 'core', + name: 'country_name', + normalize: [], + original_fieldset: 'geo', + short: 'Country name.', + type: 'keyword', + }, + 'server.geo.location': { + dashed_name: 'server-geo-location', + description: 'Longitude and latitude.', + example: '{ "lon": -73.614830, "lat": 45.505918 }', + flat_name: 'server.geo.location', + level: 'core', + name: 'location', + normalize: [], + original_fieldset: 'geo', + short: 'Longitude and latitude.', + type: 'geo_point', + }, + 'server.geo.name': { + dashed_name: 'server-geo-name', + description: + 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', + example: 'boston-dc', + flat_name: 'server.geo.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'geo', + short: 'User-defined description of a location.', + type: 'keyword', + }, + 'server.geo.postal_code': { + dashed_name: 'server-geo-postal-code', + description: + 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', + example: 94040, + flat_name: 'server.geo.postal_code', + ignore_above: 1024, + level: 'core', + name: 'postal_code', + normalize: [], + original_fieldset: 'geo', + short: 'Postal code.', + type: 'keyword', + }, + 'server.geo.region_iso_code': { + dashed_name: 'server-geo-region-iso-code', + description: 'Region ISO code.', + example: 'CA-QC', + flat_name: 'server.geo.region_iso_code', + ignore_above: 1024, + level: 'core', + name: 'region_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Region ISO code.', + type: 'keyword', + }, + 'server.geo.region_name': { + dashed_name: 'server-geo-region-name', + description: 'Region name.', + example: 'Quebec', + flat_name: 'server.geo.region_name', + ignore_above: 1024, + level: 'core', + name: 'region_name', + normalize: [], + original_fieldset: 'geo', + short: 'Region name.', + type: 'keyword', + }, + 'server.geo.timezone': { + dashed_name: 'server-geo-timezone', + description: 'The time zone of the location, such as IANA time zone name.', + example: 'America/Argentina/Buenos_Aires', + flat_name: 'server.geo.timezone', + ignore_above: 1024, + level: 'core', + name: 'timezone', + normalize: [], + original_fieldset: 'geo', + short: 'Time zone.', + type: 'keyword', + }, + 'server.ip': { + dashed_name: 'server-ip', + description: 'IP address of the server (IPv4 or IPv6).', + flat_name: 'server.ip', + level: 'core', + name: 'ip', + normalize: [], + short: 'IP address of the server.', + type: 'ip', + }, + 'server.mac': { + dashed_name: 'server-mac', + description: + 'MAC address of the server.\nThe notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.', + example: '00-00-5E-00-53-23', + flat_name: 'server.mac', + ignore_above: 1024, + level: 'core', + name: 'mac', + normalize: [], + pattern: '^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$', + short: 'MAC address of the server.', + type: 'keyword', + }, + 'server.nat.ip': { + dashed_name: 'server-nat-ip', + description: + 'Translated ip of destination based NAT sessions (e.g. internet to private DMZ)\nTypically used with load balancers, firewalls, or routers.', + flat_name: 'server.nat.ip', + level: 'extended', + name: 'nat.ip', + normalize: [], + short: 'Server NAT ip', + type: 'ip', + }, + 'server.nat.port': { + dashed_name: 'server-nat-port', + description: + 'Translated port of destination based NAT sessions (e.g. internet to private DMZ)\nTypically used with load balancers, firewalls, or routers.', + flat_name: 'server.nat.port', + format: 'string', + level: 'extended', + name: 'nat.port', + normalize: [], + short: 'Server NAT port', + type: 'long', + }, + 'server.packets': { + dashed_name: 'server-packets', + description: 'Packets sent from the server to the client.', + example: 12, + flat_name: 'server.packets', + level: 'core', + name: 'packets', + normalize: [], + short: 'Packets sent from the server to the client.', + type: 'long', + }, + 'server.port': { + dashed_name: 'server-port', + description: 'Port of the server.', + flat_name: 'server.port', + format: 'string', + level: 'core', + name: 'port', + normalize: [], + short: 'Port of the server.', + type: 'long', + }, + 'server.registered_domain': { + dashed_name: 'server-registered-domain', + description: + 'The highest registered server domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', + example: 'example.com', + flat_name: 'server.registered_domain', + ignore_above: 1024, + level: 'extended', + name: 'registered_domain', + normalize: [], + short: 'The highest registered server domain, stripped of the subdomain.', + type: 'keyword', + }, + 'server.subdomain': { + dashed_name: 'server-subdomain', + description: + 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', + example: 'east', + flat_name: 'server.subdomain', + ignore_above: 1024, + level: 'extended', + name: 'subdomain', + normalize: [], + short: 'The subdomain of the domain.', + type: 'keyword', + }, + 'server.top_level_domain': { + dashed_name: 'server-top-level-domain', + description: + 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', + example: 'co.uk', + flat_name: 'server.top_level_domain', + ignore_above: 1024, + level: 'extended', + name: 'top_level_domain', + normalize: [], + short: 'The effective top level domain (com, org, net, co.uk).', + type: 'keyword', + }, + 'server.user.domain': { + dashed_name: 'server-user-domain', + description: + 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'server.user.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'user', + short: 'Name of the directory the user is a member of.', + type: 'keyword', + }, + 'server.user.email': { + dashed_name: 'server-user-email', + description: 'User email address.', + flat_name: 'server.user.email', + ignore_above: 1024, + level: 'extended', + name: 'email', + normalize: [], + original_fieldset: 'user', + short: 'User email address.', + type: 'keyword', + }, + 'server.user.full_name': { + dashed_name: 'server-user-full-name', + description: "User's full name, if available.", + example: 'Albert Einstein', + flat_name: 'server.user.full_name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'server.user.full_name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full_name', + normalize: [], + original_fieldset: 'user', + short: "User's full name, if available.", + type: 'keyword', + }, + 'server.user.group.domain': { + dashed_name: 'server-user-group-domain', + description: + 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'server.user.group.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'group', + short: 'Name of the directory the group is a member of.', + type: 'keyword', + }, + 'server.user.group.id': { + dashed_name: 'server-user-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'server.user.group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'server.user.group.name': { + dashed_name: 'server-user-group-name', + description: 'Name of the group.', + flat_name: 'server.user.group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'server.user.hash': { + dashed_name: 'server-user-hash', + description: + 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', + flat_name: 'server.user.hash', + ignore_above: 1024, + level: 'extended', + name: 'hash', + normalize: [], + original_fieldset: 'user', + short: 'Unique user hash to correlate information for a user in anonymized form.', + type: 'keyword', + }, + 'server.user.id': { + dashed_name: 'server-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'server.user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'server.user.name': { + dashed_name: 'server-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'server.user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'server.user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'server.user.roles': { + dashed_name: 'server-user-roles', + description: 'Array of user roles at the time of the event.', + example: '["kibana_admin", "reporting_user"]', + flat_name: 'server.user.roles', + ignore_above: 1024, + level: 'extended', + name: 'roles', + normalize: ['array'], + original_fieldset: 'user', + short: 'Array of user roles at the time of the event.', + type: 'keyword', + }, + }, + group: 2, + name: 'server', + nestings: ['server.as', 'server.geo', 'server.user'], + prefix: 'server.', + reused_here: [ + { + full: 'server.as', + schema_name: 'as', + short: 'Fields describing an Autonomous System (Internet routing prefix).', + }, + { + full: 'server.geo', + schema_name: 'geo', + short: 'Fields describing a location.', + }, + { + full: 'server.user', + schema_name: 'user', + short: 'Fields to describe the user relevant to the event.', + }, + ], + short: 'Fields about the server side of a network connection, used with client.', + title: 'Server', + type: 'group', + }, + service: { + description: + 'The service fields describe the service for or from which the data was collected.\nThese fields help you find and correlate logs for a specific service and version.', + fields: { + 'service.address': { + dashed_name: 'service-address', + description: + 'Address where data about this service was collected from.\nThis should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets).', + example: '172.26.0.2:5432', + flat_name: 'service.address', + ignore_above: 1024, + level: 'extended', + name: 'address', + normalize: [], + short: 'Address of this service.', + type: 'keyword', + }, + 'service.environment': { + beta: 'This field is beta and subject to change.', + dashed_name: 'service-environment', + description: + 'Identifies the environment where the service is running.\nIf the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment.', + example: 'production', + flat_name: 'service.environment', + ignore_above: 1024, + level: 'extended', + name: 'environment', + normalize: [], + short: 'Environment of the service.', + type: 'keyword', + }, + 'service.ephemeral_id': { + dashed_name: 'service-ephemeral-id', + description: + 'Ephemeral identifier of this service (if one exists).\nThis id normally changes across restarts, but `service.id` does not.', + example: '8a4f500f', + flat_name: 'service.ephemeral_id', + ignore_above: 1024, + level: 'extended', + name: 'ephemeral_id', + normalize: [], + short: 'Ephemeral identifier of this service.', + type: 'keyword', + }, + 'service.id': { + dashed_name: 'service-id', + description: + 'Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes.\nThis id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event.\nNote that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead.', + example: 'd37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6', + flat_name: 'service.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + short: 'Unique identifier of the running service.', + type: 'keyword', + }, + 'service.name': { + dashed_name: 'service-name', + description: + 'Name of the service data is collected from.\nThe name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name.\nIn the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified.', + example: 'elasticsearch-metrics', + flat_name: 'service.name', + ignore_above: 1024, + level: 'core', + name: 'name', + normalize: [], + short: 'Name of the service.', + type: 'keyword', + }, + 'service.node.name': { + dashed_name: 'service-node-name', + description: + "Name of a service node.\nThis allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service.\nIn the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set.", + example: 'instance-0000000016', + flat_name: 'service.node.name', + ignore_above: 1024, + level: 'extended', + name: 'node.name', + normalize: [], + short: 'Name of the service node.', + type: 'keyword', + }, + 'service.node.role': { + dashed_name: 'service-node-role', + description: + 'Deprecated for removal in next major version release. This field will be superseded by `node.roles`.\nRole of a service node.\nThis allows for distinction between different running roles of the same service.\nIn the case of Kibana, the `service.node.role` could be `ui` or `background_tasks`.\nIn the case of Elasticsearch, the `service.node.role` could be `master` or `data`.\nOther services could use this to distinguish between a `web` and `worker` role running as part of the service.', + example: 'background_tasks', + flat_name: 'service.node.role', + ignore_above: 1024, + level: 'extended', + name: 'node.role', + normalize: [], + short: 'Deprecated role (singular) of the service node.', + type: 'keyword', + }, + 'service.node.roles': { + dashed_name: 'service-node-roles', + description: + 'Roles of a service node.\nThis allows for distinction between different running roles of the same service.\nIn the case of Kibana, the `service.node.role` could be `ui` or `background_tasks` or both.\nIn the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both.\nOther services could use this to distinguish between a `web` and `worker` role running as part of the service.', + example: '["ui", "background_tasks"]', + flat_name: 'service.node.roles', + ignore_above: 1024, + level: 'extended', + name: 'node.roles', + normalize: ['array'], + short: 'Roles of the service node.', + type: 'keyword', + }, + 'service.origin.address': { + dashed_name: 'service-origin-address', + description: + 'Address where data about this service was collected from.\nThis should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets).', + example: '172.26.0.2:5432', + flat_name: 'service.origin.address', + ignore_above: 1024, + level: 'extended', + name: 'address', + normalize: [], + original_fieldset: 'service', + short: 'Address of this service.', + type: 'keyword', + }, + 'service.origin.environment': { + beta: 'This field is beta and subject to change.', + dashed_name: 'service-origin-environment', + description: + 'Identifies the environment where the service is running.\nIf the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment.', + example: 'production', + flat_name: 'service.origin.environment', + ignore_above: 1024, + level: 'extended', + name: 'environment', + normalize: [], + original_fieldset: 'service', + short: 'Environment of the service.', + type: 'keyword', + }, + 'service.origin.ephemeral_id': { + dashed_name: 'service-origin-ephemeral-id', + description: + 'Ephemeral identifier of this service (if one exists).\nThis id normally changes across restarts, but `service.id` does not.', + example: '8a4f500f', + flat_name: 'service.origin.ephemeral_id', + ignore_above: 1024, + level: 'extended', + name: 'ephemeral_id', + normalize: [], + original_fieldset: 'service', + short: 'Ephemeral identifier of this service.', + type: 'keyword', + }, + 'service.origin.id': { + dashed_name: 'service-origin-id', + description: + 'Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes.\nThis id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event.\nNote that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead.', + example: 'd37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6', + flat_name: 'service.origin.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'service', + short: 'Unique identifier of the running service.', + type: 'keyword', + }, + 'service.origin.name': { + dashed_name: 'service-origin-name', + description: + 'Name of the service data is collected from.\nThe name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name.\nIn the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified.', + example: 'elasticsearch-metrics', + flat_name: 'service.origin.name', + ignore_above: 1024, + level: 'core', + name: 'name', + normalize: [], + original_fieldset: 'service', + short: 'Name of the service.', + type: 'keyword', + }, + 'service.origin.node.name': { + dashed_name: 'service-origin-node-name', + description: + "Name of a service node.\nThis allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service.\nIn the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set.", + example: 'instance-0000000016', + flat_name: 'service.origin.node.name', + ignore_above: 1024, + level: 'extended', + name: 'node.name', + normalize: [], + original_fieldset: 'service', + short: 'Name of the service node.', + type: 'keyword', + }, + 'service.origin.node.role': { + dashed_name: 'service-origin-node-role', + description: + 'Deprecated for removal in next major version release. This field will be superseded by `node.roles`.\nRole of a service node.\nThis allows for distinction between different running roles of the same service.\nIn the case of Kibana, the `service.node.role` could be `ui` or `background_tasks`.\nIn the case of Elasticsearch, the `service.node.role` could be `master` or `data`.\nOther services could use this to distinguish between a `web` and `worker` role running as part of the service.', + example: 'background_tasks', + flat_name: 'service.origin.node.role', + ignore_above: 1024, + level: 'extended', + name: 'node.role', + normalize: [], + original_fieldset: 'service', + short: 'Deprecated role (singular) of the service node.', + type: 'keyword', + }, + 'service.origin.node.roles': { + dashed_name: 'service-origin-node-roles', + description: + 'Roles of a service node.\nThis allows for distinction between different running roles of the same service.\nIn the case of Kibana, the `service.node.role` could be `ui` or `background_tasks` or both.\nIn the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both.\nOther services could use this to distinguish between a `web` and `worker` role running as part of the service.', + example: '["ui", "background_tasks"]', + flat_name: 'service.origin.node.roles', + ignore_above: 1024, + level: 'extended', + name: 'node.roles', + normalize: ['array'], + original_fieldset: 'service', + short: 'Roles of the service node.', + type: 'keyword', + }, + 'service.origin.state': { + dashed_name: 'service-origin-state', + description: 'Current state of the service.', + flat_name: 'service.origin.state', + ignore_above: 1024, + level: 'core', + name: 'state', + normalize: [], + original_fieldset: 'service', + short: 'Current state of the service.', + type: 'keyword', + }, + 'service.origin.type': { + dashed_name: 'service-origin-type', + description: + 'The type of the service data is collected from.\nThe type can be used to group and correlate logs and metrics from one service type.\nExample: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`.', + example: 'elasticsearch', + flat_name: 'service.origin.type', + ignore_above: 1024, + level: 'core', + name: 'type', + normalize: [], + original_fieldset: 'service', + short: 'The type of the service.', + type: 'keyword', + }, + 'service.origin.version': { + dashed_name: 'service-origin-version', + description: + 'Version of the service the data was collected from.\nThis allows to look at a data set only for a specific version of a service.', + example: '3.2.4', + flat_name: 'service.origin.version', + ignore_above: 1024, + level: 'core', + name: 'version', + normalize: [], + original_fieldset: 'service', + short: 'Version of the service.', + type: 'keyword', + }, + 'service.state': { + dashed_name: 'service-state', + description: 'Current state of the service.', + flat_name: 'service.state', + ignore_above: 1024, + level: 'core', + name: 'state', + normalize: [], + short: 'Current state of the service.', + type: 'keyword', + }, + 'service.target.address': { + dashed_name: 'service-target-address', + description: + 'Address where data about this service was collected from.\nThis should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets).', + example: '172.26.0.2:5432', + flat_name: 'service.target.address', + ignore_above: 1024, + level: 'extended', + name: 'address', + normalize: [], + original_fieldset: 'service', + short: 'Address of this service.', + type: 'keyword', + }, + 'service.target.environment': { + beta: 'This field is beta and subject to change.', + dashed_name: 'service-target-environment', + description: + 'Identifies the environment where the service is running.\nIf the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment.', + example: 'production', + flat_name: 'service.target.environment', + ignore_above: 1024, + level: 'extended', + name: 'environment', + normalize: [], + original_fieldset: 'service', + short: 'Environment of the service.', + type: 'keyword', + }, + 'service.target.ephemeral_id': { + dashed_name: 'service-target-ephemeral-id', + description: + 'Ephemeral identifier of this service (if one exists).\nThis id normally changes across restarts, but `service.id` does not.', + example: '8a4f500f', + flat_name: 'service.target.ephemeral_id', + ignore_above: 1024, + level: 'extended', + name: 'ephemeral_id', + normalize: [], + original_fieldset: 'service', + short: 'Ephemeral identifier of this service.', + type: 'keyword', + }, + 'service.target.id': { + dashed_name: 'service-target-id', + description: + 'Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes.\nThis id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event.\nNote that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead.', + example: 'd37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6', + flat_name: 'service.target.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'service', + short: 'Unique identifier of the running service.', + type: 'keyword', + }, + 'service.target.name': { + dashed_name: 'service-target-name', + description: + 'Name of the service data is collected from.\nThe name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name.\nIn the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified.', + example: 'elasticsearch-metrics', + flat_name: 'service.target.name', + ignore_above: 1024, + level: 'core', + name: 'name', + normalize: [], + original_fieldset: 'service', + short: 'Name of the service.', + type: 'keyword', + }, + 'service.target.node.name': { + dashed_name: 'service-target-node-name', + description: + "Name of a service node.\nThis allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service.\nIn the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set.", + example: 'instance-0000000016', + flat_name: 'service.target.node.name', + ignore_above: 1024, + level: 'extended', + name: 'node.name', + normalize: [], + original_fieldset: 'service', + short: 'Name of the service node.', + type: 'keyword', + }, + 'service.target.node.role': { + dashed_name: 'service-target-node-role', + description: + 'Deprecated for removal in next major version release. This field will be superseded by `node.roles`.\nRole of a service node.\nThis allows for distinction between different running roles of the same service.\nIn the case of Kibana, the `service.node.role` could be `ui` or `background_tasks`.\nIn the case of Elasticsearch, the `service.node.role` could be `master` or `data`.\nOther services could use this to distinguish between a `web` and `worker` role running as part of the service.', + example: 'background_tasks', + flat_name: 'service.target.node.role', + ignore_above: 1024, + level: 'extended', + name: 'node.role', + normalize: [], + original_fieldset: 'service', + short: 'Deprecated role (singular) of the service node.', + type: 'keyword', + }, + 'service.target.node.roles': { + dashed_name: 'service-target-node-roles', + description: + 'Roles of a service node.\nThis allows for distinction between different running roles of the same service.\nIn the case of Kibana, the `service.node.role` could be `ui` or `background_tasks` or both.\nIn the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both.\nOther services could use this to distinguish between a `web` and `worker` role running as part of the service.', + example: '["ui", "background_tasks"]', + flat_name: 'service.target.node.roles', + ignore_above: 1024, + level: 'extended', + name: 'node.roles', + normalize: ['array'], + original_fieldset: 'service', + short: 'Roles of the service node.', + type: 'keyword', + }, + 'service.target.state': { + dashed_name: 'service-target-state', + description: 'Current state of the service.', + flat_name: 'service.target.state', + ignore_above: 1024, + level: 'core', + name: 'state', + normalize: [], + original_fieldset: 'service', + short: 'Current state of the service.', + type: 'keyword', + }, + 'service.target.type': { + dashed_name: 'service-target-type', + description: + 'The type of the service data is collected from.\nThe type can be used to group and correlate logs and metrics from one service type.\nExample: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`.', + example: 'elasticsearch', + flat_name: 'service.target.type', + ignore_above: 1024, + level: 'core', + name: 'type', + normalize: [], + original_fieldset: 'service', + short: 'The type of the service.', + type: 'keyword', + }, + 'service.target.version': { + dashed_name: 'service-target-version', + description: + 'Version of the service the data was collected from.\nThis allows to look at a data set only for a specific version of a service.', + example: '3.2.4', + flat_name: 'service.target.version', + ignore_above: 1024, + level: 'core', + name: 'version', + normalize: [], + original_fieldset: 'service', + short: 'Version of the service.', + type: 'keyword', + }, + 'service.type': { + dashed_name: 'service-type', + description: + 'The type of the service data is collected from.\nThe type can be used to group and correlate logs and metrics from one service type.\nExample: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`.', + example: 'elasticsearch', + flat_name: 'service.type', + ignore_above: 1024, + level: 'core', + name: 'type', + normalize: [], + short: 'The type of the service.', + type: 'keyword', + }, + 'service.version': { + dashed_name: 'service-version', + description: + 'Version of the service the data was collected from.\nThis allows to look at a data set only for a specific version of a service.', + example: '3.2.4', + flat_name: 'service.version', + ignore_above: 1024, + level: 'core', + name: 'version', + normalize: [], + short: 'Version of the service.', + type: 'keyword', + }, + }, + footnote: + 'The service fields may be self-nested under service.origin.* and service.target.* to describe origin or target services in the context of incoming or outgoing requests, respectively. However, the fieldsets service.origin.* and service.target.* must not be confused with the root service fieldset that is used to describe the actual service under observation. The fieldset service.origin.* may only be used in the context of incoming requests or events to describe the originating service of the request. The fieldset service.target.* may only be used in the context of outgoing requests or events to describe the target service of the request.', + group: 2, + name: 'service', + nestings: ['service.origin', 'service.target'], + prefix: 'service.', + reusable: { + expected: [ + { + as: 'origin', + at: 'service', + beta: 'Reusing the `service` fields in this location is currently considered beta.', + full: 'service.origin', + short_override: 'Describes the origin service in case of an incoming request or event.', + }, + { + as: 'target', + at: 'service', + beta: 'Reusing the `service` fields in this location is currently considered beta.', + full: 'service.target', + short_override: 'Describes the target service in case of an outgoing request or event.', + }, + ], + top_level: true, + }, + reused_here: [ + { + beta: 'Reusing the `service` fields in this location is currently considered beta.', + full: 'service.origin', + schema_name: 'service', + short: 'Describes the origin service in case of an incoming request or event.', + }, + { + beta: 'Reusing the `service` fields in this location is currently considered beta.', + full: 'service.target', + schema_name: 'service', + short: 'Describes the target service in case of an outgoing request or event.', + }, + ], + short: 'Fields describing the service for or from which the data was collected.', + title: 'Service', + type: 'group', + }, + source: { + description: + 'Source fields capture details about the sender of a network exchange/packet. These fields are populated from a network event, packet, or other event containing details of a network transaction.\nSource fields are usually populated in conjunction with destination fields. The source and destination fields are considered the baseline and should always be filled if an event contains source and destination details from a network transaction. If the event also contains identification of the client and server roles, then the client and server fields should also be populated.', + fields: { + 'source.address': { + dashed_name: 'source-address', + description: + 'Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field.\nThen it should be duplicated to `.ip` or `.domain`, depending on which one it is.', + flat_name: 'source.address', + ignore_above: 1024, + level: 'extended', + name: 'address', + normalize: [], + short: 'Source network address.', + type: 'keyword', + }, + 'source.as.number': { + dashed_name: 'source-as-number', + description: + 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', + example: 15169, + flat_name: 'source.as.number', + level: 'extended', + name: 'number', + normalize: [], + original_fieldset: 'as', + short: 'Unique number allocated to the autonomous system.', + type: 'long', + }, + 'source.as.organization.name': { + dashed_name: 'source-as-organization-name', + description: 'Organization name.', + example: 'Google LLC', + flat_name: 'source.as.organization.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'source.as.organization.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'organization.name', + normalize: [], + original_fieldset: 'as', + short: 'Organization name.', + type: 'keyword', + }, + 'source.bytes': { + dashed_name: 'source-bytes', + description: 'Bytes sent from the source to the destination.', + example: 184, + flat_name: 'source.bytes', + format: 'bytes', + level: 'core', + name: 'bytes', + normalize: [], + short: 'Bytes sent from the source to the destination.', + type: 'long', + }, + 'source.domain': { + dashed_name: 'source-domain', + description: + 'The domain name of the source system.\nThis value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.', + example: 'foo.example.com', + flat_name: 'source.domain', + ignore_above: 1024, + level: 'core', + name: 'domain', + normalize: [], + short: 'The domain name of the source.', + type: 'keyword', + }, + 'source.geo.city_name': { + dashed_name: 'source-geo-city-name', + description: 'City name.', + example: 'Montreal', + flat_name: 'source.geo.city_name', + ignore_above: 1024, + level: 'core', + name: 'city_name', + normalize: [], + original_fieldset: 'geo', + short: 'City name.', + type: 'keyword', + }, + 'source.geo.continent_code': { + dashed_name: 'source-geo-continent-code', + description: "Two-letter code representing continent's name.", + example: 'NA', + flat_name: 'source.geo.continent_code', + ignore_above: 1024, + level: 'core', + name: 'continent_code', + normalize: [], + original_fieldset: 'geo', + short: 'Continent code.', + type: 'keyword', + }, + 'source.geo.continent_name': { + dashed_name: 'source-geo-continent-name', + description: 'Name of the continent.', + example: 'North America', + flat_name: 'source.geo.continent_name', + ignore_above: 1024, + level: 'core', + name: 'continent_name', + normalize: [], + original_fieldset: 'geo', + short: 'Name of the continent.', + type: 'keyword', + }, + 'source.geo.country_iso_code': { + dashed_name: 'source-geo-country-iso-code', + description: 'Country ISO code.', + example: 'CA', + flat_name: 'source.geo.country_iso_code', + ignore_above: 1024, + level: 'core', + name: 'country_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Country ISO code.', + type: 'keyword', + }, + 'source.geo.country_name': { + dashed_name: 'source-geo-country-name', + description: 'Country name.', + example: 'Canada', + flat_name: 'source.geo.country_name', + ignore_above: 1024, + level: 'core', + name: 'country_name', + normalize: [], + original_fieldset: 'geo', + short: 'Country name.', + type: 'keyword', + }, + 'source.geo.location': { + dashed_name: 'source-geo-location', + description: 'Longitude and latitude.', + example: '{ "lon": -73.614830, "lat": 45.505918 }', + flat_name: 'source.geo.location', + level: 'core', + name: 'location', + normalize: [], + original_fieldset: 'geo', + short: 'Longitude and latitude.', + type: 'geo_point', + }, + 'source.geo.name': { + dashed_name: 'source-geo-name', + description: + 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', + example: 'boston-dc', + flat_name: 'source.geo.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'geo', + short: 'User-defined description of a location.', + type: 'keyword', + }, + 'source.geo.postal_code': { + dashed_name: 'source-geo-postal-code', + description: + 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', + example: 94040, + flat_name: 'source.geo.postal_code', + ignore_above: 1024, + level: 'core', + name: 'postal_code', + normalize: [], + original_fieldset: 'geo', + short: 'Postal code.', + type: 'keyword', + }, + 'source.geo.region_iso_code': { + dashed_name: 'source-geo-region-iso-code', + description: 'Region ISO code.', + example: 'CA-QC', + flat_name: 'source.geo.region_iso_code', + ignore_above: 1024, + level: 'core', + name: 'region_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Region ISO code.', + type: 'keyword', + }, + 'source.geo.region_name': { + dashed_name: 'source-geo-region-name', + description: 'Region name.', + example: 'Quebec', + flat_name: 'source.geo.region_name', + ignore_above: 1024, + level: 'core', + name: 'region_name', + normalize: [], + original_fieldset: 'geo', + short: 'Region name.', + type: 'keyword', + }, + 'source.geo.timezone': { + dashed_name: 'source-geo-timezone', + description: 'The time zone of the location, such as IANA time zone name.', + example: 'America/Argentina/Buenos_Aires', + flat_name: 'source.geo.timezone', + ignore_above: 1024, + level: 'core', + name: 'timezone', + normalize: [], + original_fieldset: 'geo', + short: 'Time zone.', + type: 'keyword', + }, + 'source.ip': { + dashed_name: 'source-ip', + description: 'IP address of the source (IPv4 or IPv6).', + flat_name: 'source.ip', + level: 'core', + name: 'ip', + normalize: [], + short: 'IP address of the source.', + type: 'ip', + }, + 'source.mac': { + dashed_name: 'source-mac', + description: + 'MAC address of the source.\nThe notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen.', + example: '00-00-5E-00-53-23', + flat_name: 'source.mac', + ignore_above: 1024, + level: 'core', + name: 'mac', + normalize: [], + pattern: '^[A-F0-9]{2}(-[A-F0-9]{2}){5,}$', + short: 'MAC address of the source.', + type: 'keyword', + }, + 'source.nat.ip': { + dashed_name: 'source-nat-ip', + description: + 'Translated ip of source based NAT sessions (e.g. internal client to internet)\nTypically connections traversing load balancers, firewalls, or routers.', + flat_name: 'source.nat.ip', + level: 'extended', + name: 'nat.ip', + normalize: [], + short: 'Source NAT ip', + type: 'ip', + }, + 'source.nat.port': { + dashed_name: 'source-nat-port', + description: + 'Translated port of source based NAT sessions. (e.g. internal client to internet)\nTypically used with load balancers, firewalls, or routers.', + flat_name: 'source.nat.port', + format: 'string', + level: 'extended', + name: 'nat.port', + normalize: [], + short: 'Source NAT port', + type: 'long', + }, + 'source.packets': { + dashed_name: 'source-packets', + description: 'Packets sent from the source to the destination.', + example: 12, + flat_name: 'source.packets', + level: 'core', + name: 'packets', + normalize: [], + short: 'Packets sent from the source to the destination.', + type: 'long', + }, + 'source.port': { + dashed_name: 'source-port', + description: 'Port of the source.', + flat_name: 'source.port', + format: 'string', + level: 'core', + name: 'port', + normalize: [], + short: 'Port of the source.', + type: 'long', + }, + 'source.registered_domain': { + dashed_name: 'source-registered-domain', + description: + 'The highest registered source domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', + example: 'example.com', + flat_name: 'source.registered_domain', + ignore_above: 1024, + level: 'extended', + name: 'registered_domain', + normalize: [], + short: 'The highest registered source domain, stripped of the subdomain.', + type: 'keyword', + }, + 'source.subdomain': { + dashed_name: 'source-subdomain', + description: + 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', + example: 'east', + flat_name: 'source.subdomain', + ignore_above: 1024, + level: 'extended', + name: 'subdomain', + normalize: [], + short: 'The subdomain of the domain.', + type: 'keyword', + }, + 'source.top_level_domain': { + dashed_name: 'source-top-level-domain', + description: + 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', + example: 'co.uk', + flat_name: 'source.top_level_domain', + ignore_above: 1024, + level: 'extended', + name: 'top_level_domain', + normalize: [], + short: 'The effective top level domain (com, org, net, co.uk).', + type: 'keyword', + }, + 'source.user.domain': { + dashed_name: 'source-user-domain', + description: + 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'source.user.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'user', + short: 'Name of the directory the user is a member of.', + type: 'keyword', + }, + 'source.user.email': { + dashed_name: 'source-user-email', + description: 'User email address.', + flat_name: 'source.user.email', + ignore_above: 1024, + level: 'extended', + name: 'email', + normalize: [], + original_fieldset: 'user', + short: 'User email address.', + type: 'keyword', + }, + 'source.user.full_name': { + dashed_name: 'source-user-full-name', + description: "User's full name, if available.", + example: 'Albert Einstein', + flat_name: 'source.user.full_name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'source.user.full_name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full_name', + normalize: [], + original_fieldset: 'user', + short: "User's full name, if available.", + type: 'keyword', + }, + 'source.user.group.domain': { + dashed_name: 'source-user-group-domain', + description: + 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'source.user.group.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'group', + short: 'Name of the directory the group is a member of.', + type: 'keyword', + }, + 'source.user.group.id': { + dashed_name: 'source-user-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'source.user.group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'source.user.group.name': { + dashed_name: 'source-user-group-name', + description: 'Name of the group.', + flat_name: 'source.user.group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'source.user.hash': { + dashed_name: 'source-user-hash', + description: + 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', + flat_name: 'source.user.hash', + ignore_above: 1024, + level: 'extended', + name: 'hash', + normalize: [], + original_fieldset: 'user', + short: 'Unique user hash to correlate information for a user in anonymized form.', + type: 'keyword', + }, + 'source.user.id': { + dashed_name: 'source-user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'source.user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'source.user.name': { + dashed_name: 'source-user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'source.user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'source.user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'source.user.roles': { + dashed_name: 'source-user-roles', + description: 'Array of user roles at the time of the event.', + example: '["kibana_admin", "reporting_user"]', + flat_name: 'source.user.roles', + ignore_above: 1024, + level: 'extended', + name: 'roles', + normalize: ['array'], + original_fieldset: 'user', + short: 'Array of user roles at the time of the event.', + type: 'keyword', + }, + }, + group: 2, + name: 'source', + nestings: ['source.as', 'source.geo', 'source.user'], + prefix: 'source.', + reusable: { + expected: [ + { + as: 'source', + at: 'process.entry_meta', + full: 'process.entry_meta.source', + short_override: 'Remote client information such as ip, port and geo location.', + }, + ], + top_level: true, + }, + reused_here: [ + { + full: 'source.as', + schema_name: 'as', + short: 'Fields describing an Autonomous System (Internet routing prefix).', + }, + { + full: 'source.geo', + schema_name: 'geo', + short: 'Fields describing a location.', + }, + { + full: 'source.user', + schema_name: 'user', + short: 'Fields to describe the user relevant to the event.', + }, + ], + short: 'Fields about the source side of a network connection, used with destination.', + title: 'Source', + type: 'group', + }, + threat: { + description: + 'Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework.\nThese fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* fields are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service").', + fields: { + 'threat.enrichments': { + dashed_name: 'threat-enrichments', + description: + 'A list of associated indicators objects enriching the event, and the context of that association/enrichment.', + flat_name: 'threat.enrichments', + level: 'extended', + name: 'enrichments', + normalize: ['array'], + short: 'List of objects containing indicators enriching the event.', + type: 'nested', + }, + 'threat.enrichments.indicator': { + dashed_name: 'threat-enrichments-indicator', + description: 'Object containing associated indicators enriching the event.', + flat_name: 'threat.enrichments.indicator', + level: 'extended', + name: 'enrichments.indicator', + normalize: [], + short: 'Object containing indicators enriching the event.', + type: 'object', + }, + 'threat.enrichments.indicator.as.number': { + dashed_name: 'threat-enrichments-indicator-as-number', + description: + 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', + example: 15169, + flat_name: 'threat.enrichments.indicator.as.number', + level: 'extended', + name: 'number', + normalize: [], + original_fieldset: 'as', + short: 'Unique number allocated to the autonomous system.', + type: 'long', + }, + 'threat.enrichments.indicator.as.organization.name': { + dashed_name: 'threat-enrichments-indicator-as-organization-name', + description: 'Organization name.', + example: 'Google LLC', + flat_name: 'threat.enrichments.indicator.as.organization.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'threat.enrichments.indicator.as.organization.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'organization.name', + normalize: [], + original_fieldset: 'as', + short: 'Organization name.', + type: 'keyword', + }, + 'threat.enrichments.indicator.confidence': { + dashed_name: 'threat-enrichments-indicator-confidence', + description: + 'Identifies the vendor-neutral confidence rating using the None/Low/Medium/High scale defined in Appendix A of the STIX 2.1 framework. Vendor-specific confidence scales may be added as custom fields.', + example: 'Medium', + expected_values: ['Not Specified', 'None', 'Low', 'Medium', 'High'], + flat_name: 'threat.enrichments.indicator.confidence', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.indicator.confidence', + normalize: [], + short: 'Indicator confidence rating', + type: 'keyword', + }, + 'threat.enrichments.indicator.description': { + dashed_name: 'threat-enrichments-indicator-description', + description: 'Describes the type of action conducted by the threat.', + example: 'IP x.x.x.x was observed delivering the Angler EK.', + flat_name: 'threat.enrichments.indicator.description', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.indicator.description', + normalize: [], + short: 'Indicator description', + type: 'keyword', + }, + 'threat.enrichments.indicator.email.address': { + dashed_name: 'threat-enrichments-indicator-email-address', + description: + 'Identifies a threat indicator as an email address (irrespective of direction).', + example: 'phish@example.com', + flat_name: 'threat.enrichments.indicator.email.address', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.indicator.email.address', + normalize: [], + short: 'Indicator email address', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.accessed': { + dashed_name: 'threat-enrichments-indicator-file-accessed', + description: + 'Last time the file was accessed.\nNote that not all filesystems keep track of access time.', + flat_name: 'threat.enrichments.indicator.file.accessed', + level: 'extended', + name: 'accessed', + normalize: [], + original_fieldset: 'file', + short: 'Last time the file was accessed.', + type: 'date', + }, + 'threat.enrichments.indicator.file.attributes': { + dashed_name: 'threat-enrichments-indicator-file-attributes', + description: + "Array of file attributes.\nAttributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write.", + example: '["readonly", "system"]', + flat_name: 'threat.enrichments.indicator.file.attributes', + ignore_above: 1024, + level: 'extended', + name: 'attributes', + normalize: ['array'], + original_fieldset: 'file', + short: 'Array of file attributes.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.code_signature.digest_algorithm': { + dashed_name: 'threat-enrichments-indicator-file-code-signature-digest-algorithm', + description: + 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', + example: 'sha256', + flat_name: 'threat.enrichments.indicator.file.code_signature.digest_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'digest_algorithm', + normalize: [], + original_fieldset: 'code_signature', + short: 'Hashing algorithm used to sign the process.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.code_signature.exists': { + dashed_name: 'threat-enrichments-indicator-file-code-signature-exists', + description: 'Boolean to capture if a signature is present.', + example: 'true', + flat_name: 'threat.enrichments.indicator.file.code_signature.exists', + level: 'core', + name: 'exists', + normalize: [], + original_fieldset: 'code_signature', + short: 'Boolean to capture if a signature is present.', + type: 'boolean', + }, + 'threat.enrichments.indicator.file.code_signature.signing_id': { + dashed_name: 'threat-enrichments-indicator-file-code-signature-signing-id', + description: + 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', + example: 'com.apple.xpc.proxy', + flat_name: 'threat.enrichments.indicator.file.code_signature.signing_id', + ignore_above: 1024, + level: 'extended', + name: 'signing_id', + normalize: [], + original_fieldset: 'code_signature', + short: 'The identifier used to sign the process.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.code_signature.status': { + dashed_name: 'threat-enrichments-indicator-file-code-signature-status', + description: + 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', + example: 'ERROR_UNTRUSTED_ROOT', + flat_name: 'threat.enrichments.indicator.file.code_signature.status', + ignore_above: 1024, + level: 'extended', + name: 'status', + normalize: [], + original_fieldset: 'code_signature', + short: 'Additional information about the certificate status.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.code_signature.subject_name': { + dashed_name: 'threat-enrichments-indicator-file-code-signature-subject-name', + description: 'Subject name of the code signer', + example: 'Microsoft Corporation', + flat_name: 'threat.enrichments.indicator.file.code_signature.subject_name', + ignore_above: 1024, + level: 'core', + name: 'subject_name', + normalize: [], + original_fieldset: 'code_signature', + short: 'Subject name of the code signer', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.code_signature.team_id': { + dashed_name: 'threat-enrichments-indicator-file-code-signature-team-id', + description: + 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', + example: 'EQHXZ8M8AV', + flat_name: 'threat.enrichments.indicator.file.code_signature.team_id', + ignore_above: 1024, + level: 'extended', + name: 'team_id', + normalize: [], + original_fieldset: 'code_signature', + short: 'The team identifier used to sign the process.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.code_signature.timestamp': { + dashed_name: 'threat-enrichments-indicator-file-code-signature-timestamp', + description: 'Date and time when the code signature was generated and signed.', + example: '2021-01-01T12:10:30Z', + flat_name: 'threat.enrichments.indicator.file.code_signature.timestamp', + level: 'extended', + name: 'timestamp', + normalize: [], + original_fieldset: 'code_signature', + short: 'When the signature was generated and signed.', + type: 'date', + }, + 'threat.enrichments.indicator.file.code_signature.trusted': { + dashed_name: 'threat-enrichments-indicator-file-code-signature-trusted', + description: + 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', + example: 'true', + flat_name: 'threat.enrichments.indicator.file.code_signature.trusted', + level: 'extended', + name: 'trusted', + normalize: [], + original_fieldset: 'code_signature', + short: 'Stores the trust status of the certificate chain.', + type: 'boolean', + }, + 'threat.enrichments.indicator.file.code_signature.valid': { + dashed_name: 'threat-enrichments-indicator-file-code-signature-valid', + description: + 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', + example: 'true', + flat_name: 'threat.enrichments.indicator.file.code_signature.valid', + level: 'extended', + name: 'valid', + normalize: [], + original_fieldset: 'code_signature', + short: + 'Boolean to capture if the digital signature is verified against the binary content.', + type: 'boolean', + }, + 'threat.enrichments.indicator.file.created': { + dashed_name: 'threat-enrichments-indicator-file-created', + description: 'File creation time.\nNote that not all filesystems store the creation time.', + flat_name: 'threat.enrichments.indicator.file.created', + level: 'extended', + name: 'created', + normalize: [], + original_fieldset: 'file', + short: 'File creation time.', + type: 'date', + }, + 'threat.enrichments.indicator.file.ctime': { + dashed_name: 'threat-enrichments-indicator-file-ctime', + description: + 'Last time the file attributes or metadata changed.\nNote that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file.', + flat_name: 'threat.enrichments.indicator.file.ctime', + level: 'extended', + name: 'ctime', + normalize: [], + original_fieldset: 'file', + short: 'Last time the file attributes or metadata changed.', + type: 'date', + }, + 'threat.enrichments.indicator.file.device': { + dashed_name: 'threat-enrichments-indicator-file-device', + description: 'Device that is the source of the file.', + example: 'sda', + flat_name: 'threat.enrichments.indicator.file.device', + ignore_above: 1024, + level: 'extended', + name: 'device', + normalize: [], + original_fieldset: 'file', + short: 'Device that is the source of the file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.directory': { + dashed_name: 'threat-enrichments-indicator-file-directory', + description: + 'Directory where the file is located. It should include the drive letter, when appropriate.', + example: '/home/alice', + flat_name: 'threat.enrichments.indicator.file.directory', + ignore_above: 1024, + level: 'extended', + name: 'directory', + normalize: [], + original_fieldset: 'file', + short: 'Directory where the file is located.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.drive_letter': { + dashed_name: 'threat-enrichments-indicator-file-drive-letter', + description: + 'Drive letter where the file is located. This field is only relevant on Windows.\nThe value should be uppercase, and not include the colon.', + example: 'C', + flat_name: 'threat.enrichments.indicator.file.drive_letter', + ignore_above: 1, + level: 'extended', + name: 'drive_letter', + normalize: [], + original_fieldset: 'file', + short: 'Drive letter where the file is located.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.architecture': { + dashed_name: 'threat-enrichments-indicator-file-elf-architecture', + description: 'Machine architecture of the ELF file.', + example: 'x86-64', + flat_name: 'threat.enrichments.indicator.file.elf.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + original_fieldset: 'elf', + short: 'Machine architecture of the ELF file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.byte_order': { + dashed_name: 'threat-enrichments-indicator-file-elf-byte-order', + description: 'Byte sequence of ELF file.', + example: 'Little Endian', + flat_name: 'threat.enrichments.indicator.file.elf.byte_order', + ignore_above: 1024, + level: 'extended', + name: 'byte_order', + normalize: [], + original_fieldset: 'elf', + short: 'Byte sequence of ELF file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.cpu_type': { + dashed_name: 'threat-enrichments-indicator-file-elf-cpu-type', + description: 'CPU type of the ELF file.', + example: 'Intel', + flat_name: 'threat.enrichments.indicator.file.elf.cpu_type', + ignore_above: 1024, + level: 'extended', + name: 'cpu_type', + normalize: [], + original_fieldset: 'elf', + short: 'CPU type of the ELF file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.creation_date': { + dashed_name: 'threat-enrichments-indicator-file-elf-creation-date', + description: + "Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.", + flat_name: 'threat.enrichments.indicator.file.elf.creation_date', + level: 'extended', + name: 'creation_date', + normalize: [], + original_fieldset: 'elf', + short: 'Build or compile date.', + type: 'date', + }, + 'threat.enrichments.indicator.file.elf.exports': { + dashed_name: 'threat-enrichments-indicator-file-elf-exports', + description: 'List of exported element names and types.', + flat_name: 'threat.enrichments.indicator.file.elf.exports', + level: 'extended', + name: 'exports', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of exported element names and types.', + type: 'flattened', + }, + 'threat.enrichments.indicator.file.elf.header.abi_version': { + dashed_name: 'threat-enrichments-indicator-file-elf-header-abi-version', + description: 'Version of the ELF Application Binary Interface (ABI).', + flat_name: 'threat.enrichments.indicator.file.elf.header.abi_version', + ignore_above: 1024, + level: 'extended', + name: 'header.abi_version', + normalize: [], + original_fieldset: 'elf', + short: 'Version of the ELF Application Binary Interface (ABI).', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.header.class': { + dashed_name: 'threat-enrichments-indicator-file-elf-header-class', + description: 'Header class of the ELF file.', + flat_name: 'threat.enrichments.indicator.file.elf.header.class', + ignore_above: 1024, + level: 'extended', + name: 'header.class', + normalize: [], + original_fieldset: 'elf', + short: 'Header class of the ELF file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.header.data': { + dashed_name: 'threat-enrichments-indicator-file-elf-header-data', + description: 'Data table of the ELF header.', + flat_name: 'threat.enrichments.indicator.file.elf.header.data', + ignore_above: 1024, + level: 'extended', + name: 'header.data', + normalize: [], + original_fieldset: 'elf', + short: 'Data table of the ELF header.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.header.entrypoint': { + dashed_name: 'threat-enrichments-indicator-file-elf-header-entrypoint', + description: 'Header entrypoint of the ELF file.', + flat_name: 'threat.enrichments.indicator.file.elf.header.entrypoint', + format: 'string', + level: 'extended', + name: 'header.entrypoint', + normalize: [], + original_fieldset: 'elf', + short: 'Header entrypoint of the ELF file.', + type: 'long', + }, + 'threat.enrichments.indicator.file.elf.header.object_version': { + dashed_name: 'threat-enrichments-indicator-file-elf-header-object-version', + description: '"0x1" for original ELF files.', + flat_name: 'threat.enrichments.indicator.file.elf.header.object_version', + ignore_above: 1024, + level: 'extended', + name: 'header.object_version', + normalize: [], + original_fieldset: 'elf', + short: '"0x1" for original ELF files.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.header.os_abi': { + dashed_name: 'threat-enrichments-indicator-file-elf-header-os-abi', + description: 'Application Binary Interface (ABI) of the Linux OS.', + flat_name: 'threat.enrichments.indicator.file.elf.header.os_abi', + ignore_above: 1024, + level: 'extended', + name: 'header.os_abi', + normalize: [], + original_fieldset: 'elf', + short: 'Application Binary Interface (ABI) of the Linux OS.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.header.type': { + dashed_name: 'threat-enrichments-indicator-file-elf-header-type', + description: 'Header type of the ELF file.', + flat_name: 'threat.enrichments.indicator.file.elf.header.type', + ignore_above: 1024, + level: 'extended', + name: 'header.type', + normalize: [], + original_fieldset: 'elf', + short: 'Header type of the ELF file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.header.version': { + dashed_name: 'threat-enrichments-indicator-file-elf-header-version', + description: 'Version of the ELF header.', + flat_name: 'threat.enrichments.indicator.file.elf.header.version', + ignore_above: 1024, + level: 'extended', + name: 'header.version', + normalize: [], + original_fieldset: 'elf', + short: 'Version of the ELF header.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.imports': { + dashed_name: 'threat-enrichments-indicator-file-elf-imports', + description: 'List of imported element names and types.', + flat_name: 'threat.enrichments.indicator.file.elf.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'threat.enrichments.indicator.file.elf.sections': { + dashed_name: 'threat-enrichments-indicator-file-elf-sections', + description: + 'An array containing an object for each section of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.', + flat_name: 'threat.enrichments.indicator.file.elf.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'elf', + short: 'Section information of the ELF file.', + type: 'nested', + }, + 'threat.enrichments.indicator.file.elf.sections.chi2': { + dashed_name: 'threat-enrichments-indicator-file-elf-sections-chi2', + description: 'Chi-square probability distribution of the section.', + flat_name: 'threat.enrichments.indicator.file.elf.sections.chi2', + format: 'number', + level: 'extended', + name: 'sections.chi2', + normalize: [], + original_fieldset: 'elf', + short: 'Chi-square probability distribution of the section.', + type: 'long', + }, + 'threat.enrichments.indicator.file.elf.sections.entropy': { + dashed_name: 'threat-enrichments-indicator-file-elf-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'threat.enrichments.indicator.file.elf.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'threat.enrichments.indicator.file.elf.sections.flags': { + dashed_name: 'threat-enrichments-indicator-file-elf-sections-flags', + description: 'ELF Section List flags.', + flat_name: 'threat.enrichments.indicator.file.elf.sections.flags', + ignore_above: 1024, + level: 'extended', + name: 'sections.flags', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List flags.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.sections.name': { + dashed_name: 'threat-enrichments-indicator-file-elf-sections-name', + description: 'ELF Section List name.', + flat_name: 'threat.enrichments.indicator.file.elf.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List name.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.sections.physical_offset': { + dashed_name: 'threat-enrichments-indicator-file-elf-sections-physical-offset', + description: 'ELF Section List offset.', + flat_name: 'threat.enrichments.indicator.file.elf.sections.physical_offset', + ignore_above: 1024, + level: 'extended', + name: 'sections.physical_offset', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List offset.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.sections.physical_size': { + dashed_name: 'threat-enrichments-indicator-file-elf-sections-physical-size', + description: 'ELF Section List physical size.', + flat_name: 'threat.enrichments.indicator.file.elf.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List physical size.', + type: 'long', + }, + 'threat.enrichments.indicator.file.elf.sections.type': { + dashed_name: 'threat-enrichments-indicator-file-elf-sections-type', + description: 'ELF Section List type.', + flat_name: 'threat.enrichments.indicator.file.elf.sections.type', + ignore_above: 1024, + level: 'extended', + name: 'sections.type', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List type.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.sections.virtual_address': { + dashed_name: 'threat-enrichments-indicator-file-elf-sections-virtual-address', + description: 'ELF Section List virtual address.', + flat_name: 'threat.enrichments.indicator.file.elf.sections.virtual_address', + format: 'string', + level: 'extended', + name: 'sections.virtual_address', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List virtual address.', + type: 'long', + }, + 'threat.enrichments.indicator.file.elf.sections.virtual_size': { + dashed_name: 'threat-enrichments-indicator-file-elf-sections-virtual-size', + description: 'ELF Section List virtual size.', + flat_name: 'threat.enrichments.indicator.file.elf.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List virtual size.', + type: 'long', + }, + 'threat.enrichments.indicator.file.elf.segments': { + dashed_name: 'threat-enrichments-indicator-file-elf-segments', + description: + 'An array containing an object for each segment of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.', + flat_name: 'threat.enrichments.indicator.file.elf.segments', + level: 'extended', + name: 'segments', + normalize: ['array'], + original_fieldset: 'elf', + short: 'ELF object segment list.', + type: 'nested', + }, + 'threat.enrichments.indicator.file.elf.segments.sections': { + dashed_name: 'threat-enrichments-indicator-file-elf-segments-sections', + description: 'ELF object segment sections.', + flat_name: 'threat.enrichments.indicator.file.elf.segments.sections', + ignore_above: 1024, + level: 'extended', + name: 'segments.sections', + normalize: [], + original_fieldset: 'elf', + short: 'ELF object segment sections.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.segments.type': { + dashed_name: 'threat-enrichments-indicator-file-elf-segments-type', + description: 'ELF object segment type.', + flat_name: 'threat.enrichments.indicator.file.elf.segments.type', + ignore_above: 1024, + level: 'extended', + name: 'segments.type', + normalize: [], + original_fieldset: 'elf', + short: 'ELF object segment type.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.shared_libraries': { + dashed_name: 'threat-enrichments-indicator-file-elf-shared-libraries', + description: 'List of shared libraries used by this ELF object.', + flat_name: 'threat.enrichments.indicator.file.elf.shared_libraries', + ignore_above: 1024, + level: 'extended', + name: 'shared_libraries', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of shared libraries used by this ELF object.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.elf.telfhash': { + dashed_name: 'threat-enrichments-indicator-file-elf-telfhash', + description: 'telfhash symbol hash for ELF file.', + flat_name: 'threat.enrichments.indicator.file.elf.telfhash', + ignore_above: 1024, + level: 'extended', + name: 'telfhash', + normalize: [], + original_fieldset: 'elf', + short: 'telfhash hash for ELF file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.extension': { + dashed_name: 'threat-enrichments-indicator-file-extension', + description: + 'File extension, excluding the leading dot.\nNote that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").', + example: 'png', + flat_name: 'threat.enrichments.indicator.file.extension', + ignore_above: 1024, + level: 'extended', + name: 'extension', + normalize: [], + original_fieldset: 'file', + short: 'File extension, excluding the leading dot.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.fork_name': { + dashed_name: 'threat-enrichments-indicator-file-fork-name', + description: + 'A fork is additional data associated with a filesystem object.\nOn Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.\nOn NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\\path\\to\\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.', + example: 'Zone.Identifer', + flat_name: 'threat.enrichments.indicator.file.fork_name', + ignore_above: 1024, + level: 'extended', + name: 'fork_name', + normalize: [], + original_fieldset: 'file', + short: 'A fork is additional data associated with a filesystem object.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.gid': { + dashed_name: 'threat-enrichments-indicator-file-gid', + description: 'Primary group ID (GID) of the file.', + example: '1001', + flat_name: 'threat.enrichments.indicator.file.gid', + ignore_above: 1024, + level: 'extended', + name: 'gid', + normalize: [], + original_fieldset: 'file', + short: 'Primary group ID (GID) of the file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.group': { + dashed_name: 'threat-enrichments-indicator-file-group', + description: 'Primary group name of the file.', + example: 'alice', + flat_name: 'threat.enrichments.indicator.file.group', + ignore_above: 1024, + level: 'extended', + name: 'group', + normalize: [], + original_fieldset: 'file', + short: 'Primary group name of the file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.hash.md5': { + dashed_name: 'threat-enrichments-indicator-file-hash-md5', + description: 'MD5 hash.', + flat_name: 'threat.enrichments.indicator.file.hash.md5', + ignore_above: 1024, + level: 'extended', + name: 'md5', + normalize: [], + original_fieldset: 'hash', + short: 'MD5 hash.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.hash.sha1': { + dashed_name: 'threat-enrichments-indicator-file-hash-sha1', + description: 'SHA1 hash.', + flat_name: 'threat.enrichments.indicator.file.hash.sha1', + ignore_above: 1024, + level: 'extended', + name: 'sha1', + normalize: [], + original_fieldset: 'hash', + short: 'SHA1 hash.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.hash.sha256': { + dashed_name: 'threat-enrichments-indicator-file-hash-sha256', + description: 'SHA256 hash.', + flat_name: 'threat.enrichments.indicator.file.hash.sha256', + ignore_above: 1024, + level: 'extended', + name: 'sha256', + normalize: [], + original_fieldset: 'hash', + short: 'SHA256 hash.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.hash.sha384': { + dashed_name: 'threat-enrichments-indicator-file-hash-sha384', + description: 'SHA384 hash.', + flat_name: 'threat.enrichments.indicator.file.hash.sha384', + ignore_above: 1024, + level: 'extended', + name: 'sha384', + normalize: [], + original_fieldset: 'hash', + short: 'SHA384 hash.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.hash.sha512': { + dashed_name: 'threat-enrichments-indicator-file-hash-sha512', + description: 'SHA512 hash.', + flat_name: 'threat.enrichments.indicator.file.hash.sha512', + ignore_above: 1024, + level: 'extended', + name: 'sha512', + normalize: [], + original_fieldset: 'hash', + short: 'SHA512 hash.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.hash.ssdeep': { + dashed_name: 'threat-enrichments-indicator-file-hash-ssdeep', + description: 'SSDEEP hash.', + flat_name: 'threat.enrichments.indicator.file.hash.ssdeep', + ignore_above: 1024, + level: 'extended', + name: 'ssdeep', + normalize: [], + original_fieldset: 'hash', + short: 'SSDEEP hash.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.hash.tlsh': { + dashed_name: 'threat-enrichments-indicator-file-hash-tlsh', + description: 'TLSH hash.', + flat_name: 'threat.enrichments.indicator.file.hash.tlsh', + ignore_above: 1024, + level: 'extended', + name: 'tlsh', + normalize: [], + original_fieldset: 'hash', + short: 'TLSH hash.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.inode': { + dashed_name: 'threat-enrichments-indicator-file-inode', + description: 'Inode representing the file in the filesystem.', + example: '256383', + flat_name: 'threat.enrichments.indicator.file.inode', + ignore_above: 1024, + level: 'extended', + name: 'inode', + normalize: [], + original_fieldset: 'file', + short: 'Inode representing the file in the filesystem.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.mime_type': { + dashed_name: 'threat-enrichments-indicator-file-mime-type', + description: + 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', + flat_name: 'threat.enrichments.indicator.file.mime_type', + ignore_above: 1024, + level: 'extended', + name: 'mime_type', + normalize: [], + original_fieldset: 'file', + short: 'Media type of file, document, or arrangement of bytes.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.mode': { + dashed_name: 'threat-enrichments-indicator-file-mode', + description: 'Mode of the file in octal representation.', + example: '0640', + flat_name: 'threat.enrichments.indicator.file.mode', + ignore_above: 1024, + level: 'extended', + name: 'mode', + normalize: [], + original_fieldset: 'file', + short: 'Mode of the file in octal representation.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.mtime': { + dashed_name: 'threat-enrichments-indicator-file-mtime', + description: 'Last time the file content was modified.', + flat_name: 'threat.enrichments.indicator.file.mtime', + level: 'extended', + name: 'mtime', + normalize: [], + original_fieldset: 'file', + short: 'Last time the file content was modified.', + type: 'date', + }, + 'threat.enrichments.indicator.file.name': { + dashed_name: 'threat-enrichments-indicator-file-name', + description: 'Name of the file including the extension, without the directory.', + example: 'example.png', + flat_name: 'threat.enrichments.indicator.file.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'file', + short: 'Name of the file including the extension, without the directory.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.owner': { + dashed_name: 'threat-enrichments-indicator-file-owner', + description: "File owner's username.", + example: 'alice', + flat_name: 'threat.enrichments.indicator.file.owner', + ignore_above: 1024, + level: 'extended', + name: 'owner', + normalize: [], + original_fieldset: 'file', + short: "File owner's username.", + type: 'keyword', + }, + 'threat.enrichments.indicator.file.path': { + dashed_name: 'threat-enrichments-indicator-file-path', + description: + 'Full path to the file, including the file name. It should include the drive letter, when appropriate.', + example: '/home/alice/example.png', + flat_name: 'threat.enrichments.indicator.file.path', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'threat.enrichments.indicator.file.path.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'path', + normalize: [], + original_fieldset: 'file', + short: 'Full path to the file, including the file name.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.architecture': { + dashed_name: 'threat-enrichments-indicator-file-pe-architecture', + description: 'CPU architecture target for the file.', + example: 'x64', + flat_name: 'threat.enrichments.indicator.file.pe.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + original_fieldset: 'pe', + short: 'CPU architecture target for the file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.company': { + dashed_name: 'threat-enrichments-indicator-file-pe-company', + description: 'Internal company name of the file, provided at compile-time.', + example: 'Microsoft Corporation', + flat_name: 'threat.enrichments.indicator.file.pe.company', + ignore_above: 1024, + level: 'extended', + name: 'company', + normalize: [], + original_fieldset: 'pe', + short: 'Internal company name of the file, provided at compile-time.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.description': { + dashed_name: 'threat-enrichments-indicator-file-pe-description', + description: 'Internal description of the file, provided at compile-time.', + example: 'Paint', + flat_name: 'threat.enrichments.indicator.file.pe.description', + ignore_above: 1024, + level: 'extended', + name: 'description', + normalize: [], + original_fieldset: 'pe', + short: 'Internal description of the file, provided at compile-time.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.file_version': { + dashed_name: 'threat-enrichments-indicator-file-pe-file-version', + description: 'Internal version of the file, provided at compile-time.', + example: '6.3.9600.17415', + flat_name: 'threat.enrichments.indicator.file.pe.file_version', + ignore_above: 1024, + level: 'extended', + name: 'file_version', + normalize: [], + original_fieldset: 'pe', + short: 'Process name.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.imphash': { + dashed_name: 'threat-enrichments-indicator-file-pe-imphash', + description: + 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', + example: '0c6803c4e922103c4dca5963aad36ddf', + flat_name: 'threat.enrichments.indicator.file.pe.imphash', + ignore_above: 1024, + level: 'extended', + name: 'imphash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.original_file_name': { + dashed_name: 'threat-enrichments-indicator-file-pe-original-file-name', + description: 'Internal name of the file, provided at compile-time.', + example: 'MSPAINT.EXE', + flat_name: 'threat.enrichments.indicator.file.pe.original_file_name', + ignore_above: 1024, + level: 'extended', + name: 'original_file_name', + normalize: [], + original_fieldset: 'pe', + short: 'Internal name of the file, provided at compile-time.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.pehash': { + dashed_name: 'threat-enrichments-indicator-file-pe-pehash', + description: + 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', + example: '73ff189b63cd6be375a7ff25179a38d347651975', + flat_name: 'threat.enrichments.indicator.file.pe.pehash', + ignore_above: 1024, + level: 'extended', + name: 'pehash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the PE header and data from one or more PE sections.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.pe.product': { + dashed_name: 'threat-enrichments-indicator-file-pe-product', + description: 'Internal product name of the file, provided at compile-time.', + example: 'Microsoft® Windows® Operating System', + flat_name: 'threat.enrichments.indicator.file.pe.product', + ignore_above: 1024, + level: 'extended', + name: 'product', + normalize: [], + original_fieldset: 'pe', + short: 'Internal product name of the file, provided at compile-time.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.size': { + dashed_name: 'threat-enrichments-indicator-file-size', + description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', + example: 16384, + flat_name: 'threat.enrichments.indicator.file.size', + level: 'extended', + name: 'size', + normalize: [], + original_fieldset: 'file', + short: 'File size in bytes.', + type: 'long', + }, + 'threat.enrichments.indicator.file.target_path': { + dashed_name: 'threat-enrichments-indicator-file-target-path', + description: 'Target path for symlinks.', + flat_name: 'threat.enrichments.indicator.file.target_path', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'threat.enrichments.indicator.file.target_path.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'target_path', + normalize: [], + original_fieldset: 'file', + short: 'Target path for symlinks.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.type': { + dashed_name: 'threat-enrichments-indicator-file-type', + description: 'File type (file, dir, or symlink).', + example: 'file', + flat_name: 'threat.enrichments.indicator.file.type', + ignore_above: 1024, + level: 'extended', + name: 'type', + normalize: [], + original_fieldset: 'file', + short: 'File type (file, dir, or symlink).', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.uid': { + dashed_name: 'threat-enrichments-indicator-file-uid', + description: 'The user ID (UID) or security identifier (SID) of the file owner.', + example: '1001', + flat_name: 'threat.enrichments.indicator.file.uid', + ignore_above: 1024, + level: 'extended', + name: 'uid', + normalize: [], + original_fieldset: 'file', + short: 'The user ID (UID) or security identifier (SID) of the file owner.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.alternative_names': { + dashed_name: 'threat-enrichments-indicator-file-x509-alternative-names', + description: + 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', + example: '*.elastic.co', + flat_name: 'threat.enrichments.indicator.file.x509.alternative_names', + ignore_above: 1024, + level: 'extended', + name: 'alternative_names', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of subject alternative names (SAN).', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.issuer.common_name': { + dashed_name: 'threat-enrichments-indicator-file-x509-issuer-common-name', + description: 'List of common name (CN) of issuing certificate authority.', + example: 'Example SHA2 High Assurance Server CA', + flat_name: 'threat.enrichments.indicator.file.x509.issuer.common_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common name (CN) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.issuer.country': { + dashed_name: 'threat-enrichments-indicator-file-x509-issuer-country', + description: 'List of country \\(C) codes', + example: 'US', + flat_name: 'threat.enrichments.indicator.file.x509.issuer.country', + ignore_above: 1024, + level: 'extended', + name: 'issuer.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) codes', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.issuer.distinguished_name': { + dashed_name: 'threat-enrichments-indicator-file-x509-issuer-distinguished-name', + description: 'Distinguished name (DN) of issuing certificate authority.', + example: + 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', + flat_name: 'threat.enrichments.indicator.file.x509.issuer.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.issuer.locality': { + dashed_name: 'threat-enrichments-indicator-file-x509-issuer-locality', + description: 'List of locality names (L)', + example: 'Mountain View', + flat_name: 'threat.enrichments.indicator.file.x509.issuer.locality', + ignore_above: 1024, + level: 'extended', + name: 'issuer.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.issuer.organization': { + dashed_name: 'threat-enrichments-indicator-file-x509-issuer-organization', + description: 'List of organizations (O) of issuing certificate authority.', + example: 'Example Inc', + flat_name: 'threat.enrichments.indicator.file.x509.issuer.organization', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.issuer.organizational_unit': { + dashed_name: 'threat-enrichments-indicator-file-x509-issuer-organizational-unit', + description: 'List of organizational units (OU) of issuing certificate authority.', + example: 'www.example.com', + flat_name: 'threat.enrichments.indicator.file.x509.issuer.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.issuer.state_or_province': { + dashed_name: 'threat-enrichments-indicator-file-x509-issuer-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'threat.enrichments.indicator.file.x509.issuer.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'issuer.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.not_after': { + dashed_name: 'threat-enrichments-indicator-file-x509-not-after', + description: 'Time at which the certificate is no longer considered valid.', + example: '2020-07-16T03:15:39Z', + flat_name: 'threat.enrichments.indicator.file.x509.not_after', + level: 'extended', + name: 'not_after', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is no longer considered valid.', + type: 'date', + }, + 'threat.enrichments.indicator.file.x509.not_before': { + dashed_name: 'threat-enrichments-indicator-file-x509-not-before', + description: 'Time at which the certificate is first considered valid.', + example: '2019-08-16T01:40:25Z', + flat_name: 'threat.enrichments.indicator.file.x509.not_before', + level: 'extended', + name: 'not_before', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is first considered valid.', + type: 'date', + }, + 'threat.enrichments.indicator.file.x509.public_key_algorithm': { + dashed_name: 'threat-enrichments-indicator-file-x509-public-key-algorithm', + description: 'Algorithm used to generate the public key.', + example: 'RSA', + flat_name: 'threat.enrichments.indicator.file.x509.public_key_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'public_key_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Algorithm used to generate the public key.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.public_key_curve': { + dashed_name: 'threat-enrichments-indicator-file-x509-public-key-curve', + description: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + example: 'nistp521', + flat_name: 'threat.enrichments.indicator.file.x509.public_key_curve', + ignore_above: 1024, + level: 'extended', + name: 'public_key_curve', + normalize: [], + original_fieldset: 'x509', + short: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.public_key_exponent': { + dashed_name: 'threat-enrichments-indicator-file-x509-public-key-exponent', + description: 'Exponent used to derive the public key. This is algorithm specific.', + doc_values: false, + example: 65537, + flat_name: 'threat.enrichments.indicator.file.x509.public_key_exponent', + index: false, + level: 'extended', + name: 'public_key_exponent', + normalize: [], + original_fieldset: 'x509', + short: 'Exponent used to derive the public key. This is algorithm specific.', + type: 'long', + }, + 'threat.enrichments.indicator.file.x509.public_key_size': { + dashed_name: 'threat-enrichments-indicator-file-x509-public-key-size', + description: 'The size of the public key space in bits.', + example: 2048, + flat_name: 'threat.enrichments.indicator.file.x509.public_key_size', + level: 'extended', + name: 'public_key_size', + normalize: [], + original_fieldset: 'x509', + short: 'The size of the public key space in bits.', + type: 'long', + }, + 'threat.enrichments.indicator.file.x509.serial_number': { + dashed_name: 'threat-enrichments-indicator-file-x509-serial-number', + description: + 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', + example: '55FBB9C7DEBF09809D12CCAA', + flat_name: 'threat.enrichments.indicator.file.x509.serial_number', + ignore_above: 1024, + level: 'extended', + name: 'serial_number', + normalize: [], + original_fieldset: 'x509', + short: 'Unique serial number issued by the certificate authority.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.signature_algorithm': { + dashed_name: 'threat-enrichments-indicator-file-x509-signature-algorithm', + description: + 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', + example: 'SHA256-RSA', + flat_name: 'threat.enrichments.indicator.file.x509.signature_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'signature_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Identifier for certificate signature algorithm.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.subject.common_name': { + dashed_name: 'threat-enrichments-indicator-file-x509-subject-common-name', + description: 'List of common names (CN) of subject.', + example: 'shared.global.example.net', + flat_name: 'threat.enrichments.indicator.file.x509.subject.common_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common names (CN) of subject.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.subject.country': { + dashed_name: 'threat-enrichments-indicator-file-x509-subject-country', + description: 'List of country \\(C) code', + example: 'US', + flat_name: 'threat.enrichments.indicator.file.x509.subject.country', + ignore_above: 1024, + level: 'extended', + name: 'subject.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) code', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.subject.distinguished_name': { + dashed_name: 'threat-enrichments-indicator-file-x509-subject-distinguished-name', + description: 'Distinguished name (DN) of the certificate subject entity.', + example: + 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', + flat_name: 'threat.enrichments.indicator.file.x509.subject.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of the certificate subject entity.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.subject.locality': { + dashed_name: 'threat-enrichments-indicator-file-x509-subject-locality', + description: 'List of locality names (L)', + example: 'San Francisco', + flat_name: 'threat.enrichments.indicator.file.x509.subject.locality', + ignore_above: 1024, + level: 'extended', + name: 'subject.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.subject.organization': { + dashed_name: 'threat-enrichments-indicator-file-x509-subject-organization', + description: 'List of organizations (O) of subject.', + example: 'Example, Inc.', + flat_name: 'threat.enrichments.indicator.file.x509.subject.organization', + ignore_above: 1024, + level: 'extended', + name: 'subject.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of subject.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.subject.organizational_unit': { + dashed_name: 'threat-enrichments-indicator-file-x509-subject-organizational-unit', + description: 'List of organizational units (OU) of subject.', + flat_name: 'threat.enrichments.indicator.file.x509.subject.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'subject.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of subject.', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.subject.state_or_province': { + dashed_name: 'threat-enrichments-indicator-file-x509-subject-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'threat.enrichments.indicator.file.x509.subject.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'subject.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'threat.enrichments.indicator.file.x509.version_number': { + dashed_name: 'threat-enrichments-indicator-file-x509-version-number', + description: 'Version of x509 format.', + example: 3, + flat_name: 'threat.enrichments.indicator.file.x509.version_number', + ignore_above: 1024, + level: 'extended', + name: 'version_number', + normalize: [], + original_fieldset: 'x509', + short: 'Version of x509 format.', + type: 'keyword', + }, + 'threat.enrichments.indicator.first_seen': { + dashed_name: 'threat-enrichments-indicator-first-seen', + description: + 'The date and time when intelligence source first reported sighting this indicator.', + example: '2020-11-05T17:25:47.000Z', + flat_name: 'threat.enrichments.indicator.first_seen', + level: 'extended', + name: 'enrichments.indicator.first_seen', + normalize: [], + short: 'Date/time indicator was first reported.', + type: 'date', + }, + 'threat.enrichments.indicator.geo.city_name': { + dashed_name: 'threat-enrichments-indicator-geo-city-name', + description: 'City name.', + example: 'Montreal', + flat_name: 'threat.enrichments.indicator.geo.city_name', + ignore_above: 1024, + level: 'core', + name: 'city_name', + normalize: [], + original_fieldset: 'geo', + short: 'City name.', + type: 'keyword', + }, + 'threat.enrichments.indicator.geo.continent_code': { + dashed_name: 'threat-enrichments-indicator-geo-continent-code', + description: "Two-letter code representing continent's name.", + example: 'NA', + flat_name: 'threat.enrichments.indicator.geo.continent_code', + ignore_above: 1024, + level: 'core', + name: 'continent_code', + normalize: [], + original_fieldset: 'geo', + short: 'Continent code.', + type: 'keyword', + }, + 'threat.enrichments.indicator.geo.continent_name': { + dashed_name: 'threat-enrichments-indicator-geo-continent-name', + description: 'Name of the continent.', + example: 'North America', + flat_name: 'threat.enrichments.indicator.geo.continent_name', + ignore_above: 1024, + level: 'core', + name: 'continent_name', + normalize: [], + original_fieldset: 'geo', + short: 'Name of the continent.', + type: 'keyword', + }, + 'threat.enrichments.indicator.geo.country_iso_code': { + dashed_name: 'threat-enrichments-indicator-geo-country-iso-code', + description: 'Country ISO code.', + example: 'CA', + flat_name: 'threat.enrichments.indicator.geo.country_iso_code', + ignore_above: 1024, + level: 'core', + name: 'country_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Country ISO code.', + type: 'keyword', + }, + 'threat.enrichments.indicator.geo.country_name': { + dashed_name: 'threat-enrichments-indicator-geo-country-name', + description: 'Country name.', + example: 'Canada', + flat_name: 'threat.enrichments.indicator.geo.country_name', + ignore_above: 1024, + level: 'core', + name: 'country_name', + normalize: [], + original_fieldset: 'geo', + short: 'Country name.', + type: 'keyword', + }, + 'threat.enrichments.indicator.geo.location': { + dashed_name: 'threat-enrichments-indicator-geo-location', + description: 'Longitude and latitude.', + example: '{ "lon": -73.614830, "lat": 45.505918 }', + flat_name: 'threat.enrichments.indicator.geo.location', + level: 'core', + name: 'location', + normalize: [], + original_fieldset: 'geo', + short: 'Longitude and latitude.', + type: 'geo_point', + }, + 'threat.enrichments.indicator.geo.name': { + dashed_name: 'threat-enrichments-indicator-geo-name', + description: + 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', + example: 'boston-dc', + flat_name: 'threat.enrichments.indicator.geo.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'geo', + short: 'User-defined description of a location.', + type: 'keyword', + }, + 'threat.enrichments.indicator.geo.postal_code': { + dashed_name: 'threat-enrichments-indicator-geo-postal-code', + description: + 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', + example: 94040, + flat_name: 'threat.enrichments.indicator.geo.postal_code', + ignore_above: 1024, + level: 'core', + name: 'postal_code', + normalize: [], + original_fieldset: 'geo', + short: 'Postal code.', + type: 'keyword', + }, + 'threat.enrichments.indicator.geo.region_iso_code': { + dashed_name: 'threat-enrichments-indicator-geo-region-iso-code', + description: 'Region ISO code.', + example: 'CA-QC', + flat_name: 'threat.enrichments.indicator.geo.region_iso_code', + ignore_above: 1024, + level: 'core', + name: 'region_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Region ISO code.', + type: 'keyword', + }, + 'threat.enrichments.indicator.geo.region_name': { + dashed_name: 'threat-enrichments-indicator-geo-region-name', + description: 'Region name.', + example: 'Quebec', + flat_name: 'threat.enrichments.indicator.geo.region_name', + ignore_above: 1024, + level: 'core', + name: 'region_name', + normalize: [], + original_fieldset: 'geo', + short: 'Region name.', + type: 'keyword', + }, + 'threat.enrichments.indicator.geo.timezone': { + dashed_name: 'threat-enrichments-indicator-geo-timezone', + description: 'The time zone of the location, such as IANA time zone name.', + example: 'America/Argentina/Buenos_Aires', + flat_name: 'threat.enrichments.indicator.geo.timezone', + ignore_above: 1024, + level: 'core', + name: 'timezone', + normalize: [], + original_fieldset: 'geo', + short: 'Time zone.', + type: 'keyword', + }, + 'threat.enrichments.indicator.ip': { + dashed_name: 'threat-enrichments-indicator-ip', + description: 'Identifies a threat indicator as an IP address (irrespective of direction).', + example: '1.2.3.4', + flat_name: 'threat.enrichments.indicator.ip', + level: 'extended', + name: 'enrichments.indicator.ip', + normalize: [], + short: 'Indicator IP address', + type: 'ip', + }, + 'threat.enrichments.indicator.last_seen': { + dashed_name: 'threat-enrichments-indicator-last-seen', + description: + 'The date and time when intelligence source last reported sighting this indicator.', + example: '2020-11-05T17:25:47.000Z', + flat_name: 'threat.enrichments.indicator.last_seen', + level: 'extended', + name: 'enrichments.indicator.last_seen', + normalize: [], + short: 'Date/time indicator was last reported.', + type: 'date', + }, + 'threat.enrichments.indicator.marking.tlp.version': { + dashed_name: 'threat-enrichments-indicator-marking-tlp-version', + description: 'Traffic Light Protocol version.', + example: 2, + flat_name: 'threat.enrichments.indicator.marking.tlp.version', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.indicator.marking.tlp.version', + normalize: [], + short: 'Indicator TLP version', + type: 'keyword', + }, + 'threat.enrichments.indicator.modified_at': { + dashed_name: 'threat-enrichments-indicator-modified-at', + description: + 'The date and time when intelligence source last modified information for this indicator.', + example: '2020-11-05T17:25:47.000Z', + flat_name: 'threat.enrichments.indicator.modified_at', + level: 'extended', + name: 'enrichments.indicator.modified_at', + normalize: [], + short: 'Date/time indicator was last updated.', + type: 'date', + }, + 'threat.enrichments.indicator.port': { + dashed_name: 'threat-enrichments-indicator-port', + description: 'Identifies a threat indicator as a port number (irrespective of direction).', + example: 443, + flat_name: 'threat.enrichments.indicator.port', + level: 'extended', + name: 'enrichments.indicator.port', + normalize: [], + short: 'Indicator port', + type: 'long', + }, + 'threat.enrichments.indicator.provider': { + dashed_name: 'threat-enrichments-indicator-provider', + description: "The name of the indicator's provider.", + example: 'lrz_urlhaus', + flat_name: 'threat.enrichments.indicator.provider', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.indicator.provider', + normalize: [], + short: 'Indicator provider', + type: 'keyword', + }, + 'threat.enrichments.indicator.reference': { + dashed_name: 'threat-enrichments-indicator-reference', + description: 'Reference URL linking to additional information about this indicator.', + example: 'https://system.example.com/indicator/0001234', + flat_name: 'threat.enrichments.indicator.reference', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.indicator.reference', + normalize: [], + short: 'Indicator reference URL', + type: 'keyword', + }, + 'threat.enrichments.indicator.registry.data.bytes': { + dashed_name: 'threat-enrichments-indicator-registry-data-bytes', + description: + 'Original bytes written with base64 encoding.\nFor Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values.', + example: 'ZQBuAC0AVQBTAAAAZQBuAAAAAAA=', + flat_name: 'threat.enrichments.indicator.registry.data.bytes', + ignore_above: 1024, + level: 'extended', + name: 'data.bytes', + normalize: [], + original_fieldset: 'registry', + short: 'Original bytes written with base64 encoding.', + type: 'keyword', + }, + 'threat.enrichments.indicator.registry.data.strings': { + dashed_name: 'threat-enrichments-indicator-registry-data-strings', + description: + 'Content when writing string types.\nPopulated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`).', + example: '["C:\\rta\\red_ttp\\bin\\myapp.exe"]', + flat_name: 'threat.enrichments.indicator.registry.data.strings', + level: 'core', + name: 'data.strings', + normalize: ['array'], + original_fieldset: 'registry', + short: 'List of strings representing what was written to the registry.', + type: 'wildcard', + }, + 'threat.enrichments.indicator.registry.data.type': { + dashed_name: 'threat-enrichments-indicator-registry-data-type', + description: 'Standard registry type for encoding contents', + example: 'REG_SZ', + flat_name: 'threat.enrichments.indicator.registry.data.type', + ignore_above: 1024, + level: 'core', + name: 'data.type', + normalize: [], + original_fieldset: 'registry', + short: 'Standard registry type for encoding contents', + type: 'keyword', + }, + 'threat.enrichments.indicator.registry.hive': { + dashed_name: 'threat-enrichments-indicator-registry-hive', + description: 'Abbreviated name for the hive.', + example: 'HKLM', + flat_name: 'threat.enrichments.indicator.registry.hive', + ignore_above: 1024, + level: 'core', + name: 'hive', + normalize: [], + original_fieldset: 'registry', + short: 'Abbreviated name for the hive.', + type: 'keyword', + }, + 'threat.enrichments.indicator.registry.key': { + dashed_name: 'threat-enrichments-indicator-registry-key', + description: 'Hive-relative path of keys.', + example: + 'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\winword.exe', + flat_name: 'threat.enrichments.indicator.registry.key', + ignore_above: 1024, + level: 'core', + name: 'key', + normalize: [], + original_fieldset: 'registry', + short: 'Hive-relative path of keys.', + type: 'keyword', + }, + 'threat.enrichments.indicator.registry.path': { + dashed_name: 'threat-enrichments-indicator-registry-path', + description: 'Full path, including hive, key and value', + example: + 'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\winword.exe\\Debugger', + flat_name: 'threat.enrichments.indicator.registry.path', + ignore_above: 1024, + level: 'core', + name: 'path', + normalize: [], + original_fieldset: 'registry', + short: 'Full path, including hive, key and value', + type: 'keyword', + }, + 'threat.enrichments.indicator.registry.value': { + dashed_name: 'threat-enrichments-indicator-registry-value', + description: 'Name of the value written.', + example: 'Debugger', + flat_name: 'threat.enrichments.indicator.registry.value', + ignore_above: 1024, + level: 'core', + name: 'value', + normalize: [], + original_fieldset: 'registry', + short: 'Name of the value written.', + type: 'keyword', + }, + 'threat.enrichments.indicator.scanner_stats': { + dashed_name: 'threat-enrichments-indicator-scanner-stats', + description: 'Count of AV/EDR vendors that successfully detected malicious file or URL.', + example: 4, + flat_name: 'threat.enrichments.indicator.scanner_stats', + level: 'extended', + name: 'enrichments.indicator.scanner_stats', + normalize: [], + short: 'Scanner statistics', + type: 'long', + }, + 'threat.enrichments.indicator.sightings': { + dashed_name: 'threat-enrichments-indicator-sightings', + description: 'Number of times this indicator was observed conducting threat activity.', + example: 20, + flat_name: 'threat.enrichments.indicator.sightings', + level: 'extended', + name: 'enrichments.indicator.sightings', + normalize: [], + short: 'Number of times indicator observed', + type: 'long', + }, + 'threat.enrichments.indicator.type': { + dashed_name: 'threat-enrichments-indicator-type', + description: 'Type of indicator as represented by Cyber Observable in STIX 2.0.', + example: 'ipv4-addr', + expected_values: [ + 'autonomous-system', + 'artifact', + 'directory', + 'domain-name', + 'email-addr', + 'file', + 'ipv4-addr', + 'ipv6-addr', + 'mac-addr', + 'mutex', + 'port', + 'process', + 'software', + 'url', + 'user-account', + 'windows-registry-key', + 'x509-certificate', + ], + flat_name: 'threat.enrichments.indicator.type', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.indicator.type', + normalize: [], + short: 'Type of indicator', + type: 'keyword', + }, + 'threat.enrichments.indicator.url.domain': { + dashed_name: 'threat-enrichments-indicator-url-domain', + description: + 'Domain of the url, such as "www.elastic.co".\nIn some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field.\nIf the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field.', + example: 'www.elastic.co', + flat_name: 'threat.enrichments.indicator.url.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'url', + short: 'Domain of the url.', + type: 'keyword', + }, + 'threat.enrichments.indicator.url.extension': { + dashed_name: 'threat-enrichments-indicator-url-extension', + description: + 'The field contains the file extension from the original request url, excluding the leading dot.\nThe file extension is only set if it exists, as not every url has a file extension.\nThe leading period must not be included. For example, the value must be "png", not ".png".\nNote that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").', + example: 'png', + flat_name: 'threat.enrichments.indicator.url.extension', + ignore_above: 1024, + level: 'extended', + name: 'extension', + normalize: [], + original_fieldset: 'url', + short: 'File extension from the request url, excluding the leading dot.', + type: 'keyword', + }, + 'threat.enrichments.indicator.url.fragment': { + dashed_name: 'threat-enrichments-indicator-url-fragment', + description: + 'Portion of the url after the `#`, such as "top".\nThe `#` is not part of the fragment.', + flat_name: 'threat.enrichments.indicator.url.fragment', + ignore_above: 1024, + level: 'extended', + name: 'fragment', + normalize: [], + original_fieldset: 'url', + short: 'Portion of the url after the `#`.', + type: 'keyword', + }, + 'threat.enrichments.indicator.url.full': { + dashed_name: 'threat-enrichments-indicator-url-full', + description: + 'If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source.', + example: 'https://www.elastic.co:443/search?q=elasticsearch#top', + flat_name: 'threat.enrichments.indicator.url.full', + level: 'extended', + multi_fields: [ + { + flat_name: 'threat.enrichments.indicator.url.full.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full', + normalize: [], + original_fieldset: 'url', + short: 'Full unparsed URL.', + type: 'wildcard', + }, + 'threat.enrichments.indicator.url.original': { + dashed_name: 'threat-enrichments-indicator-url-original', + description: + 'Unmodified original url as seen in the event source.\nNote that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path.\nThis field is meant to represent the URL as it was observed, complete or not.', + example: 'https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch', + flat_name: 'threat.enrichments.indicator.url.original', + level: 'extended', + multi_fields: [ + { + flat_name: 'threat.enrichments.indicator.url.original.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'original', + normalize: [], + original_fieldset: 'url', + short: 'Unmodified original url as seen in the event source.', + type: 'wildcard', + }, + 'threat.enrichments.indicator.url.password': { + dashed_name: 'threat-enrichments-indicator-url-password', + description: 'Password of the request.', + flat_name: 'threat.enrichments.indicator.url.password', + ignore_above: 1024, + level: 'extended', + name: 'password', + normalize: [], + original_fieldset: 'url', + short: 'Password of the request.', + type: 'keyword', + }, + 'threat.enrichments.indicator.url.path': { + dashed_name: 'threat-enrichments-indicator-url-path', + description: 'Path of the request, such as "/search".', + flat_name: 'threat.enrichments.indicator.url.path', + level: 'extended', + name: 'path', + normalize: [], + original_fieldset: 'url', + short: 'Path of the request, such as "/search".', + type: 'wildcard', + }, + 'threat.enrichments.indicator.url.port': { + dashed_name: 'threat-enrichments-indicator-url-port', + description: 'Port of the request, such as 443.', + example: 443, + flat_name: 'threat.enrichments.indicator.url.port', + format: 'string', + level: 'extended', + name: 'port', + normalize: [], + original_fieldset: 'url', + short: 'Port of the request, such as 443.', + type: 'long', + }, + 'threat.enrichments.indicator.url.query': { + dashed_name: 'threat-enrichments-indicator-url-query', + description: + 'The query field describes the query string of the request, such as "q=elasticsearch".\nThe `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases.', + flat_name: 'threat.enrichments.indicator.url.query', + ignore_above: 1024, + level: 'extended', + name: 'query', + normalize: [], + original_fieldset: 'url', + short: 'Query string of the request.', + type: 'keyword', + }, + 'threat.enrichments.indicator.url.registered_domain': { + dashed_name: 'threat-enrichments-indicator-url-registered-domain', + description: + 'The highest registered url domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', + example: 'example.com', + flat_name: 'threat.enrichments.indicator.url.registered_domain', + ignore_above: 1024, + level: 'extended', + name: 'registered_domain', + normalize: [], + original_fieldset: 'url', + short: 'The highest registered url domain, stripped of the subdomain.', + type: 'keyword', + }, + 'threat.enrichments.indicator.url.scheme': { + dashed_name: 'threat-enrichments-indicator-url-scheme', + description: + 'Scheme of the request, such as "https".\nNote: The `:` is not part of the scheme.', + example: 'https', + flat_name: 'threat.enrichments.indicator.url.scheme', + ignore_above: 1024, + level: 'extended', + name: 'scheme', + normalize: [], + original_fieldset: 'url', + short: 'Scheme of the url.', + type: 'keyword', + }, + 'threat.enrichments.indicator.url.subdomain': { + dashed_name: 'threat-enrichments-indicator-url-subdomain', + description: + 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', + example: 'east', + flat_name: 'threat.enrichments.indicator.url.subdomain', + ignore_above: 1024, + level: 'extended', + name: 'subdomain', + normalize: [], + original_fieldset: 'url', + short: 'The subdomain of the domain.', + type: 'keyword', + }, + 'threat.enrichments.indicator.url.top_level_domain': { + dashed_name: 'threat-enrichments-indicator-url-top-level-domain', + description: + 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', + example: 'co.uk', + flat_name: 'threat.enrichments.indicator.url.top_level_domain', + ignore_above: 1024, + level: 'extended', + name: 'top_level_domain', + normalize: [], + original_fieldset: 'url', + short: 'The effective top level domain (com, org, net, co.uk).', + type: 'keyword', + }, + 'threat.enrichments.indicator.url.username': { + dashed_name: 'threat-enrichments-indicator-url-username', + description: 'Username of the request.', + flat_name: 'threat.enrichments.indicator.url.username', + ignore_above: 1024, + level: 'extended', + name: 'username', + normalize: [], + original_fieldset: 'url', + short: 'Username of the request.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.alternative_names': { + dashed_name: 'threat-enrichments-indicator-x509-alternative-names', + description: + 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', + example: '*.elastic.co', + flat_name: 'threat.enrichments.indicator.x509.alternative_names', + ignore_above: 1024, + level: 'extended', + name: 'alternative_names', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of subject alternative names (SAN).', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.issuer.common_name': { + dashed_name: 'threat-enrichments-indicator-x509-issuer-common-name', + description: 'List of common name (CN) of issuing certificate authority.', + example: 'Example SHA2 High Assurance Server CA', + flat_name: 'threat.enrichments.indicator.x509.issuer.common_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common name (CN) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.issuer.country': { + dashed_name: 'threat-enrichments-indicator-x509-issuer-country', + description: 'List of country \\(C) codes', + example: 'US', + flat_name: 'threat.enrichments.indicator.x509.issuer.country', + ignore_above: 1024, + level: 'extended', + name: 'issuer.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) codes', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.issuer.distinguished_name': { + dashed_name: 'threat-enrichments-indicator-x509-issuer-distinguished-name', + description: 'Distinguished name (DN) of issuing certificate authority.', + example: + 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', + flat_name: 'threat.enrichments.indicator.x509.issuer.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.issuer.locality': { + dashed_name: 'threat-enrichments-indicator-x509-issuer-locality', + description: 'List of locality names (L)', + example: 'Mountain View', + flat_name: 'threat.enrichments.indicator.x509.issuer.locality', + ignore_above: 1024, + level: 'extended', + name: 'issuer.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.issuer.organization': { + dashed_name: 'threat-enrichments-indicator-x509-issuer-organization', + description: 'List of organizations (O) of issuing certificate authority.', + example: 'Example Inc', + flat_name: 'threat.enrichments.indicator.x509.issuer.organization', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.issuer.organizational_unit': { + dashed_name: 'threat-enrichments-indicator-x509-issuer-organizational-unit', + description: 'List of organizational units (OU) of issuing certificate authority.', + example: 'www.example.com', + flat_name: 'threat.enrichments.indicator.x509.issuer.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.issuer.state_or_province': { + dashed_name: 'threat-enrichments-indicator-x509-issuer-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'threat.enrichments.indicator.x509.issuer.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'issuer.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.not_after': { + dashed_name: 'threat-enrichments-indicator-x509-not-after', + description: 'Time at which the certificate is no longer considered valid.', + example: '2020-07-16T03:15:39Z', + flat_name: 'threat.enrichments.indicator.x509.not_after', + level: 'extended', + name: 'not_after', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is no longer considered valid.', + type: 'date', + }, + 'threat.enrichments.indicator.x509.not_before': { + dashed_name: 'threat-enrichments-indicator-x509-not-before', + description: 'Time at which the certificate is first considered valid.', + example: '2019-08-16T01:40:25Z', + flat_name: 'threat.enrichments.indicator.x509.not_before', + level: 'extended', + name: 'not_before', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is first considered valid.', + type: 'date', + }, + 'threat.enrichments.indicator.x509.public_key_algorithm': { + dashed_name: 'threat-enrichments-indicator-x509-public-key-algorithm', + description: 'Algorithm used to generate the public key.', + example: 'RSA', + flat_name: 'threat.enrichments.indicator.x509.public_key_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'public_key_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Algorithm used to generate the public key.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.public_key_curve': { + dashed_name: 'threat-enrichments-indicator-x509-public-key-curve', + description: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + example: 'nistp521', + flat_name: 'threat.enrichments.indicator.x509.public_key_curve', + ignore_above: 1024, + level: 'extended', + name: 'public_key_curve', + normalize: [], + original_fieldset: 'x509', + short: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.public_key_exponent': { + dashed_name: 'threat-enrichments-indicator-x509-public-key-exponent', + description: 'Exponent used to derive the public key. This is algorithm specific.', + doc_values: false, + example: 65537, + flat_name: 'threat.enrichments.indicator.x509.public_key_exponent', + index: false, + level: 'extended', + name: 'public_key_exponent', + normalize: [], + original_fieldset: 'x509', + short: 'Exponent used to derive the public key. This is algorithm specific.', + type: 'long', + }, + 'threat.enrichments.indicator.x509.public_key_size': { + dashed_name: 'threat-enrichments-indicator-x509-public-key-size', + description: 'The size of the public key space in bits.', + example: 2048, + flat_name: 'threat.enrichments.indicator.x509.public_key_size', + level: 'extended', + name: 'public_key_size', + normalize: [], + original_fieldset: 'x509', + short: 'The size of the public key space in bits.', + type: 'long', + }, + 'threat.enrichments.indicator.x509.serial_number': { + dashed_name: 'threat-enrichments-indicator-x509-serial-number', + description: + 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', + example: '55FBB9C7DEBF09809D12CCAA', + flat_name: 'threat.enrichments.indicator.x509.serial_number', + ignore_above: 1024, + level: 'extended', + name: 'serial_number', + normalize: [], + original_fieldset: 'x509', + short: 'Unique serial number issued by the certificate authority.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.signature_algorithm': { + dashed_name: 'threat-enrichments-indicator-x509-signature-algorithm', + description: + 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', + example: 'SHA256-RSA', + flat_name: 'threat.enrichments.indicator.x509.signature_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'signature_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Identifier for certificate signature algorithm.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.subject.common_name': { + dashed_name: 'threat-enrichments-indicator-x509-subject-common-name', + description: 'List of common names (CN) of subject.', + example: 'shared.global.example.net', + flat_name: 'threat.enrichments.indicator.x509.subject.common_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common names (CN) of subject.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.subject.country': { + dashed_name: 'threat-enrichments-indicator-x509-subject-country', + description: 'List of country \\(C) code', + example: 'US', + flat_name: 'threat.enrichments.indicator.x509.subject.country', + ignore_above: 1024, + level: 'extended', + name: 'subject.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) code', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.subject.distinguished_name': { + dashed_name: 'threat-enrichments-indicator-x509-subject-distinguished-name', + description: 'Distinguished name (DN) of the certificate subject entity.', + example: + 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', + flat_name: 'threat.enrichments.indicator.x509.subject.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of the certificate subject entity.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.subject.locality': { + dashed_name: 'threat-enrichments-indicator-x509-subject-locality', + description: 'List of locality names (L)', + example: 'San Francisco', + flat_name: 'threat.enrichments.indicator.x509.subject.locality', + ignore_above: 1024, + level: 'extended', + name: 'subject.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.subject.organization': { + dashed_name: 'threat-enrichments-indicator-x509-subject-organization', + description: 'List of organizations (O) of subject.', + example: 'Example, Inc.', + flat_name: 'threat.enrichments.indicator.x509.subject.organization', + ignore_above: 1024, + level: 'extended', + name: 'subject.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of subject.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.subject.organizational_unit': { + dashed_name: 'threat-enrichments-indicator-x509-subject-organizational-unit', + description: 'List of organizational units (OU) of subject.', + flat_name: 'threat.enrichments.indicator.x509.subject.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'subject.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of subject.', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.subject.state_or_province': { + dashed_name: 'threat-enrichments-indicator-x509-subject-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'threat.enrichments.indicator.x509.subject.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'subject.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'threat.enrichments.indicator.x509.version_number': { + dashed_name: 'threat-enrichments-indicator-x509-version-number', + description: 'Version of x509 format.', + example: 3, + flat_name: 'threat.enrichments.indicator.x509.version_number', + ignore_above: 1024, + level: 'extended', + name: 'version_number', + normalize: [], + original_fieldset: 'x509', + short: 'Version of x509 format.', + type: 'keyword', + }, + 'threat.enrichments.matched.atomic': { + dashed_name: 'threat-enrichments-matched-atomic', + description: + 'Identifies the atomic indicator value that matched a local environment endpoint or network event.', + example: 'bad-domain.com', + flat_name: 'threat.enrichments.matched.atomic', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.matched.atomic', + normalize: [], + short: 'Matched indicator value', + type: 'keyword', + }, + 'threat.enrichments.matched.field': { + dashed_name: 'threat-enrichments-matched-field', + description: + 'Identifies the field of the atomic indicator that matched a local environment endpoint or network event.', + example: 'file.hash.sha256', + flat_name: 'threat.enrichments.matched.field', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.matched.field', + normalize: [], + short: 'Matched indicator field', + type: 'keyword', + }, + 'threat.enrichments.matched.id': { + dashed_name: 'threat-enrichments-matched-id', + description: 'Identifies the _id of the indicator document enriching the event.', + example: 'ff93aee5-86a1-4a61-b0e6-0cdc313d01b5', + flat_name: 'threat.enrichments.matched.id', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.matched.id', + normalize: [], + short: 'Matched indicator identifier', + type: 'keyword', + }, + 'threat.enrichments.matched.index': { + dashed_name: 'threat-enrichments-matched-index', + description: 'Identifies the _index of the indicator document enriching the event.', + example: 'filebeat-8.0.0-2021.05.23-000011', + flat_name: 'threat.enrichments.matched.index', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.matched.index', + normalize: [], + short: 'Matched indicator index', + type: 'keyword', + }, + 'threat.enrichments.matched.occurred': { + dashed_name: 'threat-enrichments-matched-occurred', + description: 'Indicates when the indicator match was generated', + example: '2021-10-05T17:00:58.326Z', + flat_name: 'threat.enrichments.matched.occurred', + level: 'extended', + name: 'enrichments.matched.occurred', + normalize: [], + short: 'Date of match', + type: 'date', + }, + 'threat.enrichments.matched.type': { + dashed_name: 'threat-enrichments-matched-type', + description: + 'Identifies the type of match that caused the event to be enriched with the given indicator', + example: 'indicator_match_rule', + flat_name: 'threat.enrichments.matched.type', + ignore_above: 1024, + level: 'extended', + name: 'enrichments.matched.type', + normalize: [], + short: 'Type of indicator match', + type: 'keyword', + }, + 'threat.feed.dashboard_id': { + dashed_name: 'threat-feed-dashboard-id', + description: + 'The saved object ID of the dashboard belonging to the threat feed for displaying dashboard links to threat feeds in Kibana.', + example: '5ba16340-72e6-11eb-a3e3-b3cc7c78a70f', + flat_name: 'threat.feed.dashboard_id', + ignore_above: 1024, + level: 'extended', + name: 'feed.dashboard_id', + normalize: [], + short: 'Feed dashboard ID.', + type: 'keyword', + }, + 'threat.feed.description': { + dashed_name: 'threat-feed-description', + description: 'Description of the threat feed in a UI friendly format.', + example: 'Threat feed from the AlienVault Open Threat eXchange network.', + flat_name: 'threat.feed.description', + ignore_above: 1024, + level: 'extended', + name: 'feed.description', + normalize: [], + short: 'Description of the threat feed.', + type: 'keyword', + }, + 'threat.feed.name': { + dashed_name: 'threat-feed-name', + description: 'The name of the threat feed in UI friendly format.', + example: 'AlienVault OTX', + flat_name: 'threat.feed.name', + ignore_above: 1024, + level: 'extended', + name: 'feed.name', + normalize: [], + short: 'Name of the threat feed.', + type: 'keyword', + }, + 'threat.feed.reference': { + dashed_name: 'threat-feed-reference', + description: 'Reference information for the threat feed in a UI friendly format.', + example: 'https://otx.alienvault.com', + flat_name: 'threat.feed.reference', + ignore_above: 1024, + level: 'extended', + name: 'feed.reference', + normalize: [], + short: 'Reference for the threat feed.', + type: 'keyword', + }, + 'threat.framework': { + dashed_name: 'threat-framework', + description: + 'Name of the threat framework used to further categorize and classify the tactic and technique of the reported threat. Framework classification can be provided by detecting systems, evaluated at ingest time, or retrospectively tagged to events.', + example: 'MITRE ATT&CK', + flat_name: 'threat.framework', + ignore_above: 1024, + level: 'extended', + name: 'framework', + normalize: [], + short: 'Threat classification framework.', + type: 'keyword', + }, + 'threat.group.alias': { + dashed_name: 'threat-group-alias', + description: + 'The alias(es) of the group for a set of related intrusion activity that are tracked by a common name in the security community.\nWhile not required, you can use a MITRE ATT&CK® group alias(es).', + example: '[ "Magecart Group 6" ]', + flat_name: 'threat.group.alias', + ignore_above: 1024, + level: 'extended', + name: 'group.alias', + normalize: ['array'], + short: 'Alias of the group.', + type: 'keyword', + }, + 'threat.group.id': { + dashed_name: 'threat-group-id', + description: + 'The id of the group for a set of related intrusion activity that are tracked by a common name in the security community.\nWhile not required, you can use a MITRE ATT&CK® group id.', + example: 'G0037', + flat_name: 'threat.group.id', + ignore_above: 1024, + level: 'extended', + name: 'group.id', + normalize: [], + short: 'ID of the group.', + type: 'keyword', + }, + 'threat.group.name': { + dashed_name: 'threat-group-name', + description: + 'The name of the group for a set of related intrusion activity that are tracked by a common name in the security community.\nWhile not required, you can use a MITRE ATT&CK® group name.', + example: 'FIN6', + flat_name: 'threat.group.name', + ignore_above: 1024, + level: 'extended', + name: 'group.name', + normalize: [], + short: 'Name of the group.', + type: 'keyword', + }, + 'threat.group.reference': { + dashed_name: 'threat-group-reference', + description: + 'The reference URL of the group for a set of related intrusion activity that are tracked by a common name in the security community.\nWhile not required, you can use a MITRE ATT&CK® group reference URL.', + example: 'https://attack.mitre.org/groups/G0037/', + flat_name: 'threat.group.reference', + ignore_above: 1024, + level: 'extended', + name: 'group.reference', + normalize: [], + short: 'Reference URL of the group.', + type: 'keyword', + }, + 'threat.indicator.as.number': { + dashed_name: 'threat-indicator-as-number', + description: + 'Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.', + example: 15169, + flat_name: 'threat.indicator.as.number', + level: 'extended', + name: 'number', + normalize: [], + original_fieldset: 'as', + short: 'Unique number allocated to the autonomous system.', + type: 'long', + }, + 'threat.indicator.as.organization.name': { + dashed_name: 'threat-indicator-as-organization-name', + description: 'Organization name.', + example: 'Google LLC', + flat_name: 'threat.indicator.as.organization.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'threat.indicator.as.organization.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'organization.name', + normalize: [], + original_fieldset: 'as', + short: 'Organization name.', + type: 'keyword', + }, + 'threat.indicator.confidence': { + dashed_name: 'threat-indicator-confidence', + description: + 'Identifies the vendor-neutral confidence rating using the None/Low/Medium/High scale defined in Appendix A of the STIX 2.1 framework. Vendor-specific confidence scales may be added as custom fields.', + example: 'Medium', + expected_values: ['Not Specified', 'None', 'Low', 'Medium', 'High'], + flat_name: 'threat.indicator.confidence', + ignore_above: 1024, + level: 'extended', + name: 'indicator.confidence', + normalize: [], + short: 'Indicator confidence rating', + type: 'keyword', + }, + 'threat.indicator.description': { + dashed_name: 'threat-indicator-description', + description: 'Describes the type of action conducted by the threat.', + example: 'IP x.x.x.x was observed delivering the Angler EK.', + flat_name: 'threat.indicator.description', + ignore_above: 1024, + level: 'extended', + name: 'indicator.description', + normalize: [], + short: 'Indicator description', + type: 'keyword', + }, + 'threat.indicator.email.address': { + dashed_name: 'threat-indicator-email-address', + description: + 'Identifies a threat indicator as an email address (irrespective of direction).', + example: 'phish@example.com', + flat_name: 'threat.indicator.email.address', + ignore_above: 1024, + level: 'extended', + name: 'indicator.email.address', + normalize: [], + short: 'Indicator email address', + type: 'keyword', + }, + 'threat.indicator.file.accessed': { + dashed_name: 'threat-indicator-file-accessed', + description: + 'Last time the file was accessed.\nNote that not all filesystems keep track of access time.', + flat_name: 'threat.indicator.file.accessed', + level: 'extended', + name: 'accessed', + normalize: [], + original_fieldset: 'file', + short: 'Last time the file was accessed.', + type: 'date', + }, + 'threat.indicator.file.attributes': { + dashed_name: 'threat-indicator-file-attributes', + description: + "Array of file attributes.\nAttributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write.", + example: '["readonly", "system"]', + flat_name: 'threat.indicator.file.attributes', + ignore_above: 1024, + level: 'extended', + name: 'attributes', + normalize: ['array'], + original_fieldset: 'file', + short: 'Array of file attributes.', + type: 'keyword', + }, + 'threat.indicator.file.code_signature.digest_algorithm': { + dashed_name: 'threat-indicator-file-code-signature-digest-algorithm', + description: + 'The hashing algorithm used to sign the process.\nThis value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm.', + example: 'sha256', + flat_name: 'threat.indicator.file.code_signature.digest_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'digest_algorithm', + normalize: [], + original_fieldset: 'code_signature', + short: 'Hashing algorithm used to sign the process.', + type: 'keyword', + }, + 'threat.indicator.file.code_signature.exists': { + dashed_name: 'threat-indicator-file-code-signature-exists', + description: 'Boolean to capture if a signature is present.', + example: 'true', + flat_name: 'threat.indicator.file.code_signature.exists', + level: 'core', + name: 'exists', + normalize: [], + original_fieldset: 'code_signature', + short: 'Boolean to capture if a signature is present.', + type: 'boolean', + }, + 'threat.indicator.file.code_signature.signing_id': { + dashed_name: 'threat-indicator-file-code-signature-signing-id', + description: + 'The identifier used to sign the process.\nThis is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only.', + example: 'com.apple.xpc.proxy', + flat_name: 'threat.indicator.file.code_signature.signing_id', + ignore_above: 1024, + level: 'extended', + name: 'signing_id', + normalize: [], + original_fieldset: 'code_signature', + short: 'The identifier used to sign the process.', + type: 'keyword', + }, + 'threat.indicator.file.code_signature.status': { + dashed_name: 'threat-indicator-file-code-signature-status', + description: + 'Additional information about the certificate status.\nThis is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked.', + example: 'ERROR_UNTRUSTED_ROOT', + flat_name: 'threat.indicator.file.code_signature.status', + ignore_above: 1024, + level: 'extended', + name: 'status', + normalize: [], + original_fieldset: 'code_signature', + short: 'Additional information about the certificate status.', + type: 'keyword', + }, + 'threat.indicator.file.code_signature.subject_name': { + dashed_name: 'threat-indicator-file-code-signature-subject-name', + description: 'Subject name of the code signer', + example: 'Microsoft Corporation', + flat_name: 'threat.indicator.file.code_signature.subject_name', + ignore_above: 1024, + level: 'core', + name: 'subject_name', + normalize: [], + original_fieldset: 'code_signature', + short: 'Subject name of the code signer', + type: 'keyword', + }, + 'threat.indicator.file.code_signature.team_id': { + dashed_name: 'threat-indicator-file-code-signature-team-id', + description: + 'The team identifier used to sign the process.\nThis is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only.', + example: 'EQHXZ8M8AV', + flat_name: 'threat.indicator.file.code_signature.team_id', + ignore_above: 1024, + level: 'extended', + name: 'team_id', + normalize: [], + original_fieldset: 'code_signature', + short: 'The team identifier used to sign the process.', + type: 'keyword', + }, + 'threat.indicator.file.code_signature.timestamp': { + dashed_name: 'threat-indicator-file-code-signature-timestamp', + description: 'Date and time when the code signature was generated and signed.', + example: '2021-01-01T12:10:30Z', + flat_name: 'threat.indicator.file.code_signature.timestamp', + level: 'extended', + name: 'timestamp', + normalize: [], + original_fieldset: 'code_signature', + short: 'When the signature was generated and signed.', + type: 'date', + }, + 'threat.indicator.file.code_signature.trusted': { + dashed_name: 'threat-indicator-file-code-signature-trusted', + description: + 'Stores the trust status of the certificate chain.\nValidating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status.', + example: 'true', + flat_name: 'threat.indicator.file.code_signature.trusted', + level: 'extended', + name: 'trusted', + normalize: [], + original_fieldset: 'code_signature', + short: 'Stores the trust status of the certificate chain.', + type: 'boolean', + }, + 'threat.indicator.file.code_signature.valid': { + dashed_name: 'threat-indicator-file-code-signature-valid', + description: + 'Boolean to capture if the digital signature is verified against the binary content.\nLeave unpopulated if a certificate was unchecked.', + example: 'true', + flat_name: 'threat.indicator.file.code_signature.valid', + level: 'extended', + name: 'valid', + normalize: [], + original_fieldset: 'code_signature', + short: + 'Boolean to capture if the digital signature is verified against the binary content.', + type: 'boolean', + }, + 'threat.indicator.file.created': { + dashed_name: 'threat-indicator-file-created', + description: 'File creation time.\nNote that not all filesystems store the creation time.', + flat_name: 'threat.indicator.file.created', + level: 'extended', + name: 'created', + normalize: [], + original_fieldset: 'file', + short: 'File creation time.', + type: 'date', + }, + 'threat.indicator.file.ctime': { + dashed_name: 'threat-indicator-file-ctime', + description: + 'Last time the file attributes or metadata changed.\nNote that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file.', + flat_name: 'threat.indicator.file.ctime', + level: 'extended', + name: 'ctime', + normalize: [], + original_fieldset: 'file', + short: 'Last time the file attributes or metadata changed.', + type: 'date', + }, + 'threat.indicator.file.device': { + dashed_name: 'threat-indicator-file-device', + description: 'Device that is the source of the file.', + example: 'sda', + flat_name: 'threat.indicator.file.device', + ignore_above: 1024, + level: 'extended', + name: 'device', + normalize: [], + original_fieldset: 'file', + short: 'Device that is the source of the file.', + type: 'keyword', + }, + 'threat.indicator.file.directory': { + dashed_name: 'threat-indicator-file-directory', + description: + 'Directory where the file is located. It should include the drive letter, when appropriate.', + example: '/home/alice', + flat_name: 'threat.indicator.file.directory', + ignore_above: 1024, + level: 'extended', + name: 'directory', + normalize: [], + original_fieldset: 'file', + short: 'Directory where the file is located.', + type: 'keyword', + }, + 'threat.indicator.file.drive_letter': { + dashed_name: 'threat-indicator-file-drive-letter', + description: + 'Drive letter where the file is located. This field is only relevant on Windows.\nThe value should be uppercase, and not include the colon.', + example: 'C', + flat_name: 'threat.indicator.file.drive_letter', + ignore_above: 1, + level: 'extended', + name: 'drive_letter', + normalize: [], + original_fieldset: 'file', + short: 'Drive letter where the file is located.', + type: 'keyword', + }, + 'threat.indicator.file.elf.architecture': { + dashed_name: 'threat-indicator-file-elf-architecture', + description: 'Machine architecture of the ELF file.', + example: 'x86-64', + flat_name: 'threat.indicator.file.elf.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + original_fieldset: 'elf', + short: 'Machine architecture of the ELF file.', + type: 'keyword', + }, + 'threat.indicator.file.elf.byte_order': { + dashed_name: 'threat-indicator-file-elf-byte-order', + description: 'Byte sequence of ELF file.', + example: 'Little Endian', + flat_name: 'threat.indicator.file.elf.byte_order', + ignore_above: 1024, + level: 'extended', + name: 'byte_order', + normalize: [], + original_fieldset: 'elf', + short: 'Byte sequence of ELF file.', + type: 'keyword', + }, + 'threat.indicator.file.elf.cpu_type': { + dashed_name: 'threat-indicator-file-elf-cpu-type', + description: 'CPU type of the ELF file.', + example: 'Intel', + flat_name: 'threat.indicator.file.elf.cpu_type', + ignore_above: 1024, + level: 'extended', + name: 'cpu_type', + normalize: [], + original_fieldset: 'elf', + short: 'CPU type of the ELF file.', + type: 'keyword', + }, + 'threat.indicator.file.elf.creation_date': { + dashed_name: 'threat-indicator-file-elf-creation-date', + description: + "Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators.", + flat_name: 'threat.indicator.file.elf.creation_date', + level: 'extended', + name: 'creation_date', + normalize: [], + original_fieldset: 'elf', + short: 'Build or compile date.', + type: 'date', + }, + 'threat.indicator.file.elf.exports': { + dashed_name: 'threat-indicator-file-elf-exports', + description: 'List of exported element names and types.', + flat_name: 'threat.indicator.file.elf.exports', + level: 'extended', + name: 'exports', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of exported element names and types.', + type: 'flattened', + }, + 'threat.indicator.file.elf.header.abi_version': { + dashed_name: 'threat-indicator-file-elf-header-abi-version', + description: 'Version of the ELF Application Binary Interface (ABI).', + flat_name: 'threat.indicator.file.elf.header.abi_version', + ignore_above: 1024, + level: 'extended', + name: 'header.abi_version', + normalize: [], + original_fieldset: 'elf', + short: 'Version of the ELF Application Binary Interface (ABI).', + type: 'keyword', + }, + 'threat.indicator.file.elf.header.class': { + dashed_name: 'threat-indicator-file-elf-header-class', + description: 'Header class of the ELF file.', + flat_name: 'threat.indicator.file.elf.header.class', + ignore_above: 1024, + level: 'extended', + name: 'header.class', + normalize: [], + original_fieldset: 'elf', + short: 'Header class of the ELF file.', + type: 'keyword', + }, + 'threat.indicator.file.elf.header.data': { + dashed_name: 'threat-indicator-file-elf-header-data', + description: 'Data table of the ELF header.', + flat_name: 'threat.indicator.file.elf.header.data', + ignore_above: 1024, + level: 'extended', + name: 'header.data', + normalize: [], + original_fieldset: 'elf', + short: 'Data table of the ELF header.', + type: 'keyword', + }, + 'threat.indicator.file.elf.header.entrypoint': { + dashed_name: 'threat-indicator-file-elf-header-entrypoint', + description: 'Header entrypoint of the ELF file.', + flat_name: 'threat.indicator.file.elf.header.entrypoint', + format: 'string', + level: 'extended', + name: 'header.entrypoint', + normalize: [], + original_fieldset: 'elf', + short: 'Header entrypoint of the ELF file.', + type: 'long', + }, + 'threat.indicator.file.elf.header.object_version': { + dashed_name: 'threat-indicator-file-elf-header-object-version', + description: '"0x1" for original ELF files.', + flat_name: 'threat.indicator.file.elf.header.object_version', + ignore_above: 1024, + level: 'extended', + name: 'header.object_version', + normalize: [], + original_fieldset: 'elf', + short: '"0x1" for original ELF files.', + type: 'keyword', + }, + 'threat.indicator.file.elf.header.os_abi': { + dashed_name: 'threat-indicator-file-elf-header-os-abi', + description: 'Application Binary Interface (ABI) of the Linux OS.', + flat_name: 'threat.indicator.file.elf.header.os_abi', + ignore_above: 1024, + level: 'extended', + name: 'header.os_abi', + normalize: [], + original_fieldset: 'elf', + short: 'Application Binary Interface (ABI) of the Linux OS.', + type: 'keyword', + }, + 'threat.indicator.file.elf.header.type': { + dashed_name: 'threat-indicator-file-elf-header-type', + description: 'Header type of the ELF file.', + flat_name: 'threat.indicator.file.elf.header.type', + ignore_above: 1024, + level: 'extended', + name: 'header.type', + normalize: [], + original_fieldset: 'elf', + short: 'Header type of the ELF file.', + type: 'keyword', + }, + 'threat.indicator.file.elf.header.version': { + dashed_name: 'threat-indicator-file-elf-header-version', + description: 'Version of the ELF header.', + flat_name: 'threat.indicator.file.elf.header.version', + ignore_above: 1024, + level: 'extended', + name: 'header.version', + normalize: [], + original_fieldset: 'elf', + short: 'Version of the ELF header.', + type: 'keyword', + }, + 'threat.indicator.file.elf.imports': { + dashed_name: 'threat-indicator-file-elf-imports', + description: 'List of imported element names and types.', + flat_name: 'threat.indicator.file.elf.imports', + level: 'extended', + name: 'imports', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of imported element names and types.', + type: 'flattened', + }, + 'threat.indicator.file.elf.sections': { + dashed_name: 'threat-indicator-file-elf-sections', + description: + 'An array containing an object for each section of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`.', + flat_name: 'threat.indicator.file.elf.sections', + level: 'extended', + name: 'sections', + normalize: ['array'], + original_fieldset: 'elf', + short: 'Section information of the ELF file.', + type: 'nested', + }, + 'threat.indicator.file.elf.sections.chi2': { + dashed_name: 'threat-indicator-file-elf-sections-chi2', + description: 'Chi-square probability distribution of the section.', + flat_name: 'threat.indicator.file.elf.sections.chi2', + format: 'number', + level: 'extended', + name: 'sections.chi2', + normalize: [], + original_fieldset: 'elf', + short: 'Chi-square probability distribution of the section.', + type: 'long', + }, + 'threat.indicator.file.elf.sections.entropy': { + dashed_name: 'threat-indicator-file-elf-sections-entropy', + description: 'Shannon entropy calculation from the section.', + flat_name: 'threat.indicator.file.elf.sections.entropy', + format: 'number', + level: 'extended', + name: 'sections.entropy', + normalize: [], + original_fieldset: 'elf', + short: 'Shannon entropy calculation from the section.', + type: 'long', + }, + 'threat.indicator.file.elf.sections.flags': { + dashed_name: 'threat-indicator-file-elf-sections-flags', + description: 'ELF Section List flags.', + flat_name: 'threat.indicator.file.elf.sections.flags', + ignore_above: 1024, + level: 'extended', + name: 'sections.flags', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List flags.', + type: 'keyword', + }, + 'threat.indicator.file.elf.sections.name': { + dashed_name: 'threat-indicator-file-elf-sections-name', + description: 'ELF Section List name.', + flat_name: 'threat.indicator.file.elf.sections.name', + ignore_above: 1024, + level: 'extended', + name: 'sections.name', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List name.', + type: 'keyword', + }, + 'threat.indicator.file.elf.sections.physical_offset': { + dashed_name: 'threat-indicator-file-elf-sections-physical-offset', + description: 'ELF Section List offset.', + flat_name: 'threat.indicator.file.elf.sections.physical_offset', + ignore_above: 1024, + level: 'extended', + name: 'sections.physical_offset', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List offset.', + type: 'keyword', + }, + 'threat.indicator.file.elf.sections.physical_size': { + dashed_name: 'threat-indicator-file-elf-sections-physical-size', + description: 'ELF Section List physical size.', + flat_name: 'threat.indicator.file.elf.sections.physical_size', + format: 'bytes', + level: 'extended', + name: 'sections.physical_size', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List physical size.', + type: 'long', + }, + 'threat.indicator.file.elf.sections.type': { + dashed_name: 'threat-indicator-file-elf-sections-type', + description: 'ELF Section List type.', + flat_name: 'threat.indicator.file.elf.sections.type', + ignore_above: 1024, + level: 'extended', + name: 'sections.type', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List type.', + type: 'keyword', + }, + 'threat.indicator.file.elf.sections.virtual_address': { + dashed_name: 'threat-indicator-file-elf-sections-virtual-address', + description: 'ELF Section List virtual address.', + flat_name: 'threat.indicator.file.elf.sections.virtual_address', + format: 'string', + level: 'extended', + name: 'sections.virtual_address', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List virtual address.', + type: 'long', + }, + 'threat.indicator.file.elf.sections.virtual_size': { + dashed_name: 'threat-indicator-file-elf-sections-virtual-size', + description: 'ELF Section List virtual size.', + flat_name: 'threat.indicator.file.elf.sections.virtual_size', + format: 'string', + level: 'extended', + name: 'sections.virtual_size', + normalize: [], + original_fieldset: 'elf', + short: 'ELF Section List virtual size.', + type: 'long', + }, + 'threat.indicator.file.elf.segments': { + dashed_name: 'threat-indicator-file-elf-segments', + description: + 'An array containing an object for each segment of the ELF file.\nThe keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`.', + flat_name: 'threat.indicator.file.elf.segments', + level: 'extended', + name: 'segments', + normalize: ['array'], + original_fieldset: 'elf', + short: 'ELF object segment list.', + type: 'nested', + }, + 'threat.indicator.file.elf.segments.sections': { + dashed_name: 'threat-indicator-file-elf-segments-sections', + description: 'ELF object segment sections.', + flat_name: 'threat.indicator.file.elf.segments.sections', + ignore_above: 1024, + level: 'extended', + name: 'segments.sections', + normalize: [], + original_fieldset: 'elf', + short: 'ELF object segment sections.', + type: 'keyword', + }, + 'threat.indicator.file.elf.segments.type': { + dashed_name: 'threat-indicator-file-elf-segments-type', + description: 'ELF object segment type.', + flat_name: 'threat.indicator.file.elf.segments.type', + ignore_above: 1024, + level: 'extended', + name: 'segments.type', + normalize: [], + original_fieldset: 'elf', + short: 'ELF object segment type.', + type: 'keyword', + }, + 'threat.indicator.file.elf.shared_libraries': { + dashed_name: 'threat-indicator-file-elf-shared-libraries', + description: 'List of shared libraries used by this ELF object.', + flat_name: 'threat.indicator.file.elf.shared_libraries', + ignore_above: 1024, + level: 'extended', + name: 'shared_libraries', + normalize: ['array'], + original_fieldset: 'elf', + short: 'List of shared libraries used by this ELF object.', + type: 'keyword', + }, + 'threat.indicator.file.elf.telfhash': { + dashed_name: 'threat-indicator-file-elf-telfhash', + description: 'telfhash symbol hash for ELF file.', + flat_name: 'threat.indicator.file.elf.telfhash', + ignore_above: 1024, + level: 'extended', + name: 'telfhash', + normalize: [], + original_fieldset: 'elf', + short: 'telfhash hash for ELF file.', + type: 'keyword', + }, + 'threat.indicator.file.extension': { + dashed_name: 'threat-indicator-file-extension', + description: + 'File extension, excluding the leading dot.\nNote that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").', + example: 'png', + flat_name: 'threat.indicator.file.extension', + ignore_above: 1024, + level: 'extended', + name: 'extension', + normalize: [], + original_fieldset: 'file', + short: 'File extension, excluding the leading dot.', + type: 'keyword', + }, + 'threat.indicator.file.fork_name': { + dashed_name: 'threat-indicator-file-fork-name', + description: + 'A fork is additional data associated with a filesystem object.\nOn Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist.\nOn NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\\path\\to\\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name.', + example: 'Zone.Identifer', + flat_name: 'threat.indicator.file.fork_name', + ignore_above: 1024, + level: 'extended', + name: 'fork_name', + normalize: [], + original_fieldset: 'file', + short: 'A fork is additional data associated with a filesystem object.', + type: 'keyword', + }, + 'threat.indicator.file.gid': { + dashed_name: 'threat-indicator-file-gid', + description: 'Primary group ID (GID) of the file.', + example: '1001', + flat_name: 'threat.indicator.file.gid', + ignore_above: 1024, + level: 'extended', + name: 'gid', + normalize: [], + original_fieldset: 'file', + short: 'Primary group ID (GID) of the file.', + type: 'keyword', + }, + 'threat.indicator.file.group': { + dashed_name: 'threat-indicator-file-group', + description: 'Primary group name of the file.', + example: 'alice', + flat_name: 'threat.indicator.file.group', + ignore_above: 1024, + level: 'extended', + name: 'group', + normalize: [], + original_fieldset: 'file', + short: 'Primary group name of the file.', + type: 'keyword', + }, + 'threat.indicator.file.hash.md5': { + dashed_name: 'threat-indicator-file-hash-md5', + description: 'MD5 hash.', + flat_name: 'threat.indicator.file.hash.md5', + ignore_above: 1024, + level: 'extended', + name: 'md5', + normalize: [], + original_fieldset: 'hash', + short: 'MD5 hash.', + type: 'keyword', + }, + 'threat.indicator.file.hash.sha1': { + dashed_name: 'threat-indicator-file-hash-sha1', + description: 'SHA1 hash.', + flat_name: 'threat.indicator.file.hash.sha1', + ignore_above: 1024, + level: 'extended', + name: 'sha1', + normalize: [], + original_fieldset: 'hash', + short: 'SHA1 hash.', + type: 'keyword', + }, + 'threat.indicator.file.hash.sha256': { + dashed_name: 'threat-indicator-file-hash-sha256', + description: 'SHA256 hash.', + flat_name: 'threat.indicator.file.hash.sha256', + ignore_above: 1024, + level: 'extended', + name: 'sha256', + normalize: [], + original_fieldset: 'hash', + short: 'SHA256 hash.', + type: 'keyword', + }, + 'threat.indicator.file.hash.sha384': { + dashed_name: 'threat-indicator-file-hash-sha384', + description: 'SHA384 hash.', + flat_name: 'threat.indicator.file.hash.sha384', + ignore_above: 1024, + level: 'extended', + name: 'sha384', + normalize: [], + original_fieldset: 'hash', + short: 'SHA384 hash.', + type: 'keyword', + }, + 'threat.indicator.file.hash.sha512': { + dashed_name: 'threat-indicator-file-hash-sha512', + description: 'SHA512 hash.', + flat_name: 'threat.indicator.file.hash.sha512', + ignore_above: 1024, + level: 'extended', + name: 'sha512', + normalize: [], + original_fieldset: 'hash', + short: 'SHA512 hash.', + type: 'keyword', + }, + 'threat.indicator.file.hash.ssdeep': { + dashed_name: 'threat-indicator-file-hash-ssdeep', + description: 'SSDEEP hash.', + flat_name: 'threat.indicator.file.hash.ssdeep', + ignore_above: 1024, + level: 'extended', + name: 'ssdeep', + normalize: [], + original_fieldset: 'hash', + short: 'SSDEEP hash.', + type: 'keyword', + }, + 'threat.indicator.file.hash.tlsh': { + dashed_name: 'threat-indicator-file-hash-tlsh', + description: 'TLSH hash.', + flat_name: 'threat.indicator.file.hash.tlsh', + ignore_above: 1024, + level: 'extended', + name: 'tlsh', + normalize: [], + original_fieldset: 'hash', + short: 'TLSH hash.', + type: 'keyword', + }, + 'threat.indicator.file.inode': { + dashed_name: 'threat-indicator-file-inode', + description: 'Inode representing the file in the filesystem.', + example: '256383', + flat_name: 'threat.indicator.file.inode', + ignore_above: 1024, + level: 'extended', + name: 'inode', + normalize: [], + original_fieldset: 'file', + short: 'Inode representing the file in the filesystem.', + type: 'keyword', + }, + 'threat.indicator.file.mime_type': { + dashed_name: 'threat-indicator-file-mime-type', + description: + 'MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used.', + flat_name: 'threat.indicator.file.mime_type', + ignore_above: 1024, + level: 'extended', + name: 'mime_type', + normalize: [], + original_fieldset: 'file', + short: 'Media type of file, document, or arrangement of bytes.', + type: 'keyword', + }, + 'threat.indicator.file.mode': { + dashed_name: 'threat-indicator-file-mode', + description: 'Mode of the file in octal representation.', + example: '0640', + flat_name: 'threat.indicator.file.mode', + ignore_above: 1024, + level: 'extended', + name: 'mode', + normalize: [], + original_fieldset: 'file', + short: 'Mode of the file in octal representation.', + type: 'keyword', + }, + 'threat.indicator.file.mtime': { + dashed_name: 'threat-indicator-file-mtime', + description: 'Last time the file content was modified.', + flat_name: 'threat.indicator.file.mtime', + level: 'extended', + name: 'mtime', + normalize: [], + original_fieldset: 'file', + short: 'Last time the file content was modified.', + type: 'date', + }, + 'threat.indicator.file.name': { + dashed_name: 'threat-indicator-file-name', + description: 'Name of the file including the extension, without the directory.', + example: 'example.png', + flat_name: 'threat.indicator.file.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'file', + short: 'Name of the file including the extension, without the directory.', + type: 'keyword', + }, + 'threat.indicator.file.owner': { + dashed_name: 'threat-indicator-file-owner', + description: "File owner's username.", + example: 'alice', + flat_name: 'threat.indicator.file.owner', + ignore_above: 1024, + level: 'extended', + name: 'owner', + normalize: [], + original_fieldset: 'file', + short: "File owner's username.", + type: 'keyword', + }, + 'threat.indicator.file.path': { + dashed_name: 'threat-indicator-file-path', + description: + 'Full path to the file, including the file name. It should include the drive letter, when appropriate.', + example: '/home/alice/example.png', + flat_name: 'threat.indicator.file.path', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'threat.indicator.file.path.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'path', + normalize: [], + original_fieldset: 'file', + short: 'Full path to the file, including the file name.', + type: 'keyword', + }, + 'threat.indicator.file.pe.architecture': { + dashed_name: 'threat-indicator-file-pe-architecture', + description: 'CPU architecture target for the file.', + example: 'x64', + flat_name: 'threat.indicator.file.pe.architecture', + ignore_above: 1024, + level: 'extended', + name: 'architecture', + normalize: [], + original_fieldset: 'pe', + short: 'CPU architecture target for the file.', + type: 'keyword', + }, + 'threat.indicator.file.pe.company': { + dashed_name: 'threat-indicator-file-pe-company', + description: 'Internal company name of the file, provided at compile-time.', + example: 'Microsoft Corporation', + flat_name: 'threat.indicator.file.pe.company', + ignore_above: 1024, + level: 'extended', + name: 'company', + normalize: [], + original_fieldset: 'pe', + short: 'Internal company name of the file, provided at compile-time.', + type: 'keyword', + }, + 'threat.indicator.file.pe.description': { + dashed_name: 'threat-indicator-file-pe-description', + description: 'Internal description of the file, provided at compile-time.', + example: 'Paint', + flat_name: 'threat.indicator.file.pe.description', + ignore_above: 1024, + level: 'extended', + name: 'description', + normalize: [], + original_fieldset: 'pe', + short: 'Internal description of the file, provided at compile-time.', + type: 'keyword', + }, + 'threat.indicator.file.pe.file_version': { + dashed_name: 'threat-indicator-file-pe-file-version', + description: 'Internal version of the file, provided at compile-time.', + example: '6.3.9600.17415', + flat_name: 'threat.indicator.file.pe.file_version', + ignore_above: 1024, + level: 'extended', + name: 'file_version', + normalize: [], + original_fieldset: 'pe', + short: 'Process name.', + type: 'keyword', + }, + 'threat.indicator.file.pe.imphash': { + dashed_name: 'threat-indicator-file-pe-imphash', + description: + 'A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values.\nLearn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.', + example: '0c6803c4e922103c4dca5963aad36ddf', + flat_name: 'threat.indicator.file.pe.imphash', + ignore_above: 1024, + level: 'extended', + name: 'imphash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the imports in a PE file.', + type: 'keyword', + }, + 'threat.indicator.file.pe.original_file_name': { + dashed_name: 'threat-indicator-file-pe-original-file-name', + description: 'Internal name of the file, provided at compile-time.', + example: 'MSPAINT.EXE', + flat_name: 'threat.indicator.file.pe.original_file_name', + ignore_above: 1024, + level: 'extended', + name: 'original_file_name', + normalize: [], + original_fieldset: 'pe', + short: 'Internal name of the file, provided at compile-time.', + type: 'keyword', + }, + 'threat.indicator.file.pe.pehash': { + dashed_name: 'threat-indicator-file-pe-pehash', + description: + 'A hash of the PE header and data from one or more PE sections. An pehash can be used to cluster files by transforming structural information about a file into a hash value.\nLearn more at https://www.usenix.org/legacy/events/leet09/tech/full_papers/wicherski/wicherski_html/index.html.', + example: '73ff189b63cd6be375a7ff25179a38d347651975', + flat_name: 'threat.indicator.file.pe.pehash', + ignore_above: 1024, + level: 'extended', + name: 'pehash', + normalize: [], + original_fieldset: 'pe', + short: 'A hash of the PE header and data from one or more PE sections.', + type: 'keyword', + }, + 'threat.indicator.file.pe.product': { + dashed_name: 'threat-indicator-file-pe-product', + description: 'Internal product name of the file, provided at compile-time.', + example: 'Microsoft® Windows® Operating System', + flat_name: 'threat.indicator.file.pe.product', + ignore_above: 1024, + level: 'extended', + name: 'product', + normalize: [], + original_fieldset: 'pe', + short: 'Internal product name of the file, provided at compile-time.', + type: 'keyword', + }, + 'threat.indicator.file.size': { + dashed_name: 'threat-indicator-file-size', + description: 'File size in bytes.\nOnly relevant when `file.type` is "file".', + example: 16384, + flat_name: 'threat.indicator.file.size', + level: 'extended', + name: 'size', + normalize: [], + original_fieldset: 'file', + short: 'File size in bytes.', + type: 'long', + }, + 'threat.indicator.file.target_path': { + dashed_name: 'threat-indicator-file-target-path', + description: 'Target path for symlinks.', + flat_name: 'threat.indicator.file.target_path', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'threat.indicator.file.target_path.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'target_path', + normalize: [], + original_fieldset: 'file', + short: 'Target path for symlinks.', + type: 'keyword', + }, + 'threat.indicator.file.type': { + dashed_name: 'threat-indicator-file-type', + description: 'File type (file, dir, or symlink).', + example: 'file', + flat_name: 'threat.indicator.file.type', + ignore_above: 1024, + level: 'extended', + name: 'type', + normalize: [], + original_fieldset: 'file', + short: 'File type (file, dir, or symlink).', + type: 'keyword', + }, + 'threat.indicator.file.uid': { + dashed_name: 'threat-indicator-file-uid', + description: 'The user ID (UID) or security identifier (SID) of the file owner.', + example: '1001', + flat_name: 'threat.indicator.file.uid', + ignore_above: 1024, + level: 'extended', + name: 'uid', + normalize: [], + original_fieldset: 'file', + short: 'The user ID (UID) or security identifier (SID) of the file owner.', + type: 'keyword', + }, + 'threat.indicator.file.x509.alternative_names': { + dashed_name: 'threat-indicator-file-x509-alternative-names', + description: + 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', + example: '*.elastic.co', + flat_name: 'threat.indicator.file.x509.alternative_names', + ignore_above: 1024, + level: 'extended', + name: 'alternative_names', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of subject alternative names (SAN).', + type: 'keyword', + }, + 'threat.indicator.file.x509.issuer.common_name': { + dashed_name: 'threat-indicator-file-x509-issuer-common-name', + description: 'List of common name (CN) of issuing certificate authority.', + example: 'Example SHA2 High Assurance Server CA', + flat_name: 'threat.indicator.file.x509.issuer.common_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common name (CN) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.indicator.file.x509.issuer.country': { + dashed_name: 'threat-indicator-file-x509-issuer-country', + description: 'List of country \\(C) codes', + example: 'US', + flat_name: 'threat.indicator.file.x509.issuer.country', + ignore_above: 1024, + level: 'extended', + name: 'issuer.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) codes', + type: 'keyword', + }, + 'threat.indicator.file.x509.issuer.distinguished_name': { + dashed_name: 'threat-indicator-file-x509-issuer-distinguished-name', + description: 'Distinguished name (DN) of issuing certificate authority.', + example: + 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', + flat_name: 'threat.indicator.file.x509.issuer.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.indicator.file.x509.issuer.locality': { + dashed_name: 'threat-indicator-file-x509-issuer-locality', + description: 'List of locality names (L)', + example: 'Mountain View', + flat_name: 'threat.indicator.file.x509.issuer.locality', + ignore_above: 1024, + level: 'extended', + name: 'issuer.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'threat.indicator.file.x509.issuer.organization': { + dashed_name: 'threat-indicator-file-x509-issuer-organization', + description: 'List of organizations (O) of issuing certificate authority.', + example: 'Example Inc', + flat_name: 'threat.indicator.file.x509.issuer.organization', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.indicator.file.x509.issuer.organizational_unit': { + dashed_name: 'threat-indicator-file-x509-issuer-organizational-unit', + description: 'List of organizational units (OU) of issuing certificate authority.', + example: 'www.example.com', + flat_name: 'threat.indicator.file.x509.issuer.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.indicator.file.x509.issuer.state_or_province': { + dashed_name: 'threat-indicator-file-x509-issuer-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'threat.indicator.file.x509.issuer.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'issuer.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'threat.indicator.file.x509.not_after': { + dashed_name: 'threat-indicator-file-x509-not-after', + description: 'Time at which the certificate is no longer considered valid.', + example: '2020-07-16T03:15:39Z', + flat_name: 'threat.indicator.file.x509.not_after', + level: 'extended', + name: 'not_after', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is no longer considered valid.', + type: 'date', + }, + 'threat.indicator.file.x509.not_before': { + dashed_name: 'threat-indicator-file-x509-not-before', + description: 'Time at which the certificate is first considered valid.', + example: '2019-08-16T01:40:25Z', + flat_name: 'threat.indicator.file.x509.not_before', + level: 'extended', + name: 'not_before', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is first considered valid.', + type: 'date', + }, + 'threat.indicator.file.x509.public_key_algorithm': { + dashed_name: 'threat-indicator-file-x509-public-key-algorithm', + description: 'Algorithm used to generate the public key.', + example: 'RSA', + flat_name: 'threat.indicator.file.x509.public_key_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'public_key_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Algorithm used to generate the public key.', + type: 'keyword', + }, + 'threat.indicator.file.x509.public_key_curve': { + dashed_name: 'threat-indicator-file-x509-public-key-curve', + description: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + example: 'nistp521', + flat_name: 'threat.indicator.file.x509.public_key_curve', + ignore_above: 1024, + level: 'extended', + name: 'public_key_curve', + normalize: [], + original_fieldset: 'x509', + short: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + type: 'keyword', + }, + 'threat.indicator.file.x509.public_key_exponent': { + dashed_name: 'threat-indicator-file-x509-public-key-exponent', + description: 'Exponent used to derive the public key. This is algorithm specific.', + doc_values: false, + example: 65537, + flat_name: 'threat.indicator.file.x509.public_key_exponent', + index: false, + level: 'extended', + name: 'public_key_exponent', + normalize: [], + original_fieldset: 'x509', + short: 'Exponent used to derive the public key. This is algorithm specific.', + type: 'long', + }, + 'threat.indicator.file.x509.public_key_size': { + dashed_name: 'threat-indicator-file-x509-public-key-size', + description: 'The size of the public key space in bits.', + example: 2048, + flat_name: 'threat.indicator.file.x509.public_key_size', + level: 'extended', + name: 'public_key_size', + normalize: [], + original_fieldset: 'x509', + short: 'The size of the public key space in bits.', + type: 'long', + }, + 'threat.indicator.file.x509.serial_number': { + dashed_name: 'threat-indicator-file-x509-serial-number', + description: + 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', + example: '55FBB9C7DEBF09809D12CCAA', + flat_name: 'threat.indicator.file.x509.serial_number', + ignore_above: 1024, + level: 'extended', + name: 'serial_number', + normalize: [], + original_fieldset: 'x509', + short: 'Unique serial number issued by the certificate authority.', + type: 'keyword', + }, + 'threat.indicator.file.x509.signature_algorithm': { + dashed_name: 'threat-indicator-file-x509-signature-algorithm', + description: + 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', + example: 'SHA256-RSA', + flat_name: 'threat.indicator.file.x509.signature_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'signature_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Identifier for certificate signature algorithm.', + type: 'keyword', + }, + 'threat.indicator.file.x509.subject.common_name': { + dashed_name: 'threat-indicator-file-x509-subject-common-name', + description: 'List of common names (CN) of subject.', + example: 'shared.global.example.net', + flat_name: 'threat.indicator.file.x509.subject.common_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common names (CN) of subject.', + type: 'keyword', + }, + 'threat.indicator.file.x509.subject.country': { + dashed_name: 'threat-indicator-file-x509-subject-country', + description: 'List of country \\(C) code', + example: 'US', + flat_name: 'threat.indicator.file.x509.subject.country', + ignore_above: 1024, + level: 'extended', + name: 'subject.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) code', + type: 'keyword', + }, + 'threat.indicator.file.x509.subject.distinguished_name': { + dashed_name: 'threat-indicator-file-x509-subject-distinguished-name', + description: 'Distinguished name (DN) of the certificate subject entity.', + example: + 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', + flat_name: 'threat.indicator.file.x509.subject.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of the certificate subject entity.', + type: 'keyword', + }, + 'threat.indicator.file.x509.subject.locality': { + dashed_name: 'threat-indicator-file-x509-subject-locality', + description: 'List of locality names (L)', + example: 'San Francisco', + flat_name: 'threat.indicator.file.x509.subject.locality', + ignore_above: 1024, + level: 'extended', + name: 'subject.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'threat.indicator.file.x509.subject.organization': { + dashed_name: 'threat-indicator-file-x509-subject-organization', + description: 'List of organizations (O) of subject.', + example: 'Example, Inc.', + flat_name: 'threat.indicator.file.x509.subject.organization', + ignore_above: 1024, + level: 'extended', + name: 'subject.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of subject.', + type: 'keyword', + }, + 'threat.indicator.file.x509.subject.organizational_unit': { + dashed_name: 'threat-indicator-file-x509-subject-organizational-unit', + description: 'List of organizational units (OU) of subject.', + flat_name: 'threat.indicator.file.x509.subject.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'subject.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of subject.', + type: 'keyword', + }, + 'threat.indicator.file.x509.subject.state_or_province': { + dashed_name: 'threat-indicator-file-x509-subject-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'threat.indicator.file.x509.subject.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'subject.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'threat.indicator.file.x509.version_number': { + dashed_name: 'threat-indicator-file-x509-version-number', + description: 'Version of x509 format.', + example: 3, + flat_name: 'threat.indicator.file.x509.version_number', + ignore_above: 1024, + level: 'extended', + name: 'version_number', + normalize: [], + original_fieldset: 'x509', + short: 'Version of x509 format.', + type: 'keyword', + }, + 'threat.indicator.first_seen': { + dashed_name: 'threat-indicator-first-seen', + description: + 'The date and time when intelligence source first reported sighting this indicator.', + example: '2020-11-05T17:25:47.000Z', + flat_name: 'threat.indicator.first_seen', + level: 'extended', + name: 'indicator.first_seen', + normalize: [], + short: 'Date/time indicator was first reported.', + type: 'date', + }, + 'threat.indicator.geo.city_name': { + dashed_name: 'threat-indicator-geo-city-name', + description: 'City name.', + example: 'Montreal', + flat_name: 'threat.indicator.geo.city_name', + ignore_above: 1024, + level: 'core', + name: 'city_name', + normalize: [], + original_fieldset: 'geo', + short: 'City name.', + type: 'keyword', + }, + 'threat.indicator.geo.continent_code': { + dashed_name: 'threat-indicator-geo-continent-code', + description: "Two-letter code representing continent's name.", + example: 'NA', + flat_name: 'threat.indicator.geo.continent_code', + ignore_above: 1024, + level: 'core', + name: 'continent_code', + normalize: [], + original_fieldset: 'geo', + short: 'Continent code.', + type: 'keyword', + }, + 'threat.indicator.geo.continent_name': { + dashed_name: 'threat-indicator-geo-continent-name', + description: 'Name of the continent.', + example: 'North America', + flat_name: 'threat.indicator.geo.continent_name', + ignore_above: 1024, + level: 'core', + name: 'continent_name', + normalize: [], + original_fieldset: 'geo', + short: 'Name of the continent.', + type: 'keyword', + }, + 'threat.indicator.geo.country_iso_code': { + dashed_name: 'threat-indicator-geo-country-iso-code', + description: 'Country ISO code.', + example: 'CA', + flat_name: 'threat.indicator.geo.country_iso_code', + ignore_above: 1024, + level: 'core', + name: 'country_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Country ISO code.', + type: 'keyword', + }, + 'threat.indicator.geo.country_name': { + dashed_name: 'threat-indicator-geo-country-name', + description: 'Country name.', + example: 'Canada', + flat_name: 'threat.indicator.geo.country_name', + ignore_above: 1024, + level: 'core', + name: 'country_name', + normalize: [], + original_fieldset: 'geo', + short: 'Country name.', + type: 'keyword', + }, + 'threat.indicator.geo.location': { + dashed_name: 'threat-indicator-geo-location', + description: 'Longitude and latitude.', + example: '{ "lon": -73.614830, "lat": 45.505918 }', + flat_name: 'threat.indicator.geo.location', + level: 'core', + name: 'location', + normalize: [], + original_fieldset: 'geo', + short: 'Longitude and latitude.', + type: 'geo_point', + }, + 'threat.indicator.geo.name': { + dashed_name: 'threat-indicator-geo-name', + description: + 'User-defined description of a location, at the level of granularity they care about.\nCould be the name of their data centers, the floor number, if this describes a local physical entity, city names.\nNot typically used in automated geolocation.', + example: 'boston-dc', + flat_name: 'threat.indicator.geo.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'geo', + short: 'User-defined description of a location.', + type: 'keyword', + }, + 'threat.indicator.geo.postal_code': { + dashed_name: 'threat-indicator-geo-postal-code', + description: + 'Postal code associated with the location.\nValues appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.', + example: 94040, + flat_name: 'threat.indicator.geo.postal_code', + ignore_above: 1024, + level: 'core', + name: 'postal_code', + normalize: [], + original_fieldset: 'geo', + short: 'Postal code.', + type: 'keyword', + }, + 'threat.indicator.geo.region_iso_code': { + dashed_name: 'threat-indicator-geo-region-iso-code', + description: 'Region ISO code.', + example: 'CA-QC', + flat_name: 'threat.indicator.geo.region_iso_code', + ignore_above: 1024, + level: 'core', + name: 'region_iso_code', + normalize: [], + original_fieldset: 'geo', + short: 'Region ISO code.', + type: 'keyword', + }, + 'threat.indicator.geo.region_name': { + dashed_name: 'threat-indicator-geo-region-name', + description: 'Region name.', + example: 'Quebec', + flat_name: 'threat.indicator.geo.region_name', + ignore_above: 1024, + level: 'core', + name: 'region_name', + normalize: [], + original_fieldset: 'geo', + short: 'Region name.', + type: 'keyword', + }, + 'threat.indicator.geo.timezone': { + dashed_name: 'threat-indicator-geo-timezone', + description: 'The time zone of the location, such as IANA time zone name.', + example: 'America/Argentina/Buenos_Aires', + flat_name: 'threat.indicator.geo.timezone', + ignore_above: 1024, + level: 'core', + name: 'timezone', + normalize: [], + original_fieldset: 'geo', + short: 'Time zone.', + type: 'keyword', + }, + 'threat.indicator.ip': { + dashed_name: 'threat-indicator-ip', + description: 'Identifies a threat indicator as an IP address (irrespective of direction).', + example: '1.2.3.4', + flat_name: 'threat.indicator.ip', + level: 'extended', + name: 'indicator.ip', + normalize: [], + short: 'Indicator IP address', + type: 'ip', + }, + 'threat.indicator.last_seen': { + dashed_name: 'threat-indicator-last-seen', + description: + 'The date and time when intelligence source last reported sighting this indicator.', + example: '2020-11-05T17:25:47.000Z', + flat_name: 'threat.indicator.last_seen', + level: 'extended', + name: 'indicator.last_seen', + normalize: [], + short: 'Date/time indicator was last reported.', + type: 'date', + }, + 'threat.indicator.marking.tlp': { + dashed_name: 'threat-indicator-marking-tlp', + description: 'Traffic Light Protocol sharing markings.', + example: 'CLEAR', + expected_values: ['WHITE', 'CLEAR', 'GREEN', 'AMBER', 'AMBER+STRICT', 'RED'], + flat_name: 'threat.indicator.marking.tlp', + ignore_above: 1024, + level: 'extended', + name: 'indicator.marking.tlp', + normalize: [], + short: 'Indicator TLP marking', + type: 'keyword', + }, + 'threat.indicator.modified_at': { + dashed_name: 'threat-indicator-modified-at', + description: + 'The date and time when intelligence source last modified information for this indicator.', + example: '2020-11-05T17:25:47.000Z', + flat_name: 'threat.indicator.modified_at', + level: 'extended', + name: 'indicator.modified_at', + normalize: [], + short: 'Date/time indicator was last updated.', + type: 'date', + }, + 'threat.indicator.port': { + dashed_name: 'threat-indicator-port', + description: 'Identifies a threat indicator as a port number (irrespective of direction).', + example: 443, + flat_name: 'threat.indicator.port', + level: 'extended', + name: 'indicator.port', + normalize: [], + short: 'Indicator port', + type: 'long', + }, + 'threat.indicator.provider': { + dashed_name: 'threat-indicator-provider', + description: "The name of the indicator's provider.", + example: 'lrz_urlhaus', + flat_name: 'threat.indicator.provider', + ignore_above: 1024, + level: 'extended', + name: 'indicator.provider', + normalize: [], + short: 'Indicator provider', + type: 'keyword', + }, + 'threat.indicator.reference': { + dashed_name: 'threat-indicator-reference', + description: 'Reference URL linking to additional information about this indicator.', + example: 'https://system.example.com/indicator/0001234', + flat_name: 'threat.indicator.reference', + ignore_above: 1024, + level: 'extended', + name: 'indicator.reference', + normalize: [], + short: 'Indicator reference URL', + type: 'keyword', + }, + 'threat.indicator.registry.data.bytes': { + dashed_name: 'threat-indicator-registry-data-bytes', + description: + 'Original bytes written with base64 encoding.\nFor Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values.', + example: 'ZQBuAC0AVQBTAAAAZQBuAAAAAAA=', + flat_name: 'threat.indicator.registry.data.bytes', + ignore_above: 1024, + level: 'extended', + name: 'data.bytes', + normalize: [], + original_fieldset: 'registry', + short: 'Original bytes written with base64 encoding.', + type: 'keyword', + }, + 'threat.indicator.registry.data.strings': { + dashed_name: 'threat-indicator-registry-data-strings', + description: + 'Content when writing string types.\nPopulated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`).', + example: '["C:\\rta\\red_ttp\\bin\\myapp.exe"]', + flat_name: 'threat.indicator.registry.data.strings', + level: 'core', + name: 'data.strings', + normalize: ['array'], + original_fieldset: 'registry', + short: 'List of strings representing what was written to the registry.', + type: 'wildcard', + }, + 'threat.indicator.registry.data.type': { + dashed_name: 'threat-indicator-registry-data-type', + description: 'Standard registry type for encoding contents', + example: 'REG_SZ', + flat_name: 'threat.indicator.registry.data.type', + ignore_above: 1024, + level: 'core', + name: 'data.type', + normalize: [], + original_fieldset: 'registry', + short: 'Standard registry type for encoding contents', + type: 'keyword', + }, + 'threat.indicator.registry.hive': { + dashed_name: 'threat-indicator-registry-hive', + description: 'Abbreviated name for the hive.', + example: 'HKLM', + flat_name: 'threat.indicator.registry.hive', + ignore_above: 1024, + level: 'core', + name: 'hive', + normalize: [], + original_fieldset: 'registry', + short: 'Abbreviated name for the hive.', + type: 'keyword', + }, + 'threat.indicator.registry.key': { + dashed_name: 'threat-indicator-registry-key', + description: 'Hive-relative path of keys.', + example: + 'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\winword.exe', + flat_name: 'threat.indicator.registry.key', + ignore_above: 1024, + level: 'core', + name: 'key', + normalize: [], + original_fieldset: 'registry', + short: 'Hive-relative path of keys.', + type: 'keyword', + }, + 'threat.indicator.registry.path': { + dashed_name: 'threat-indicator-registry-path', + description: 'Full path, including hive, key and value', + example: + 'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\winword.exe\\Debugger', + flat_name: 'threat.indicator.registry.path', + ignore_above: 1024, + level: 'core', + name: 'path', + normalize: [], + original_fieldset: 'registry', + short: 'Full path, including hive, key and value', + type: 'keyword', + }, + 'threat.indicator.registry.value': { + dashed_name: 'threat-indicator-registry-value', + description: 'Name of the value written.', + example: 'Debugger', + flat_name: 'threat.indicator.registry.value', + ignore_above: 1024, + level: 'core', + name: 'value', + normalize: [], + original_fieldset: 'registry', + short: 'Name of the value written.', + type: 'keyword', + }, + 'threat.indicator.scanner_stats': { + dashed_name: 'threat-indicator-scanner-stats', + description: 'Count of AV/EDR vendors that successfully detected malicious file or URL.', + example: 4, + flat_name: 'threat.indicator.scanner_stats', + level: 'extended', + name: 'indicator.scanner_stats', + normalize: [], + short: 'Scanner statistics', + type: 'long', + }, + 'threat.indicator.sightings': { + dashed_name: 'threat-indicator-sightings', + description: 'Number of times this indicator was observed conducting threat activity.', + example: 20, + flat_name: 'threat.indicator.sightings', + level: 'extended', + name: 'indicator.sightings', + normalize: [], + short: 'Number of times indicator observed', + type: 'long', + }, + 'threat.indicator.type': { + dashed_name: 'threat-indicator-type', + description: 'Type of indicator as represented by Cyber Observable in STIX 2.0.', + example: 'ipv4-addr', + expected_values: [ + 'autonomous-system', + 'artifact', + 'directory', + 'domain-name', + 'email-addr', + 'file', + 'ipv4-addr', + 'ipv6-addr', + 'mac-addr', + 'mutex', + 'port', + 'process', + 'software', + 'url', + 'user-account', + 'windows-registry-key', + 'x509-certificate', + ], + flat_name: 'threat.indicator.type', + ignore_above: 1024, + level: 'extended', + name: 'indicator.type', + normalize: [], + short: 'Type of indicator', + type: 'keyword', + }, + 'threat.indicator.url.domain': { + dashed_name: 'threat-indicator-url-domain', + description: + 'Domain of the url, such as "www.elastic.co".\nIn some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field.\nIf the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field.', + example: 'www.elastic.co', + flat_name: 'threat.indicator.url.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'url', + short: 'Domain of the url.', + type: 'keyword', + }, + 'threat.indicator.url.extension': { + dashed_name: 'threat-indicator-url-extension', + description: + 'The field contains the file extension from the original request url, excluding the leading dot.\nThe file extension is only set if it exists, as not every url has a file extension.\nThe leading period must not be included. For example, the value must be "png", not ".png".\nNote that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").', + example: 'png', + flat_name: 'threat.indicator.url.extension', + ignore_above: 1024, + level: 'extended', + name: 'extension', + normalize: [], + original_fieldset: 'url', + short: 'File extension from the request url, excluding the leading dot.', + type: 'keyword', + }, + 'threat.indicator.url.fragment': { + dashed_name: 'threat-indicator-url-fragment', + description: + 'Portion of the url after the `#`, such as "top".\nThe `#` is not part of the fragment.', + flat_name: 'threat.indicator.url.fragment', + ignore_above: 1024, + level: 'extended', + name: 'fragment', + normalize: [], + original_fieldset: 'url', + short: 'Portion of the url after the `#`.', + type: 'keyword', + }, + 'threat.indicator.url.full': { + dashed_name: 'threat-indicator-url-full', + description: + 'If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source.', + example: 'https://www.elastic.co:443/search?q=elasticsearch#top', + flat_name: 'threat.indicator.url.full', + level: 'extended', + multi_fields: [ + { + flat_name: 'threat.indicator.url.full.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full', + normalize: [], + original_fieldset: 'url', + short: 'Full unparsed URL.', + type: 'wildcard', + }, + 'threat.indicator.url.original': { + dashed_name: 'threat-indicator-url-original', + description: + 'Unmodified original url as seen in the event source.\nNote that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path.\nThis field is meant to represent the URL as it was observed, complete or not.', + example: 'https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch', + flat_name: 'threat.indicator.url.original', + level: 'extended', + multi_fields: [ + { + flat_name: 'threat.indicator.url.original.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'original', + normalize: [], + original_fieldset: 'url', + short: 'Unmodified original url as seen in the event source.', + type: 'wildcard', + }, + 'threat.indicator.url.password': { + dashed_name: 'threat-indicator-url-password', + description: 'Password of the request.', + flat_name: 'threat.indicator.url.password', + ignore_above: 1024, + level: 'extended', + name: 'password', + normalize: [], + original_fieldset: 'url', + short: 'Password of the request.', + type: 'keyword', + }, + 'threat.indicator.url.path': { + dashed_name: 'threat-indicator-url-path', + description: 'Path of the request, such as "/search".', + flat_name: 'threat.indicator.url.path', + level: 'extended', + name: 'path', + normalize: [], + original_fieldset: 'url', + short: 'Path of the request, such as "/search".', + type: 'wildcard', + }, + 'threat.indicator.url.port': { + dashed_name: 'threat-indicator-url-port', + description: 'Port of the request, such as 443.', + example: 443, + flat_name: 'threat.indicator.url.port', + format: 'string', + level: 'extended', + name: 'port', + normalize: [], + original_fieldset: 'url', + short: 'Port of the request, such as 443.', + type: 'long', + }, + 'threat.indicator.url.query': { + dashed_name: 'threat-indicator-url-query', + description: + 'The query field describes the query string of the request, such as "q=elasticsearch".\nThe `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases.', + flat_name: 'threat.indicator.url.query', + ignore_above: 1024, + level: 'extended', + name: 'query', + normalize: [], + original_fieldset: 'url', + short: 'Query string of the request.', + type: 'keyword', + }, + 'threat.indicator.url.registered_domain': { + dashed_name: 'threat-indicator-url-registered-domain', + description: + 'The highest registered url domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', + example: 'example.com', + flat_name: 'threat.indicator.url.registered_domain', + ignore_above: 1024, + level: 'extended', + name: 'registered_domain', + normalize: [], + original_fieldset: 'url', + short: 'The highest registered url domain, stripped of the subdomain.', + type: 'keyword', + }, + 'threat.indicator.url.scheme': { + dashed_name: 'threat-indicator-url-scheme', + description: + 'Scheme of the request, such as "https".\nNote: The `:` is not part of the scheme.', + example: 'https', + flat_name: 'threat.indicator.url.scheme', + ignore_above: 1024, + level: 'extended', + name: 'scheme', + normalize: [], + original_fieldset: 'url', + short: 'Scheme of the url.', + type: 'keyword', + }, + 'threat.indicator.url.subdomain': { + dashed_name: 'threat-indicator-url-subdomain', + description: + 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', + example: 'east', + flat_name: 'threat.indicator.url.subdomain', + ignore_above: 1024, + level: 'extended', + name: 'subdomain', + normalize: [], + original_fieldset: 'url', + short: 'The subdomain of the domain.', + type: 'keyword', + }, + 'threat.indicator.url.top_level_domain': { + dashed_name: 'threat-indicator-url-top-level-domain', + description: + 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', + example: 'co.uk', + flat_name: 'threat.indicator.url.top_level_domain', + ignore_above: 1024, + level: 'extended', + name: 'top_level_domain', + normalize: [], + original_fieldset: 'url', + short: 'The effective top level domain (com, org, net, co.uk).', + type: 'keyword', + }, + 'threat.indicator.url.username': { + dashed_name: 'threat-indicator-url-username', + description: 'Username of the request.', + flat_name: 'threat.indicator.url.username', + ignore_above: 1024, + level: 'extended', + name: 'username', + normalize: [], + original_fieldset: 'url', + short: 'Username of the request.', + type: 'keyword', + }, + 'threat.indicator.x509.alternative_names': { + dashed_name: 'threat-indicator-x509-alternative-names', + description: + 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', + example: '*.elastic.co', + flat_name: 'threat.indicator.x509.alternative_names', + ignore_above: 1024, + level: 'extended', + name: 'alternative_names', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of subject alternative names (SAN).', + type: 'keyword', + }, + 'threat.indicator.x509.issuer.common_name': { + dashed_name: 'threat-indicator-x509-issuer-common-name', + description: 'List of common name (CN) of issuing certificate authority.', + example: 'Example SHA2 High Assurance Server CA', + flat_name: 'threat.indicator.x509.issuer.common_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common name (CN) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.indicator.x509.issuer.country': { + dashed_name: 'threat-indicator-x509-issuer-country', + description: 'List of country \\(C) codes', + example: 'US', + flat_name: 'threat.indicator.x509.issuer.country', + ignore_above: 1024, + level: 'extended', + name: 'issuer.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) codes', + type: 'keyword', + }, + 'threat.indicator.x509.issuer.distinguished_name': { + dashed_name: 'threat-indicator-x509-issuer-distinguished-name', + description: 'Distinguished name (DN) of issuing certificate authority.', + example: + 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', + flat_name: 'threat.indicator.x509.issuer.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.indicator.x509.issuer.locality': { + dashed_name: 'threat-indicator-x509-issuer-locality', + description: 'List of locality names (L)', + example: 'Mountain View', + flat_name: 'threat.indicator.x509.issuer.locality', + ignore_above: 1024, + level: 'extended', + name: 'issuer.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'threat.indicator.x509.issuer.organization': { + dashed_name: 'threat-indicator-x509-issuer-organization', + description: 'List of organizations (O) of issuing certificate authority.', + example: 'Example Inc', + flat_name: 'threat.indicator.x509.issuer.organization', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.indicator.x509.issuer.organizational_unit': { + dashed_name: 'threat-indicator-x509-issuer-organizational-unit', + description: 'List of organizational units (OU) of issuing certificate authority.', + example: 'www.example.com', + flat_name: 'threat.indicator.x509.issuer.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of issuing certificate authority.', + type: 'keyword', + }, + 'threat.indicator.x509.issuer.state_or_province': { + dashed_name: 'threat-indicator-x509-issuer-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'threat.indicator.x509.issuer.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'issuer.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'threat.indicator.x509.not_after': { + dashed_name: 'threat-indicator-x509-not-after', + description: 'Time at which the certificate is no longer considered valid.', + example: '2020-07-16T03:15:39Z', + flat_name: 'threat.indicator.x509.not_after', + level: 'extended', + name: 'not_after', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is no longer considered valid.', + type: 'date', + }, + 'threat.indicator.x509.not_before': { + dashed_name: 'threat-indicator-x509-not-before', + description: 'Time at which the certificate is first considered valid.', + example: '2019-08-16T01:40:25Z', + flat_name: 'threat.indicator.x509.not_before', + level: 'extended', + name: 'not_before', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is first considered valid.', + type: 'date', + }, + 'threat.indicator.x509.public_key_algorithm': { + dashed_name: 'threat-indicator-x509-public-key-algorithm', + description: 'Algorithm used to generate the public key.', + example: 'RSA', + flat_name: 'threat.indicator.x509.public_key_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'public_key_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Algorithm used to generate the public key.', + type: 'keyword', + }, + 'threat.indicator.x509.public_key_curve': { + dashed_name: 'threat-indicator-x509-public-key-curve', + description: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + example: 'nistp521', + flat_name: 'threat.indicator.x509.public_key_curve', + ignore_above: 1024, + level: 'extended', + name: 'public_key_curve', + normalize: [], + original_fieldset: 'x509', + short: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + type: 'keyword', + }, + 'threat.indicator.x509.public_key_exponent': { + dashed_name: 'threat-indicator-x509-public-key-exponent', + description: 'Exponent used to derive the public key. This is algorithm specific.', + doc_values: false, + example: 65537, + flat_name: 'threat.indicator.x509.public_key_exponent', + index: false, + level: 'extended', + name: 'public_key_exponent', + normalize: [], + original_fieldset: 'x509', + short: 'Exponent used to derive the public key. This is algorithm specific.', + type: 'long', + }, + 'threat.indicator.x509.public_key_size': { + dashed_name: 'threat-indicator-x509-public-key-size', + description: 'The size of the public key space in bits.', + example: 2048, + flat_name: 'threat.indicator.x509.public_key_size', + level: 'extended', + name: 'public_key_size', + normalize: [], + original_fieldset: 'x509', + short: 'The size of the public key space in bits.', + type: 'long', + }, + 'threat.indicator.x509.serial_number': { + dashed_name: 'threat-indicator-x509-serial-number', + description: + 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', + example: '55FBB9C7DEBF09809D12CCAA', + flat_name: 'threat.indicator.x509.serial_number', + ignore_above: 1024, + level: 'extended', + name: 'serial_number', + normalize: [], + original_fieldset: 'x509', + short: 'Unique serial number issued by the certificate authority.', + type: 'keyword', + }, + 'threat.indicator.x509.signature_algorithm': { + dashed_name: 'threat-indicator-x509-signature-algorithm', + description: + 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', + example: 'SHA256-RSA', + flat_name: 'threat.indicator.x509.signature_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'signature_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Identifier for certificate signature algorithm.', + type: 'keyword', + }, + 'threat.indicator.x509.subject.common_name': { + dashed_name: 'threat-indicator-x509-subject-common-name', + description: 'List of common names (CN) of subject.', + example: 'shared.global.example.net', + flat_name: 'threat.indicator.x509.subject.common_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common names (CN) of subject.', + type: 'keyword', + }, + 'threat.indicator.x509.subject.country': { + dashed_name: 'threat-indicator-x509-subject-country', + description: 'List of country \\(C) code', + example: 'US', + flat_name: 'threat.indicator.x509.subject.country', + ignore_above: 1024, + level: 'extended', + name: 'subject.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) code', + type: 'keyword', + }, + 'threat.indicator.x509.subject.distinguished_name': { + dashed_name: 'threat-indicator-x509-subject-distinguished-name', + description: 'Distinguished name (DN) of the certificate subject entity.', + example: + 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', + flat_name: 'threat.indicator.x509.subject.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of the certificate subject entity.', + type: 'keyword', + }, + 'threat.indicator.x509.subject.locality': { + dashed_name: 'threat-indicator-x509-subject-locality', + description: 'List of locality names (L)', + example: 'San Francisco', + flat_name: 'threat.indicator.x509.subject.locality', + ignore_above: 1024, + level: 'extended', + name: 'subject.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'threat.indicator.x509.subject.organization': { + dashed_name: 'threat-indicator-x509-subject-organization', + description: 'List of organizations (O) of subject.', + example: 'Example, Inc.', + flat_name: 'threat.indicator.x509.subject.organization', + ignore_above: 1024, + level: 'extended', + name: 'subject.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of subject.', + type: 'keyword', + }, + 'threat.indicator.x509.subject.organizational_unit': { + dashed_name: 'threat-indicator-x509-subject-organizational-unit', + description: 'List of organizational units (OU) of subject.', + flat_name: 'threat.indicator.x509.subject.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'subject.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of subject.', + type: 'keyword', + }, + 'threat.indicator.x509.subject.state_or_province': { + dashed_name: 'threat-indicator-x509-subject-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'threat.indicator.x509.subject.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'subject.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'threat.indicator.x509.version_number': { + dashed_name: 'threat-indicator-x509-version-number', + description: 'Version of x509 format.', + example: 3, + flat_name: 'threat.indicator.x509.version_number', + ignore_above: 1024, + level: 'extended', + name: 'version_number', + normalize: [], + original_fieldset: 'x509', + short: 'Version of x509 format.', + type: 'keyword', + }, + 'threat.software.alias': { + dashed_name: 'threat-software-alias', + description: + 'The alias(es) of the software for a set of related intrusion activity that are tracked by a common name in the security community.\nWhile not required, you can use a MITRE ATT&CK® associated software description.', + example: '[ "X-Agent" ]', + flat_name: 'threat.software.alias', + ignore_above: 1024, + level: 'extended', + name: 'software.alias', + normalize: ['array'], + short: 'Alias of the software', + type: 'keyword', + }, + 'threat.software.id': { + dashed_name: 'threat-software-id', + description: + 'The id of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.\nWhile not required, you can use a MITRE ATT&CK® software id.', + example: 'S0552', + flat_name: 'threat.software.id', + ignore_above: 1024, + level: 'extended', + name: 'software.id', + normalize: [], + short: 'ID of the software', + type: 'keyword', + }, + 'threat.software.name': { + dashed_name: 'threat-software-name', + description: + 'The name of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.\nWhile not required, you can use a MITRE ATT&CK® software name.', + example: 'AdFind', + flat_name: 'threat.software.name', + ignore_above: 1024, + level: 'extended', + name: 'software.name', + normalize: [], + short: 'Name of the software.', + type: 'keyword', + }, + 'threat.software.platforms': { + dashed_name: 'threat-software-platforms', + description: + 'The platforms of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.\nWhile not required, you can use MITRE ATT&CK® software platform values.', + example: '[ "Windows" ]', + expected_values: [ + 'AWS', + 'Azure', + 'Azure AD', + 'GCP', + 'Linux', + 'macOS', + 'Network', + 'Office 365', + 'SaaS', + 'Windows', + ], + flat_name: 'threat.software.platforms', + ignore_above: 1024, + level: 'extended', + name: 'software.platforms', + normalize: ['array'], + short: 'Platforms of the software.', + type: 'keyword', + }, + 'threat.software.reference': { + dashed_name: 'threat-software-reference', + description: + 'The reference URL of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.\nWhile not required, you can use a MITRE ATT&CK® software reference URL.', + example: 'https://attack.mitre.org/software/S0552/', + flat_name: 'threat.software.reference', + ignore_above: 1024, + level: 'extended', + name: 'software.reference', + normalize: [], + short: 'Software reference URL.', + type: 'keyword', + }, + 'threat.software.type': { + dashed_name: 'threat-software-type', + description: + 'The type of software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®.\nWhile not required, you can use a MITRE ATT&CK® software type.', + example: 'Tool', + expected_values: ['Malware', 'Tool'], + flat_name: 'threat.software.type', + ignore_above: 1024, + level: 'extended', + name: 'software.type', + normalize: [], + short: 'Software type.', + type: 'keyword', + }, + 'threat.tactic.id': { + dashed_name: 'threat-tactic-id', + description: + 'The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ )', + example: 'TA0002', + flat_name: 'threat.tactic.id', + ignore_above: 1024, + level: 'extended', + name: 'tactic.id', + normalize: ['array'], + short: 'Threat tactic id.', + type: 'keyword', + }, + 'threat.tactic.name': { + dashed_name: 'threat-tactic-name', + description: + 'Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/)', + example: 'Execution', + flat_name: 'threat.tactic.name', + ignore_above: 1024, + level: 'extended', + name: 'tactic.name', + normalize: ['array'], + short: 'Threat tactic.', + type: 'keyword', + }, + 'threat.tactic.reference': { + dashed_name: 'threat-tactic-reference', + description: + 'The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ )', + example: 'https://attack.mitre.org/tactics/TA0002/', + flat_name: 'threat.tactic.reference', + ignore_above: 1024, + level: 'extended', + name: 'tactic.reference', + normalize: ['array'], + short: 'Threat tactic URL reference.', + type: 'keyword', + }, + 'threat.technique.id': { + dashed_name: 'threat-technique-id', + description: + 'The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)', + example: 'T1059', + flat_name: 'threat.technique.id', + ignore_above: 1024, + level: 'extended', + name: 'technique.id', + normalize: ['array'], + short: 'Threat technique id.', + type: 'keyword', + }, + 'threat.technique.name': { + dashed_name: 'threat-technique-name', + description: + 'The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)', + example: 'Command and Scripting Interpreter', + flat_name: 'threat.technique.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'threat.technique.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'technique.name', + normalize: ['array'], + short: 'Threat technique name.', + type: 'keyword', + }, + 'threat.technique.reference': { + dashed_name: 'threat-technique-reference', + description: + 'The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)', + example: 'https://attack.mitre.org/techniques/T1059/', + flat_name: 'threat.technique.reference', + ignore_above: 1024, + level: 'extended', + name: 'technique.reference', + normalize: ['array'], + short: 'Threat technique URL reference.', + type: 'keyword', + }, + 'threat.technique.subtechnique.id': { + dashed_name: 'threat-technique-subtechnique-id', + description: + 'The full id of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)', + example: 'T1059.001', + flat_name: 'threat.technique.subtechnique.id', + ignore_above: 1024, + level: 'extended', + name: 'technique.subtechnique.id', + normalize: ['array'], + short: 'Threat subtechnique id.', + type: 'keyword', + }, + 'threat.technique.subtechnique.name': { + dashed_name: 'threat-technique-subtechnique-name', + description: + 'The name of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)', + example: 'PowerShell', + flat_name: 'threat.technique.subtechnique.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'threat.technique.subtechnique.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'technique.subtechnique.name', + normalize: ['array'], + short: 'Threat subtechnique name.', + type: 'keyword', + }, + 'threat.technique.subtechnique.reference': { + dashed_name: 'threat-technique-subtechnique-reference', + description: + 'The reference url of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)', + example: 'https://attack.mitre.org/techniques/T1059/001/', + flat_name: 'threat.technique.subtechnique.reference', + ignore_above: 1024, + level: 'extended', + name: 'technique.subtechnique.reference', + normalize: ['array'], + short: 'Threat subtechnique URL reference.', + type: 'keyword', + }, + 'threat.threat.indicator.marking.tlp.version': { + dashed_name: 'threat-threat-indicator-marking-tlp-version', + description: 'Traffic Light Protocol version.', + example: 2, + flat_name: 'threat.threat.indicator.marking.tlp.version', + ignore_above: 1024, + level: 'extended', + name: 'threat.indicator.marking.tlp.version', + normalize: [], + short: 'Indicator TLP version', + type: 'keyword', + }, + }, + group: 2, + name: 'threat', + nestings: [ + 'threat.enrichments.indicator.as', + 'threat.enrichments.indicator.file', + 'threat.enrichments.indicator.geo', + 'threat.enrichments.indicator.registry', + 'threat.enrichments.indicator.url', + 'threat.enrichments.indicator.x509', + 'threat.indicator.as', + 'threat.indicator.file', + 'threat.indicator.geo', + 'threat.indicator.registry', + 'threat.indicator.url', + 'threat.indicator.x509', + ], + prefix: 'threat.', + reused_here: [ + { + full: 'threat.indicator.x509', + schema_name: 'x509', + short: 'These fields contain x509 certificate metadata.', + }, + { + full: 'threat.enrichments.indicator.x509', + schema_name: 'x509', + short: 'These fields contain x509 certificate metadata.', + }, + { + full: 'threat.indicator.as', + schema_name: 'as', + short: 'Fields describing an Autonomous System (Internet routing prefix).', + }, + { + full: 'threat.enrichments.indicator.as', + schema_name: 'as', + short: 'Fields describing an Autonomous System (Internet routing prefix).', + }, + { + full: 'threat.indicator.file', + schema_name: 'file', + short: 'Fields describing files.', + }, + { + full: 'threat.enrichments.indicator.file', + schema_name: 'file', + short: 'Fields describing files.', + }, + { + full: 'threat.indicator.geo', + schema_name: 'geo', + short: 'Fields describing a location.', + }, + { + full: 'threat.enrichments.indicator.geo', + schema_name: 'geo', + short: 'Fields describing a location.', + }, + { + full: 'threat.indicator.registry', + schema_name: 'registry', + short: 'Fields related to Windows Registry operations.', + }, + { + full: 'threat.enrichments.indicator.registry', + schema_name: 'registry', + short: 'Fields related to Windows Registry operations.', + }, + { + full: 'threat.indicator.url', + schema_name: 'url', + short: 'Fields that let you store URLs in various forms.', + }, + { + full: 'threat.enrichments.indicator.url', + schema_name: 'url', + short: 'Fields that let you store URLs in various forms.', + }, + ], + short: 'Fields to classify events and alerts according to a threat taxonomy.', + title: 'Threat', + type: 'group', + }, + tls: { + description: + 'Fields related to a TLS connection. These fields focus on the TLS protocol itself and intentionally avoids in-depth analysis of the related x.509 certificate files.', + fields: { + 'tls.cipher': { + dashed_name: 'tls-cipher', + description: 'String indicating the cipher used during the current connection.', + example: 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256', + flat_name: 'tls.cipher', + ignore_above: 1024, + level: 'extended', + name: 'cipher', + normalize: [], + short: 'String indicating the cipher used during the current connection.', + type: 'keyword', + }, + 'tls.client.certificate': { + dashed_name: 'tls-client-certificate', + description: + 'PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list.', + example: 'MII...', + flat_name: 'tls.client.certificate', + ignore_above: 1024, + level: 'extended', + name: 'client.certificate', + normalize: [], + short: 'PEM-encoded stand-alone certificate offered by the client.', + type: 'keyword', + }, + 'tls.client.certificate_chain': { + dashed_name: 'tls-client-certificate-chain', + description: + 'Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain.', + example: '["MII...", "MII..."]', + flat_name: 'tls.client.certificate_chain', + ignore_above: 1024, + level: 'extended', + name: 'client.certificate_chain', + normalize: ['array'], + short: + 'Array of PEM-encoded certificates that make up the certificate chain offered by the client.', + type: 'keyword', + }, + 'tls.client.hash.md5': { + dashed_name: 'tls-client-hash-md5', + description: + 'Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.', + example: '0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC', + flat_name: 'tls.client.hash.md5', + ignore_above: 1024, + level: 'extended', + name: 'client.hash.md5', + normalize: [], + short: + 'Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client.', + type: 'keyword', + }, + 'tls.client.hash.sha1': { + dashed_name: 'tls-client-hash-sha1', + description: + 'Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.', + example: '9E393D93138888D288266C2D915214D1D1CCEB2A', + flat_name: 'tls.client.hash.sha1', + ignore_above: 1024, + level: 'extended', + name: 'client.hash.sha1', + normalize: [], + short: + 'Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client.', + type: 'keyword', + }, + 'tls.client.hash.sha256': { + dashed_name: 'tls-client-hash-sha256', + description: + 'Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash.', + example: '0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0', + flat_name: 'tls.client.hash.sha256', + ignore_above: 1024, + level: 'extended', + name: 'client.hash.sha256', + normalize: [], + short: + 'Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client.', + type: 'keyword', + }, + 'tls.client.issuer': { + dashed_name: 'tls-client-issuer', + description: + 'Distinguished name of subject of the issuer of the x.509 certificate presented by the client.', + example: 'CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com', + flat_name: 'tls.client.issuer', + ignore_above: 1024, + level: 'extended', + name: 'client.issuer', + normalize: [], + short: + 'Distinguished name of subject of the issuer of the x.509 certificate presented by the client.', + type: 'keyword', + }, + 'tls.client.ja3': { + dashed_name: 'tls-client-ja3', + description: + 'A hash that identifies clients based on how they perform an SSL/TLS handshake.', + example: 'd4e5b18d6b55c71272893221c96ba240', + flat_name: 'tls.client.ja3', + ignore_above: 1024, + level: 'extended', + name: 'client.ja3', + normalize: [], + short: 'A hash that identifies clients based on how they perform an SSL/TLS handshake.', + type: 'keyword', + }, + 'tls.client.not_after': { + dashed_name: 'tls-client-not-after', + description: 'Date/Time indicating when client certificate is no longer considered valid.', + example: '2021-01-01T00:00:00.000Z', + flat_name: 'tls.client.not_after', + level: 'extended', + name: 'client.not_after', + normalize: [], + short: 'Date/Time indicating when client certificate is no longer considered valid.', + type: 'date', + }, + 'tls.client.not_before': { + dashed_name: 'tls-client-not-before', + description: 'Date/Time indicating when client certificate is first considered valid.', + example: '1970-01-01T00:00:00.000Z', + flat_name: 'tls.client.not_before', + level: 'extended', + name: 'client.not_before', + normalize: [], + short: 'Date/Time indicating when client certificate is first considered valid.', + type: 'date', + }, + 'tls.client.server_name': { + dashed_name: 'tls-client-server-name', + description: + 'Also called an SNI, this tells the server which hostname to which the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`.', + example: 'www.elastic.co', + flat_name: 'tls.client.server_name', + ignore_above: 1024, + level: 'extended', + name: 'client.server_name', + normalize: [], + short: 'Hostname the client is trying to connect to. Also called the SNI.', + type: 'keyword', + }, + 'tls.client.subject': { + dashed_name: 'tls-client-subject', + description: + 'Distinguished name of subject of the x.509 certificate presented by the client.', + example: 'CN=myclient, OU=Documentation Team, DC=example, DC=com', + flat_name: 'tls.client.subject', + ignore_above: 1024, + level: 'extended', + name: 'client.subject', + normalize: [], + short: 'Distinguished name of subject of the x.509 certificate presented by the client.', + type: 'keyword', + }, + 'tls.client.supported_ciphers': { + dashed_name: 'tls-client-supported-ciphers', + description: 'Array of ciphers offered by the client during the client hello.', + example: + '["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "..."]', + flat_name: 'tls.client.supported_ciphers', + ignore_above: 1024, + level: 'extended', + name: 'client.supported_ciphers', + normalize: ['array'], + short: 'Array of ciphers offered by the client during the client hello.', + type: 'keyword', + }, + 'tls.client.x509.alternative_names': { + dashed_name: 'tls-client-x509-alternative-names', + description: + 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', + example: '*.elastic.co', + flat_name: 'tls.client.x509.alternative_names', + ignore_above: 1024, + level: 'extended', + name: 'alternative_names', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of subject alternative names (SAN).', + type: 'keyword', + }, + 'tls.client.x509.issuer.common_name': { + dashed_name: 'tls-client-x509-issuer-common-name', + description: 'List of common name (CN) of issuing certificate authority.', + example: 'Example SHA2 High Assurance Server CA', + flat_name: 'tls.client.x509.issuer.common_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common name (CN) of issuing certificate authority.', + type: 'keyword', + }, + 'tls.client.x509.issuer.country': { + dashed_name: 'tls-client-x509-issuer-country', + description: 'List of country \\(C) codes', + example: 'US', + flat_name: 'tls.client.x509.issuer.country', + ignore_above: 1024, + level: 'extended', + name: 'issuer.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) codes', + type: 'keyword', + }, + 'tls.client.x509.issuer.distinguished_name': { + dashed_name: 'tls-client-x509-issuer-distinguished-name', + description: 'Distinguished name (DN) of issuing certificate authority.', + example: + 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', + flat_name: 'tls.client.x509.issuer.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of issuing certificate authority.', + type: 'keyword', + }, + 'tls.client.x509.issuer.locality': { + dashed_name: 'tls-client-x509-issuer-locality', + description: 'List of locality names (L)', + example: 'Mountain View', + flat_name: 'tls.client.x509.issuer.locality', + ignore_above: 1024, + level: 'extended', + name: 'issuer.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'tls.client.x509.issuer.organization': { + dashed_name: 'tls-client-x509-issuer-organization', + description: 'List of organizations (O) of issuing certificate authority.', + example: 'Example Inc', + flat_name: 'tls.client.x509.issuer.organization', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of issuing certificate authority.', + type: 'keyword', + }, + 'tls.client.x509.issuer.organizational_unit': { + dashed_name: 'tls-client-x509-issuer-organizational-unit', + description: 'List of organizational units (OU) of issuing certificate authority.', + example: 'www.example.com', + flat_name: 'tls.client.x509.issuer.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of issuing certificate authority.', + type: 'keyword', + }, + 'tls.client.x509.issuer.state_or_province': { + dashed_name: 'tls-client-x509-issuer-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'tls.client.x509.issuer.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'issuer.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'tls.client.x509.not_after': { + dashed_name: 'tls-client-x509-not-after', + description: 'Time at which the certificate is no longer considered valid.', + example: '2020-07-16T03:15:39Z', + flat_name: 'tls.client.x509.not_after', + level: 'extended', + name: 'not_after', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is no longer considered valid.', + type: 'date', + }, + 'tls.client.x509.not_before': { + dashed_name: 'tls-client-x509-not-before', + description: 'Time at which the certificate is first considered valid.', + example: '2019-08-16T01:40:25Z', + flat_name: 'tls.client.x509.not_before', + level: 'extended', + name: 'not_before', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is first considered valid.', + type: 'date', + }, + 'tls.client.x509.public_key_algorithm': { + dashed_name: 'tls-client-x509-public-key-algorithm', + description: 'Algorithm used to generate the public key.', + example: 'RSA', + flat_name: 'tls.client.x509.public_key_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'public_key_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Algorithm used to generate the public key.', + type: 'keyword', + }, + 'tls.client.x509.public_key_curve': { + dashed_name: 'tls-client-x509-public-key-curve', + description: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + example: 'nistp521', + flat_name: 'tls.client.x509.public_key_curve', + ignore_above: 1024, + level: 'extended', + name: 'public_key_curve', + normalize: [], + original_fieldset: 'x509', + short: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + type: 'keyword', + }, + 'tls.client.x509.public_key_exponent': { + dashed_name: 'tls-client-x509-public-key-exponent', + description: 'Exponent used to derive the public key. This is algorithm specific.', + doc_values: false, + example: 65537, + flat_name: 'tls.client.x509.public_key_exponent', + index: false, + level: 'extended', + name: 'public_key_exponent', + normalize: [], + original_fieldset: 'x509', + short: 'Exponent used to derive the public key. This is algorithm specific.', + type: 'long', + }, + 'tls.client.x509.public_key_size': { + dashed_name: 'tls-client-x509-public-key-size', + description: 'The size of the public key space in bits.', + example: 2048, + flat_name: 'tls.client.x509.public_key_size', + level: 'extended', + name: 'public_key_size', + normalize: [], + original_fieldset: 'x509', + short: 'The size of the public key space in bits.', + type: 'long', + }, + 'tls.client.x509.serial_number': { + dashed_name: 'tls-client-x509-serial-number', + description: + 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', + example: '55FBB9C7DEBF09809D12CCAA', + flat_name: 'tls.client.x509.serial_number', + ignore_above: 1024, + level: 'extended', + name: 'serial_number', + normalize: [], + original_fieldset: 'x509', + short: 'Unique serial number issued by the certificate authority.', + type: 'keyword', + }, + 'tls.client.x509.signature_algorithm': { + dashed_name: 'tls-client-x509-signature-algorithm', + description: + 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', + example: 'SHA256-RSA', + flat_name: 'tls.client.x509.signature_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'signature_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Identifier for certificate signature algorithm.', + type: 'keyword', + }, + 'tls.client.x509.subject.common_name': { + dashed_name: 'tls-client-x509-subject-common-name', + description: 'List of common names (CN) of subject.', + example: 'shared.global.example.net', + flat_name: 'tls.client.x509.subject.common_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common names (CN) of subject.', + type: 'keyword', + }, + 'tls.client.x509.subject.country': { + dashed_name: 'tls-client-x509-subject-country', + description: 'List of country \\(C) code', + example: 'US', + flat_name: 'tls.client.x509.subject.country', + ignore_above: 1024, + level: 'extended', + name: 'subject.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) code', + type: 'keyword', + }, + 'tls.client.x509.subject.distinguished_name': { + dashed_name: 'tls-client-x509-subject-distinguished-name', + description: 'Distinguished name (DN) of the certificate subject entity.', + example: + 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', + flat_name: 'tls.client.x509.subject.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of the certificate subject entity.', + type: 'keyword', + }, + 'tls.client.x509.subject.locality': { + dashed_name: 'tls-client-x509-subject-locality', + description: 'List of locality names (L)', + example: 'San Francisco', + flat_name: 'tls.client.x509.subject.locality', + ignore_above: 1024, + level: 'extended', + name: 'subject.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'tls.client.x509.subject.organization': { + dashed_name: 'tls-client-x509-subject-organization', + description: 'List of organizations (O) of subject.', + example: 'Example, Inc.', + flat_name: 'tls.client.x509.subject.organization', + ignore_above: 1024, + level: 'extended', + name: 'subject.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of subject.', + type: 'keyword', + }, + 'tls.client.x509.subject.organizational_unit': { + dashed_name: 'tls-client-x509-subject-organizational-unit', + description: 'List of organizational units (OU) of subject.', + flat_name: 'tls.client.x509.subject.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'subject.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of subject.', + type: 'keyword', + }, + 'tls.client.x509.subject.state_or_province': { + dashed_name: 'tls-client-x509-subject-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'tls.client.x509.subject.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'subject.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'tls.client.x509.version_number': { + dashed_name: 'tls-client-x509-version-number', + description: 'Version of x509 format.', + example: 3, + flat_name: 'tls.client.x509.version_number', + ignore_above: 1024, + level: 'extended', + name: 'version_number', + normalize: [], + original_fieldset: 'x509', + short: 'Version of x509 format.', + type: 'keyword', + }, + 'tls.curve': { + dashed_name: 'tls-curve', + description: 'String indicating the curve used for the given cipher, when applicable.', + example: 'secp256r1', + flat_name: 'tls.curve', + ignore_above: 1024, + level: 'extended', + name: 'curve', + normalize: [], + short: 'String indicating the curve used for the given cipher, when applicable.', + type: 'keyword', + }, + 'tls.established': { + dashed_name: 'tls-established', + description: + 'Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel.', + flat_name: 'tls.established', + level: 'extended', + name: 'established', + normalize: [], + short: + 'Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel.', + type: 'boolean', + }, + 'tls.next_protocol': { + dashed_name: 'tls-next-protocol', + description: + 'String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case.', + example: 'http/1.1', + flat_name: 'tls.next_protocol', + ignore_above: 1024, + level: 'extended', + name: 'next_protocol', + normalize: [], + short: 'String indicating the protocol being tunneled.', + type: 'keyword', + }, + 'tls.resumed': { + dashed_name: 'tls-resumed', + description: + 'Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation.', + flat_name: 'tls.resumed', + level: 'extended', + name: 'resumed', + normalize: [], + short: + 'Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation.', + type: 'boolean', + }, + 'tls.server.certificate': { + dashed_name: 'tls-server-certificate', + description: + 'PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list.', + example: 'MII...', + flat_name: 'tls.server.certificate', + ignore_above: 1024, + level: 'extended', + name: 'server.certificate', + normalize: [], + short: 'PEM-encoded stand-alone certificate offered by the server.', + type: 'keyword', + }, + 'tls.server.certificate_chain': { + dashed_name: 'tls-server-certificate-chain', + description: + 'Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain.', + example: '["MII...", "MII..."]', + flat_name: 'tls.server.certificate_chain', + ignore_above: 1024, + level: 'extended', + name: 'server.certificate_chain', + normalize: ['array'], + short: + 'Array of PEM-encoded certificates that make up the certificate chain offered by the server.', + type: 'keyword', + }, + 'tls.server.hash.md5': { + dashed_name: 'tls-server-hash-md5', + description: + 'Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.', + example: '0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC', + flat_name: 'tls.server.hash.md5', + ignore_above: 1024, + level: 'extended', + name: 'server.hash.md5', + normalize: [], + short: + 'Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server.', + type: 'keyword', + }, + 'tls.server.hash.sha1': { + dashed_name: 'tls-server-hash-sha1', + description: + 'Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.', + example: '9E393D93138888D288266C2D915214D1D1CCEB2A', + flat_name: 'tls.server.hash.sha1', + ignore_above: 1024, + level: 'extended', + name: 'server.hash.sha1', + normalize: [], + short: + 'Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server.', + type: 'keyword', + }, + 'tls.server.hash.sha256': { + dashed_name: 'tls-server-hash-sha256', + description: + 'Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash.', + example: '0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0', + flat_name: 'tls.server.hash.sha256', + ignore_above: 1024, + level: 'extended', + name: 'server.hash.sha256', + normalize: [], + short: + 'Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server.', + type: 'keyword', + }, + 'tls.server.issuer': { + dashed_name: 'tls-server-issuer', + description: 'Subject of the issuer of the x.509 certificate presented by the server.', + example: 'CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com', + flat_name: 'tls.server.issuer', + ignore_above: 1024, + level: 'extended', + name: 'server.issuer', + normalize: [], + short: 'Subject of the issuer of the x.509 certificate presented by the server.', + type: 'keyword', + }, + 'tls.server.ja3s': { + dashed_name: 'tls-server-ja3s', + description: + 'A hash that identifies servers based on how they perform an SSL/TLS handshake.', + example: '394441ab65754e2207b1e1b457b3641d', + flat_name: 'tls.server.ja3s', + ignore_above: 1024, + level: 'extended', + name: 'server.ja3s', + normalize: [], + short: 'A hash that identifies servers based on how they perform an SSL/TLS handshake.', + type: 'keyword', + }, + 'tls.server.not_after': { + dashed_name: 'tls-server-not-after', + description: 'Timestamp indicating when server certificate is no longer considered valid.', + example: '2021-01-01T00:00:00.000Z', + flat_name: 'tls.server.not_after', + level: 'extended', + name: 'server.not_after', + normalize: [], + short: 'Timestamp indicating when server certificate is no longer considered valid.', + type: 'date', + }, + 'tls.server.not_before': { + dashed_name: 'tls-server-not-before', + description: 'Timestamp indicating when server certificate is first considered valid.', + example: '1970-01-01T00:00:00.000Z', + flat_name: 'tls.server.not_before', + level: 'extended', + name: 'server.not_before', + normalize: [], + short: 'Timestamp indicating when server certificate is first considered valid.', + type: 'date', + }, + 'tls.server.subject': { + dashed_name: 'tls-server-subject', + description: 'Subject of the x.509 certificate presented by the server.', + example: 'CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com', + flat_name: 'tls.server.subject', + ignore_above: 1024, + level: 'extended', + name: 'server.subject', + normalize: [], + short: 'Subject of the x.509 certificate presented by the server.', + type: 'keyword', + }, + 'tls.server.x509.alternative_names': { + dashed_name: 'tls-server-x509-alternative-names', + description: + 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', + example: '*.elastic.co', + flat_name: 'tls.server.x509.alternative_names', + ignore_above: 1024, + level: 'extended', + name: 'alternative_names', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of subject alternative names (SAN).', + type: 'keyword', + }, + 'tls.server.x509.issuer.common_name': { + dashed_name: 'tls-server-x509-issuer-common-name', + description: 'List of common name (CN) of issuing certificate authority.', + example: 'Example SHA2 High Assurance Server CA', + flat_name: 'tls.server.x509.issuer.common_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common name (CN) of issuing certificate authority.', + type: 'keyword', + }, + 'tls.server.x509.issuer.country': { + dashed_name: 'tls-server-x509-issuer-country', + description: 'List of country \\(C) codes', + example: 'US', + flat_name: 'tls.server.x509.issuer.country', + ignore_above: 1024, + level: 'extended', + name: 'issuer.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) codes', + type: 'keyword', + }, + 'tls.server.x509.issuer.distinguished_name': { + dashed_name: 'tls-server-x509-issuer-distinguished-name', + description: 'Distinguished name (DN) of issuing certificate authority.', + example: + 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', + flat_name: 'tls.server.x509.issuer.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of issuing certificate authority.', + type: 'keyword', + }, + 'tls.server.x509.issuer.locality': { + dashed_name: 'tls-server-x509-issuer-locality', + description: 'List of locality names (L)', + example: 'Mountain View', + flat_name: 'tls.server.x509.issuer.locality', + ignore_above: 1024, + level: 'extended', + name: 'issuer.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'tls.server.x509.issuer.organization': { + dashed_name: 'tls-server-x509-issuer-organization', + description: 'List of organizations (O) of issuing certificate authority.', + example: 'Example Inc', + flat_name: 'tls.server.x509.issuer.organization', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of issuing certificate authority.', + type: 'keyword', + }, + 'tls.server.x509.issuer.organizational_unit': { + dashed_name: 'tls-server-x509-issuer-organizational-unit', + description: 'List of organizational units (OU) of issuing certificate authority.', + example: 'www.example.com', + flat_name: 'tls.server.x509.issuer.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of issuing certificate authority.', + type: 'keyword', + }, + 'tls.server.x509.issuer.state_or_province': { + dashed_name: 'tls-server-x509-issuer-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'tls.server.x509.issuer.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'issuer.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'tls.server.x509.not_after': { + dashed_name: 'tls-server-x509-not-after', + description: 'Time at which the certificate is no longer considered valid.', + example: '2020-07-16T03:15:39Z', + flat_name: 'tls.server.x509.not_after', + level: 'extended', + name: 'not_after', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is no longer considered valid.', + type: 'date', + }, + 'tls.server.x509.not_before': { + dashed_name: 'tls-server-x509-not-before', + description: 'Time at which the certificate is first considered valid.', + example: '2019-08-16T01:40:25Z', + flat_name: 'tls.server.x509.not_before', + level: 'extended', + name: 'not_before', + normalize: [], + original_fieldset: 'x509', + short: 'Time at which the certificate is first considered valid.', + type: 'date', + }, + 'tls.server.x509.public_key_algorithm': { + dashed_name: 'tls-server-x509-public-key-algorithm', + description: 'Algorithm used to generate the public key.', + example: 'RSA', + flat_name: 'tls.server.x509.public_key_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'public_key_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Algorithm used to generate the public key.', + type: 'keyword', + }, + 'tls.server.x509.public_key_curve': { + dashed_name: 'tls-server-x509-public-key-curve', + description: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + example: 'nistp521', + flat_name: 'tls.server.x509.public_key_curve', + ignore_above: 1024, + level: 'extended', + name: 'public_key_curve', + normalize: [], + original_fieldset: 'x509', + short: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + type: 'keyword', + }, + 'tls.server.x509.public_key_exponent': { + dashed_name: 'tls-server-x509-public-key-exponent', + description: 'Exponent used to derive the public key. This is algorithm specific.', + doc_values: false, + example: 65537, + flat_name: 'tls.server.x509.public_key_exponent', + index: false, + level: 'extended', + name: 'public_key_exponent', + normalize: [], + original_fieldset: 'x509', + short: 'Exponent used to derive the public key. This is algorithm specific.', + type: 'long', + }, + 'tls.server.x509.public_key_size': { + dashed_name: 'tls-server-x509-public-key-size', + description: 'The size of the public key space in bits.', + example: 2048, + flat_name: 'tls.server.x509.public_key_size', + level: 'extended', + name: 'public_key_size', + normalize: [], + original_fieldset: 'x509', + short: 'The size of the public key space in bits.', + type: 'long', + }, + 'tls.server.x509.serial_number': { + dashed_name: 'tls-server-x509-serial-number', + description: + 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', + example: '55FBB9C7DEBF09809D12CCAA', + flat_name: 'tls.server.x509.serial_number', + ignore_above: 1024, + level: 'extended', + name: 'serial_number', + normalize: [], + original_fieldset: 'x509', + short: 'Unique serial number issued by the certificate authority.', + type: 'keyword', + }, + 'tls.server.x509.signature_algorithm': { + dashed_name: 'tls-server-x509-signature-algorithm', + description: + 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', + example: 'SHA256-RSA', + flat_name: 'tls.server.x509.signature_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'signature_algorithm', + normalize: [], + original_fieldset: 'x509', + short: 'Identifier for certificate signature algorithm.', + type: 'keyword', + }, + 'tls.server.x509.subject.common_name': { + dashed_name: 'tls-server-x509-subject-common-name', + description: 'List of common names (CN) of subject.', + example: 'shared.global.example.net', + flat_name: 'tls.server.x509.subject.common_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.common_name', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of common names (CN) of subject.', + type: 'keyword', + }, + 'tls.server.x509.subject.country': { + dashed_name: 'tls-server-x509-subject-country', + description: 'List of country \\(C) code', + example: 'US', + flat_name: 'tls.server.x509.subject.country', + ignore_above: 1024, + level: 'extended', + name: 'subject.country', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of country \\(C) code', + type: 'keyword', + }, + 'tls.server.x509.subject.distinguished_name': { + dashed_name: 'tls-server-x509-subject-distinguished-name', + description: 'Distinguished name (DN) of the certificate subject entity.', + example: + 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', + flat_name: 'tls.server.x509.subject.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.distinguished_name', + normalize: [], + original_fieldset: 'x509', + short: 'Distinguished name (DN) of the certificate subject entity.', + type: 'keyword', + }, + 'tls.server.x509.subject.locality': { + dashed_name: 'tls-server-x509-subject-locality', + description: 'List of locality names (L)', + example: 'San Francisco', + flat_name: 'tls.server.x509.subject.locality', + ignore_above: 1024, + level: 'extended', + name: 'subject.locality', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of locality names (L)', + type: 'keyword', + }, + 'tls.server.x509.subject.organization': { + dashed_name: 'tls-server-x509-subject-organization', + description: 'List of organizations (O) of subject.', + example: 'Example, Inc.', + flat_name: 'tls.server.x509.subject.organization', + ignore_above: 1024, + level: 'extended', + name: 'subject.organization', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizations (O) of subject.', + type: 'keyword', + }, + 'tls.server.x509.subject.organizational_unit': { + dashed_name: 'tls-server-x509-subject-organizational-unit', + description: 'List of organizational units (OU) of subject.', + flat_name: 'tls.server.x509.subject.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'subject.organizational_unit', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of organizational units (OU) of subject.', + type: 'keyword', + }, + 'tls.server.x509.subject.state_or_province': { + dashed_name: 'tls-server-x509-subject-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'tls.server.x509.subject.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'subject.state_or_province', + normalize: ['array'], + original_fieldset: 'x509', + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'tls.server.x509.version_number': { + dashed_name: 'tls-server-x509-version-number', + description: 'Version of x509 format.', + example: 3, + flat_name: 'tls.server.x509.version_number', + ignore_above: 1024, + level: 'extended', + name: 'version_number', + normalize: [], + original_fieldset: 'x509', + short: 'Version of x509 format.', + type: 'keyword', + }, + 'tls.version': { + dashed_name: 'tls-version', + description: 'Numeric part of the version parsed from the original string.', + example: '1.2', + flat_name: 'tls.version', + ignore_above: 1024, + level: 'extended', + name: 'version', + normalize: [], + short: 'Numeric part of the version parsed from the original string.', + type: 'keyword', + }, + 'tls.version_protocol': { + dashed_name: 'tls-version-protocol', + description: 'Normalized lowercase protocol name parsed from original string.', + example: 'tls', + flat_name: 'tls.version_protocol', + ignore_above: 1024, + level: 'extended', + name: 'version_protocol', + normalize: [], + short: 'Normalized lowercase protocol name parsed from original string.', + type: 'keyword', + }, + }, + group: 2, + name: 'tls', + nestings: ['tls.client.x509', 'tls.server.x509'], + prefix: 'tls.', + reused_here: [ + { + full: 'tls.client.x509', + schema_name: 'x509', + short: 'These fields contain x509 certificate metadata.', + }, + { + full: 'tls.server.x509', + schema_name: 'x509', + short: 'These fields contain x509 certificate metadata.', + }, + ], + short: 'Fields describing a TLS connection.', + title: 'TLS', + type: 'group', + }, + tracing: { + description: + 'Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services.\nUnlike most field sets in ECS, the tracing fields are *not* nested under the field set name. In other words, the correct field name is `trace.id`, not `tracing.trace.id`, and so on.', + fields: { + 'span.id': { + dashed_name: 'span-id', + description: + 'Unique identifier of the span within the scope of its trace.\nA span represents an operation within a transaction, such as a request to another service, or a database query.', + example: '3ff9a8981b7ccd5a', + flat_name: 'span.id', + ignore_above: 1024, + level: 'extended', + name: 'span.id', + normalize: [], + short: 'Unique identifier of the span within the scope of its trace.', + type: 'keyword', + }, + 'trace.id': { + dashed_name: 'trace-id', + description: + 'Unique identifier of the trace.\nA trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services.', + example: '4bf92f3577b34da6a3ce929d0e0e4736', + flat_name: 'trace.id', + ignore_above: 1024, + level: 'extended', + name: 'trace.id', + normalize: [], + short: 'Unique identifier of the trace.', + type: 'keyword', + }, + 'transaction.id': { + dashed_name: 'transaction-id', + description: + 'Unique identifier of the transaction within the scope of its trace.\nA transaction is the highest level of work measured within a service, such as a request to a server.', + example: '00f067aa0ba902b7', + flat_name: 'transaction.id', + ignore_above: 1024, + level: 'extended', + name: 'transaction.id', + normalize: [], + short: 'Unique identifier of the transaction within the scope of its trace.', + type: 'keyword', + }, + }, + group: 2, + name: 'tracing', + prefix: '', + root: true, + short: 'Fields related to distributed tracing.', + title: 'Tracing', + type: 'group', + }, + url: { + description: + 'URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on.', + fields: { + 'url.domain': { + dashed_name: 'url-domain', + description: + 'Domain of the url, such as "www.elastic.co".\nIn some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field.\nIf the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field.', + example: 'www.elastic.co', + flat_name: 'url.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + short: 'Domain of the url.', + type: 'keyword', + }, + 'url.extension': { + dashed_name: 'url-extension', + description: + 'The field contains the file extension from the original request url, excluding the leading dot.\nThe file extension is only set if it exists, as not every url has a file extension.\nThe leading period must not be included. For example, the value must be "png", not ".png".\nNote that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz").', + example: 'png', + flat_name: 'url.extension', + ignore_above: 1024, + level: 'extended', + name: 'extension', + normalize: [], + short: 'File extension from the request url, excluding the leading dot.', + type: 'keyword', + }, + 'url.fragment': { + dashed_name: 'url-fragment', + description: + 'Portion of the url after the `#`, such as "top".\nThe `#` is not part of the fragment.', + flat_name: 'url.fragment', + ignore_above: 1024, + level: 'extended', + name: 'fragment', + normalize: [], + short: 'Portion of the url after the `#`.', + type: 'keyword', + }, + 'url.full': { + dashed_name: 'url-full', + description: + 'If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source.', + example: 'https://www.elastic.co:443/search?q=elasticsearch#top', + flat_name: 'url.full', + level: 'extended', + multi_fields: [{ flat_name: 'url.full.text', name: 'text', type: 'match_only_text' }], + name: 'full', + normalize: [], + short: 'Full unparsed URL.', + type: 'wildcard', + }, + 'url.original': { + dashed_name: 'url-original', + description: + 'Unmodified original url as seen in the event source.\nNote that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path.\nThis field is meant to represent the URL as it was observed, complete or not.', + example: 'https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch', + flat_name: 'url.original', + level: 'extended', + multi_fields: [ + { + flat_name: 'url.original.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'original', + normalize: [], + short: 'Unmodified original url as seen in the event source.', + type: 'wildcard', + }, + 'url.password': { + dashed_name: 'url-password', + description: 'Password of the request.', + flat_name: 'url.password', + ignore_above: 1024, + level: 'extended', + name: 'password', + normalize: [], + short: 'Password of the request.', + type: 'keyword', + }, + 'url.path': { + dashed_name: 'url-path', + description: 'Path of the request, such as "/search".', + flat_name: 'url.path', + level: 'extended', + name: 'path', + normalize: [], + short: 'Path of the request, such as "/search".', + type: 'wildcard', + }, + 'url.port': { + dashed_name: 'url-port', + description: 'Port of the request, such as 443.', + example: 443, + flat_name: 'url.port', + format: 'string', + level: 'extended', + name: 'port', + normalize: [], + short: 'Port of the request, such as 443.', + type: 'long', + }, + 'url.query': { + dashed_name: 'url-query', + description: + 'The query field describes the query string of the request, such as "q=elasticsearch".\nThe `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases.', + flat_name: 'url.query', + ignore_above: 1024, + level: 'extended', + name: 'query', + normalize: [], + short: 'Query string of the request.', + type: 'keyword', + }, + 'url.registered_domain': { + dashed_name: 'url-registered-domain', + description: + 'The highest registered url domain, stripped of the subdomain.\nFor example, the registered domain for "foo.example.com" is "example.com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".', + example: 'example.com', + flat_name: 'url.registered_domain', + ignore_above: 1024, + level: 'extended', + name: 'registered_domain', + normalize: [], + short: 'The highest registered url domain, stripped of the subdomain.', + type: 'keyword', + }, + 'url.scheme': { + dashed_name: 'url-scheme', + description: + 'Scheme of the request, such as "https".\nNote: The `:` is not part of the scheme.', + example: 'https', + flat_name: 'url.scheme', + ignore_above: 1024, + level: 'extended', + name: 'scheme', + normalize: [], + short: 'Scheme of the url.', + type: 'keyword', + }, + 'url.subdomain': { + dashed_name: 'url-subdomain', + description: + 'The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.\nFor example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.', + example: 'east', + flat_name: 'url.subdomain', + ignore_above: 1024, + level: 'extended', + name: 'subdomain', + normalize: [], + short: 'The subdomain of the domain.', + type: 'keyword', + }, + 'url.top_level_domain': { + dashed_name: 'url-top-level-domain', + description: + 'The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com".\nThis value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk".', + example: 'co.uk', + flat_name: 'url.top_level_domain', + ignore_above: 1024, + level: 'extended', + name: 'top_level_domain', + normalize: [], + short: 'The effective top level domain (com, org, net, co.uk).', + type: 'keyword', + }, + 'url.username': { + dashed_name: 'url-username', + description: 'Username of the request.', + flat_name: 'url.username', + ignore_above: 1024, + level: 'extended', + name: 'username', + normalize: [], + short: 'Username of the request.', + type: 'keyword', + }, + }, + group: 2, + name: 'url', + prefix: 'url.', + reusable: { + expected: [ + { as: 'url', at: 'threat.indicator', full: 'threat.indicator.url' }, + { + as: 'url', + at: 'threat.enrichments.indicator', + full: 'threat.enrichments.indicator.url', + }, + ], + top_level: true, + }, + short: 'Fields that let you store URLs in various forms.', + title: 'URL', + type: 'group', + }, + user: { + description: + 'The user fields describe information about the user that is relevant to the event.\nFields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them.', + fields: { + 'user.changes.domain': { + dashed_name: 'user-changes-domain', + description: + 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'user.changes.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'user', + short: 'Name of the directory the user is a member of.', + type: 'keyword', + }, + 'user.changes.email': { + dashed_name: 'user-changes-email', + description: 'User email address.', + flat_name: 'user.changes.email', + ignore_above: 1024, + level: 'extended', + name: 'email', + normalize: [], + original_fieldset: 'user', + short: 'User email address.', + type: 'keyword', + }, + 'user.changes.full_name': { + dashed_name: 'user-changes-full-name', + description: "User's full name, if available.", + example: 'Albert Einstein', + flat_name: 'user.changes.full_name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'user.changes.full_name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full_name', + normalize: [], + original_fieldset: 'user', + short: "User's full name, if available.", + type: 'keyword', + }, + 'user.changes.group.domain': { + dashed_name: 'user-changes-group-domain', + description: + 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'user.changes.group.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'group', + short: 'Name of the directory the group is a member of.', + type: 'keyword', + }, + 'user.changes.group.id': { + dashed_name: 'user-changes-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'user.changes.group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'user.changes.group.name': { + dashed_name: 'user-changes-group-name', + description: 'Name of the group.', + flat_name: 'user.changes.group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'user.changes.hash': { + dashed_name: 'user-changes-hash', + description: + 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', + flat_name: 'user.changes.hash', + ignore_above: 1024, + level: 'extended', + name: 'hash', + normalize: [], + original_fieldset: 'user', + short: 'Unique user hash to correlate information for a user in anonymized form.', + type: 'keyword', + }, + 'user.changes.id': { + dashed_name: 'user-changes-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'user.changes.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'user.changes.name': { + dashed_name: 'user-changes-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'user.changes.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'user.changes.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'user.changes.roles': { + dashed_name: 'user-changes-roles', + description: 'Array of user roles at the time of the event.', + example: '["kibana_admin", "reporting_user"]', + flat_name: 'user.changes.roles', + ignore_above: 1024, + level: 'extended', + name: 'roles', + normalize: ['array'], + original_fieldset: 'user', + short: 'Array of user roles at the time of the event.', + type: 'keyword', + }, + 'user.domain': { + dashed_name: 'user-domain', + description: + 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'user.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + short: 'Name of the directory the user is a member of.', + type: 'keyword', + }, + 'user.effective.domain': { + dashed_name: 'user-effective-domain', + description: + 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'user.effective.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'user', + short: 'Name of the directory the user is a member of.', + type: 'keyword', + }, + 'user.effective.email': { + dashed_name: 'user-effective-email', + description: 'User email address.', + flat_name: 'user.effective.email', + ignore_above: 1024, + level: 'extended', + name: 'email', + normalize: [], + original_fieldset: 'user', + short: 'User email address.', + type: 'keyword', + }, + 'user.effective.full_name': { + dashed_name: 'user-effective-full-name', + description: "User's full name, if available.", + example: 'Albert Einstein', + flat_name: 'user.effective.full_name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'user.effective.full_name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full_name', + normalize: [], + original_fieldset: 'user', + short: "User's full name, if available.", + type: 'keyword', + }, + 'user.effective.group.domain': { + dashed_name: 'user-effective-group-domain', + description: + 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'user.effective.group.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'group', + short: 'Name of the directory the group is a member of.', + type: 'keyword', + }, + 'user.effective.group.id': { + dashed_name: 'user-effective-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'user.effective.group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'user.effective.group.name': { + dashed_name: 'user-effective-group-name', + description: 'Name of the group.', + flat_name: 'user.effective.group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'user.effective.hash': { + dashed_name: 'user-effective-hash', + description: + 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', + flat_name: 'user.effective.hash', + ignore_above: 1024, + level: 'extended', + name: 'hash', + normalize: [], + original_fieldset: 'user', + short: 'Unique user hash to correlate information for a user in anonymized form.', + type: 'keyword', + }, + 'user.effective.id': { + dashed_name: 'user-effective-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'user.effective.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'user.effective.name': { + dashed_name: 'user-effective-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'user.effective.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'user.effective.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'user.effective.roles': { + dashed_name: 'user-effective-roles', + description: 'Array of user roles at the time of the event.', + example: '["kibana_admin", "reporting_user"]', + flat_name: 'user.effective.roles', + ignore_above: 1024, + level: 'extended', + name: 'roles', + normalize: ['array'], + original_fieldset: 'user', + short: 'Array of user roles at the time of the event.', + type: 'keyword', + }, + 'user.email': { + dashed_name: 'user-email', + description: 'User email address.', + flat_name: 'user.email', + ignore_above: 1024, + level: 'extended', + name: 'email', + normalize: [], + short: 'User email address.', + type: 'keyword', + }, + 'user.full_name': { + dashed_name: 'user-full-name', + description: "User's full name, if available.", + example: 'Albert Einstein', + flat_name: 'user.full_name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'user.full_name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full_name', + normalize: [], + short: "User's full name, if available.", + type: 'keyword', + }, + 'user.group.domain': { + dashed_name: 'user-group-domain', + description: + 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'user.group.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'group', + short: 'Name of the directory the group is a member of.', + type: 'keyword', + }, + 'user.group.id': { + dashed_name: 'user-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'user.group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'user.group.name': { + dashed_name: 'user-group-name', + description: 'Name of the group.', + flat_name: 'user.group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'user.hash': { + dashed_name: 'user-hash', + description: + 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', + flat_name: 'user.hash', + ignore_above: 1024, + level: 'extended', + name: 'hash', + normalize: [], + short: 'Unique user hash to correlate information for a user in anonymized form.', + type: 'keyword', + }, + 'user.id': { + dashed_name: 'user-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'user.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'user.name': { + dashed_name: 'user-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'user.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'user.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'user.risk.calculated_level': { + dashed_name: 'user-risk-calculated-level', + description: + 'A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.', + example: 'High', + flat_name: 'user.risk.calculated_level', + ignore_above: 1024, + level: 'extended', + name: 'calculated_level', + normalize: [], + original_fieldset: 'risk', + short: + 'A risk classification level calculated by an internal system as part of entity analytics and entity risk scoring.', + type: 'keyword', + }, + 'user.risk.calculated_score': { + dashed_name: 'user-risk-calculated-score', + description: + 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.', + example: 880.73, + flat_name: 'user.risk.calculated_score', + level: 'extended', + name: 'calculated_score', + normalize: [], + original_fieldset: 'risk', + short: + 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring.', + type: 'float', + }, + 'user.risk.calculated_score_norm': { + dashed_name: 'user-risk-calculated-score-norm', + description: + 'A risk classification score calculated by an internal system as part of entity analytics and entity risk scoring, and normalized to a range of 0 to 100.', + example: 88.73, + flat_name: 'user.risk.calculated_score_norm', + level: 'extended', + name: 'calculated_score_norm', + normalize: [], + original_fieldset: 'risk', + short: 'A normalized risk score calculated by an internal system.', + type: 'float', + }, + 'user.risk.static_level': { + dashed_name: 'user-risk-static-level', + description: + 'A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.', + example: 'High', + flat_name: 'user.risk.static_level', + ignore_above: 1024, + level: 'extended', + name: 'static_level', + normalize: [], + original_fieldset: 'risk', + short: + 'A risk classification level obtained from outside the system, such as from some external Threat Intelligence Platform.', + type: 'keyword', + }, + 'user.risk.static_score': { + dashed_name: 'user-risk-static-score', + description: + 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.', + example: 830, + flat_name: 'user.risk.static_score', + level: 'extended', + name: 'static_score', + normalize: [], + original_fieldset: 'risk', + short: + 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform.', + type: 'float', + }, + 'user.risk.static_score_norm': { + dashed_name: 'user-risk-static-score-norm', + description: + 'A risk classification score obtained from outside the system, such as from some external Threat Intelligence Platform, and normalized to a range of 0 to 100.', + example: 83, + flat_name: 'user.risk.static_score_norm', + level: 'extended', + name: 'static_score_norm', + normalize: [], + original_fieldset: 'risk', + short: 'A normalized risk score calculated by an external system.', + type: 'float', + }, + 'user.roles': { + dashed_name: 'user-roles', + description: 'Array of user roles at the time of the event.', + example: '["kibana_admin", "reporting_user"]', + flat_name: 'user.roles', + ignore_above: 1024, + level: 'extended', + name: 'roles', + normalize: ['array'], + short: 'Array of user roles at the time of the event.', + type: 'keyword', + }, + 'user.target.domain': { + dashed_name: 'user-target-domain', + description: + 'Name of the directory the user is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'user.target.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'user', + short: 'Name of the directory the user is a member of.', + type: 'keyword', + }, + 'user.target.email': { + dashed_name: 'user-target-email', + description: 'User email address.', + flat_name: 'user.target.email', + ignore_above: 1024, + level: 'extended', + name: 'email', + normalize: [], + original_fieldset: 'user', + short: 'User email address.', + type: 'keyword', + }, + 'user.target.full_name': { + dashed_name: 'user-target-full-name', + description: "User's full name, if available.", + example: 'Albert Einstein', + flat_name: 'user.target.full_name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'user.target.full_name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full_name', + normalize: [], + original_fieldset: 'user', + short: "User's full name, if available.", + type: 'keyword', + }, + 'user.target.group.domain': { + dashed_name: 'user-target-group-domain', + description: + 'Name of the directory the group is a member of.\nFor example, an LDAP or Active Directory domain name.', + flat_name: 'user.target.group.domain', + ignore_above: 1024, + level: 'extended', + name: 'domain', + normalize: [], + original_fieldset: 'group', + short: 'Name of the directory the group is a member of.', + type: 'keyword', + }, + 'user.target.group.id': { + dashed_name: 'user-target-group-id', + description: 'Unique identifier for the group on the system/platform.', + flat_name: 'user.target.group.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + original_fieldset: 'group', + short: 'Unique identifier for the group on the system/platform.', + type: 'keyword', + }, + 'user.target.group.name': { + dashed_name: 'user-target-group-name', + description: 'Name of the group.', + flat_name: 'user.target.group.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + original_fieldset: 'group', + short: 'Name of the group.', + type: 'keyword', + }, + 'user.target.hash': { + dashed_name: 'user-target-hash', + description: + 'Unique user hash to correlate information for a user in anonymized form.\nUseful if `user.id` or `user.name` contain confidential information and cannot be used.', + flat_name: 'user.target.hash', + ignore_above: 1024, + level: 'extended', + name: 'hash', + normalize: [], + original_fieldset: 'user', + short: 'Unique user hash to correlate information for a user in anonymized form.', + type: 'keyword', + }, + 'user.target.id': { + dashed_name: 'user-target-id', + description: 'Unique identifier of the user.', + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + flat_name: 'user.target.id', + ignore_above: 1024, + level: 'core', + name: 'id', + normalize: [], + original_fieldset: 'user', + short: 'Unique identifier of the user.', + type: 'keyword', + }, + 'user.target.name': { + dashed_name: 'user-target-name', + description: 'Short name or login of the user.', + example: 'a.einstein', + flat_name: 'user.target.name', + ignore_above: 1024, + level: 'core', + multi_fields: [ + { + flat_name: 'user.target.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'user', + short: 'Short name or login of the user.', + type: 'keyword', + }, + 'user.target.roles': { + dashed_name: 'user-target-roles', + description: 'Array of user roles at the time of the event.', + example: '["kibana_admin", "reporting_user"]', + flat_name: 'user.target.roles', + ignore_above: 1024, + level: 'extended', + name: 'roles', + normalize: ['array'], + original_fieldset: 'user', + short: 'Array of user roles at the time of the event.', + type: 'keyword', + }, + }, + group: 2, + name: 'user', + nestings: ['user.changes', 'user.effective', 'user.group', 'user.risk', 'user.target'], + prefix: 'user.', + reusable: { + expected: [ + { as: 'user', at: 'client', full: 'client.user' }, + { as: 'user', at: 'destination', full: 'destination.user' }, + { as: 'user', at: 'server', full: 'server.user' }, + { as: 'user', at: 'source', full: 'source.user' }, + { + as: 'target', + at: 'user', + full: 'user.target', + short_override: 'Targeted user of action taken.', + }, + { + as: 'effective', + at: 'user', + full: 'user.effective', + short_override: 'User whose privileges were assumed.', + }, + { + as: 'changes', + at: 'user', + full: 'user.changes', + short_override: 'Captures changes made to a user.', + }, + { + as: 'user', + at: 'process', + full: 'process.user', + short_override: 'The effective user (euid).', + }, + { + as: 'saved_user', + at: 'process', + full: 'process.saved_user', + short_override: 'The saved user (suid).', + }, + { + as: 'real_user', + at: 'process', + full: 'process.real_user', + short_override: 'The real user (ruid). Identifies the real owner of the process.', + }, + { + as: 'attested_user', + at: 'process', + beta: 'Reusing the `user` fields in this location is currently considered beta.', + full: 'process.attested_user', + short_override: + 'The externally attested user based on an external source such as the Kube API.', + }, + ], + top_level: true, + }, + reused_here: [ + { + full: 'user.group', + schema_name: 'group', + short: "User's group relevant to the event.", + }, + { + full: 'user.risk', + schema_name: 'risk', + short: 'Fields for describing risk score and level.', + }, + { + full: 'user.target', + schema_name: 'user', + short: 'Targeted user of action taken.', + }, + { + full: 'user.effective', + schema_name: 'user', + short: 'User whose privileges were assumed.', + }, + { + full: 'user.changes', + schema_name: 'user', + short: 'Captures changes made to a user.', + }, + ], + short: 'Fields to describe the user relevant to the event.', + title: 'User', + type: 'group', + }, + user_agent: { + description: + 'The user_agent fields normally come from a browser request.\nThey often show up in web service logs coming from the parsed user agent string.', + fields: { + 'user_agent.device.name': { + dashed_name: 'user-agent-device-name', + description: 'Name of the device.', + example: 'iPhone', + flat_name: 'user_agent.device.name', + ignore_above: 1024, + level: 'extended', + name: 'device.name', + normalize: [], + short: 'Name of the device.', + type: 'keyword', + }, + 'user_agent.name': { + dashed_name: 'user-agent-name', + description: 'Name of the user agent.', + example: 'Safari', + flat_name: 'user_agent.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'Name of the user agent.', + type: 'keyword', + }, + 'user_agent.original': { + dashed_name: 'user-agent-original', + description: 'Unparsed user_agent string.', + example: + 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1', + flat_name: 'user_agent.original', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'user_agent.original.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'original', + normalize: [], + short: 'Unparsed user_agent string.', + type: 'keyword', + }, + 'user_agent.os.family': { + dashed_name: 'user-agent-os-family', + description: 'OS family (such as redhat, debian, freebsd, windows).', + example: 'debian', + flat_name: 'user_agent.os.family', + ignore_above: 1024, + level: 'extended', + name: 'family', + normalize: [], + original_fieldset: 'os', + short: 'OS family (such as redhat, debian, freebsd, windows).', + type: 'keyword', + }, + 'user_agent.os.full': { + dashed_name: 'user-agent-os-full', + description: 'Operating system name, including the version or code name.', + example: 'Mac OS Mojave', + flat_name: 'user_agent.os.full', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'user_agent.os.full.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'full', + normalize: [], + original_fieldset: 'os', + short: 'Operating system name, including the version or code name.', + type: 'keyword', + }, + 'user_agent.os.kernel': { + dashed_name: 'user-agent-os-kernel', + description: 'Operating system kernel version as a raw string.', + example: '4.4.0-112-generic', + flat_name: 'user_agent.os.kernel', + ignore_above: 1024, + level: 'extended', + name: 'kernel', + normalize: [], + original_fieldset: 'os', + short: 'Operating system kernel version as a raw string.', + type: 'keyword', + }, + 'user_agent.os.name': { + dashed_name: 'user-agent-os-name', + description: 'Operating system name, without the version.', + example: 'Mac OS X', + flat_name: 'user_agent.os.name', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'user_agent.os.name.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'name', + normalize: [], + original_fieldset: 'os', + short: 'Operating system name, without the version.', + type: 'keyword', + }, + 'user_agent.os.platform': { + dashed_name: 'user-agent-os-platform', + description: 'Operating system platform (such centos, ubuntu, windows).', + example: 'darwin', + flat_name: 'user_agent.os.platform', + ignore_above: 1024, + level: 'extended', + name: 'platform', + normalize: [], + original_fieldset: 'os', + short: 'Operating system platform (such centos, ubuntu, windows).', + type: 'keyword', + }, + 'user_agent.os.type': { + dashed_name: 'user-agent-os-type', + description: + "Use the `os.type` field to categorize the operating system into one of the broad commercial families.\nIf the OS you're dealing with is not listed as an expected value, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition.", + example: 'macos', + expected_values: ['linux', 'macos', 'unix', 'windows', 'ios', 'android'], + flat_name: 'user_agent.os.type', + ignore_above: 1024, + level: 'extended', + name: 'type', + normalize: [], + original_fieldset: 'os', + short: 'Which commercial OS family (one of: linux, macos, unix, windows, ios or android).', + type: 'keyword', + }, + 'user_agent.os.version': { + dashed_name: 'user-agent-os-version', + description: 'Operating system version as a raw string.', + example: '10.14.1', + flat_name: 'user_agent.os.version', + ignore_above: 1024, + level: 'extended', + name: 'version', + normalize: [], + original_fieldset: 'os', + short: 'Operating system version as a raw string.', + type: 'keyword', + }, + 'user_agent.version': { + dashed_name: 'user-agent-version', + description: 'Version of the user agent.', + example: 12, + flat_name: 'user_agent.version', + ignore_above: 1024, + level: 'extended', + name: 'version', + normalize: [], + short: 'Version of the user agent.', + type: 'keyword', + }, + }, + group: 2, + name: 'user_agent', + nestings: ['user_agent.os'], + prefix: 'user_agent.', + reused_here: [ + { + full: 'user_agent.os', + schema_name: 'os', + short: 'OS fields contain information about the operating system.', + }, + ], + short: 'Fields to describe a browser user_agent string.', + title: 'User agent', + type: 'group', + }, + vlan: { + description: + 'The VLAN fields are used to identify 802.1q tag(s) of a packet, as well as ingress and egress VLAN associations of an observer in relation to a specific packet or connection.\nNetwork.vlan fields are used to record a single VLAN tag, or the outer tag in the case of q-in-q encapsulations, for a packet or connection as observed, typically provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic.\nNetwork.inner VLAN fields are used to report inner q-in-q 802.1q tags (multiple 802.1q encapsulations) as observed, typically provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic. Network.inner VLAN fields should only be used in addition to network.vlan fields to indicate q-in-q tagging.\nObserver.ingress and observer.egress VLAN values are used to record observer specific information when observer events contain discrete ingress and egress VLAN information, typically provided by firewalls, routers, or load balancers.', + fields: { + 'vlan.id': { + dashed_name: 'vlan-id', + description: 'VLAN ID as reported by the observer.', + example: 10, + flat_name: 'vlan.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + short: 'VLAN ID as reported by the observer.', + type: 'keyword', + }, + 'vlan.name': { + dashed_name: 'vlan-name', + description: 'Optional VLAN name as reported by the observer.', + example: 'outside', + flat_name: 'vlan.name', + ignore_above: 1024, + level: 'extended', + name: 'name', + normalize: [], + short: 'Optional VLAN name as reported by the observer.', + type: 'keyword', + }, + }, + group: 2, + name: 'vlan', + prefix: 'vlan.', + reusable: { + expected: [ + { as: 'vlan', at: 'observer.ingress', full: 'observer.ingress.vlan' }, + { as: 'vlan', at: 'observer.egress', full: 'observer.egress.vlan' }, + { as: 'vlan', at: 'network', full: 'network.vlan' }, + { as: 'vlan', at: 'network.inner', full: 'network.inner.vlan' }, + ], + top_level: false, + }, + short: 'Fields to describe observed VLAN information.', + title: 'VLAN', + type: 'group', + }, + vulnerability: { + description: + 'The vulnerability fields describe information about a vulnerability that is relevant to an event.', + fields: { + 'vulnerability.category': { + dashed_name: 'vulnerability-category', + description: + 'The type of system or architecture that the vulnerability affects. These may be platform-specific (for example, Debian or SUSE) or general (for example, Database or Firewall). For example (https://qualysguard.qualys.com/qwebhelp/fo_portal/knowledgebase/vulnerability_categories.htm[Qualys vulnerability categories])\nThis field must be an array.', + example: '["Firewall"]', + flat_name: 'vulnerability.category', + ignore_above: 1024, + level: 'extended', + name: 'category', + normalize: ['array'], + short: 'Category of a vulnerability.', + type: 'keyword', + }, + 'vulnerability.classification': { + dashed_name: 'vulnerability-classification', + description: + 'The classification of the vulnerability scoring system. For example (https://www.first.org/cvss/)', + example: 'CVSS', + flat_name: 'vulnerability.classification', + ignore_above: 1024, + level: 'extended', + name: 'classification', + normalize: [], + short: 'Classification of the vulnerability.', + type: 'keyword', + }, + 'vulnerability.description': { + dashed_name: 'vulnerability-description', + description: + 'The description of the vulnerability that provides additional context of the vulnerability. For example (https://cve.mitre.org/about/faqs.html#cve_entry_descriptions_created[Common Vulnerabilities and Exposure CVE description])', + example: 'In macOS before 2.12.6, there is a vulnerability in the RPC...', + flat_name: 'vulnerability.description', + ignore_above: 1024, + level: 'extended', + multi_fields: [ + { + flat_name: 'vulnerability.description.text', + name: 'text', + type: 'match_only_text', + }, + ], + name: 'description', + normalize: [], + short: 'Description of the vulnerability.', + type: 'keyword', + }, + 'vulnerability.enumeration': { + dashed_name: 'vulnerability-enumeration', + description: + 'The type of identifier used for this vulnerability. For example (https://cve.mitre.org/about/)', + example: 'CVE', + flat_name: 'vulnerability.enumeration', + ignore_above: 1024, + level: 'extended', + name: 'enumeration', + normalize: [], + short: 'Identifier of the vulnerability.', + type: 'keyword', + }, + 'vulnerability.id': { + dashed_name: 'vulnerability-id', + description: + 'The identification (ID) is the number portion of a vulnerability entry. It includes a unique identification number for the vulnerability. For example (https://cve.mitre.org/about/faqs.html#what_is_cve_id)[Common Vulnerabilities and Exposure CVE ID]', + example: 'CVE-2019-00001', + flat_name: 'vulnerability.id', + ignore_above: 1024, + level: 'extended', + name: 'id', + normalize: [], + short: 'ID of the vulnerability.', + type: 'keyword', + }, + 'vulnerability.reference': { + dashed_name: 'vulnerability-reference', + description: + 'A resource that provides additional information, context, and mitigations for the identified vulnerability.', + example: 'https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111', + flat_name: 'vulnerability.reference', + ignore_above: 1024, + level: 'extended', + name: 'reference', + normalize: [], + short: 'Reference of the vulnerability.', + type: 'keyword', + }, + 'vulnerability.report_id': { + dashed_name: 'vulnerability-report-id', + description: 'The report or scan identification number.', + example: 20191018.0001, + flat_name: 'vulnerability.report_id', + ignore_above: 1024, + level: 'extended', + name: 'report_id', + normalize: [], + short: 'Scan identification number.', + type: 'keyword', + }, + 'vulnerability.scanner.vendor': { + dashed_name: 'vulnerability-scanner-vendor', + description: 'The name of the vulnerability scanner vendor.', + example: 'Tenable', + flat_name: 'vulnerability.scanner.vendor', + ignore_above: 1024, + level: 'extended', + name: 'scanner.vendor', + normalize: [], + short: 'Name of the scanner vendor.', + type: 'keyword', + }, + 'vulnerability.score.base': { + dashed_name: 'vulnerability-score-base', + description: + 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe.\nBase scores cover an assessment for exploitability metrics (attack vector, complexity, privileges, and user interaction), impact metrics (confidentiality, integrity, and availability), and scope. For example (https://www.first.org/cvss/specification-document)', + example: 5.5, + flat_name: 'vulnerability.score.base', + level: 'extended', + name: 'score.base', + normalize: [], + short: 'Vulnerability Base score.', + type: 'float', + }, + 'vulnerability.score.environmental': { + dashed_name: 'vulnerability-score-environmental', + description: + 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe.\nEnvironmental scores cover an assessment for any modified Base metrics, confidentiality, integrity, and availability requirements. For example (https://www.first.org/cvss/specification-document)', + example: 5.5, + flat_name: 'vulnerability.score.environmental', + level: 'extended', + name: 'score.environmental', + normalize: [], + short: 'Vulnerability Environmental score.', + type: 'float', + }, + 'vulnerability.score.temporal': { + dashed_name: 'vulnerability-score-temporal', + description: + 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe.\nTemporal scores cover an assessment for code maturity, remediation level, and confidence. For example (https://www.first.org/cvss/specification-document)', + flat_name: 'vulnerability.score.temporal', + level: 'extended', + name: 'score.temporal', + normalize: [], + short: 'Vulnerability Temporal score.', + type: 'float', + }, + 'vulnerability.score.version': { + dashed_name: 'vulnerability-score-version', + description: + 'The National Vulnerability Database (NVD) provides qualitative severity rankings of "Low", "Medium", and "High" for CVSS v2.0 base score ranges in addition to the severity ratings for CVSS v3.0 as they are defined in the CVSS v3.0 specification.\nCVSS is owned and managed by FIRST.Org, Inc. (FIRST), a US-based non-profit organization, whose mission is to help computer security incident response teams across the world. For example (https://nvd.nist.gov/vuln-metrics/cvss)', + example: 2, + flat_name: 'vulnerability.score.version', + ignore_above: 1024, + level: 'extended', + name: 'score.version', + normalize: [], + short: 'CVSS version.', + type: 'keyword', + }, + 'vulnerability.severity': { + dashed_name: 'vulnerability-severity', + description: + 'The severity of the vulnerability can help with metrics and internal prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss)', + example: 'Critical', + flat_name: 'vulnerability.severity', + ignore_above: 1024, + level: 'extended', + name: 'severity', + normalize: [], + short: 'Severity of the vulnerability.', + type: 'keyword', + }, + }, + group: 2, + name: 'vulnerability', + prefix: 'vulnerability.', + short: 'Fields to describe the vulnerability relevant to an event.', + title: 'Vulnerability', + type: 'group', + }, + x509: { + description: + 'This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk.\nWhen the certificate relates to a file, use the fields at `file.x509`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`).\nEvents that contain certificate information about network connections, should use the x509 fields under the relevant TLS fields: `tls.server.x509` and/or `tls.client.x509`.', + fields: { + 'x509.alternative_names': { + dashed_name: 'x509-alternative-names', + description: + 'List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses.', + example: '*.elastic.co', + flat_name: 'x509.alternative_names', + ignore_above: 1024, + level: 'extended', + name: 'alternative_names', + normalize: ['array'], + short: 'List of subject alternative names (SAN).', + type: 'keyword', + }, + 'x509.issuer.common_name': { + dashed_name: 'x509-issuer-common-name', + description: 'List of common name (CN) of issuing certificate authority.', + example: 'Example SHA2 High Assurance Server CA', + flat_name: 'x509.issuer.common_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.common_name', + normalize: ['array'], + short: 'List of common name (CN) of issuing certificate authority.', + type: 'keyword', + }, + 'x509.issuer.country': { + dashed_name: 'x509-issuer-country', + description: 'List of country \\(C) codes', + example: 'US', + flat_name: 'x509.issuer.country', + ignore_above: 1024, + level: 'extended', + name: 'issuer.country', + normalize: ['array'], + short: 'List of country \\(C) codes', + type: 'keyword', + }, + 'x509.issuer.distinguished_name': { + dashed_name: 'x509-issuer-distinguished-name', + description: 'Distinguished name (DN) of issuing certificate authority.', + example: + 'C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA', + flat_name: 'x509.issuer.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'issuer.distinguished_name', + normalize: [], + short: 'Distinguished name (DN) of issuing certificate authority.', + type: 'keyword', + }, + 'x509.issuer.locality': { + dashed_name: 'x509-issuer-locality', + description: 'List of locality names (L)', + example: 'Mountain View', + flat_name: 'x509.issuer.locality', + ignore_above: 1024, + level: 'extended', + name: 'issuer.locality', + normalize: ['array'], + short: 'List of locality names (L)', + type: 'keyword', + }, + 'x509.issuer.organization': { + dashed_name: 'x509-issuer-organization', + description: 'List of organizations (O) of issuing certificate authority.', + example: 'Example Inc', + flat_name: 'x509.issuer.organization', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organization', + normalize: ['array'], + short: 'List of organizations (O) of issuing certificate authority.', + type: 'keyword', + }, + 'x509.issuer.organizational_unit': { + dashed_name: 'x509-issuer-organizational-unit', + description: 'List of organizational units (OU) of issuing certificate authority.', + example: 'www.example.com', + flat_name: 'x509.issuer.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'issuer.organizational_unit', + normalize: ['array'], + short: 'List of organizational units (OU) of issuing certificate authority.', + type: 'keyword', + }, + 'x509.issuer.state_or_province': { + dashed_name: 'x509-issuer-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'x509.issuer.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'issuer.state_or_province', + normalize: ['array'], + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'x509.not_after': { + dashed_name: 'x509-not-after', + description: 'Time at which the certificate is no longer considered valid.', + example: '2020-07-16T03:15:39Z', + flat_name: 'x509.not_after', + level: 'extended', + name: 'not_after', + normalize: [], + short: 'Time at which the certificate is no longer considered valid.', + type: 'date', + }, + 'x509.not_before': { + dashed_name: 'x509-not-before', + description: 'Time at which the certificate is first considered valid.', + example: '2019-08-16T01:40:25Z', + flat_name: 'x509.not_before', + level: 'extended', + name: 'not_before', + normalize: [], + short: 'Time at which the certificate is first considered valid.', + type: 'date', + }, + 'x509.public_key_algorithm': { + dashed_name: 'x509-public-key-algorithm', + description: 'Algorithm used to generate the public key.', + example: 'RSA', + flat_name: 'x509.public_key_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'public_key_algorithm', + normalize: [], + short: 'Algorithm used to generate the public key.', + type: 'keyword', + }, + 'x509.public_key_curve': { + dashed_name: 'x509-public-key-curve', + description: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + example: 'nistp521', + flat_name: 'x509.public_key_curve', + ignore_above: 1024, + level: 'extended', + name: 'public_key_curve', + normalize: [], + short: + 'The curve used by the elliptic curve public key algorithm. This is algorithm specific.', + type: 'keyword', + }, + 'x509.public_key_exponent': { + dashed_name: 'x509-public-key-exponent', + description: 'Exponent used to derive the public key. This is algorithm specific.', + doc_values: false, + example: 65537, + flat_name: 'x509.public_key_exponent', + index: false, + level: 'extended', + name: 'public_key_exponent', + normalize: [], + short: 'Exponent used to derive the public key. This is algorithm specific.', + type: 'long', + }, + 'x509.public_key_size': { + dashed_name: 'x509-public-key-size', + description: 'The size of the public key space in bits.', + example: 2048, + flat_name: 'x509.public_key_size', + level: 'extended', + name: 'public_key_size', + normalize: [], + short: 'The size of the public key space in bits.', + type: 'long', + }, + 'x509.serial_number': { + dashed_name: 'x509-serial-number', + description: + 'Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters.', + example: '55FBB9C7DEBF09809D12CCAA', + flat_name: 'x509.serial_number', + ignore_above: 1024, + level: 'extended', + name: 'serial_number', + normalize: [], + short: 'Unique serial number issued by the certificate authority.', + type: 'keyword', + }, + 'x509.signature_algorithm': { + dashed_name: 'x509-signature-algorithm', + description: + 'Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353.', + example: 'SHA256-RSA', + flat_name: 'x509.signature_algorithm', + ignore_above: 1024, + level: 'extended', + name: 'signature_algorithm', + normalize: [], + short: 'Identifier for certificate signature algorithm.', + type: 'keyword', + }, + 'x509.subject.common_name': { + dashed_name: 'x509-subject-common-name', + description: 'List of common names (CN) of subject.', + example: 'shared.global.example.net', + flat_name: 'x509.subject.common_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.common_name', + normalize: ['array'], + short: 'List of common names (CN) of subject.', + type: 'keyword', + }, + 'x509.subject.country': { + dashed_name: 'x509-subject-country', + description: 'List of country \\(C) code', + example: 'US', + flat_name: 'x509.subject.country', + ignore_above: 1024, + level: 'extended', + name: 'subject.country', + normalize: ['array'], + short: 'List of country \\(C) code', + type: 'keyword', + }, + 'x509.subject.distinguished_name': { + dashed_name: 'x509-subject-distinguished-name', + description: 'Distinguished name (DN) of the certificate subject entity.', + example: + 'C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net', + flat_name: 'x509.subject.distinguished_name', + ignore_above: 1024, + level: 'extended', + name: 'subject.distinguished_name', + normalize: [], + short: 'Distinguished name (DN) of the certificate subject entity.', + type: 'keyword', + }, + 'x509.subject.locality': { + dashed_name: 'x509-subject-locality', + description: 'List of locality names (L)', + example: 'San Francisco', + flat_name: 'x509.subject.locality', + ignore_above: 1024, + level: 'extended', + name: 'subject.locality', + normalize: ['array'], + short: 'List of locality names (L)', + type: 'keyword', + }, + 'x509.subject.organization': { + dashed_name: 'x509-subject-organization', + description: 'List of organizations (O) of subject.', + example: 'Example, Inc.', + flat_name: 'x509.subject.organization', + ignore_above: 1024, + level: 'extended', + name: 'subject.organization', + normalize: ['array'], + short: 'List of organizations (O) of subject.', + type: 'keyword', + }, + 'x509.subject.organizational_unit': { + dashed_name: 'x509-subject-organizational-unit', + description: 'List of organizational units (OU) of subject.', + flat_name: 'x509.subject.organizational_unit', + ignore_above: 1024, + level: 'extended', + name: 'subject.organizational_unit', + normalize: ['array'], + short: 'List of organizational units (OU) of subject.', + type: 'keyword', + }, + 'x509.subject.state_or_province': { + dashed_name: 'x509-subject-state-or-province', + description: 'List of state or province names (ST, S, or P)', + example: 'California', + flat_name: 'x509.subject.state_or_province', + ignore_above: 1024, + level: 'extended', + name: 'subject.state_or_province', + normalize: ['array'], + short: 'List of state or province names (ST, S, or P)', + type: 'keyword', + }, + 'x509.version_number': { + dashed_name: 'x509-version-number', + description: 'Version of x509 format.', + example: 3, + flat_name: 'x509.version_number', + ignore_above: 1024, + level: 'extended', + name: 'version_number', + normalize: [], + short: 'Version of x509 format.', + type: 'keyword', + }, + }, + group: 2, + name: 'x509', + prefix: 'x509.', + reusable: { + expected: [ + { as: 'x509', at: 'file', full: 'file.x509' }, + { as: 'x509', at: 'threat.indicator', full: 'threat.indicator.x509' }, + { + as: 'x509', + at: 'threat.enrichments.indicator', + full: 'threat.enrichments.indicator.x509', + }, + { as: 'x509', at: 'tls.client', full: 'tls.client.x509' }, + { as: 'x509', at: 'tls.server', full: 'tls.server.x509' }, + ], + top_level: false, + }, + short: 'These fields contain x509 certificate metadata.', + title: 'x509 Certificate', + type: 'group', + }, +}; diff --git a/packages/kbn-ecs/generated/server.ts b/packages/kbn-ecs/generated/server.ts index 34a665a221be3..182eaca274a6d 100644 --- a/packages/kbn-ecs/generated/server.ts +++ b/packages/kbn-ecs/generated/server.ts @@ -181,6 +181,6 @@ export interface EcsServer { /** * Array of user roles at the time of the event. */ - roles?: string | string[]; + roles?: string[]; }; } diff --git a/packages/kbn-ecs/generated/service.ts b/packages/kbn-ecs/generated/service.ts index 24a08f1224b2f..b25c422473fe5 100644 --- a/packages/kbn-ecs/generated/service.ts +++ b/packages/kbn-ecs/generated/service.ts @@ -61,7 +61,7 @@ export interface EcsService { * In the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both. * Other services could use this to distinguish between a `web` and `worker` role running as part of the service. */ - roles?: string | string[]; + roles?: string[]; }; origin?: { @@ -115,7 +115,7 @@ export interface EcsService { * In the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both. * Other services could use this to distinguish between a `web` and `worker` role running as part of the service. */ - roles?: string | string[]; + roles?: string[]; }; /** @@ -190,7 +190,7 @@ export interface EcsService { * In the case of Elasticsearch, the `service.node.role` could be `master` or `data` or both. * Other services could use this to distinguish between a `web` and `worker` role running as part of the service. */ - roles?: string | string[]; + roles?: string[]; }; /** diff --git a/packages/kbn-ecs/generated/source.ts b/packages/kbn-ecs/generated/source.ts index fdfd4ed38b576..fbdb54009d999 100644 --- a/packages/kbn-ecs/generated/source.ts +++ b/packages/kbn-ecs/generated/source.ts @@ -180,6 +180,6 @@ export interface EcsSource { /** * Array of user roles at the time of the event. */ - roles?: string | string[]; + roles?: string[]; }; } diff --git a/packages/kbn-ecs/generated/threat.ts b/packages/kbn-ecs/generated/threat.ts index 04c6a5758ea28..4f3072236008a 100644 --- a/packages/kbn-ecs/generated/threat.ts +++ b/packages/kbn-ecs/generated/threat.ts @@ -14,7 +14,7 @@ export interface EcsThreat { /** * A list of associated indicators objects enriching the event, and the context of that association/enrichment. */ - enrichments?: Record | Array>; + enrichments?: Array>; feed?: { /** * The saved object ID of the dashboard belonging to the threat feed for displaying dashboard links to threat feeds in Kibana. @@ -43,7 +43,7 @@ export interface EcsThreat { * The alias(es) of the group for a set of related intrusion activity that are tracked by a common name in the security community. * While not required, you can use a MITRE ATT&CK® group alias(es). */ - alias?: string | string[]; + alias?: string[]; /** * The id of the group for a set of related intrusion activity that are tracked by a common name in the security community. * While not required, you can use a MITRE ATT&CK® group id. @@ -100,7 +100,7 @@ export interface EcsThreat { * Array of file attributes. * Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write. */ - attributes?: string | string[]; + attributes?: string[]; code_signature?: { /** * The hashing algorithm used to sign the process. @@ -189,28 +189,7 @@ export interface EcsThreat { /** * List of exported element names and types. */ - exports?: Record | Array>; - /** - * A hash of the Go language imports in an ELF file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; + exports?: Array>; header?: { /** * Version of the ELF Application Binary Interface (ABI). @@ -246,37 +225,24 @@ export interface EcsThreat { version?: string; }; - /** - * A hash of the imports in an ELF file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is an ELF implementation of the Windows PE imphash. - */ - import_hash?: string; /** * List of imported element names and types. */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; + imports?: Array>; /** * An array containing an object for each section of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. */ - sections?: Record | Array>; + sections?: Array>; /** * An array containing an object for each segment of the ELF file. * The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. */ - segments?: Record | Array>; + segments?: Array>; /** * List of shared libraries used by this ELF object. */ - shared_libraries?: string | string[]; + shared_libraries?: string[]; /** * telfhash symbol hash for ELF file. */ @@ -378,49 +344,11 @@ export interface EcsThreat { * Internal version of the file, provided at compile-time. */ file_version?: string; - /** - * A hash of the Go language imports in a PE file excluding standard library imports. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * The algorithm used to calculate the Go symbol hash and a reference implementation are available [here](https://github.com/elastic/toutoumomoma). - */ - go_import_hash?: string; - /** - * List of imported Go language element names and types. - */ - go_imports?: Record; - /** - * Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of Go imports. - */ - go_imports_names_var_entropy?: number; - /** - * Set to true if the file is a Go executable that has had its symbols stripped or obfuscated and false if an unobfuscated Go executable. - */ - go_stripped?: boolean; /** * A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. * Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. */ imphash?: string; - /** - * A hash of the imports in a PE file. An import hash can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. - * This is a synonym for imphash. - */ - import_hash?: string; - /** - * List of imported element names and types. - */ - imports?: Record | Array>; - /** - * Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_entropy?: number; - /** - * Variance for Shannon entropy calculation from the list of imported element names and types. - */ - imports_names_var_entropy?: number; /** * Internal name of the file, provided at compile-time. */ @@ -434,11 +362,6 @@ export interface EcsThreat { * Internal product name of the file, provided at compile-time. */ product?: string; - /** - * An array containing an object for each section of the PE file. - * The keys that should be present in these objects are defined by sub-fields underneath `pe.sections.*`. - */ - sections?: Record | Array>; }; /** @@ -462,16 +385,16 @@ export interface EcsThreat { /** * List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. */ - alternative_names?: string | string[]; + alternative_names?: string[]; issuer?: { /** * List of common name (CN) of issuing certificate authority. */ - common_name?: string | string[]; + common_name?: string[]; /** * List of country \(C) codes */ - country?: string | string[]; + country?: string[]; /** * Distinguished name (DN) of issuing certificate authority. */ @@ -479,19 +402,19 @@ export interface EcsThreat { /** * List of locality names (L) */ - locality?: string | string[]; + locality?: string[]; /** * List of organizations (O) of issuing certificate authority. */ - organization?: string | string[]; + organization?: string[]; /** * List of organizational units (OU) of issuing certificate authority. */ - organizational_unit?: string | string[]; + organizational_unit?: string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string | string[]; + state_or_province?: string[]; }; /** @@ -530,11 +453,11 @@ export interface EcsThreat { /** * List of common names (CN) of subject. */ - common_name?: string | string[]; + common_name?: string[]; /** * List of country \(C) code */ - country?: string | string[]; + country?: string[]; /** * Distinguished name (DN) of the certificate subject entity. */ @@ -542,19 +465,19 @@ export interface EcsThreat { /** * List of locality names (L) */ - locality?: string | string[]; + locality?: string[]; /** * List of organizations (O) of subject. */ - organization?: string | string[]; + organization?: string[]; /** * List of organizational units (OU) of subject. */ - organizational_unit?: string | string[]; + organizational_unit?: string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string | string[]; + state_or_province?: string[]; }; /** @@ -641,10 +564,6 @@ export interface EcsThreat { * The date and time when intelligence source last modified information for this indicator. */ modified_at?: string; - /** - * The display name indicator in an UI friendly format - */ - name?: string; /** * Identifies a threat indicator as a port number (irrespective of direction). */ @@ -668,7 +587,7 @@ export interface EcsThreat { * Content when writing string types. * Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). */ - strings?: string | string[]; + strings?: string[]; /** * Standard registry type for encoding contents */ @@ -782,16 +701,16 @@ export interface EcsThreat { /** * List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. */ - alternative_names?: string | string[]; + alternative_names?: string[]; issuer?: { /** * List of common name (CN) of issuing certificate authority. */ - common_name?: string | string[]; + common_name?: string[]; /** * List of country \(C) codes */ - country?: string | string[]; + country?: string[]; /** * Distinguished name (DN) of issuing certificate authority. */ @@ -799,19 +718,19 @@ export interface EcsThreat { /** * List of locality names (L) */ - locality?: string | string[]; + locality?: string[]; /** * List of organizations (O) of issuing certificate authority. */ - organization?: string | string[]; + organization?: string[]; /** * List of organizational units (OU) of issuing certificate authority. */ - organizational_unit?: string | string[]; + organizational_unit?: string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string | string[]; + state_or_province?: string[]; }; /** @@ -850,11 +769,11 @@ export interface EcsThreat { /** * List of common names (CN) of subject. */ - common_name?: string | string[]; + common_name?: string[]; /** * List of country \(C) code */ - country?: string | string[]; + country?: string[]; /** * Distinguished name (DN) of the certificate subject entity. */ @@ -862,19 +781,19 @@ export interface EcsThreat { /** * List of locality names (L) */ - locality?: string | string[]; + locality?: string[]; /** * List of organizations (O) of subject. */ - organization?: string | string[]; + organization?: string[]; /** * List of organizational units (OU) of subject. */ - organizational_unit?: string | string[]; + organizational_unit?: string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string | string[]; + state_or_province?: string[]; }; /** @@ -889,7 +808,7 @@ export interface EcsThreat { * The alias(es) of the software for a set of related intrusion activity that are tracked by a common name in the security community. * While not required, you can use a MITRE ATT&CK® associated software description. */ - alias?: string | string[]; + alias?: string[]; /** * The id of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. * While not required, you can use a MITRE ATT&CK® software id. @@ -904,7 +823,7 @@ export interface EcsThreat { * The platforms of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. * While not required, you can use MITRE ATT&CK® software platform values. */ - platforms?: string | string[]; + platforms?: string[]; /** * The reference URL of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. * While not required, you can use a MITRE ATT&CK® software reference URL. @@ -921,43 +840,43 @@ export interface EcsThreat { /** * The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ ) */ - id?: string | string[]; + id?: string[]; /** * Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/) */ - name?: string | string[]; + name?: string[]; /** * The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ ) */ - reference?: string | string[]; + reference?: string[]; }; technique?: { /** * The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/) */ - id?: string | string[]; + id?: string[]; /** * The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/) */ - name?: string | string[]; + name?: string[]; /** * The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/) */ - reference?: string | string[]; + reference?: string[]; subtechnique?: { /** * The full id of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/) */ - id?: string | string[]; + id?: string[]; /** * The name of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/) */ - name?: string | string[]; + name?: string[]; /** * The reference url of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/) */ - reference?: string | string[]; + reference?: string[]; }; }; } diff --git a/packages/kbn-ecs/generated/tls.ts b/packages/kbn-ecs/generated/tls.ts index afd947e81bd96..5ce5343a73ab6 100644 --- a/packages/kbn-ecs/generated/tls.ts +++ b/packages/kbn-ecs/generated/tls.ts @@ -22,7 +22,7 @@ export interface EcsTls { /** * Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. */ - certificate_chain?: string | string[]; + certificate_chain?: string[]; hash?: { /** * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. @@ -65,21 +65,21 @@ export interface EcsTls { /** * Array of ciphers offered by the client during the client hello. */ - supported_ciphers?: string | string[]; + supported_ciphers?: string[]; x509?: { /** * List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. */ - alternative_names?: string | string[]; + alternative_names?: string[]; issuer?: { /** * List of common name (CN) of issuing certificate authority. */ - common_name?: string | string[]; + common_name?: string[]; /** * List of country \(C) codes */ - country?: string | string[]; + country?: string[]; /** * Distinguished name (DN) of issuing certificate authority. */ @@ -87,19 +87,19 @@ export interface EcsTls { /** * List of locality names (L) */ - locality?: string | string[]; + locality?: string[]; /** * List of organizations (O) of issuing certificate authority. */ - organization?: string | string[]; + organization?: string[]; /** * List of organizational units (OU) of issuing certificate authority. */ - organizational_unit?: string | string[]; + organizational_unit?: string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string | string[]; + state_or_province?: string[]; }; /** @@ -138,11 +138,11 @@ export interface EcsTls { /** * List of common names (CN) of subject. */ - common_name?: string | string[]; + common_name?: string[]; /** * List of country \(C) code */ - country?: string | string[]; + country?: string[]; /** * Distinguished name (DN) of the certificate subject entity. */ @@ -150,19 +150,19 @@ export interface EcsTls { /** * List of locality names (L) */ - locality?: string | string[]; + locality?: string[]; /** * List of organizations (O) of subject. */ - organization?: string | string[]; + organization?: string[]; /** * List of organizational units (OU) of subject. */ - organizational_unit?: string | string[]; + organizational_unit?: string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string | string[]; + state_or_province?: string[]; }; /** @@ -196,7 +196,7 @@ export interface EcsTls { /** * Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. */ - certificate_chain?: string | string[]; + certificate_chain?: string[]; hash?: { /** * Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. @@ -236,16 +236,16 @@ export interface EcsTls { /** * List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. */ - alternative_names?: string | string[]; + alternative_names?: string[]; issuer?: { /** * List of common name (CN) of issuing certificate authority. */ - common_name?: string | string[]; + common_name?: string[]; /** * List of country \(C) codes */ - country?: string | string[]; + country?: string[]; /** * Distinguished name (DN) of issuing certificate authority. */ @@ -253,19 +253,19 @@ export interface EcsTls { /** * List of locality names (L) */ - locality?: string | string[]; + locality?: string[]; /** * List of organizations (O) of issuing certificate authority. */ - organization?: string | string[]; + organization?: string[]; /** * List of organizational units (OU) of issuing certificate authority. */ - organizational_unit?: string | string[]; + organizational_unit?: string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string | string[]; + state_or_province?: string[]; }; /** @@ -304,11 +304,11 @@ export interface EcsTls { /** * List of common names (CN) of subject. */ - common_name?: string | string[]; + common_name?: string[]; /** * List of country \(C) code */ - country?: string | string[]; + country?: string[]; /** * Distinguished name (DN) of the certificate subject entity. */ @@ -316,19 +316,19 @@ export interface EcsTls { /** * List of locality names (L) */ - locality?: string | string[]; + locality?: string[]; /** * List of organizations (O) of subject. */ - organization?: string | string[]; + organization?: string[]; /** * List of organizational units (OU) of subject. */ - organizational_unit?: string | string[]; + organizational_unit?: string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string | string[]; + state_or_province?: string[]; }; /** diff --git a/packages/kbn-ecs/generated/user.ts b/packages/kbn-ecs/generated/user.ts index c904ee3e8c6e9..9f22ea7d7cc8d 100644 --- a/packages/kbn-ecs/generated/user.ts +++ b/packages/kbn-ecs/generated/user.ts @@ -57,7 +57,7 @@ export interface EcsUser { /** * Array of user roles at the time of the event. */ - roles?: string | string[]; + roles?: string[]; }; /** @@ -111,7 +111,7 @@ export interface EcsUser { /** * Array of user roles at the time of the event. */ - roles?: string | string[]; + roles?: string[]; }; /** @@ -181,7 +181,7 @@ export interface EcsUser { /** * Array of user roles at the time of the event. */ - roles?: string | string[]; + roles?: string[]; target?: { /** * Name of the directory the user is a member of. @@ -228,6 +228,6 @@ export interface EcsUser { /** * Array of user roles at the time of the event. */ - roles?: string | string[]; + roles?: string[]; }; } diff --git a/packages/kbn-ecs/generated/vulnerability.ts b/packages/kbn-ecs/generated/vulnerability.ts index c53889d3723cd..fb6fb6c79cef3 100644 --- a/packages/kbn-ecs/generated/vulnerability.ts +++ b/packages/kbn-ecs/generated/vulnerability.ts @@ -14,7 +14,7 @@ export interface EcsVulnerability { * The type of system or architecture that the vulnerability affects. These may be platform-specific (for example, Debian or SUSE) or general (for example, Database or Firewall). For example (https://qualysguard.qualys.com/qwebhelp/fo_portal/knowledgebase/vulnerability_categories.htm[Qualys vulnerability categories]) * This field must be an array. */ - category?: string | string[]; + category?: string[]; /** * The classification of the vulnerability scoring system. For example (https://www.first.org/cvss/) */ diff --git a/packages/kbn-ecs/generated/x509.ts b/packages/kbn-ecs/generated/x509.ts index 413f0fe5e3c2a..f4db637a110c1 100644 --- a/packages/kbn-ecs/generated/x509.ts +++ b/packages/kbn-ecs/generated/x509.ts @@ -15,16 +15,16 @@ export interface EcsX509 { /** * List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. */ - alternative_names?: string | string[]; + alternative_names?: string[]; issuer?: { /** * List of common name (CN) of issuing certificate authority. */ - common_name?: string | string[]; + common_name?: string[]; /** * List of country \(C) codes */ - country?: string | string[]; + country?: string[]; /** * Distinguished name (DN) of issuing certificate authority. */ @@ -32,19 +32,19 @@ export interface EcsX509 { /** * List of locality names (L) */ - locality?: string | string[]; + locality?: string[]; /** * List of organizations (O) of issuing certificate authority. */ - organization?: string | string[]; + organization?: string[]; /** * List of organizational units (OU) of issuing certificate authority. */ - organizational_unit?: string | string[]; + organizational_unit?: string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string | string[]; + state_or_province?: string[]; }; /** @@ -83,11 +83,11 @@ export interface EcsX509 { /** * List of common names (CN) of subject. */ - common_name?: string | string[]; + common_name?: string[]; /** * List of country \(C) code */ - country?: string | string[]; + country?: string[]; /** * Distinguished name (DN) of the certificate subject entity. */ @@ -95,19 +95,19 @@ export interface EcsX509 { /** * List of locality names (L) */ - locality?: string | string[]; + locality?: string[]; /** * List of organizations (O) of subject. */ - organization?: string | string[]; + organization?: string[]; /** * List of organizational units (OU) of subject. */ - organizational_unit?: string | string[]; + organizational_unit?: string[]; /** * List of state or province names (ST, S, or P) */ - state_or_province?: string | string[]; + state_or_province?: string[]; }; /** diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/allowed_values/helpers.test.tsx b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/allowed_values/helpers.test.tsx index ee8e1cd6999c7..7dde4254708b7 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/allowed_values/helpers.test.tsx +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/allowed_values/helpers.test.tsx @@ -54,9 +54,26 @@ describe('helpers', () => { describe('getValidValues', () => { test('it returns the expected valid values', () => { - expect(getValidValues(ecsMetadata['event.category'])).toEqual( - expect.arrayContaining([expect.any(String)]) - ); + expect(getValidValues(ecsMetadata['event.category'])).toEqual([ + 'authentication', + 'configuration', + 'database', + 'driver', + 'email', + 'file', + 'host', + 'iam', + 'intrusion_detection', + 'malware', + 'network', + 'package', + 'process', + 'registry', + 'session', + 'threat', + 'vulnerability', + 'web', + ]); }); test('it returns an empty array when the `field` does NOT have `allowed_values`', () => { @@ -79,8 +96,26 @@ describe('helpers', () => { allowed_values: missingDatabase, }; - expect(getValidValues(field)).toEqual(expect.arrayContaining([expect.any(String)])); - expect(getValidValues(field)).not.toEqual(expect.arrayContaining(['database'])); + expect(getValidValues(field)).toEqual([ + 'authentication', + 'configuration', + // no entry for 'database' + 'driver', + 'email', + 'file', + 'host', + 'iam', + 'intrusion_detection', + 'malware', + 'network', + 'package', + 'process', + 'registry', + 'session', + 'threat', + 'vulnerability', + 'web', + ]); }); }); @@ -91,15 +126,73 @@ describe('helpers', () => { ecsMetadata, indexName: 'auditbeat-*', }) - ).toEqual( - expect.arrayContaining([ - expect.objectContaining({ - indexName: 'auditbeat-*', - indexFieldName: 'event.category', - allowedValues: expect.arrayContaining([expect.any(String)]), - }), - ]) - ); + ).toEqual([ + { + indexName: 'auditbeat-*', + indexFieldName: 'event.category', + allowedValues: [ + 'authentication', + 'configuration', + 'database', + 'driver', + 'email', + 'file', + 'host', + 'iam', + 'intrusion_detection', + 'malware', + 'network', + 'package', + 'process', + 'registry', + 'session', + 'threat', + 'vulnerability', + 'web', + ], + }, + { + indexName: 'auditbeat-*', + indexFieldName: 'event.kind', + allowedValues: [ + 'alert', + 'enrichment', + 'event', + 'metric', + 'state', + 'pipeline_error', + 'signal', + ], + }, + { + indexName: 'auditbeat-*', + indexFieldName: 'event.outcome', + allowedValues: ['failure', 'success', 'unknown'], + }, + { + indexName: 'auditbeat-*', + indexFieldName: 'event.type', + allowedValues: [ + 'access', + 'admin', + 'allowed', + 'change', + 'connection', + 'creation', + 'deletion', + 'denied', + 'end', + 'error', + 'group', + 'indicator', + 'info', + 'installation', + 'protocol', + 'start', + 'user', + ], + }, + ]); }); test('it returns an empty array when `ecsMetadata` is null', () => { diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/helpers.test.ts b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/helpers.test.ts index 04af24c20ecab..ba7ab179c8ed0 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/helpers.test.ts +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/data_quality_panel/index_properties/helpers.test.ts @@ -122,82 +122,542 @@ describe('helpers', () => { unallowedValues, }) ).toEqual({ - all: expect.arrayContaining([ - expect.objectContaining({ - allowed_values: expect.arrayContaining([ - expect.objectContaining({ - name: expect.any(String), - description: expect.any(String), - expected_event_types: expect.arrayContaining([expect.any(String)]), - }), - ]), - dashed_name: expect.any(String), - description: expect.any(String), - example: expect.any(String), - flat_name: expect.any(String), - ignore_above: expect.any(Number), - level: expect.any(String), - name: expect.any(String), - normalize: expect.any(Array), - short: expect.any(String), - type: expect.any(String), - indexFieldName: expect.any(String), - indexFieldType: expect.any(String), - indexInvalidValues: expect.any(Array), - hasEcsMetadata: expect.any(Boolean), - isEcsCompliant: expect.any(Boolean), - isInSameFamily: expect.any(Boolean), - }), - ]), - ecsCompliant: expect.arrayContaining([ - expect.objectContaining({ - dashed_name: expect.any(String), - description: expect.any(String), - example: expect.any(String), - flat_name: expect.any(String), - level: expect.any(String), - name: expect.any(String), - normalize: expect.any(Array), - short: expect.any(String), - type: expect.any(String), - indexFieldName: expect.any(String), - indexFieldType: expect.any(String), - indexInvalidValues: expect.any(Array), - hasEcsMetadata: expect.any(Boolean), - isEcsCompliant: expect.any(Boolean), - isInSameFamily: expect.any(Boolean), - }), - ]), - custom: expect.arrayContaining([ - expect.objectContaining({ - indexFieldName: expect.any(String), - indexFieldType: expect.any(String), - indexInvalidValues: expect.any(Array), - hasEcsMetadata: expect.any(Boolean), - isEcsCompliant: expect.any(Boolean), - isInSameFamily: expect.any(Boolean), - }), - ]), - incompatible: expect.arrayContaining([ - expect.objectContaining({ - dashed_name: expect.any(String), - description: expect.any(String), - example: expect.any(String), - flat_name: expect.any(String), - level: expect.any(String), - name: expect.any(String), - normalize: expect.any(Array), - short: expect.any(String), - type: expect.any(String), - indexFieldName: expect.any(String), - indexFieldType: expect.any(String), - indexInvalidValues: expect.any(Array), - hasEcsMetadata: expect.any(Boolean), - isEcsCompliant: expect.any(Boolean), - isInSameFamily: expect.any(Boolean), - }), - ]), - + all: [ + { + dashed_name: 'timestamp', + description: + 'Date/time when the event originated.\nThis is the date/time extracted from the event, typically representing when the event was generated by the source.\nIf the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline.\nRequired field for all events.', + example: '2016-05-23T08:05:34.853Z', + flat_name: '@timestamp', + level: 'core', + name: '@timestamp', + normalize: [], + required: true, + short: 'Date/time when the event originated.', + type: 'date', + indexFieldName: '@timestamp', + indexFieldType: 'date', + indexInvalidValues: [], + hasEcsMetadata: true, + isEcsCompliant: true, + isInSameFamily: false, + }, + { + allowed_values: [ + { + description: + 'Events in this category are related to the challenge and response process in which credentials are supplied and verified to allow the creation of a session. Common sources for these logs are Windows event logs and ssh logs. Visualize and analyze events in this category to look for failed logins, and other authentication-related activity.', + expected_event_types: ['start', 'end', 'info'], + name: 'authentication', + }, + { + description: + 'Events in the configuration category have to deal with creating, modifying, or deleting the settings or parameters of an application, process, or system.\nExample sources include security policy change logs, configuration auditing logging, and system integrity monitoring.', + expected_event_types: ['access', 'change', 'creation', 'deletion', 'info'], + name: 'configuration', + }, + { + description: + 'The database category denotes events and metrics relating to a data storage and retrieval system. Note that use of this category is not limited to relational database systems. Examples include event logs from MS SQL, MySQL, Elasticsearch, MongoDB, etc. Use this category to visualize and analyze database activity such as accesses and changes.', + expected_event_types: ['access', 'change', 'info', 'error'], + name: 'database', + }, + { + description: + 'Events in the driver category have to do with operating system device drivers and similar software entities such as Windows drivers, kernel extensions, kernel modules, etc.\nUse events and metrics in this category to visualize and analyze driver-related activity and status on hosts.', + expected_event_types: ['change', 'end', 'info', 'start'], + name: 'driver', + }, + { + description: + 'This category is used for events relating to email messages, email attachments, and email network or protocol activity.\nEmails events can be produced by email security gateways, mail transfer agents, email cloud service providers, or mail server monitoring applications.', + expected_event_types: ['info'], + name: 'email', + }, + { + description: + 'Relating to a set of information that has been created on, or has existed on a filesystem. Use this category of events to visualize and analyze the creation, access, and deletions of files. Events in this category can come from both host-based and network-based sources. An example source of a network-based detection of a file transfer would be the Zeek file.log.', + expected_event_types: ['change', 'creation', 'deletion', 'info'], + name: 'file', + }, + { + description: + 'Use this category to visualize and analyze information such as host inventory or host lifecycle events.\nMost of the events in this category can usually be observed from the outside, such as from a hypervisor or a control plane\'s point of view. Some can also be seen from within, such as "start" or "end".\nNote that this category is for information about hosts themselves; it is not meant to capture activity "happening on a host".', + expected_event_types: ['access', 'change', 'end', 'info', 'start'], + name: 'host', + }, + { + description: + 'Identity and access management (IAM) events relating to users, groups, and administration. Use this category to visualize and analyze IAM-related logs and data from active directory, LDAP, Okta, Duo, and other IAM systems.', + expected_event_types: [ + 'admin', + 'change', + 'creation', + 'deletion', + 'group', + 'info', + 'user', + ], + name: 'iam', + }, + { + description: + 'Relating to intrusion detections from IDS/IPS systems and functions, both network and host-based. Use this category to visualize and analyze intrusion detection alerts from systems such as Snort, Suricata, and Palo Alto threat detections.', + expected_event_types: ['allowed', 'denied', 'info'], + name: 'intrusion_detection', + }, + { + description: + 'Malware detection events and alerts. Use this category to visualize and analyze malware detections from EDR/EPP systems such as Elastic Endpoint Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems such as Suricata, or other sources of malware-related events such as Palo Alto Networks threat logs and Wildfire logs.', + expected_event_types: ['info'], + name: 'malware', + }, + { + description: + 'Relating to all network activity, including network connection lifecycle, network traffic, and essentially any event that includes an IP address. Many events containing decoded network protocol transactions fit into this category. Use events in this category to visualize or analyze counts of network ports, protocols, addresses, geolocation information, etc.', + expected_event_types: [ + 'access', + 'allowed', + 'connection', + 'denied', + 'end', + 'info', + 'protocol', + 'start', + ], + name: 'network', + }, + { + description: + 'Relating to software packages installed on hosts. Use this category to visualize and analyze inventory of software installed on various hosts, or to determine host vulnerability in the absence of vulnerability scan data.', + expected_event_types: [ + 'access', + 'change', + 'deletion', + 'info', + 'installation', + 'start', + ], + name: 'package', + }, + { + description: + 'Use this category of events to visualize and analyze process-specific information such as lifecycle events or process ancestry.', + expected_event_types: ['access', 'change', 'end', 'info', 'start'], + name: 'process', + }, + { + description: + 'Having to do with settings and assets stored in the Windows registry. Use this category to visualize and analyze activity such as registry access and modifications.', + expected_event_types: ['access', 'change', 'creation', 'deletion'], + name: 'registry', + }, + { + description: + 'The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections between assets. Data for this category may come from Windows Event logs, SSH logs, or stateless sessions such as HTTP cookie-based sessions, etc.', + expected_event_types: ['start', 'end', 'info'], + name: 'session', + }, + { + description: + "Use this category to visualize and analyze events describing threat actors' targets, motives, or behaviors.", + expected_event_types: ['indicator'], + name: 'threat', + }, + { + description: + 'Relating to vulnerability scan results. Use this category to analyze vulnerabilities detected by Tenable, Qualys, internal scanners, and other vulnerability management sources.', + expected_event_types: ['info'], + name: 'vulnerability', + }, + { + description: + 'Relating to web server access. Use this category to create a dashboard of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: events from network observers such as Zeek http log may also be included in this category.', + expected_event_types: ['access', 'error', 'info'], + name: 'web', + }, + ], + dashed_name: 'event-category', + description: + 'This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy.\n`event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory.\nThis field is an array. This will allow proper categorization of some events that fall in multiple categories.', + example: 'authentication', + flat_name: 'event.category', + ignore_above: 1024, + level: 'core', + name: 'category', + normalize: ['array'], + short: 'Event category. The second categorization field in the hierarchy.', + type: 'keyword', + indexFieldName: 'event.category', + indexFieldType: 'keyword', + indexInvalidValues: [ + { + count: 2, + fieldName: 'an_invalid_category', + }, + { + count: 1, + fieldName: 'theory', + }, + ], + hasEcsMetadata: true, + isEcsCompliant: false, + isInSameFamily: false, + }, + { + dashed_name: 'host-name', + description: + 'Name of the host.\nIt can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.', + flat_name: 'host.name', + ignore_above: 1024, + level: 'core', + name: 'name', + normalize: [], + short: 'Name of the host.', + type: 'keyword', + indexFieldName: 'host.name', + indexFieldType: 'text', + indexInvalidValues: [], + hasEcsMetadata: true, + isEcsCompliant: false, + isInSameFamily: false, + }, + { + indexFieldName: 'host.name.keyword', + indexFieldType: 'keyword', + indexInvalidValues: [], + hasEcsMetadata: false, + isEcsCompliant: false, + isInSameFamily: false, + }, + { + indexFieldName: 'some.field', + indexFieldType: 'text', + indexInvalidValues: [], + hasEcsMetadata: false, + isEcsCompliant: false, + isInSameFamily: false, + }, + { + indexFieldName: 'some.field.keyword', + indexFieldType: 'keyword', + indexInvalidValues: [], + hasEcsMetadata: false, + isEcsCompliant: false, + isInSameFamily: false, + }, + { + dashed_name: 'source-ip', + description: 'IP address of the source (IPv4 or IPv6).', + flat_name: 'source.ip', + level: 'core', + name: 'ip', + normalize: [], + short: 'IP address of the source.', + type: 'ip', + indexFieldName: 'source.ip', + indexFieldType: 'text', + indexInvalidValues: [], + hasEcsMetadata: true, + isEcsCompliant: false, + isInSameFamily: false, + }, + { + indexFieldName: 'source.ip.keyword', + indexFieldType: 'keyword', + indexInvalidValues: [], + hasEcsMetadata: false, + isEcsCompliant: false, + isInSameFamily: false, + }, + { + dashed_name: 'source-port', + description: 'Port of the source.', + flat_name: 'source.port', + format: 'string', + level: 'core', + name: 'port', + normalize: [], + short: 'Port of the source.', + type: 'long', + indexFieldName: 'source.port', + indexFieldType: 'long', + indexInvalidValues: [], + hasEcsMetadata: true, + isEcsCompliant: true, + isInSameFamily: false, + }, + ], + ecsCompliant: [ + { + dashed_name: 'timestamp', + description: + 'Date/time when the event originated.\nThis is the date/time extracted from the event, typically representing when the event was generated by the source.\nIf the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline.\nRequired field for all events.', + example: '2016-05-23T08:05:34.853Z', + flat_name: '@timestamp', + level: 'core', + name: '@timestamp', + normalize: [], + required: true, + short: 'Date/time when the event originated.', + type: 'date', + indexFieldName: '@timestamp', + indexFieldType: 'date', + indexInvalidValues: [], + hasEcsMetadata: true, + isEcsCompliant: true, + isInSameFamily: false, + }, + { + dashed_name: 'source-port', + description: 'Port of the source.', + flat_name: 'source.port', + format: 'string', + level: 'core', + name: 'port', + normalize: [], + short: 'Port of the source.', + type: 'long', + indexFieldName: 'source.port', + indexFieldType: 'long', + indexInvalidValues: [], + hasEcsMetadata: true, + isEcsCompliant: true, + isInSameFamily: false, + }, + ], + custom: [ + { + indexFieldName: 'host.name.keyword', + indexFieldType: 'keyword', + indexInvalidValues: [], + hasEcsMetadata: false, + isEcsCompliant: false, + isInSameFamily: false, + }, + { + indexFieldName: 'some.field', + indexFieldType: 'text', + indexInvalidValues: [], + hasEcsMetadata: false, + isEcsCompliant: false, + isInSameFamily: false, + }, + { + indexFieldName: 'some.field.keyword', + indexFieldType: 'keyword', + indexInvalidValues: [], + hasEcsMetadata: false, + isEcsCompliant: false, + isInSameFamily: false, + }, + { + indexFieldName: 'source.ip.keyword', + indexFieldType: 'keyword', + indexInvalidValues: [], + hasEcsMetadata: false, + isEcsCompliant: false, + isInSameFamily: false, + }, + ], + incompatible: [ + { + allowed_values: [ + { + description: + 'Events in this category are related to the challenge and response process in which credentials are supplied and verified to allow the creation of a session. Common sources for these logs are Windows event logs and ssh logs. Visualize and analyze events in this category to look for failed logins, and other authentication-related activity.', + expected_event_types: ['start', 'end', 'info'], + name: 'authentication', + }, + { + description: + 'Events in the configuration category have to deal with creating, modifying, or deleting the settings or parameters of an application, process, or system.\nExample sources include security policy change logs, configuration auditing logging, and system integrity monitoring.', + expected_event_types: ['access', 'change', 'creation', 'deletion', 'info'], + name: 'configuration', + }, + { + description: + 'The database category denotes events and metrics relating to a data storage and retrieval system. Note that use of this category is not limited to relational database systems. Examples include event logs from MS SQL, MySQL, Elasticsearch, MongoDB, etc. Use this category to visualize and analyze database activity such as accesses and changes.', + expected_event_types: ['access', 'change', 'info', 'error'], + name: 'database', + }, + { + description: + 'Events in the driver category have to do with operating system device drivers and similar software entities such as Windows drivers, kernel extensions, kernel modules, etc.\nUse events and metrics in this category to visualize and analyze driver-related activity and status on hosts.', + expected_event_types: ['change', 'end', 'info', 'start'], + name: 'driver', + }, + { + description: + 'This category is used for events relating to email messages, email attachments, and email network or protocol activity.\nEmails events can be produced by email security gateways, mail transfer agents, email cloud service providers, or mail server monitoring applications.', + expected_event_types: ['info'], + name: 'email', + }, + { + description: + 'Relating to a set of information that has been created on, or has existed on a filesystem. Use this category of events to visualize and analyze the creation, access, and deletions of files. Events in this category can come from both host-based and network-based sources. An example source of a network-based detection of a file transfer would be the Zeek file.log.', + expected_event_types: ['change', 'creation', 'deletion', 'info'], + name: 'file', + }, + { + description: + 'Use this category to visualize and analyze information such as host inventory or host lifecycle events.\nMost of the events in this category can usually be observed from the outside, such as from a hypervisor or a control plane\'s point of view. Some can also be seen from within, such as "start" or "end".\nNote that this category is for information about hosts themselves; it is not meant to capture activity "happening on a host".', + expected_event_types: ['access', 'change', 'end', 'info', 'start'], + name: 'host', + }, + { + description: + 'Identity and access management (IAM) events relating to users, groups, and administration. Use this category to visualize and analyze IAM-related logs and data from active directory, LDAP, Okta, Duo, and other IAM systems.', + expected_event_types: [ + 'admin', + 'change', + 'creation', + 'deletion', + 'group', + 'info', + 'user', + ], + name: 'iam', + }, + { + description: + 'Relating to intrusion detections from IDS/IPS systems and functions, both network and host-based. Use this category to visualize and analyze intrusion detection alerts from systems such as Snort, Suricata, and Palo Alto threat detections.', + expected_event_types: ['allowed', 'denied', 'info'], + name: 'intrusion_detection', + }, + { + description: + 'Malware detection events and alerts. Use this category to visualize and analyze malware detections from EDR/EPP systems such as Elastic Endpoint Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems such as Suricata, or other sources of malware-related events such as Palo Alto Networks threat logs and Wildfire logs.', + expected_event_types: ['info'], + name: 'malware', + }, + { + description: + 'Relating to all network activity, including network connection lifecycle, network traffic, and essentially any event that includes an IP address. Many events containing decoded network protocol transactions fit into this category. Use events in this category to visualize or analyze counts of network ports, protocols, addresses, geolocation information, etc.', + expected_event_types: [ + 'access', + 'allowed', + 'connection', + 'denied', + 'end', + 'info', + 'protocol', + 'start', + ], + name: 'network', + }, + { + description: + 'Relating to software packages installed on hosts. Use this category to visualize and analyze inventory of software installed on various hosts, or to determine host vulnerability in the absence of vulnerability scan data.', + expected_event_types: [ + 'access', + 'change', + 'deletion', + 'info', + 'installation', + 'start', + ], + name: 'package', + }, + { + description: + 'Use this category of events to visualize and analyze process-specific information such as lifecycle events or process ancestry.', + expected_event_types: ['access', 'change', 'end', 'info', 'start'], + name: 'process', + }, + { + description: + 'Having to do with settings and assets stored in the Windows registry. Use this category to visualize and analyze activity such as registry access and modifications.', + expected_event_types: ['access', 'change', 'creation', 'deletion'], + name: 'registry', + }, + { + description: + 'The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections between assets. Data for this category may come from Windows Event logs, SSH logs, or stateless sessions such as HTTP cookie-based sessions, etc.', + expected_event_types: ['start', 'end', 'info'], + name: 'session', + }, + { + description: + "Use this category to visualize and analyze events describing threat actors' targets, motives, or behaviors.", + expected_event_types: ['indicator'], + name: 'threat', + }, + { + description: + 'Relating to vulnerability scan results. Use this category to analyze vulnerabilities detected by Tenable, Qualys, internal scanners, and other vulnerability management sources.', + expected_event_types: ['info'], + name: 'vulnerability', + }, + { + description: + 'Relating to web server access. Use this category to create a dashboard of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: events from network observers such as Zeek http log may also be included in this category.', + expected_event_types: ['access', 'error', 'info'], + name: 'web', + }, + ], + dashed_name: 'event-category', + description: + 'This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy.\n`event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory.\nThis field is an array. This will allow proper categorization of some events that fall in multiple categories.', + example: 'authentication', + flat_name: 'event.category', + ignore_above: 1024, + level: 'core', + name: 'category', + normalize: ['array'], + short: 'Event category. The second categorization field in the hierarchy.', + type: 'keyword', + indexFieldName: 'event.category', + indexFieldType: 'keyword', + indexInvalidValues: [ + { + count: 2, + fieldName: 'an_invalid_category', + }, + { + count: 1, + fieldName: 'theory', + }, + ], + hasEcsMetadata: true, + isEcsCompliant: false, + isInSameFamily: false, + }, + { + dashed_name: 'host-name', + description: + 'Name of the host.\nIt can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.', + flat_name: 'host.name', + ignore_above: 1024, + level: 'core', + name: 'name', + normalize: [], + short: 'Name of the host.', + type: 'keyword', + indexFieldName: 'host.name', + indexFieldType: 'text', + indexInvalidValues: [], + hasEcsMetadata: true, + isEcsCompliant: false, + isInSameFamily: false, + }, + { + dashed_name: 'source-ip', + description: 'IP address of the source (IPv4 or IPv6).', + flat_name: 'source.ip', + level: 'core', + name: 'ip', + normalize: [], + short: 'IP address of the source.', + type: 'ip', + indexFieldName: 'source.ip', + indexFieldType: 'text', + indexInvalidValues: [], + hasEcsMetadata: true, + isEcsCompliant: false, + isInSameFamily: false, + }, + ], sameFamily: [], }); }); diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/helpers.test.ts b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/helpers.test.ts index 5c0515daff450..f3f1c44378615 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/helpers.test.ts +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/helpers.test.ts @@ -440,13 +440,133 @@ describe('helpers', () => { * `isEcsCompliant` is true, because the index has the expected mapping type, and no unallowed values */ const happyPathResult: EnrichedFieldMetadata = { - allowed_values: expect.arrayContaining([ - expect.objectContaining({ - description: expect.any(String), - name: expect.any(String), - expected_event_types: expect.arrayContaining([expect.any(String)]), - }), - ]), + allowed_values: [ + { + description: + 'Events in this category are related to the challenge and response process in which credentials are supplied and verified to allow the creation of a session. Common sources for these logs are Windows event logs and ssh logs. Visualize and analyze events in this category to look for failed logins, and other authentication-related activity.', + expected_event_types: ['start', 'end', 'info'], + name: 'authentication', + }, + { + description: + 'Events in the configuration category have to deal with creating, modifying, or deleting the settings or parameters of an application, process, or system.\nExample sources include security policy change logs, configuration auditing logging, and system integrity monitoring.', + expected_event_types: ['access', 'change', 'creation', 'deletion', 'info'], + name: 'configuration', + }, + { + description: + 'The database category denotes events and metrics relating to a data storage and retrieval system. Note that use of this category is not limited to relational database systems. Examples include event logs from MS SQL, MySQL, Elasticsearch, MongoDB, etc. Use this category to visualize and analyze database activity such as accesses and changes.', + expected_event_types: ['access', 'change', 'info', 'error'], + name: 'database', + }, + { + description: + 'Events in the driver category have to do with operating system device drivers and similar software entities such as Windows drivers, kernel extensions, kernel modules, etc.\nUse events and metrics in this category to visualize and analyze driver-related activity and status on hosts.', + expected_event_types: ['change', 'end', 'info', 'start'], + name: 'driver', + }, + { + description: + 'This category is used for events relating to email messages, email attachments, and email network or protocol activity.\nEmails events can be produced by email security gateways, mail transfer agents, email cloud service providers, or mail server monitoring applications.', + expected_event_types: ['info'], + name: 'email', + }, + { + description: + 'Relating to a set of information that has been created on, or has existed on a filesystem. Use this category of events to visualize and analyze the creation, access, and deletions of files. Events in this category can come from both host-based and network-based sources. An example source of a network-based detection of a file transfer would be the Zeek file.log.', + expected_event_types: ['change', 'creation', 'deletion', 'info'], + name: 'file', + }, + { + description: + 'Use this category to visualize and analyze information such as host inventory or host lifecycle events.\nMost of the events in this category can usually be observed from the outside, such as from a hypervisor or a control plane\'s point of view. Some can also be seen from within, such as "start" or "end".\nNote that this category is for information about hosts themselves; it is not meant to capture activity "happening on a host".', + expected_event_types: ['access', 'change', 'end', 'info', 'start'], + name: 'host', + }, + { + description: + 'Identity and access management (IAM) events relating to users, groups, and administration. Use this category to visualize and analyze IAM-related logs and data from active directory, LDAP, Okta, Duo, and other IAM systems.', + expected_event_types: [ + 'admin', + 'change', + 'creation', + 'deletion', + 'group', + 'info', + 'user', + ], + name: 'iam', + }, + { + description: + 'Relating to intrusion detections from IDS/IPS systems and functions, both network and host-based. Use this category to visualize and analyze intrusion detection alerts from systems such as Snort, Suricata, and Palo Alto threat detections.', + expected_event_types: ['allowed', 'denied', 'info'], + name: 'intrusion_detection', + }, + { + description: + 'Malware detection events and alerts. Use this category to visualize and analyze malware detections from EDR/EPP systems such as Elastic Endpoint Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems such as Suricata, or other sources of malware-related events such as Palo Alto Networks threat logs and Wildfire logs.', + expected_event_types: ['info'], + name: 'malware', + }, + { + description: + 'Relating to all network activity, including network connection lifecycle, network traffic, and essentially any event that includes an IP address. Many events containing decoded network protocol transactions fit into this category. Use events in this category to visualize or analyze counts of network ports, protocols, addresses, geolocation information, etc.', + expected_event_types: [ + 'access', + 'allowed', + 'connection', + 'denied', + 'end', + 'info', + 'protocol', + 'start', + ], + name: 'network', + }, + { + description: + 'Relating to software packages installed on hosts. Use this category to visualize and analyze inventory of software installed on various hosts, or to determine host vulnerability in the absence of vulnerability scan data.', + expected_event_types: ['access', 'change', 'deletion', 'info', 'installation', 'start'], + name: 'package', + }, + { + description: + 'Use this category of events to visualize and analyze process-specific information such as lifecycle events or process ancestry.', + expected_event_types: ['access', 'change', 'end', 'info', 'start'], + name: 'process', + }, + { + description: + 'Having to do with settings and assets stored in the Windows registry. Use this category to visualize and analyze activity such as registry access and modifications.', + expected_event_types: ['access', 'change', 'creation', 'deletion'], + name: 'registry', + }, + { + description: + 'The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections between assets. Data for this category may come from Windows Event logs, SSH logs, or stateless sessions such as HTTP cookie-based sessions, etc.', + expected_event_types: ['start', 'end', 'info'], + name: 'session', + }, + { + description: + "Use this category to visualize and analyze events describing threat actors' targets, motives, or behaviors.", + expected_event_types: ['indicator'], + name: 'threat', + }, + { + description: + 'Relating to vulnerability scan results. Use this category to analyze vulnerabilities detected by Tenable, Qualys, internal scanners, and other vulnerability management sources.', + expected_event_types: ['info'], + name: 'vulnerability', + }, + { + description: + 'Relating to web server access. Use this category to create a dashboard of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: events from network observers such as Zeek http log may also be included in this category.', + expected_event_types: ['access', 'error', 'info'], + name: 'web', + }, + ], dashed_name: 'event-category', description: 'This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy.\n`event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory.\nThis field is an array. This will allow proper categorization of some events that fall in multiple categories.', diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/use_results_rollup/helpers.test.ts b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/use_results_rollup/helpers.test.ts index d2bc3920efdeb..9175acf5061b1 100644 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/use_results_rollup/helpers.test.ts +++ b/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality/use_results_rollup/helpers.test.ts @@ -27,7 +27,6 @@ import { EMPTY_STAT } from '../helpers'; import { IndicesStatsIndicesStats } from '@elastic/elasticsearch/lib/api/types'; import { mockPartitionedFieldMetadata } from '../mock/partitioned_field_metadata/mock_partitioned_field_metadata'; import { alertIndexWithAllResults } from '../mock/pattern_rollup/mock_alerts_pattern_rollup'; -import { EcsVersion } from '@kbn/ecs'; const defaultBytesFormat = '0,0.[0]b'; const formatBytes = (value: number | undefined) => @@ -272,7 +271,7 @@ describe('helpers', () => { '### .ds-packetbeat-8.6.1-2023.02.04-000001\n', '| Result | Index | Docs | Incompatible fields | ILM Phase | Size |\n|--------|-------|------|---------------------|-----------|------|\n| ❌ | .ds-packetbeat-8.6.1-2023.02.04-000001 | 1,628,343 (50.0%) | 3 | `hot` | 697.7MB |\n\n', '### **Incompatible fields** `3` **Same family** `0` **Custom fields** `4` **ECS compliant fields** `2` **All fields** `9`\n', - `#### 3 incompatible fields\n\nFields are incompatible with ECS when index mappings, or the values of the fields in the index, don't conform to the Elastic Common Schema (ECS), version ${EcsVersion}.\n\n❌ Detection engine rules referencing these fields may not match them correctly\n❌ Pages may not display some events or fields due to unexpected field mappings or values\n❌ Mappings or field values that don't comply with ECS are not supported\n`, + "#### 3 incompatible fields\n\nFields are incompatible with ECS when index mappings, or the values of the fields in the index, don't conform to the Elastic Common Schema (ECS), version 8.6.1.\n\n❌ Detection engine rules referencing these fields may not match them correctly\n❌ Pages may not display some events or fields due to unexpected field mappings or values\n❌ Mappings or field values that don't comply with ECS are not supported\n", '\n#### Incompatible field mappings - .ds-packetbeat-8.6.1-2023.02.04-000001\n\n\n| Field | ECS mapping type (expected) | Index mapping type (actual) | \n|-------|-----------------------------|-----------------------------|\n| host.name | `keyword` | `text` |\n| source.ip | `ip` | `text` |\n\n#### Incompatible field values - .ds-packetbeat-8.6.1-2023.02.04-000001\n\n\n| Field | ECS values (expected) | Document values (actual) | \n|-------|-----------------------|--------------------------|\n| event.category | `authentication`, `configuration`, `database`, `driver`, `email`, `file`, `host`, `iam`, `intrusion_detection`, `malware`, `network`, `package`, `process`, `registry`, `session`, `threat`, `vulnerability`, `web` | `an_invalid_category` (2), `theory` (1) |\n\n', ], pattern: 'packetbeat-*', @@ -373,7 +372,7 @@ describe('helpers', () => { '### .ds-packetbeat-8.6.1-2023.02.04-000001\n', '| Result | Index | Docs | Incompatible fields | ILM Phase | Size |\n|--------|-------|------|---------------------|-----------|------|\n| ❌ | .ds-packetbeat-8.6.1-2023.02.04-000001 | 1,628,343 () | 3 | `hot` | 697.7MB |\n\n', '### **Incompatible fields** `3` **Same family** `0` **Custom fields** `4` **ECS compliant fields** `2` **All fields** `9`\n', - `#### 3 incompatible fields\n\nFields are incompatible with ECS when index mappings, or the values of the fields in the index, don't conform to the Elastic Common Schema (ECS), version ${EcsVersion}.\n\n❌ Detection engine rules referencing these fields may not match them correctly\n❌ Pages may not display some events or fields due to unexpected field mappings or values\n❌ Mappings or field values that don't comply with ECS are not supported\n`, + "#### 3 incompatible fields\n\nFields are incompatible with ECS when index mappings, or the values of the fields in the index, don't conform to the Elastic Common Schema (ECS), version 8.6.1.\n\n❌ Detection engine rules referencing these fields may not match them correctly\n❌ Pages may not display some events or fields due to unexpected field mappings or values\n❌ Mappings or field values that don't comply with ECS are not supported\n", '\n#### Incompatible field mappings - .ds-packetbeat-8.6.1-2023.02.04-000001\n\n\n| Field | ECS mapping type (expected) | Index mapping type (actual) | \n|-------|-----------------------------|-----------------------------|\n| host.name | `keyword` | `text` |\n| source.ip | `ip` | `text` |\n\n#### Incompatible field values - .ds-packetbeat-8.6.1-2023.02.04-000001\n\n\n| Field | ECS values (expected) | Document values (actual) | \n|-------|-----------------------|--------------------------|\n| event.category | `authentication`, `configuration`, `database`, `driver`, `email`, `file`, `host`, `iam`, `intrusion_detection`, `malware`, `network`, `package`, `process`, `registry`, `session`, `threat`, `vulnerability`, `web` | `an_invalid_category` (2), `theory` (1) |\n\n', ], pattern: 'packetbeat-*', @@ -522,7 +521,7 @@ describe('helpers', () => { '### .ds-packetbeat-8.6.1-2023.02.04-000001\n', '| Result | Index | Docs | Incompatible fields | ILM Phase | Size |\n|--------|-------|------|---------------------|-----------|------|\n| ❌ | .ds-packetbeat-8.6.1-2023.02.04-000001 | 1,628,343 (50.0%) | 3 | -- | 697.7MB |\n\n', '### **Incompatible fields** `3` **Same family** `0` **Custom fields** `4` **ECS compliant fields** `2` **All fields** `9`\n', - `#### 3 incompatible fields\n\nFields are incompatible with ECS when index mappings, or the values of the fields in the index, don't conform to the Elastic Common Schema (ECS), version ${EcsVersion}.\n\n❌ Detection engine rules referencing these fields may not match them correctly\n❌ Pages may not display some events or fields due to unexpected field mappings or values\n❌ Mappings or field values that don't comply with ECS are not supported\n`, + "#### 3 incompatible fields\n\nFields are incompatible with ECS when index mappings, or the values of the fields in the index, don't conform to the Elastic Common Schema (ECS), version 8.6.1.\n\n❌ Detection engine rules referencing these fields may not match them correctly\n❌ Pages may not display some events or fields due to unexpected field mappings or values\n❌ Mappings or field values that don't comply with ECS are not supported\n", '\n#### Incompatible field mappings - .ds-packetbeat-8.6.1-2023.02.04-000001\n\n\n| Field | ECS mapping type (expected) | Index mapping type (actual) | \n|-------|-----------------------------|-----------------------------|\n| host.name | `keyword` | `text` |\n| source.ip | `ip` | `text` |\n\n#### Incompatible field values - .ds-packetbeat-8.6.1-2023.02.04-000001\n\n\n| Field | ECS values (expected) | Document values (actual) | \n|-------|-----------------------|--------------------------|\n| event.category | `authentication`, `configuration`, `database`, `driver`, `email`, `file`, `host`, `iam`, `intrusion_detection`, `malware`, `network`, `package`, `process`, `registry`, `session`, `threat`, `vulnerability`, `web` | `an_invalid_category` (2), `theory` (1) |\n\n', ], pattern: 'packetbeat-*', diff --git a/x-pack/plugins/security/server/audit/audit_service.ts b/x-pack/plugins/security/server/audit/audit_service.ts index 266557b62ab29..dddb24d47fdaf 100644 --- a/x-pack/plugins/security/server/audit/audit_service.ts +++ b/x-pack/plugins/security/server/audit/audit_service.ts @@ -249,9 +249,8 @@ export function filterEvent( return !ignoreFilters.some( (rule) => (!rule.actions || rule.actions.includes(event.event?.action!)) && - (!rule.categories || - (event.event?.category as string[])?.every?.((c) => rule.categories?.includes(c))) && - (!rule.types || (event.event?.type as string[])?.every?.((t) => rule.types?.includes(t))) && + (!rule.categories || event.event?.category?.every((c) => rule.categories?.includes(c))) && + (!rule.types || event.event?.type?.every((t) => rule.types?.includes(t))) && (!rule.outcomes || rule.outcomes.includes(event.event?.outcome!)) && (!rule.spaces || rule.spaces.includes(event.kibana?.space_id!)) ); From 61e8ca2a39fb7b83427cf03dd08dd3fdedf9fced Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Fri, 13 Oct 2023 09:55:47 -0700 Subject: [PATCH 28/80] [OAS] Add Serverless machine learning APIs (#168777) --- x-pack/plugins/ml/common/openapi/README.md | 7 +- x-pack/plugins/ml/common/openapi/ml_apis.yaml | 213 ++++++++++++++++++ ...l_apis_v3.yaml => ml_apis_serverless.yaml} | 21 +- 3 files changed, 222 insertions(+), 19 deletions(-) create mode 100644 x-pack/plugins/ml/common/openapi/ml_apis.yaml rename x-pack/plugins/ml/common/openapi/{ml_apis_v3.yaml => ml_apis_serverless.yaml} (91%) diff --git a/x-pack/plugins/ml/common/openapi/README.md b/x-pack/plugins/ml/common/openapi/README.md index 7c482dc055b98..7a79e55608894 100644 --- a/x-pack/plugins/ml/common/openapi/README.md +++ b/x-pack/plugins/ml/common/openapi/README.md @@ -12,6 +12,9 @@ It is possible to validate the docs before bundling them by running these commands in the `x-pack/plugins/ml/common/openapi/` folder: ``` -npx swagger-cli validate ml_apis_v3.yaml -npx @redocly/cli lint ml_apis_v3.yaml +npx swagger-cli validate ml_apis.yaml +npx @redocly/cli lint ml_apis.yaml + +npx swagger-cli validate ml_apis_serverless.yaml +npx @redocly/cli lint ml_apis_serverless.yaml ``` diff --git a/x-pack/plugins/ml/common/openapi/ml_apis.yaml b/x-pack/plugins/ml/common/openapi/ml_apis.yaml new file mode 100644 index 0000000000000..bde6c4c5cca7a --- /dev/null +++ b/x-pack/plugins/ml/common/openapi/ml_apis.yaml @@ -0,0 +1,213 @@ +openapi: 3.0.1 +info: + title: Machine learning APIs + description: Kibana APIs for the machine learning feature + version: "1.0.1" + license: + name: Elastic License 2.0 + url: https://www.elastic.co/licensing/elastic-license +tags: + - name: ml + description: Machine learning +servers: + - url: https://localhost:5601 +paths: + /api/ml/saved_objects/sync: + get: + summary: Synchronizes Kibana saved objects for machine learning jobs and trained models. + description: This API runs automatically when you start Kibana and periodically thereafter. + operationId: mlSync + tags: + - ml + parameters: + - $ref: '#/components/parameters/simulateParam' + responses: + '200': + description: Indicates a successful call + content: + application/json: + schema: + $ref: '#/components/schemas/mlSync200Response' + examples: + syncExample: + $ref: '#/components/examples/mlSyncExample' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/mlSync4xxResponse' + + /s/{spaceId}/api/ml/saved_objects/sync: + get: + summary: Synchronizes Kibana saved objects for machine learning jobs and trained models. + description: > + You must have `all` privileges for the **Machine Learning** feature in the **Analytics** section of the Kibana feature privileges. + This API runs automatically when you start Kibana and periodically thereafter. + operationId: mlSyncWithSpaceId + tags: + - ml + parameters: + - $ref: '#/components/parameters/spaceParam' + - $ref: '#/components/parameters/simulateParam' + responses: + '200': + description: Indicates a successful call + content: + application/json: + schema: + $ref: '#/components/schemas/mlSync200Response' + examples: + syncExample: + $ref: '#/components/examples/mlSyncExample' + '401': + description: Authorization information is missing or invalid. + content: + application/json: + schema: + $ref: '#/components/schemas/mlSync4xxResponse' +components: + parameters: + spaceParam: + 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 + simulateParam: + in: query + name: simulate + description: When true, simulates the synchronization by returning only the list of actions that would be performed. + required: false + schema: + type: boolean + example: 'true' + securitySchemes: + basicAuth: + type: http + scheme: basic + apiKeyAuth: + type: apiKey + in: header + name: ApiKey + schemas: + mlSyncResponseSuccess: + type: boolean + description: The success or failure of the synchronization. + mlSyncResponseAnomalyDetectors: + type: object + title: Sync API response for anomaly detection jobs + description: The sync machine learning saved objects API response contains this object when there are anomaly detection jobs affected by the synchronization. There is an object for each relevant job, which contains the synchronization status. + properties: + success: + $ref: '#/components/schemas/mlSyncResponseSuccess' + mlSyncResponseDatafeeds: + type: object + title: Sync API response for datafeeds + description: The sync machine learning saved objects API response contains this object when there are datafeeds affected by the synchronization. There is an object for each relevant datafeed, which contains the synchronization status. + properties: + success: + $ref: '#/components/schemas/mlSyncResponseSuccess' + mlSyncResponseDataFrameAnalytics: + type: object + title: Sync API response for data frame analytics jobs + description: The sync machine learning saved objects API response contains this object when there are data frame analytics jobs affected by the synchronization. There is an object for each relevant job, which contains the synchronization status. + properties: + success: + $ref: '#/components/schemas/mlSyncResponseSuccess' + mlSyncResponseSavedObjectsCreated: + type: object + title: Sync API response for created saved objects + description: If saved objects are missing for machine learning jobs or trained models, they are created when you run the sync machine learning saved objects API. + properties: + anomaly-detector: + type: object + description: If saved objects are missing for anomaly detection jobs, they are created. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseAnomalyDetectors' + data-frame-analytics: + type: object + description: If saved objects are missing for data frame analytics jobs, they are created. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseDataFrameAnalytics' + trained-model: + type: object + description: If saved objects are missing for trained models, they are created. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseTrainedModels' + mlSyncResponseSavedObjectsDeleted: + type: object + title: Sync API response for deleted saved objects + description: If saved objects exist for machine learning jobs or trained models that no longer exist, they are deleted when you run the sync machine learning saved objects API. + properties: + anomaly-detector: + type: object + description: If there are saved objects exist for nonexistent anomaly detection jobs, they are deleted. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseAnomalyDetectors' + data-frame-analytics: + type: object + description: If there are saved objects exist for nonexistent data frame analytics jobs, they are deleted. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseDataFrameAnalytics' + trained-model: + type: object + description: If there are saved objects exist for nonexistent trained models, they are deleted. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseTrainedModels' + mlSyncResponseTrainedModels: + type: object + title: Sync API response for trained models + description: The sync machine learning saved objects API response contains this object when there are trained models affected by the synchronization. There is an object for each relevant trained model, which contains the synchronization status. + properties: + success: + $ref: '#/components/schemas/mlSyncResponseSuccess' + mlSync200Response: + type: object + title: Successful sync API response + properties: + datafeedsAdded: + type: object + description: If a saved object for an anomaly detection job is missing a datafeed identifier, it is added when you run the sync machine learning saved objects API. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseDatafeeds' + datafeedsRemoved: + type: object + description: If a saved object for an anomaly detection job references a datafeed that no longer exists, it is deleted when you run the sync machine learning saved objects API. + additionalProperties: + $ref: '#/components/schemas/mlSyncResponseDatafeeds' + savedObjectsCreated: + $ref: '#/components/schemas/mlSyncResponseSavedObjectsCreated' + savedObjectsDeleted: + $ref: '#/components/schemas/mlSyncResponseSavedObjectsDeleted' + mlSync4xxResponse: + type: object + title: Unsuccessful sync API response + properties: + error: + type: string + example: Unauthorized + message: + type: string + statusCode: + type: integer + example: 401 + examples: + mlSyncExample: + summary: Two anomaly detection jobs required synchronization in this example. + value: + { + "savedObjectsCreated": { + "anomaly-detector": { + "myjob1": { "success":true }, + "myjob2": { "success":true } + } + }, + "savedObjectsDeleted": {}, + "datafeedsAdded": {}, + "datafeedsRemoved": {} + } +security: + - basicAuth: [ ] + - apiKeyAuth: [ ] \ No newline at end of file diff --git a/x-pack/plugins/ml/common/openapi/ml_apis_v3.yaml b/x-pack/plugins/ml/common/openapi/ml_apis_serverless.yaml similarity index 91% rename from x-pack/plugins/ml/common/openapi/ml_apis_v3.yaml rename to x-pack/plugins/ml/common/openapi/ml_apis_serverless.yaml index ff8e3b98cda5d..0cb7f3b3d9911 100644 --- a/x-pack/plugins/ml/common/openapi/ml_apis_v3.yaml +++ b/x-pack/plugins/ml/common/openapi/ml_apis_serverless.yaml @@ -12,17 +12,14 @@ tags: servers: - url: https://localhost:5601 paths: - /s/{spaceId}/api/ml/saved_objects/sync: + /api/ml/saved_objects/sync: get: summary: Synchronizes Kibana saved objects for machine learning jobs and trained models. - description: > - You must have `all` privileges for the **Machine Learning** feature in the **Analytics** section of the Kibana feature privileges. - This API runs automatically when you start Kibana and periodically thereafter. - operationId: ml-sync + description: This API runs automatically when you start Kibana and periodically thereafter. + operationId: mlSync tags: - ml parameters: - - $ref: '#/components/parameters/spaceParam' - $ref: '#/components/parameters/simulateParam' responses: '200': @@ -42,13 +39,6 @@ paths: $ref: '#/components/schemas/mlSync4xxResponse' components: parameters: - spaceParam: - 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 simulateParam: in: query name: simulate @@ -58,9 +48,6 @@ components: type: boolean example: 'true' securitySchemes: - basicAuth: - type: http - scheme: basic apiKeyAuth: type: apiKey in: header @@ -183,4 +170,4 @@ components: "datafeedsRemoved": {} } security: - - basicAuth: [ ] \ No newline at end of file + - apiKeyAuth: [ ] \ No newline at end of file From 459c0b060f68737a82eeaedf1f71fc8e7feef2ed Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 13 Oct 2023 18:08:11 +0100 Subject: [PATCH 29/80] skip flaky suite (#168490) --- .../cypress/e2e/explore/dashboards/entity_analytics.cy.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts index a14aa11bc1cdd..92fad4effbd4a 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts @@ -135,7 +135,8 @@ describe('Entity Analytics Dashboard', { tags: ['@ess', '@brokenInServerless'] } }); }); - describe('With host risk data', () => { + // FLAKY: https://github.com/elastic/kibana/issues/168490 + describe.skip('With host risk data', () => { before(() => { cy.task('esArchiverLoad', { archiveName: 'risk_hosts' }); }); From e76e589cb4637ae445915761d0d7cf495b976038 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 13 Oct 2023 18:09:21 +0100 Subject: [PATCH 30/80] skip flaky suite (#168758) --- .../e2e/investigations/timelines/esql/search_filter.cy.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/esql/search_filter.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/esql/search_filter.cy.ts index 1e3539ab58527..ae99886d2fc02 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/esql/search_filter.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/esql/search_filter.cy.ts @@ -33,7 +33,8 @@ const INITIAL_END_DATE = 'Jan 19, 2024 @ 20:33:29.186'; const NEW_START_DATE = 'Jan 18, 2023 @ 20:33:29.186'; const esqlQuery = 'from auditbeat-* | where ecs.version == "8.0.0"'; -describe( +// FLAKY: https://github.com/elastic/kibana/issues/168758 +describe.skip( 'Basic esql search and filter operations', { tags: ['@ess'], From c66a86b07ebf267aaeed5304bd091ba87443fae2 Mon Sep 17 00:00:00 2001 From: Jiawei Wu <74562234+JiaweiWu@users.noreply.github.com> Date: Sat, 14 Oct 2023 02:22:25 +0900 Subject: [PATCH 31/80] [RAM] Improve rule interval circuit breaker error message (#168173) ## Summary Improve rule interval circuit breaker error message to the following endpoints: - create - update - bulk edit - bulk enable ### Bulk modification ![Screenshot from 2023-10-06 10-11-24](https://github.com/elastic/kibana/assets/74562234/11271221-4d92-41a4-9c0a-f2f8972c452e) ### Modifying a single rule ![Screenshot from 2023-10-06 10-12-16](https://github.com/elastic/kibana/assets/74562234/4ad5f482-6b68-4eef-8989-3f0013c218b2) ### 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 --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Xavier Mouligneau --- .../rule_status_dropdown_sandbox.tsx | 18 ++- x-pack/plugins/alerting/common/index.ts | 1 + ...rule_circuit_breaker_error_message.test.ts | 70 +++++++++ .../rule_circuit_breaker_error_message.ts | 136 ++++++++++++++++++ .../rule/methods/bulk_edit/bulk_edit_rules.ts | 31 ++-- .../rule/methods/create/create_rule.ts | 29 ++-- .../get_schedule_frequency.test.ts | 42 +++--- .../get_schedule_frequency.ts | 15 +- .../methods/get_schedule_frequency/index.ts | 2 + .../rules_client/methods/bulk_enable.ts | 18 ++- .../server/rules_client/methods/enable.ts | 22 ++- .../server/rules_client/methods/update.ts | 38 +++-- .../toast_with_circuit_breaker_content.tsx | 50 +++++++ .../components/rule_status_panel.test.tsx | 6 +- .../components/rule_status_panel.tsx | 8 +- .../sections/rule_form/rule_add.tsx | 25 +++- .../sections/rule_form/rule_edit.test.tsx | 6 +- .../sections/rule_form/rule_edit.tsx | 25 +++- .../components/rule_status_dropdown.test.tsx | 13 ++ .../components/rule_status_dropdown.tsx | 37 ++++- .../rules_list/components/rules_list.tsx | 29 +++- .../components/rules_list_table.tsx | 9 +- .../bulk_edit_with_circuit_breaker.ts | 2 +- .../bulk_enable_with_circuit_breaker.ts | 2 +- .../create_with_circuit_breaker.ts | 17 ++- .../enable_with_circuit_breaker.ts | 2 +- .../update_with_circuit_breaker.ts | 2 +- 27 files changed, 536 insertions(+), 119 deletions(-) create mode 100644 x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.test.ts create mode 100644 x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/components/toast_with_circuit_breaker_content.tsx diff --git a/x-pack/examples/triggers_actions_ui_example/public/components/rule_status_dropdown_sandbox.tsx b/x-pack/examples/triggers_actions_ui_example/public/components/rule_status_dropdown_sandbox.tsx index b1b0644f5dc10..982d55926d96a 100644 --- a/x-pack/examples/triggers_actions_ui_example/public/components/rule_status_dropdown_sandbox.tsx +++ b/x-pack/examples/triggers_actions_ui_example/public/components/rule_status_dropdown_sandbox.tsx @@ -18,18 +18,24 @@ export const RuleStatusDropdownSandbox = ({ triggersActionsUi }: SandboxProps) = const [isSnoozedUntil, setIsSnoozedUntil] = useState(null); const [muteAll, setMuteAll] = useState(false); + const onEnableRule: any = async () => { + setEnabled(true); + setMuteAll(false); + setIsSnoozedUntil(null); + }; + + const onDisableRule: any = async () => { + setEnabled(false); + }; + return triggersActionsUi.getRuleStatusDropdown({ rule: { enabled, isSnoozedUntil, muteAll, }, - enableRule: async () => { - setEnabled(true); - setMuteAll(false); - setIsSnoozedUntil(null); - }, - disableRule: async () => setEnabled(false), + enableRule: onEnableRule, + disableRule: onDisableRule, snoozeRule: async (schedule) => { if (schedule.duration === -1) { setIsSnoozedUntil(null); diff --git a/x-pack/plugins/alerting/common/index.ts b/x-pack/plugins/alerting/common/index.ts index e2e9e477cc4cc..c1b5be4d518a4 100644 --- a/x-pack/plugins/alerting/common/index.ts +++ b/x-pack/plugins/alerting/common/index.ts @@ -37,6 +37,7 @@ export * from './rrule_type'; export * from './rule_tags_aggregation'; export * from './iso_weekdays'; export * from './saved_objects/rules/mappings'; +export * from './rule_circuit_breaker_error_message'; export type { MaintenanceWindowModificationMetadata, diff --git a/x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.test.ts b/x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.test.ts new file mode 100644 index 0000000000000..bb89ebad61af6 --- /dev/null +++ b/x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.test.ts @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + getRuleCircuitBreakerErrorMessage, + parseRuleCircuitBreakerErrorMessage, +} from './rule_circuit_breaker_error_message'; + +describe('getRuleCircuitBreakerErrorMessage', () => { + it('should return the correct message', () => { + expect( + getRuleCircuitBreakerErrorMessage({ + name: 'test rule', + action: 'create', + interval: 5, + intervalAvailable: 4, + }) + ).toMatchInlineSnapshot( + `"Error validating circuit breaker - Rule 'test rule' cannot be created. The maximum number of runs per minute would be exceeded. - The rule has 5 runs per minute; there are only 4 runs per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals."` + ); + + expect( + getRuleCircuitBreakerErrorMessage({ + name: 'test rule', + action: 'update', + interval: 1, + intervalAvailable: 1, + }) + ).toMatchInlineSnapshot( + `"Error validating circuit breaker - Rule 'test rule' cannot be updated. The maximum number of runs per minute would be exceeded. - The rule has 1 run per minute; there is only 1 run per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals."` + ); + + expect( + getRuleCircuitBreakerErrorMessage({ + name: 'test rule', + action: 'bulkEdit', + interval: 1, + intervalAvailable: 1, + rules: 5, + }) + ).toMatchInlineSnapshot( + `"Error validating circuit breaker - Rules cannot be bulk edited. The maximum number of runs per minute would be exceeded. - The rules have 1 run per minute; there is only 1 run per minute available. Before you can modify these rules, you must disable other rules or change their check intervals so they run less frequently."` + ); + }); + + it('should parse the error message', () => { + const message = getRuleCircuitBreakerErrorMessage({ + name: 'test rule', + action: 'create', + interval: 5, + intervalAvailable: 4, + }); + + const parsedMessage = parseRuleCircuitBreakerErrorMessage(message); + + expect(parsedMessage.summary).toContain("Rule 'test rule' cannot be created"); + expect(parsedMessage.details).toContain('The rule has 5 runs per minute'); + }); + + it('should passthrough the message if it is not related to circuit breakers', () => { + const parsedMessage = parseRuleCircuitBreakerErrorMessage('random message'); + + expect(parsedMessage.summary).toEqual('random message'); + expect(parsedMessage.details).toBeUndefined(); + }); +}); diff --git a/x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts b/x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts new file mode 100644 index 0000000000000..68eea28cdeba7 --- /dev/null +++ b/x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts @@ -0,0 +1,136 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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'; + +const errorMessageHeader = 'Error validating circuit breaker'; + +const getCreateRuleErrorSummary = (name: string) => { + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.createSummary', { + defaultMessage: `Rule '{name}' cannot be created. The maximum number of runs per minute would be exceeded.`, + values: { + name, + }, + }); +}; + +const getUpdateRuleErrorSummary = (name: string) => { + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.updateSummary', { + defaultMessage: `Rule '{name}' cannot be updated. The maximum number of runs per minute would be exceeded.`, + values: { + name, + }, + }); +}; + +const getEnableRuleErrorSummary = (name: string) => { + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.enableSummary', { + defaultMessage: `Rule '{name}' cannot be enabled. The maximum number of runs per minute would be exceeded.`, + values: { + name, + }, + }); +}; + +const getBulkEditRuleErrorSummary = () => { + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.bulkEditSummary', { + defaultMessage: `Rules cannot be bulk edited. The maximum number of runs per minute would be exceeded.`, + }); +}; + +const getBulkEnableRuleErrorSummary = () => { + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.bulkEnableSummary', { + defaultMessage: `Rules cannot be bulk enabled. The maximum number of runs per minute would be exceeded.`, + }); +}; + +const getRuleCircuitBreakerErrorDetail = ({ + interval, + intervalAvailable, + rules, +}: { + interval: number; + intervalAvailable: number; + rules: number; +}) => { + if (rules === 1) { + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.ruleDetail', { + defaultMessage: `The rule has {interval, plural, one {{interval} run} other {{interval} runs}} per minute; there {intervalAvailable, plural, one {is only {intervalAvailable} run} other {are only {intervalAvailable} runs}} per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals.`, + values: { + interval, + intervalAvailable, + }, + }); + } + return i18n.translate('xpack.alerting.ruleCircuitBreaker.error.multipleRuleDetail', { + defaultMessage: `The rules have {interval, plural, one {{interval} run} other {{interval} runs}} per minute; there {intervalAvailable, plural, one {is only {intervalAvailable} run} other {are only {intervalAvailable} runs}} per minute available. Before you can modify these rules, you must disable other rules or change their check intervals so they run less frequently.`, + values: { + interval, + intervalAvailable, + }, + }); +}; + +export const getRuleCircuitBreakerErrorMessage = ({ + name = '', + interval, + intervalAvailable, + action, + rules = 1, +}: { + name?: string; + interval: number; + intervalAvailable: number; + action: 'update' | 'create' | 'enable' | 'bulkEdit' | 'bulkEnable'; + rules?: number; +}) => { + let errorMessageSummary: string; + + switch (action) { + case 'update': + errorMessageSummary = getUpdateRuleErrorSummary(name); + break; + case 'create': + errorMessageSummary = getCreateRuleErrorSummary(name); + break; + case 'enable': + errorMessageSummary = getEnableRuleErrorSummary(name); + break; + case 'bulkEdit': + errorMessageSummary = getBulkEditRuleErrorSummary(); + break; + case 'bulkEnable': + errorMessageSummary = getBulkEnableRuleErrorSummary(); + break; + } + + return `Error validating circuit breaker - ${errorMessageSummary} - ${getRuleCircuitBreakerErrorDetail( + { + interval, + intervalAvailable, + rules, + } + )}`; +}; + +export const parseRuleCircuitBreakerErrorMessage = ( + message: string +): { + summary: string; + details?: string; +} => { + if (!message.includes(errorMessageHeader)) { + return { + summary: message, + }; + } + const segments = message.split(' - '); + return { + summary: segments[1], + details: segments[2], + }; +}; diff --git a/x-pack/plugins/alerting/server/application/rule/methods/bulk_edit/bulk_edit_rules.ts b/x-pack/plugins/alerting/server/application/rule/methods/bulk_edit/bulk_edit_rules.ts index d76162696ead2..5bc625f5592b3 100644 --- a/x-pack/plugins/alerting/server/application/rule/methods/bulk_edit/bulk_edit_rules.ts +++ b/x-pack/plugins/alerting/server/application/rule/methods/bulk_edit/bulk_edit_rules.ts @@ -25,7 +25,7 @@ import { convertRuleIdsToKueryNode, } from '../../../../lib'; import { WriteOperations, AlertingAuthorizationEntity } from '../../../../authorization'; -import { parseDuration } from '../../../../../common/parse_duration'; +import { parseDuration, getRuleCircuitBreakerErrorMessage } from '../../../../../common'; import { bulkMarkApiKeysForInvalidation } from '../../../../invalidate_pending_api_keys/bulk_mark_api_keys_for_invalidation'; import { ruleAuditEvent, RuleAuditAction } from '../../../../rules_client/common/audit_events'; import { @@ -77,7 +77,7 @@ import { transformRuleDomainToRuleAttributes, transformRuleDomainToRule, } from '../../transforms'; -import { validateScheduleLimit } from '../get_schedule_frequency'; +import { validateScheduleLimit, ValidateScheduleLimitResult } from '../get_schedule_frequency'; const isValidInterval = (interval: string | undefined): interval is string => { return interval !== undefined; @@ -326,15 +326,16 @@ async function bulkEditRulesOcc( .map((rule) => rule.attributes.schedule?.interval) .filter(isValidInterval); - try { - if (operations.some((operation) => operation.field === 'schedule')) { - await validateScheduleLimit({ - context, - prevInterval, - updatedInterval, - }); - } - } catch (error) { + let validationPayload: ValidateScheduleLimitResult = null; + if (operations.some((operation) => operation.field === 'schedule')) { + validationPayload = await validateScheduleLimit({ + context, + prevInterval, + updatedInterval, + }); + } + + if (validationPayload) { return { apiKeysToInvalidate: Array.from(apiKeysMap.values()) .filter((value) => value.newApiKey) @@ -342,7 +343,13 @@ async function bulkEditRulesOcc( resultSavedObjects: [], rules: [], errors: rules.map((rule) => ({ - message: `Failed to bulk edit rule - ${error.message}`, + message: getRuleCircuitBreakerErrorMessage({ + name: rule.attributes.name || 'n/a', + interval: validationPayload!.interval, + intervalAvailable: validationPayload!.intervalAvailable, + action: 'bulkEdit', + rules: updatedInterval.length, + }), rule: { id: rule.id, name: rule.attributes.name || 'n/a', diff --git a/x-pack/plugins/alerting/server/application/rule/methods/create/create_rule.ts b/x-pack/plugins/alerting/server/application/rule/methods/create/create_rule.ts index 616a16a8315ed..d774a80ae4ebc 100644 --- a/x-pack/plugins/alerting/server/application/rule/methods/create/create_rule.ts +++ b/x-pack/plugins/alerting/server/application/rule/methods/create/create_rule.ts @@ -8,7 +8,7 @@ import Semver from 'semver'; import Boom from '@hapi/boom'; import { SavedObject, SavedObjectsUtils } from '@kbn/core/server'; import { withSpan } from '@kbn/apm-utils'; -import { parseDuration } from '../../../../../common/parse_duration'; +import { parseDuration, getRuleCircuitBreakerErrorMessage } from '../../../../../common'; import { WriteOperations, AlertingAuthorizationEntity } from '../../../../authorization'; import { validateRuleTypeParams, @@ -36,7 +36,7 @@ import { RuleAttributes } from '../../../../data/rule/types'; import type { CreateRuleData } from './types'; import { createRuleDataSchema } from './schemas'; import { createRuleSavedObject } from '../../../../rules_client/lib'; -import { validateScheduleLimit } from '../get_schedule_frequency'; +import { validateScheduleLimit, ValidateScheduleLimitResult } from '../get_schedule_frequency'; export interface CreateRuleOptions { id?: string; @@ -61,16 +61,29 @@ export async function createRule( try { createRuleDataSchema.validate(data); - if (data.enabled) { - await validateScheduleLimit({ - context, - updatedInterval: data.schedule.interval, - }); - } } catch (error) { throw Boom.badRequest(`Error validating create data - ${error.message}`); } + let validationPayload: ValidateScheduleLimitResult = null; + if (data.enabled) { + validationPayload = await validateScheduleLimit({ + context, + updatedInterval: data.schedule.interval, + }); + } + + if (validationPayload) { + throw Boom.badRequest( + getRuleCircuitBreakerErrorMessage({ + name: data.name, + interval: validationPayload!.interval, + intervalAvailable: validationPayload!.intervalAvailable, + action: 'create', + }) + ); + } + try { await withSpan({ name: 'authorization.ensureAuthorized', type: 'rules' }, () => context.authorization.ensureAuthorized({ diff --git a/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.test.ts b/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.test.ts index d23e4b3a7dd54..c9c890b2ff6ad 100644 --- a/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.test.ts +++ b/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.test.ts @@ -183,53 +183,55 @@ describe('validateScheduleLimit', () => { jest.clearAllMocks(); }); - test('should not throw if the updated interval does not exceed limits', () => { - return expect( - validateScheduleLimit({ + test('should not return anything if the updated interval does not exceed limits', async () => { + expect( + await validateScheduleLimit({ context, updatedInterval: ['1m', '1m'], }) - ).resolves.toBe(undefined); + ).toBeNull(); }); - test('should throw if the updated interval exceeds limits', () => { - return expect( - validateScheduleLimit({ + test('should return interval if the updated interval exceeds limits', async () => { + expect( + await validateScheduleLimit({ context, updatedInterval: ['1m', '1m', '1m', '2m'], }) - ).rejects.toThrowErrorMatchingInlineSnapshot( - `"Run limit reached: The rule has 3.5 runs per minute; there are only 3 runs per minute available."` - ); + ).toEqual({ + interval: 3.5, + intervalAvailable: 3, + }); }); - test('should not throw if previous interval was modified to be under the limit', () => { + test('should not return anything if previous interval was modified to be under the limit', async () => { internalSavedObjectsRepository.find.mockResolvedValue( getMockAggregationResult([{ interval: '1m', count: 6 }]) ); - return expect( - validateScheduleLimit({ + expect( + await validateScheduleLimit({ context, prevInterval: ['1m', '1m'], updatedInterval: ['2m', '2m'], }) - ).resolves.toBe(undefined); + ).toBeNull(); }); - test('should throw if the previous interval was modified to exceed the limit', () => { + test('should return interval if the previous interval was modified to exceed the limit', async () => { internalSavedObjectsRepository.find.mockResolvedValue( getMockAggregationResult([{ interval: '1m', count: 5 }]) ); - return expect( - validateScheduleLimit({ + expect( + await validateScheduleLimit({ context, prevInterval: ['1m'], updatedInterval: ['30s'], }) - ).rejects.toThrowErrorMatchingInlineSnapshot( - `"Run limit reached: The rule has 2 runs per minute; there are only 1 runs per minute available."` - ); + ).toEqual({ + interval: 2, + intervalAvailable: 0, + }); }); }); diff --git a/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.ts b/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.ts index 254cad93fd341..b670adeccae8a 100644 --- a/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.ts +++ b/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/get_schedule_frequency.ts @@ -85,7 +85,11 @@ interface ValidateScheduleLimitParams { updatedInterval: string | string[]; } -export const validateScheduleLimit = async (params: ValidateScheduleLimitParams) => { +export type ValidateScheduleLimitResult = { interval: number; intervalAvailable: number } | null; + +export const validateScheduleLimit = async ( + params: ValidateScheduleLimitParams +): Promise => { const { context, prevInterval = [], updatedInterval = [] } = params; const prevIntervalArray = Array.isArray(prevInterval) ? prevInterval : [prevInterval]; @@ -108,8 +112,11 @@ export const validateScheduleLimit = async (params: ValidateScheduleLimitParams) const computedRemainingSchedulesPerMinute = remainingSchedulesPerMinute + prevSchedulePerMinute; if (computedRemainingSchedulesPerMinute < updatedSchedulesPerMinute) { - throw new Error( - `Run limit reached: The rule has ${updatedSchedulesPerMinute} runs per minute; there are only ${computedRemainingSchedulesPerMinute} runs per minute available.` - ); + return { + interval: updatedSchedulesPerMinute, + intervalAvailable: remainingSchedulesPerMinute, + }; } + + return null; }; diff --git a/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/index.ts b/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/index.ts index e39a1cd8a671c..5b26d6a9b9a77 100644 --- a/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/index.ts +++ b/x-pack/plugins/alerting/server/application/rule/methods/get_schedule_frequency/index.ts @@ -7,4 +7,6 @@ export type { GetScheduleFrequencyResult } from './types'; +export type { ValidateScheduleLimitResult } from './get_schedule_frequency'; + export { getScheduleFrequency, validateScheduleLimit } from './get_schedule_frequency'; diff --git a/x-pack/plugins/alerting/server/rules_client/methods/bulk_enable.ts b/x-pack/plugins/alerting/server/rules_client/methods/bulk_enable.ts index fda778e6b11af..cac39ccb367d4 100644 --- a/x-pack/plugins/alerting/server/rules_client/methods/bulk_enable.ts +++ b/x-pack/plugins/alerting/server/rules_client/methods/bulk_enable.ts @@ -19,6 +19,7 @@ import { buildKueryNodeFilter, getAndValidateCommonBulkOptions, } from '../common'; +import { getRuleCircuitBreakerErrorMessage } from '../../../common'; import { getAuthorizationFilter, checkAuthorizationAndGetTotal, @@ -143,13 +144,18 @@ const bulkEnableRulesWithOCC = async ( .filter((rule) => !rule.attributes.enabled) .map((rule) => rule.attributes.schedule?.interval); - try { - await validateScheduleLimit({ - context, - updatedInterval, + const validationPayload = await validateScheduleLimit({ + context, + updatedInterval, + }); + + if (validationPayload) { + scheduleValidationError = getRuleCircuitBreakerErrorMessage({ + interval: validationPayload.interval, + intervalAvailable: validationPayload.intervalAvailable, + action: 'bulkEnable', + rules: updatedInterval.length, }); - } catch (error) { - scheduleValidationError = `Error validating enable rule data - ${error.message}`; } await pMap(rulesFinderRules, async (rule) => { diff --git a/x-pack/plugins/alerting/server/rules_client/methods/enable.ts b/x-pack/plugins/alerting/server/rules_client/methods/enable.ts index 97e677a0c28cc..53df42f012ad8 100644 --- a/x-pack/plugins/alerting/server/rules_client/methods/enable.ts +++ b/x-pack/plugins/alerting/server/rules_client/methods/enable.ts @@ -15,6 +15,7 @@ import { ruleAuditEvent, RuleAuditAction } from '../common/audit_events'; import { RulesClientContext } from '../types'; import { updateMeta, createNewAPIKeySet, scheduleTask, migrateLegacyActions } from '../lib'; import { validateScheduleLimit } from '../../application/rule/methods/get_schedule_frequency'; +import { getRuleCircuitBreakerErrorMessage } from '../../../common'; export async function enable(context: RulesClientContext, { id }: { id: string }): Promise { return await retryIfConflicts( @@ -48,13 +49,20 @@ async function enableWithOCC(context: RulesClientContext, { id }: { id: string } references = alert.references; } - try { - await validateScheduleLimit({ - context, - updatedInterval: attributes.schedule.interval, - }); - } catch (error) { - throw Boom.badRequest(`Error validating enable rule data - ${error.message}`); + const validationPayload = await validateScheduleLimit({ + context, + updatedInterval: attributes.schedule.interval, + }); + + if (validationPayload) { + throw Boom.badRequest( + getRuleCircuitBreakerErrorMessage({ + name: attributes.name, + interval: validationPayload.interval, + intervalAvailable: validationPayload.intervalAvailable, + action: 'enable', + }) + ); } try { diff --git a/x-pack/plugins/alerting/server/rules_client/methods/update.ts b/x-pack/plugins/alerting/server/rules_client/methods/update.ts index 925f128f0b8b3..e302b02a0e163 100644 --- a/x-pack/plugins/alerting/server/rules_client/methods/update.ts +++ b/x-pack/plugins/alerting/server/rules_client/methods/update.ts @@ -17,7 +17,7 @@ import { } from '../../types'; import { validateRuleTypeParams, getRuleNotifyWhenType } from '../../lib'; import { WriteOperations, AlertingAuthorizationEntity } from '../../authorization'; -import { parseDuration } from '../../../common/parse_duration'; +import { parseDuration, getRuleCircuitBreakerErrorMessage } from '../../../common'; import { retryIfConflicts } from '../../lib/retry_if_conflicts'; import { bulkMarkApiKeysForInvalidation } from '../../invalidate_pending_api_keys/bulk_mark_api_keys_for_invalidation'; import { ruleAuditEvent, RuleAuditAction } from '../common/audit_events'; @@ -33,7 +33,10 @@ import { createNewAPIKeySet, migrateLegacyActions, } from '../lib'; -import { validateScheduleLimit } from '../../application/rule/methods/get_schedule_frequency'; +import { + validateScheduleLimit, + ValidateScheduleLimitResult, +} from '../../application/rule/methods/get_schedule_frequency'; type ShouldIncrementRevision = (params?: RuleTypeParams) => boolean; @@ -90,18 +93,27 @@ async function updateWithOCC( } const { - attributes: { enabled, schedule }, + attributes: { enabled, schedule, name }, } = alertSavedObject; - try { - if (enabled && schedule.interval !== data.schedule.interval) { - await validateScheduleLimit({ - context, - prevInterval: alertSavedObject.attributes.schedule?.interval, - updatedInterval: data.schedule.interval, - }); - } - } catch (error) { - throw Boom.badRequest(`Error validating update data - ${error.message}`); + + let validationPayload: ValidateScheduleLimitResult = null; + if (enabled && schedule.interval !== data.schedule.interval) { + validationPayload = await validateScheduleLimit({ + context, + prevInterval: alertSavedObject.attributes.schedule?.interval, + updatedInterval: data.schedule.interval, + }); + } + + if (validationPayload) { + throw Boom.badRequest( + getRuleCircuitBreakerErrorMessage({ + name, + interval: validationPayload.interval, + intervalAvailable: validationPayload.intervalAvailable, + action: 'update', + }) + ); } try { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/toast_with_circuit_breaker_content.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/toast_with_circuit_breaker_content.tsx new file mode 100644 index 0000000000000..76149e7eef70a --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/toast_with_circuit_breaker_content.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 { i18n } from '@kbn/i18n'; +import React, { useState, useCallback } from 'react'; +import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText } from '@elastic/eui'; + +const seeFullErrorMessage = i18n.translate( + 'xpack.triggersActionsUI.components.toastWithCircuitBreaker.seeFullError', + { + defaultMessage: 'See full error', + } +); + +const hideFullErrorMessage = i18n.translate( + 'xpack.triggersActionsUI.components.toastWithCircuitBreaker.hideFullError', + { + defaultMessage: 'Hide full error', + } +); + +export const ToastWithCircuitBreakerContent: React.FC = ({ children }) => { + const [showDetails, setShowDetails] = useState(false); + + const onToggleShowDetails = useCallback(() => { + setShowDetails((prev) => !prev); + }, []); + + return ( + <> + {showDetails && ( + <> + {children} + + + )} + + + + {showDetails ? hideFullErrorMessage : seeFullErrorMessage} + + + + + ); +}; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.test.tsx index de3a9baf6da8c..889f1269a3d2b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.test.tsx @@ -51,7 +51,7 @@ jest.mock('../../../../common/lib/kibana', () => ({ })); const mockAPIs = { - bulkEnableRules: jest.fn(), + bulkEnableRules: jest.fn().mockResolvedValue({ errors: [] }), bulkDisableRules: jest.fn(), snoozeRule: jest.fn(), unsnoozeRule: jest.fn(), @@ -170,7 +170,6 @@ describe('rule status panel', () => { it('should enable the rule when picking enable in the dropdown', async () => { const rule = mockRule({ enabled: false }); - const bulkEnableRules = jest.fn(); const wrapper = mountWithIntl( { healthColor="primary" statusMessage="Ok" requestRefresh={requestRefresh} - bulkEnableRules={bulkEnableRules} /> ); const actionsElem = wrapper @@ -199,7 +197,7 @@ describe('rule status panel', () => { await nextTick(); }); - expect(bulkEnableRules).toHaveBeenCalledTimes(1); + expect(mockAPIs.bulkEnableRules).toHaveBeenCalledTimes(1); }); it('if rule is already enabled should do nothing when picking enable in the dropdown', async () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.tsx index 7167ad7f9b337..a7b87cc722530 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_status_panel.tsx @@ -126,12 +126,8 @@ export const RuleStatusPanel: React.FC = ({ { - await bulkDisableRules({ ids: [rule.id] }); - }} - enableRule={async () => { - await bulkEnableRules({ ids: [rule.id] }); - }} + disableRule={() => bulkDisableRules({ ids: [rule.id] })} + enableRule={() => bulkEnableRules({ ids: [rule.id] })} snoozeRule={async () => {}} unsnoozeRule={async () => {}} rule={rule} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx index dede9c80d87c8..de2eb91b74c84 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx @@ -10,6 +10,8 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { EuiTitle, EuiFlyoutHeader, EuiFlyout, EuiFlyoutBody, EuiPortal } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { isEmpty } from 'lodash'; +import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { parseRuleCircuitBreakerErrorMessage } from '@kbn/alerting-plugin/common'; import { Rule, RuleTypeParams, @@ -38,6 +40,14 @@ import { getRuleWithInvalidatedFields } from '../../lib/value_validators'; import { DEFAULT_RULE_INTERVAL } from '../../constants'; import { triggersActionsUiConfig } from '../../../common/lib/config_api'; import { getInitialInterval } from './get_initial_interval'; +import { ToastWithCircuitBreakerContent } from '../../components/toast_with_circuit_breaker_content'; + +const defaultCreateRuleErrorMessage = i18n.translate( + 'xpack.triggersActionsUI.sections.ruleAdd.saveErrorNotificationText', + { + defaultMessage: 'Cannot create rule.', + } +); const RuleAdd = ({ consumer, @@ -238,12 +248,17 @@ const RuleAdd = ({ ); return newRule; } catch (errorRes) { - toasts.addDanger( - errorRes.body?.message ?? - i18n.translate('xpack.triggersActionsUI.sections.ruleAdd.saveErrorNotificationText', { - defaultMessage: 'Cannot create rule.', - }) + const message = parseRuleCircuitBreakerErrorMessage( + errorRes.body?.message || defaultCreateRuleErrorMessage ); + toasts.addDanger({ + title: message.summary, + ...(message.details && { + text: toMountPoint( + {message.details} + ), + }), + }); } } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.test.tsx index 50f8049fc4299..7e937d17f8684 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.test.tsx @@ -219,9 +219,9 @@ describe('rule_edit', () => { await act(async () => { wrapper.find('[data-test-subj="saveEditedRuleButton"]').last().simulate('click'); }); - expect(useKibanaMock().services.notifications.toasts.addDanger).toHaveBeenCalledWith( - 'Fail message' - ); + expect(useKibanaMock().services.notifications.toasts.addDanger).toHaveBeenCalledWith({ + title: 'Fail message', + }); }); it('should pass in the config into `getRuleErrors`', async () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx index b83d2f068e592..3f1c050fb7e25 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx @@ -26,6 +26,8 @@ import { } from '@elastic/eui'; import { cloneDeep, omit } from 'lodash'; import { i18n } from '@kbn/i18n'; +import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { parseRuleCircuitBreakerErrorMessage } from '@kbn/alerting-plugin/common'; import { Rule, RuleFlyoutCloseReason, @@ -47,6 +49,14 @@ import { ConfirmRuleClose } from './confirm_rule_close'; import { hasRuleChanged } from './has_rule_changed'; import { getRuleWithInvalidatedFields } from '../../lib/value_validators'; import { triggersActionsUiConfig } from '../../../common/lib/config_api'; +import { ToastWithCircuitBreakerContent } from '../../components/toast_with_circuit_breaker_content'; + +const defaultUpdateRuleErrorMessage = i18n.translate( + 'xpack.triggersActionsUI.sections.ruleEdit.saveErrorNotificationText', + { + defaultMessage: 'Cannot update rule.', + } +); const cloneAndMigrateRule = (initialRule: Rule) => { const clonedRule = cloneDeep(omit(initialRule, 'notifyWhen', 'throttle')); @@ -181,12 +191,17 @@ export const RuleEdit = ({ ); } } catch (errorRes) { - toasts.addDanger( - errorRes.body?.message ?? - i18n.translate('xpack.triggersActionsUI.sections.ruleEdit.saveErrorNotificationText', { - defaultMessage: 'Cannot update rule.', - }) + const message = parseRuleCircuitBreakerErrorMessage( + errorRes.body?.message || defaultUpdateRuleErrorMessage ); + toasts.addDanger({ + title: message.summary, + ...(message.details && { + text: toMountPoint( + {message.details} + ), + }), + }); } setIsSaving(false); } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.test.tsx index 56ca543431185..8bfc131639a30 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.test.tsx @@ -12,6 +12,19 @@ import { RuleStatusDropdown, ComponentOpts } from './rule_status_dropdown'; const NOW_STRING = '2020-03-01T00:00:00.000Z'; const SNOOZE_UNTIL = new Date('2020-03-04T00:00:00.000Z'); +jest.mock('../../../../common/lib/kibana', () => ({ + useKibana: () => ({ + services: { + notifications: { + toasts: { + addSuccess: jest.fn(), + addDanger: jest.fn(), + }, + }, + }, + }), +})); + describe('RuleStatusDropdown', () => { const enableRule = jest.fn(); const disableRule = jest.fn(); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx index b5db4dc6ccabd..145fda4e4addd 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx @@ -9,6 +9,8 @@ import React, { useState, useEffect, useCallback } from 'react'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; import type { RuleSnooze } from '@kbn/alerting-plugin/common'; +import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { parseRuleCircuitBreakerErrorMessage } from '@kbn/alerting-plugin/common'; import { EuiLoadingSpinner, EuiPopover, @@ -20,9 +22,11 @@ import { EuiText, EuiToolTip, } from '@elastic/eui'; +import { useKibana } from '../../../../common/lib/kibana'; import { SnoozePanel } from './rule_snooze'; import { isRuleSnoozed } from '../../../lib'; -import { Rule, SnoozeSchedule } from '../../../../types'; +import { Rule, SnoozeSchedule, BulkOperationResponse } from '../../../../types'; +import { ToastWithCircuitBreakerContent } from '../../../components/toast_with_circuit_breaker_content'; export type SnoozeUnit = 'm' | 'h' | 'd' | 'w' | 'M'; const SNOOZE_END_TIME_FORMAT = 'LL @ LT'; @@ -35,8 +39,8 @@ type DropdownRuleRecord = Pick< export interface ComponentOpts { rule: DropdownRuleRecord; onRuleChanged: () => void; - enableRule: () => Promise; - disableRule: () => Promise; + enableRule: () => Promise; + disableRule: () => Promise; snoozeRule: (snoozeSchedule: SnoozeSchedule) => Promise; unsnoozeRule: (scheduleIds?: string[]) => Promise; isEditable: boolean; @@ -58,6 +62,10 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ const [isEnabled, setIsEnabled] = useState(rule.enabled); const [isSnoozed, setIsSnoozed] = useState(!hideSnoozeOption && isRuleSnoozed(rule)); + const { + notifications: { toasts }, + } = useKibana().services; + useEffect(() => { setIsEnabled(rule.enabled); }, [rule.enabled]); @@ -70,6 +78,25 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ const onClickBadge = useCallback(() => setIsPopoverOpen((isOpen) => !isOpen), [setIsPopoverOpen]); const onClosePopover = useCallback(() => setIsPopoverOpen(false), [setIsPopoverOpen]); + const enableRuleInternal = useCallback(async () => { + const { errors } = await enableRule(); + + if (!errors.length) { + return; + } + + const message = parseRuleCircuitBreakerErrorMessage(errors[0].message); + toasts.addDanger({ + title: message.summary, + ...(message.details && { + text: toMountPoint( + {message.details} + ), + }), + }); + throw new Error(); + }, [enableRule, toasts]); + const onChangeEnabledStatus = useCallback( async (enable: boolean) => { if (rule.enabled === enable) { @@ -78,7 +105,7 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ setIsUpdating(true); try { if (enable) { - await enableRule(); + await enableRuleInternal(); } else { await disableRule(); } @@ -88,7 +115,7 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ setIsUpdating(false); } }, - [rule.enabled, isEnabled, onRuleChanged, enableRule, disableRule] + [rule.enabled, isEnabled, onRuleChanged, enableRuleInternal, disableRule] ); const onSnoozeRule = useCallback( diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx index 9949b51554492..1c40db852e209 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx @@ -11,6 +11,8 @@ import { i18n } from '@kbn/i18n'; import { capitalize, isEmpty, isEqual, sortBy } from 'lodash'; import { KueryNode } from '@kbn/es-query'; import { FormattedMessage } from '@kbn/i18n-react'; +import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { parseRuleCircuitBreakerErrorMessage } from '@kbn/alerting-plugin/common'; import React, { lazy, useEffect, @@ -90,6 +92,7 @@ import { useLoadRuleAggregationsQuery } from '../../../hooks/use_load_rule_aggre import { useLoadRuleTypesQuery } from '../../../hooks/use_load_rule_types_query'; import { useLoadRulesQuery } from '../../../hooks/use_load_rules_query'; import { useLoadConfigQuery } from '../../../hooks/use_load_config_query'; +import { ToastWithCircuitBreakerContent } from '../../../components/toast_with_circuit_breaker_content'; import { getConfirmDeletionButtonText, @@ -550,15 +553,15 @@ export const RulesList = ({ }; const onDisableRule = useCallback( - async (rule: RuleTableItem) => { - await bulkDisableRules({ http, ids: [rule.id] }); + (rule: RuleTableItem) => { + return bulkDisableRules({ http, ids: [rule.id] }); }, [bulkDisableRules] ); const onEnableRule = useCallback( - async (rule: RuleTableItem) => { - await bulkEnableRules({ http, ids: [rule.id] }); + (rule: RuleTableItem) => { + return bulkEnableRules({ http, ids: [rule.id] }); }, [bulkEnableRules] ); @@ -675,7 +678,23 @@ export const RulesList = ({ : await bulkEnableRules({ http, ids: selectedIds }); setIsEnablingRules(false); - showToast({ action: 'ENABLE', errors, total }); + + const circuitBreakerError = errors.find( + (error) => !!parseRuleCircuitBreakerErrorMessage(error.message).details + ); + + if (circuitBreakerError) { + const parsedError = parseRuleCircuitBreakerErrorMessage(circuitBreakerError.message); + toasts.addDanger({ + title: parsedError.summary, + text: toMountPoint( + {parsedError.details} + ), + }); + } else { + showToast({ action: 'ENABLE', errors, total }); + } + await refreshRules(); onClearSelection(); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list_table.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list_table.tsx index 3d929cf7bb5b8..458e14b0b0117 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list_table.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list_table.tsx @@ -50,6 +50,7 @@ import { TriggersActionsUiConfig, RuleTypeRegistryContract, SnoozeSchedule, + BulkOperationResponse, } from '../../../../types'; import { DEFAULT_NUMBER_FORMAT } from '../../../constants'; import { shouldShowDurationWarning } from '../../../lib/execution_duration_utils'; @@ -125,8 +126,8 @@ export interface RulesListTableProps { onTagClose?: (rule: RuleTableItem) => void; onPercentileOptionsChange?: (options: EuiSelectableOption[]) => void; onRuleChanged: () => Promise; - onEnableRule: (rule: RuleTableItem) => Promise; - onDisableRule: (rule: RuleTableItem) => Promise; + onEnableRule: (rule: RuleTableItem) => Promise; + onDisableRule: (rule: RuleTableItem) => Promise; onSnoozeRule: (rule: RuleTableItem, snoozeSchedule: SnoozeSchedule) => Promise; onUnsnoozeRule: (rule: RuleTableItem, scheduleIds?: string[]) => Promise; onSelectAll: () => void; @@ -193,8 +194,8 @@ export const RulesListTable = (props: RulesListTableProps) => { onManageLicenseClick = EMPTY_HANDLER, onPercentileOptionsChange = EMPTY_HANDLER, onRuleChanged, - onEnableRule = EMPTY_HANDLER, - onDisableRule = EMPTY_HANDLER, + onEnableRule, + onDisableRule, onSnoozeRule = EMPTY_HANDLER, onUnsnoozeRule = EMPTY_HANDLER, onSelectAll = EMPTY_HANDLER, diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_edit_with_circuit_breaker.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_edit_with_circuit_breaker.ts index d878eb7404238..a6db48295a90b 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_edit_with_circuit_breaker.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_edit_with_circuit_breaker.ts @@ -62,7 +62,7 @@ export default function bulkEditWithCircuitBreakerTests({ getService }: FtrProvi expect(body.errors.length).eql(2); expect(body.errors[0].message).eql( - 'Failed to bulk edit rule - Run limit reached: The rule has 12 runs per minute; there are only 1 runs per minute available.' + 'Error validating circuit breaker - Rules cannot be bulk edited. The maximum number of runs per minute would be exceeded. - The rules have 12 runs per minute; there is only 1 run per minute available. Before you can modify these rules, you must disable other rules or change their check intervals so they run less frequently.' ); }); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_enable_with_circuit_breaker.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_enable_with_circuit_breaker.ts index d60409223b2b3..e35bdadfaee19 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_enable_with_circuit_breaker.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/bulk_enable_with_circuit_breaker.ts @@ -59,7 +59,7 @@ export default function bulkEnableWithCircuitBreakerTests({ getService }: FtrPro expect(body.errors.length).eql(2); expect(body.errors[0].message).eql( - 'Error validating enable rule data - Run limit reached: The rule has 9 runs per minute; there are only 4 runs per minute available.' + 'Error validating circuit breaker - Rules cannot be bulk enabled. The maximum number of runs per minute would be exceeded. - The rules have 9 runs per minute; there are only 4 runs per minute available. Before you can modify these rules, you must disable other rules or change their check intervals so they run less frequently.' ); }); }); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/create_with_circuit_breaker.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/create_with_circuit_breaker.ts index bf1a0792a0091..f1aea0fc9ce56 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/create_with_circuit_breaker.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/create_with_circuit_breaker.ts @@ -5,6 +5,7 @@ * 2.0. */ +import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; import { getUrlPrefix, getTestRuleData, ObjectRemover } from '../../../../../common/lib'; @@ -26,11 +27,17 @@ export default function createWithCircuitBreakerTests({ getService }: FtrProvide .expect(200); objectRemover.add('space1', createdRule.id, 'rule', 'alerting'); - await supertest + const { + body: { message }, + } = await supertest .post(`${getUrlPrefix('space1')}/api/alerting/rule`) .set('kbn-xsrf', 'foo') .send(getTestRuleData({ schedule: { interval: '10s' } })) .expect(400); + + expect(message).eql( + `Error validating circuit breaker - Rule 'abc' cannot be created. The maximum number of runs per minute would be exceeded. - The rule has 6 runs per minute; there are only 4 runs per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals.` + ); }); it('should prevent rules from being created across spaces', async () => { @@ -41,11 +48,17 @@ export default function createWithCircuitBreakerTests({ getService }: FtrProvide .expect(200); objectRemover.add('space1', createdRule.id, 'rule', 'alerting'); - await supertest + const { + body: { message }, + } = await supertest .post(`${getUrlPrefix('space2')}/api/alerting/rule`) .set('kbn-xsrf', 'foo') .send(getTestRuleData({ schedule: { interval: '10s' } })) .expect(400); + + expect(message).eql( + `Error validating circuit breaker - Rule 'abc' cannot be created. The maximum number of runs per minute would be exceeded. - The rule has 6 runs per minute; there are only 4 runs per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals.` + ); }); it('should allow disabled rules to go over the circuit breaker', async () => { diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/enable_with_circuit_breaker.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/enable_with_circuit_breaker.ts index 89a90952ed6a7..eb6691952e9b6 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/enable_with_circuit_breaker.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/enable_with_circuit_breaker.ts @@ -45,7 +45,7 @@ export default function enableWithCircuitBreakerTests({ getService }: FtrProvide .expect(400); expect(body.message).eql( - 'Error validating enable rule data - Run limit reached: The rule has 12 runs per minute; there are only 4 runs per minute available.' + `Error validating circuit breaker - Rule 'abc' cannot be enabled. The maximum number of runs per minute would be exceeded. - The rule has 12 runs per minute; there are only 4 runs per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals.` ); }); }); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/update_with_circuit_breaker.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/update_with_circuit_breaker.ts index 2b1b8e749def9..7c2413d5eeb23 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/update_with_circuit_breaker.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/schedule_circuit_breaker/update_with_circuit_breaker.ts @@ -53,7 +53,7 @@ export default function updateWithCircuitBreakerTests({ getService }: FtrProvide .expect(400); expect(body.message).eql( - 'Error validating update data - Run limit reached: The rule has 12 runs per minute; there are only 7 runs per minute available.' + `Error validating circuit breaker - Rule 'abc' cannot be updated. The maximum number of runs per minute would be exceeded. - The rule has 12 runs per minute; there are only 4 runs per minute available. Before you can modify this rule, you must increase its check interval so that it runs less frequently. Alternatively, disable other rules or change their check intervals.` ); }); From cfddceeafd4720a854176ce69478296ee286f6d3 Mon Sep 17 00:00:00 2001 From: Elena Stoeva <59341489+ElenaStoeva@users.noreply.github.com> Date: Fri, 13 Oct 2023 18:48:19 +0100 Subject: [PATCH 32/80] [Serverless] [Advanced Settings] Remove storeInSessionStorage setting (#168725) Closes https://github.com/elastic/kibana/issues/168480 ## Summary This PR removes the `storeInSessionStorage` setting from the serverless common settings allowlist, so that the setting is hidden from Advanced Settings in all serverless projects. **How to test:** 1. Start Es with `yarn es serverless` and Kibana with `yarn serverless-{es/oblt/security}` 2. Go to Management -> Advanced Settings 3. Verify that the setting is not on the page. --- packages/serverless/settings/common/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/serverless/settings/common/index.ts b/packages/serverless/settings/common/index.ts index 326108abcd747..f8f608bdf64f5 100644 --- a/packages/serverless/settings/common/index.ts +++ b/packages/serverless/settings/common/index.ts @@ -22,7 +22,6 @@ const GENERAL_SETTINGS = [ settings.FORMAT_NUMBER_DEFAULT_PATTERN_ID, settings.FORMAT_PERCENT_DEFAULT_PATTERN_ID, settings.META_FIELDS_ID, - settings.STATE_STORE_IN_SESSION_STORAGE_ID, settings.TIMEPICKER_QUICK_RANGES_ID, settings.TIMEPICKER_TIME_DEFAULTS_ID, ]; From ae349b9224f6cdd5afeb0d0f494e375a8f571679 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 13 Oct 2023 20:24:52 +0100 Subject: [PATCH 33/80] skip flaky suite (#168750) --- .../test_suites/event_log/public_api_integration.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts b/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts index ed7d31efe1c10..0b1ec65593a34 100644 --- a/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts +++ b/x-pack/test/plugin_api_integration/test_suites/event_log/public_api_integration.ts @@ -23,7 +23,8 @@ export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - describe('Event Log public API', () => { + // FLAKY: https://github.com/elastic/kibana/issues/168750 + describe.skip('Event Log public API', () => { before(async () => { await spacesService.create({ id: 'namespace-a', From a9a8c96d952c373e173ffc2e89ec3576e7f94e7f Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 13 Oct 2023 20:26:49 +0100 Subject: [PATCH 34/80] skip flaky suite (#168625) --- .../test_suites/observability/telemetry/snapshot_telemetry.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/telemetry/snapshot_telemetry.ts b/x-pack/test_serverless/api_integration/test_suites/observability/telemetry/snapshot_telemetry.ts index f0fc2a357156e..f6f2d63d566bc 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/telemetry/snapshot_telemetry.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/telemetry/snapshot_telemetry.ts @@ -18,7 +18,8 @@ import type { UsageStatsPayloadTestFriendly } from '../../../../../test/api_inte export default function ({ getService }: FtrProviderContext) { const usageApi = getService('usageAPI'); - describe('Snapshot telemetry', function () { + // FLAKY: https://github.com/elastic/kibana/issues/168625 + describe.skip('Snapshot telemetry', function () { let stats: UsageStatsPayloadTestFriendly; before(async () => { From 6d3449162d2278cfe3544cc1d643c006486139b5 Mon Sep 17 00:00:00 2001 From: Yara Tercero Date: Fri, 13 Oct 2023 12:34:58 -0700 Subject: [PATCH 35/80] [Detection Engine][Cypress] Reenable and reorganize some detection_alerts and data_sources tests (#168426) ## Summary #### Code update: `/detection_engine/routes/signals/set_alert_tags_route.ts` - When enabling the alert tags cypress test, noticed it was failing as the tag updates did not show in the UI until a few seconds later upon a second refresh. I was able to recreate this locally on serverless, not on ESS. I updated the alerts tag route to include `refresh: true` and that seemed to fix this issue. - `/detection_engine/routes/signals/open_close_signals_route.ts` - When testing on serverless, alert status was stale after update. Confirmed this with tests that were failing for ESS. Upon updating route to use `refresh: true`, tests began passing and could see expected behavior. This may make the call a bit heavier so we will want to see if there are any performance impacts. --- .buildkite/pipelines/pull_request/base.yml | 2 +- .github/CODEOWNERS | 5 +- .../signals/open_close_signals_route.ts | 4 +- .../routes/signals/set_alert_tags_route.ts | 2 +- .../data_sources/create_runtime_field.cy.ts | 63 --- .../cypress/e2e/data_sources/sourcerer.cy.ts | 136 ------- .../e2e/data_sources/sourcerer_timeline.ts | 169 -------- .../detection_alerts/cti_enrichments.cy.ts | 197 --------- .../ransomware_detection.cy.ts | 73 ---- .../ransomware_prevention.cy.ts | 79 ---- .../detection_alerts/alert_status.cy.ts | 230 +++++++++++ .../detection_alerts/alert_tags.cy.ts | 21 +- ...ts_detection_callouts_index_outdated.cy.ts | 19 +- .../missing_privileges_callout.cy.ts | 20 +- .../threat_match_enrichments.cy.ts | 201 +++++++++ .../sourcerer/create_runtime_field.cy.ts | 58 +++ .../sourcerer/sourcerer.cy.ts | 115 ++++++ .../sourcerer/sourcerer_permissions.cy.ts | 36 ++ .../sourcerer}/sourcerer_timeline.cy.ts | 18 +- .../value_lists/permissions.cy.ts | 23 ++ .../value_lists/value_lists.cy.ts | 385 ++++++++---------- .../enrichments.cy.ts | 0 .../alerts}/alerts_charts.cy.ts | 20 +- .../alerts/ransomware_detection.cy.ts | 68 ++++ .../alerts/ransomware_prevention.cy.ts | 74 ++++ .../cypress/tasks/alerts.ts | 6 + 26 files changed, 1043 insertions(+), 981 deletions(-) delete mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/data_sources/create_runtime_field.cy.ts delete mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer.cy.ts delete mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.ts delete mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/cti_enrichments.cy.ts delete mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_detection.cy.ts delete mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_prevention.cy.ts create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts rename x-pack/test/security_solution_cypress/cypress/e2e/{ => detection_response}/detection_alerts/alert_tags.cy.ts (83%) rename x-pack/test/security_solution_cypress/cypress/e2e/{ => detection_response}/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts (91%) rename x-pack/test/security_solution_cypress/cypress/e2e/{ => detection_response}/detection_alerts/missing_privileges_callout.cy.ts (88%) create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/threat_match_enrichments.cy.ts create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/create_runtime_field.cy.ts create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer.cy.ts create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_permissions.cy.ts rename x-pack/test/security_solution_cypress/cypress/e2e/{data_sources => detection_response/sourcerer}/sourcerer_timeline.cy.ts (92%) create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/permissions.cy.ts rename x-pack/test/security_solution_cypress/cypress/e2e/{detection_alerts => entity_analytics}/enrichments.cy.ts (100%) rename x-pack/test/security_solution_cypress/cypress/e2e/{detection_alerts => investigations/alerts}/alerts_charts.cy.ts (79%) create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_detection.cy.ts create mode 100644 x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_prevention.cy.ts diff --git a/.buildkite/pipelines/pull_request/base.yml b/.buildkite/pipelines/pull_request/base.yml index fd47dd6c08225..abc6436e7ee0a 100644 --- a/.buildkite/pipelines/pull_request/base.yml +++ b/.buildkite/pipelines/pull_request/base.yml @@ -63,7 +63,7 @@ steps: queue: n2-4-spot depends_on: build timeout_in_minutes: 60 - parallelism: 2 + parallelism: 4 retry: automatic: - exit_status: '*' diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fb5ce6ad466e0..ccb65e643d219 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1159,6 +1159,7 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib /x-pack/plugins/security_solution/common/types/timeline @elastic/security-threat-hunting-investigations /x-pack/test/security_solution_cypress/cypress/e2e/investigations @elastic/security-threat-hunting-investigations +/x-pack/test/security_solution_cypress/cypress/e2e/sourcerer/sourcerer_timeline.cy.ts @elastic/security-threat-hunting-investigations /x-pack/plugins/security_solution/public/common/components/alerts_viewer @elastic/security-threat-hunting-investigations /x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_action @elastic/security-threat-hunting-investigations @@ -1297,8 +1298,8 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib /x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals @elastic/security-detection-engine /x-pack/plugins/security_solution/server/lib/sourcerer @elastic/security-detection-engine -/x-pack/test/security_solution_cypress/cypress/e2e/data_sources @elastic/security-detection-engine -/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts @elastic/security-detection-engine +/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer @elastic/security-detection-engine +/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts @elastic/security-detection-engine /x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_actions @elastic/security-detection-engine /x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation @elastic/security-detection-engine /x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_edit @elastic/security-detection-engine diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts index c3060fcc93b88..ce6e19d4706fe 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts @@ -131,7 +131,7 @@ const updateSignalsStatusByIds = async ( ) => esClient.updateByQuery({ index: `${DEFAULT_ALERTS_INDEX}-${spaceId}`, - refresh: false, + refresh: true, body: { script: getUpdateSignalStatusScript(status), query: { @@ -158,7 +158,7 @@ const updateSignalsStatusByQuery = async ( esClient.updateByQuery({ index: `${DEFAULT_ALERTS_INDEX}-${spaceId}`, conflicts: options.conflicts, - refresh: false, + refresh: true, body: { script: getUpdateSignalStatusScript(status), query: { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts index 36d3e57169cce..8b7e81f9bf812 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/set_alert_tags_route.ts @@ -100,7 +100,7 @@ export const setAlertTagsRoute = (router: SecuritySolutionPluginRouter) => { try { const body = await esClient.updateByQuery({ index: `${DEFAULT_ALERTS_INDEX}-${spaceId}`, - refresh: false, + refresh: true, body: { script: painlessScript, query: { diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/create_runtime_field.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/create_runtime_field.cy.ts deleted file mode 100644 index 78ed47f878665..0000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/create_runtime_field.cy.ts +++ /dev/null @@ -1,63 +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 { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; -import { openTimelineUsingToggle } from '../../tasks/security_main'; -import { openTimelineFieldsBrowser, populateTimeline } from '../../tasks/timeline'; - -import { hostsUrl, ALERTS_URL } from '../../urls/navigation'; - -import { createRule } from '../../tasks/api_calls/rules'; - -import { getNewRule } from '../../objects/rule'; -import { refreshPage } from '../../tasks/security_header'; -import { waitForAlertsToPopulate } from '../../tasks/create_new_rule'; -import { createField } from '../../tasks/create_runtime_field'; -import { openAlertsFieldBrowser } from '../../tasks/alerts'; -import { deleteRuntimeField } from '../../tasks/sourcerer'; -import { GET_DATA_GRID_HEADER } from '../../screens/common/data_grid'; -import { GET_TIMELINE_HEADER } from '../../screens/timeline'; - -const alertRunTimeField = 'field.name.alert.page'; -const timelineRuntimeField = 'field.name.timeline'; - -// TODO: https://github.com/elastic/kibana/issues/161539 -describe( - 'Create DataView runtime field', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, - () => { - before(() => { - deleteRuntimeField('security-solution-default', alertRunTimeField); - deleteRuntimeField('security-solution-default', timelineRuntimeField); - }); - - beforeEach(() => { - login(); - }); - - it('adds field to alert table', () => { - visitWithTimeRange(ALERTS_URL); - createRule(getNewRule()); - refreshPage(); - waitForAlertsToPopulate(); - openAlertsFieldBrowser(); - createField(alertRunTimeField); - cy.get(GET_DATA_GRID_HEADER(alertRunTimeField)).should('exist'); - }); - - it('adds field to timeline', () => { - visitWithTimeRange(hostsUrl('allHosts')); - openTimelineUsingToggle(); - populateTimeline(); - openTimelineFieldsBrowser(); - - createField(timelineRuntimeField); - cy.get(GET_TIMELINE_HEADER(timelineRuntimeField)).should('exist'); - }); - } -); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer.cy.ts deleted file mode 100644 index 0d70bf4dcd3d1..0000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer.cy.ts +++ /dev/null @@ -1,136 +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 { DEFAULT_INDEX_PATTERN } from '@kbn/security-solution-plugin/common/constants'; - -import { login, loginWithUser } from '../../tasks/login'; -import { visitWithTimeRange, visitWithUser } from '../../tasks/navigation'; - -import { hostsUrl } from '../../urls/navigation'; -import { - addIndexToDefault, - deselectSourcererOptions, - isDataViewSelection, - isHostsStatValue, - isKibanaDataViewOption, - isNotSourcererSelection, - isSourcererOptions, - isSourcererSelection, - openAdvancedSettings, - openDataViewSelection, - openSourcerer, - resetSourcerer, - saveSourcerer, -} from '../../tasks/sourcerer'; -import { postDataView } from '../../tasks/common'; -import { createUsersAndRoles, secReadCasesAll, secReadCasesAllUser } from '../../tasks/privileges'; -import { TOASTER } from '../../screens/configure_cases'; -import { SOURCERER } from '../../screens/sourcerer'; - -const usersToCreate = [secReadCasesAllUser]; -const rolesToCreate = [secReadCasesAll]; -const siemDataViewTitle = 'Security Default Data View'; -const dataViews = ['auditbeat-*,fakebeat-*', 'auditbeat-*,*beat*,siem-read*,.kibana*,fakebeat-*']; - -// TODO: https://github.com/elastic/kibana/issues/161539 -describe('Sourcerer', { tags: ['@ess', '@serverless', '@skipInServerless'] }, () => { - before(() => { - cy.task('esArchiverResetKibana'); - dataViews.forEach((dataView: string) => postDataView(dataView)); - }); - - // TODO: https://github.com/elastic/kibana/issues/161539 - describe('permissions', { tags: ['@ess', '@brokenInServerless'] }, () => { - before(() => { - createUsersAndRoles(usersToCreate, rolesToCreate); - }); - it(`role(s) ${secReadCasesAllUser.roles.join()} shows error when user does not have permissions`, () => { - loginWithUser(secReadCasesAllUser); - visitWithUser(hostsUrl('allHosts'), secReadCasesAllUser); - cy.get(TOASTER).should('have.text', 'Write role required to generate data'); - }); - }); - - // TODO: https://github.com/elastic/kibana/issues/161539 - // FLAKY: https://github.com/elastic/kibana/issues/165766 - describe('Default scope', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { - beforeEach(() => { - cy.clearLocalStorage(); - login(); - visitWithTimeRange(hostsUrl('allHosts')); - }); - - it('correctly loads SIEM data view', () => { - openSourcerer(); - isDataViewSelection(siemDataViewTitle); - openAdvancedSettings(); - isSourcererSelection(`auditbeat-*`); - isSourcererOptions(DEFAULT_INDEX_PATTERN.filter((pattern) => pattern !== 'auditbeat-*')); - }); - - describe('Modified badge', () => { - it('Selecting new data view does not add a modified badge', () => { - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer(); - cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); - openDataViewSelection(); - isKibanaDataViewOption(dataViews); - cy.get(SOURCERER.selectListDefaultOption).should(`contain`, siemDataViewTitle); - cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); - isDataViewSelection(dataViews[1]); - saveSourcerer(); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer(); - cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); - }); - - it('shows modified badge when index patterns change and removes when reset', () => { - openSourcerer(); - openDataViewSelection(); - cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); - isDataViewSelection(dataViews[1]); - openAdvancedSettings(); - const patterns = dataViews[1].split(','); - deselectSourcererOptions([patterns[0]]); - saveSourcerer(); - cy.get(SOURCERER.badgeModified).should(`exist`); - openSourcerer(); - cy.get(SOURCERER.badgeModifiedOption).should(`exist`); - resetSourcerer(); - saveSourcerer(); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer(); - cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); - isDataViewSelection(siemDataViewTitle); - }); - }); - - it('disables save when no patterns are selected', () => { - openSourcerer(); - openAdvancedSettings(); - cy.get(SOURCERER.saveButton).should('be.enabled'); - deselectSourcererOptions(['auditbeat-*']); - cy.get(SOURCERER.saveButton).should('be.disabled'); - }); - - it( - 'adds a pattern to the default index and correctly filters out auditbeat-*', - { tags: '@brokenInServerless' }, - () => { - openSourcerer(); - isSourcererSelection(`auditbeat-*`); - isNotSourcererSelection('*beat*'); - addIndexToDefault('*beat*'); - isHostsStatValue('1'); - openSourcerer(); - openAdvancedSettings(); - isSourcererSelection(`auditbeat-*`); - isSourcererSelection('*beat*'); - } - ); - }); -}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.ts b/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.ts deleted file mode 100644 index 4267944740539..0000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.ts +++ /dev/null @@ -1,169 +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 { - DEFAULT_ALERTS_INDEX, - DEFAULT_INDEX_PATTERN, -} from '@kbn/security-solution-plugin/common/constants'; - -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; - -import { TIMELINES_URL } from '../../urls/navigation'; -import { - clickAlertCheckbox, - deselectSourcererOptions, - isDataViewSelection, - isKibanaDataViewOption, - isNotSourcererOption, - isNotSourcererSelection, - isSourcererOptions, - isSourcererSelection, - openAdvancedSettings, - openDataViewSelection, - openSourcerer, - refreshUntilAlertsIndexExists, - resetSourcerer, - saveSourcerer, -} from '../../tasks/sourcerer'; -import { openTimelineUsingToggle } from '../../tasks/security_main'; -import { SOURCERER } from '../../screens/sourcerer'; -import { createTimeline } from '../../tasks/api_calls/timelines'; -import { getTimeline, getTimelineModifiedSourcerer } from '../../objects/timeline'; -import { closeTimeline, openTimelineById } from '../../tasks/timeline'; - -const siemDataViewTitle = 'Security Default Data View'; -const dataViews = ['auditbeat-*,fakebeat-*', 'auditbeat-*,*beat*,siem-read*,.kibana*,fakebeat-*']; - -// TODO: https://github.com/elastic/kibana/issues/161539 -describe('Timeline scope', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { - beforeEach(() => { - cy.clearLocalStorage(); - login(); - visitWithTimeRange(TIMELINES_URL); - }); - - it('correctly loads SIEM data view', () => { - openTimelineUsingToggle(); - openSourcerer('timeline'); - isDataViewSelection(siemDataViewTitle); - openAdvancedSettings(); - isSourcererSelection(`auditbeat-*`); - isSourcererSelection(`${DEFAULT_ALERTS_INDEX}-default`); - isSourcererOptions(DEFAULT_INDEX_PATTERN.filter((pattern) => pattern !== 'auditbeat-*')); - isNotSourcererOption(`${DEFAULT_ALERTS_INDEX}-default`); - }); - - describe('Modified badge', () => { - it('Selecting new data view does not add a modified badge', () => { - openTimelineUsingToggle(); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer('timeline'); - cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); - openDataViewSelection(); - isKibanaDataViewOption(dataViews); - cy.get(SOURCERER.selectListDefaultOption).should(`contain`, siemDataViewTitle); - cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); - isDataViewSelection(dataViews[1]); - saveSourcerer(); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer('timeline'); - cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); - }); - - it('shows modified badge when index patterns change and removes when reset', () => { - openTimelineUsingToggle(); - openSourcerer('timeline'); - openDataViewSelection(); - cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); - isDataViewSelection(dataViews[1]); - openAdvancedSettings(); - const patterns = dataViews[1].split(','); - deselectSourcererOptions([patterns[0]]); - saveSourcerer(); - cy.get(SOURCERER.badgeModified).should(`exist`); - openSourcerer('timeline'); - cy.get(SOURCERER.badgeModifiedOption).should(`exist`); - resetSourcerer(); - saveSourcerer(); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer('timeline'); - cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); - isDataViewSelection(siemDataViewTitle); - }); - }); - describe('Alerts checkbox', () => { - before(() => { - login(); - createTimeline(getTimeline()).then((response) => - cy.wrap(response.body.data.persistTimeline.timeline.savedObjectId).as('timelineId') - ); - createTimeline(getTimelineModifiedSourcerer()).then((response) => - cy.wrap(response.body.data.persistTimeline.timeline.savedObjectId).as('auditbeatTimelineId') - ); - }); - - beforeEach(() => { - login(); - visitWithTimeRange(TIMELINES_URL); - refreshUntilAlertsIndexExists(); - }); - - it('Modifies timeline to alerts only, and switches to different saved timeline without issue', function () { - openTimelineById(this.timelineId).then(() => { - cy.get(SOURCERER.badgeAlerts).should(`not.exist`); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - openSourcerer('timeline'); - clickAlertCheckbox(); - saveSourcerer(); - cy.get(SOURCERER.badgeAlerts).should(`exist`); - cy.get(SOURCERER.badgeModified).should(`not.exist`); - closeTimeline(); - - openTimelineById(this.auditbeatTimelineId).then(() => { - cy.get(SOURCERER.badgeModified).should(`exist`); - cy.get(SOURCERER.badgeAlerts).should(`not.exist`); - openSourcerer('timeline'); - openAdvancedSettings(); - isSourcererSelection(`auditbeat-*`); - }); - }); - }); - - const defaultPatterns = [`auditbeat-*`, `${DEFAULT_ALERTS_INDEX}-default`]; - it('alerts checkbox behaves as expected', () => { - isDataViewSelection(siemDataViewTitle); - defaultPatterns.forEach((pattern) => isSourcererSelection(pattern)); - openDataViewSelection(); - cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); - isDataViewSelection(dataViews[1]); - dataViews[1] - .split(',') - .filter((pattern) => pattern !== 'fakebeat-*' && pattern !== 'siem-read*') - .forEach((pattern) => isSourcererSelection(pattern)); - - clickAlertCheckbox(); - isNotSourcererSelection(`auditbeat-*`); - isSourcererSelection(`${DEFAULT_ALERTS_INDEX}-default`); - cy.get(SOURCERER.alertCheckbox).uncheck({ force: true }); - defaultPatterns.forEach((pattern) => isSourcererSelection(pattern)); - }); - - it('shows alerts badge when index patterns change and removes when reset', () => { - clickAlertCheckbox(); - saveSourcerer(); - cy.get(SOURCERER.badgeAlerts).should(`exist`); - openSourcerer('timeline'); - cy.get(SOURCERER.badgeAlertsOption).should(`exist`); - resetSourcerer(); - saveSourcerer(); - cy.get(SOURCERER.badgeAlerts).should(`not.exist`); - openSourcerer('timeline'); - cy.get(SOURCERER.badgeAlertsOption).should(`not.exist`); - }); - }); -}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/cti_enrichments.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/cti_enrichments.cy.ts deleted file mode 100644 index 04de2c6ac6b35..0000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/cti_enrichments.cy.ts +++ /dev/null @@ -1,197 +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 { disableExpandableFlyout } from '../../tasks/api_calls/kibana_advanced_settings'; -import { getNewThreatIndicatorRule, indicatorRuleMatchingDoc } from '../../objects/rule'; -import { cleanKibana } from '../../tasks/common'; -import { login } from '../../tasks/login'; -import { - JSON_TEXT, - TABLE_CELL, - TABLE_ROWS, - THREAT_DETAILS_VIEW, - ENRICHMENT_COUNT_NOTIFICATION, - INDICATOR_MATCH_ENRICHMENT_SECTION, - INVESTIGATION_TIME_ENRICHMENT_SECTION, - THREAT_DETAILS_ACCORDION, -} from '../../screens/alerts_details'; -import { TIMELINE_FIELD } from '../../screens/rule_details'; -import { expandFirstAlert, setEnrichmentDates, viewThreatIntelTab } from '../../tasks/alerts'; -import { createRule } from '../../tasks/api_calls/rules'; -import { openJsonView, openThreatIndicatorDetails } from '../../tasks/alerts_details'; -import { addsFieldsToTimeline, visitRuleDetailsPage } from '../../tasks/rule_details'; - -// TODO: https://github.com/elastic/kibana/issues/161539 -describe('CTI Enrichment', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { - before(() => { - cleanKibana(); - // illegal_argument_exception: unknown setting [index.lifecycle.rollover_alias] - cy.task('esArchiverLoad', { archiveName: 'threat_indicator' }); - cy.task('esArchiverLoad', { archiveName: 'suspicious_source_event' }); - login(); - - disableExpandableFlyout(); - }); - - after(() => { - cy.task('esArchiverUnload', 'threat_indicator'); - cy.task('esArchiverUnload', 'suspicious_source_event'); - }); - - beforeEach(() => { - login(); - createRule({ ...getNewThreatIndicatorRule(), rule_id: 'rule_testing', enabled: true }).then( - (rule) => visitRuleDetailsPage(rule.body.id) - ); - }); - - // TODO: https://github.com/elastic/kibana/issues/161539 - // Skipped: https://github.com/elastic/kibana/issues/162818 - it.skip('Displays enrichment matched.* fields on the timeline', () => { - const expectedFields = { - 'threat.enrichments.matched.atomic': indicatorRuleMatchingDoc.atomic, - 'threat.enrichments.matched.type': indicatorRuleMatchingDoc.matchedType, - 'threat.enrichments.matched.field': - getNewThreatIndicatorRule().threat_mapping[0].entries[0].field, - 'threat.enrichments.matched.id': indicatorRuleMatchingDoc.matchedId, - 'threat.enrichments.matched.index': indicatorRuleMatchingDoc.matchedIndex, - }; - const fields = Object.keys(expectedFields) as Array; - - addsFieldsToTimeline('threat.enrichments.matched', fields); - - fields.forEach((field) => { - cy.get(TIMELINE_FIELD(field)).should('have.text', expectedFields[field]); - }); - }); - - it('Displays persisted enrichments on the JSON view', () => { - const expectedEnrichment = [ - { - 'indicator.file.hash.md5': ['9b6c3518a91d23ed77504b5416bfb5b3'], - 'matched.index': ['logs-ti_abusech.malware'], - 'indicator.file.type': ['elf'], - 'indicator.file.hash.tlsh': [ - '6D7312E017B517CC1371A8353BED205E9128223972AE35302E97528DF957703BAB2DBE', - ], - 'feed.name': ['AbuseCH malware'], - 'indicator.file.hash.ssdeep': [ - '1536:87vbq1lGAXSEYQjbChaAU2yU23M51DjZgSQAvcYkFtZTjzBht5:8D+CAXFYQChaAUk5ljnQssL', - ], - 'indicator.file.hash.sha256': [ - 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', - ], - 'indicator.first_seen': ['2021-03-10T08:02:14.000Z'], - 'matched.field': ['myhash.mysha256'], - 'indicator.type': ['file'], - 'matched.type': ['indicator_match_rule'], - 'matched.id': ['84cf452c1e0375c3d4412cb550bd1783358468a3b3b777da4829d72c7d6fb74f'], - 'matched.atomic': ['a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3'], - 'indicator.file.size': [80280], - }, - ]; - - expandFirstAlert(); - openJsonView(); - - cy.get(JSON_TEXT).then((x) => { - const parsed = JSON.parse(x.text()); - expect(parsed.fields['threat.enrichments']).to.deep.equal(expectedEnrichment); - }); - }); - - it('Displays threat indicator details on the threat intel tab', () => { - const expectedThreatIndicatorData = [ - { field: 'feed.name', value: 'AbuseCH malware' }, - { field: 'indicator.file.hash.md5', value: '9b6c3518a91d23ed77504b5416bfb5b3' }, - { - field: 'indicator.file.hash.sha256', - value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', - }, - { - field: 'indicator.file.hash.ssdeep', - value: '1536:87vbq1lGAXSEYQjbChaAU2yU23M51DjZgSQAvcYkFtZTjzBht5:8D+CAXFYQChaAUk5ljnQssL', - }, - { - field: 'indicator.file.hash.tlsh', - value: '6D7312E017B517CC1371A8353BED205E9128223972AE35302E97528DF957703BAB2DBE', - }, - { field: 'indicator.file.size', value: '80280' }, - { field: 'indicator.file.type', value: 'elf' }, - { field: 'indicator.first_seen', value: '2021-03-10T08:02:14.000Z' }, - { field: 'indicator.type', value: 'file' }, - { - field: 'matched.atomic', - value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', - }, - { field: 'matched.field', value: 'myhash.mysha256' }, - { - field: 'matched.id', - value: '84cf452c1e0375c3d4412cb550bd1783358468a3b3b777da4829d72c7d6fb74f', - }, - { field: 'matched.index', value: 'logs-ti_abusech.malware' }, - { field: 'matched.type', value: 'indicator_match_rule' }, - ]; - - expandFirstAlert(); - openThreatIndicatorDetails(); - - cy.get(ENRICHMENT_COUNT_NOTIFICATION).should('have.text', '1'); - cy.get(THREAT_DETAILS_VIEW).within(() => { - cy.get(TABLE_ROWS).should('have.length', expectedThreatIndicatorData.length); - expectedThreatIndicatorData.forEach((row, index) => { - cy.get(TABLE_ROWS) - .eq(index) - .within(() => { - cy.get(TABLE_CELL).eq(0).should('have.text', row.field); - cy.get(TABLE_CELL).eq(1).should('have.text', row.value); - }); - }); - }); - }); - - describe('with additional indicators', () => { - before(() => { - cy.task('esArchiverLoad', { archiveName: 'threat_indicator2' }); - }); - - after(() => { - cy.task('esArchiverUnload', 'threat_indicator2'); - }); - - it('Displays matched fields from both indicator match rules and investigation time enrichments on Threat Intel tab', () => { - const indicatorMatchRuleEnrichment = { - field: 'myhash.mysha256', - value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', - feedName: 'AbuseCH malware', - }; - const investigationTimeEnrichment = { - field: 'source.ip', - value: '192.168.1.1', - feedName: 'feed_name', - }; - - expandFirstAlert(); - viewThreatIntelTab(); - setEnrichmentDates('08/05/2018 10:00 AM'); - - cy.get(`${INDICATOR_MATCH_ENRICHMENT_SECTION} ${THREAT_DETAILS_ACCORDION}`) - .should('exist') - .should( - 'have.text', - `${indicatorMatchRuleEnrichment.field} ${indicatorMatchRuleEnrichment.value} from ${indicatorMatchRuleEnrichment.feedName}` - ); - - cy.get(`${INVESTIGATION_TIME_ENRICHMENT_SECTION} ${THREAT_DETAILS_ACCORDION}`) - .should('exist') - .should( - 'have.text', - `${investigationTimeEnrichment.field} ${investigationTimeEnrichment.value} from ${investigationTimeEnrichment.feedName}` - ); - }); - }); -}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_detection.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_detection.cy.ts deleted file mode 100644 index 3f8da89072da8..0000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_detection.cy.ts +++ /dev/null @@ -1,73 +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 { waitForAlertsToPopulate } from '../../tasks/create_new_rule'; -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; - -import { ALERTS_URL, TIMELINES_URL } from '../../urls/navigation'; -import { ALERTS_HISTOGRAM_SERIES, ALERT_RULE_NAME, MESSAGE } from '../../screens/alerts'; -import { TIMELINE_QUERY, TIMELINE_VIEW_IN_ANALYZER } from '../../screens/timeline'; -import { selectAlertsHistogram } from '../../tasks/alerts'; -import { createTimeline } from '../../tasks/timelines'; - -// TODO: https://github.com/elastic/kibana/issues/161539 -describe( - 'Ransomware Detection Alerts', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, - () => { - before(() => { - cy.task('esArchiverLoad', { - archiveName: 'ransomware_detection', - useCreate: true, - docsOnly: true, - }); - }); - - describe('Ransomware display in Alerts Section', () => { - beforeEach(() => { - login(); - visitWithTimeRange(ALERTS_URL); - waitForAlertsToPopulate(); - }); - - describe('Alerts table', () => { - it('shows Ransomware Alerts', () => { - cy.get(ALERT_RULE_NAME).should('have.text', 'Ransomware Detection Alert'); - }); - }); - - describe('Trend Chart', () => { - beforeEach(() => { - selectAlertsHistogram(); - }); - - it('shows Ransomware Detection Alert in the trend chart', () => { - cy.get(ALERTS_HISTOGRAM_SERIES).should('have.text', 'Ransomware Detection Alert'); - }); - }); - }); - - // FLAKY: https://github.com/elastic/kibana/issues/168602 - describe.skip('Ransomware in Timelines', () => { - before(() => { - login(); - visitWithTimeRange(TIMELINES_URL); - createTimeline(); - }); - - it('Renders ransomware entries in timelines table', () => { - cy.get(TIMELINE_QUERY).type('event.code: "ransomware"{enter}'); - - // Wait for grid to load, it should have an analyzer icon - cy.get(TIMELINE_VIEW_IN_ANALYZER).should('exist'); - - cy.get(MESSAGE).should('have.text', 'Ransomware Detection Alert'); - }); - }); - } -); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_prevention.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_prevention.cy.ts deleted file mode 100644 index fa4a647ae7f20..0000000000000 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/ransomware_prevention.cy.ts +++ /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 { waitForAlertsToPopulate } from '../../tasks/create_new_rule'; -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; - -import { ALERTS_URL, TIMELINES_URL } from '../../urls/navigation'; -import { ALERTS_HISTOGRAM_SERIES, ALERT_RULE_NAME, MESSAGE } from '../../screens/alerts'; -import { TIMELINE_QUERY, TIMELINE_VIEW_IN_ANALYZER } from '../../screens/timeline'; -import { selectAlertsHistogram } from '../../tasks/alerts'; -import { createTimeline } from '../../tasks/timelines'; -import { cleanKibana } from '../../tasks/common'; - -// TODO: https://github.com/elastic/kibana/issues/161539 -describe( - 'Ransomware Prevention Alerts', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, - () => { - before(() => { - cleanKibana(); - cy.task('esArchiverLoad', { - archiveName: 'ransomware_prevention', - useCreate: true, - docsOnly: true, - }); - }); - - after(() => { - cy.task('esArchiverUnload', 'ransomware_prevention'); - }); - - describe('Ransomware display in Alerts Section', () => { - beforeEach(() => { - login(); - visitWithTimeRange(ALERTS_URL); - waitForAlertsToPopulate(); - }); - - describe('Alerts table', () => { - it('shows Ransomware Alerts', () => { - cy.get(ALERT_RULE_NAME).should('have.text', 'Ransomware Prevention Alert'); - }); - }); - - describe('Trend Chart', () => { - beforeEach(() => { - selectAlertsHistogram(); - }); - - it('shows Ransomware Prevention Alert in the trend chart', () => { - cy.get(ALERTS_HISTOGRAM_SERIES).should('have.text', 'Ransomware Prevention Alert'); - }); - }); - }); - - describe('Ransomware in Timelines', () => { - beforeEach(() => { - login(); - visitWithTimeRange(TIMELINES_URL); - - createTimeline(); - }); - - it('Renders ransomware entries in timelines table', () => { - cy.get(TIMELINE_QUERY).type('event.code: "ransomware"{enter}'); - - // Wait for grid to load, it should have an analyzer icon - cy.get(TIMELINE_VIEW_IN_ANALYZER).should('exist'); - - cy.get(MESSAGE).should('have.text', 'Ransomware Prevention Alert'); - }); - }); - } -); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts new file mode 100644 index 0000000000000..5d56239e74c99 --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_status.cy.ts @@ -0,0 +1,230 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getNewRule } from '../../../objects/rule'; +import { ALERTS_COUNT, SELECTED_ALERTS } from '../../../screens/alerts'; + +import { + selectNumberOfAlerts, + waitForAlerts, + markAcknowledgedFirstAlert, + markAlertsAcknowledged, + goToAcknowledgedAlerts, + closeFirstAlert, + closeAlerts, + goToClosedAlerts, + goToOpenedAlerts, + openAlerts, + openFirstAlert, +} from '../../../tasks/alerts'; +import { createRule } from '../../../tasks/api_calls/rules'; +import { deleteAlertsAndRules } from '../../../tasks/common'; +import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; +import { login } from '../../../tasks/login'; +import { visit } from '../../../tasks/navigation'; + +import { ALERTS_URL } from '../../../urls/navigation'; + +describe('Changing alert status', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cy.task('esArchiverLoad', { archiveName: 'auditbeat_big' }); + }); + + context('Opening alerts', () => { + beforeEach(() => { + login(); + deleteAlertsAndRules(); + createRule(getNewRule()); + visit(ALERTS_URL); + waitForAlertsToPopulate(); + selectNumberOfAlerts(3); + cy.get(SELECTED_ALERTS).should('have.text', `Selected 3 alerts`); + closeAlerts(); + waitForAlerts(); + }); + + after(() => { + cy.task('esArchiverUnload', 'auditbeat_big'); + }); + + it('can mark a closed alert as open', () => { + waitForAlertsToPopulate(); + cy.get(ALERTS_COUNT) + .invoke('text') + .then((numberOfOpenedAlertsText) => { + const numberOfOpenedAlerts = parseInt(numberOfOpenedAlertsText, 10); + goToClosedAlerts(); + waitForAlerts(); + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + const numberOfAlertsToBeOpened = 1; + + openFirstAlert(); + waitForAlerts(); + + const expectedNumberOfAlerts = +numberOfAlerts - numberOfAlertsToBeOpened; + cy.get(ALERTS_COUNT).contains(expectedNumberOfAlerts); + + goToOpenedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).contains(`${numberOfOpenedAlerts + numberOfAlertsToBeOpened}`); + }); + }); + }); + + it('can bulk open alerts', () => { + waitForAlertsToPopulate(); + cy.get(ALERTS_COUNT) + .invoke('text') + .then((numberOfOpenedAlertsText) => { + const numberOfOpenedAlerts = parseInt(numberOfOpenedAlertsText, 10); + goToClosedAlerts(); + waitForAlerts(); + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + const numberOfAlertsToBeOpened = 2; + const numberOfAlertsToBeSelected = 2; + + selectNumberOfAlerts(numberOfAlertsToBeSelected); + cy.get(SELECTED_ALERTS).should( + 'have.text', + `Selected ${numberOfAlertsToBeSelected} alerts` + ); + + openAlerts(); + waitForAlerts(); + + const expectedNumberOfAlerts = +numberOfAlerts - numberOfAlertsToBeOpened; + cy.get(ALERTS_COUNT).contains(expectedNumberOfAlerts); + + goToOpenedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).contains(`${numberOfOpenedAlerts + numberOfAlertsToBeOpened}`); + }); + }); + }); + }); + + context('Marking alerts as acknowledged', () => { + beforeEach(() => { + login(); + deleteAlertsAndRules(); + createRule(getNewRule()); + visit(ALERTS_URL); + waitForAlertsToPopulate(); + }); + + it('can mark alert as acknowledged', () => { + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + const numberOfAlertsToBeMarkedAcknowledged = 1; + + markAcknowledgedFirstAlert(); + waitForAlerts(); + const expectedNumberOfAlerts = +numberOfAlerts - numberOfAlertsToBeMarkedAcknowledged; + cy.get(ALERTS_COUNT).contains(expectedNumberOfAlerts); + + goToAcknowledgedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).contains(`${numberOfAlertsToBeMarkedAcknowledged}`); + }); + }); + + it('can bulk mark alerts as acknowledged', () => { + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + const numberOfAlertsToBeMarkedAcknowledged = 2; + const numberOfAlertsToBeSelected = 2; + + selectNumberOfAlerts(numberOfAlertsToBeSelected); + + markAlertsAcknowledged(); + waitForAlerts(); + const expectedNumberOfAlerts = +numberOfAlerts - numberOfAlertsToBeMarkedAcknowledged; + cy.get(ALERTS_COUNT).contains(expectedNumberOfAlerts); + + goToAcknowledgedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).contains(numberOfAlertsToBeMarkedAcknowledged); + }); + }); + }); + + context('Closing alerts', () => { + beforeEach(() => { + login(); + deleteAlertsAndRules(); + createRule(getNewRule({ rule_id: '1', max_signals: 100 })); + visit(ALERTS_URL); + waitForAlertsToPopulate(); + }); + it('can close an alert', () => { + const numberOfAlertsToBeClosed = 1; + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + cy.get(ALERTS_COUNT).should('have.text', `${numberOfAlerts} alerts`); + + selectNumberOfAlerts(numberOfAlertsToBeClosed); + + cy.get(SELECTED_ALERTS).should('have.text', `Selected ${numberOfAlertsToBeClosed} alert`); + + closeFirstAlert(); + waitForAlerts(); + + const expectedNumberOfAlertsAfterClosing = +numberOfAlerts - numberOfAlertsToBeClosed; + cy.get(ALERTS_COUNT).contains(expectedNumberOfAlertsAfterClosing); + + goToClosedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).contains(numberOfAlertsToBeClosed); + }); + }); + + it('can bulk close alerts', () => { + const numberOfAlertsToBeClosed = 2; + cy.get(ALERTS_COUNT) + .invoke('text') + .then((alertNumberString) => { + const numberOfAlerts = alertNumberString.split(' ')[0]; + cy.get(ALERTS_COUNT).should('have.text', `${numberOfAlerts} alerts`); + + selectNumberOfAlerts(numberOfAlertsToBeClosed); + + cy.get(SELECTED_ALERTS).should( + 'have.text', + `Selected ${numberOfAlertsToBeClosed} alerts` + ); + + closeAlerts(); + waitForAlerts(); + + const expectedNumberOfAlertsAfterClosing = +numberOfAlerts - numberOfAlertsToBeClosed; + cy.get(ALERTS_COUNT).contains(expectedNumberOfAlertsAfterClosing); + + goToClosedAlerts(); + waitForAlerts(); + + cy.get(ALERTS_COUNT).contains(numberOfAlertsToBeClosed); + }); + }); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alert_tags.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_tags.cy.ts similarity index 83% rename from x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alert_tags.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_tags.cy.ts index ff8e890ab9966..c7b6b16a45c2f 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alert_tags.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alert_tags.cy.ts @@ -5,28 +5,27 @@ * 2.0. */ -import { getNewRule } from '../../objects/rule'; +import { getNewRule } from '../../../objects/rule'; import { clickAlertTag, openAlertTaggingBulkActionMenu, selectNumberOfAlerts, updateAlertTags, -} from '../../tasks/alerts'; -import { createRule } from '../../tasks/api_calls/rules'; -import { cleanKibana, deleteAlertsAndRules } from '../../tasks/common'; -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; -import { ALERTS_URL } from '../../urls/navigation'; -import { waitForAlertsToPopulate } from '../../tasks/create_new_rule'; +} from '../../../tasks/alerts'; +import { createRule } from '../../../tasks/api_calls/rules'; +import { cleanKibana, deleteAlertsAndRules } from '../../../tasks/common'; +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; +import { ALERTS_URL } from '../../../urls/navigation'; +import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; import { ALERTS_TABLE_ROW_LOADER, MIXED_ALERT_TAG, SELECTED_ALERT_TAG, UNSELECTED_ALERT_TAG, -} from '../../screens/alerts'; +} from '../../../screens/alerts'; -// TODO: https://github.com/elastic/kibana/issues/161539 -describe('Alert tagging', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Alert tagging', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); cy.task('esArchiverResetKibana'); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts similarity index 91% rename from x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts index 686edd1bf4f81..bbdba453351bb 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/alerts_detection_callouts_index_outdated.cy.ts @@ -7,21 +7,21 @@ import { ROLES } from '@kbn/security-solution-plugin/common/test'; -import { ALERTS_URL } from '../../urls/navigation'; -import { RULES_MANAGEMENT_URL } from '../../urls/rules_management'; -import { ruleDetailsUrl } from '../../urls/rule_details'; -import { getNewRule } from '../../objects/rule'; -import { PAGE_TITLE } from '../../screens/common/page'; +import { ALERTS_URL } from '../../../urls/navigation'; +import { RULES_MANAGEMENT_URL } from '../../../urls/rules_management'; +import { ruleDetailsUrl } from '../../../urls/rule_details'; +import { getNewRule } from '../../../objects/rule'; +import { PAGE_TITLE } from '../../../screens/common/page'; -import { login } from '../../tasks/login'; -import { visit } from '../../tasks/navigation'; +import { login } from '../../../tasks/login'; +import { visit } from '../../../tasks/navigation'; -import { createRule, deleteCustomRule } from '../../tasks/api_calls/rules'; +import { createRule, deleteCustomRule } from '../../../tasks/api_calls/rules'; import { getCallOut, NEED_ADMIN_FOR_UPDATE_CALLOUT, waitForCallOutToBeShown, -} from '../../tasks/common/callouts'; +} from '../../../tasks/common/callouts'; const loadPageAsPlatformEngineerUser = (url: string) => { login(ROLES.soc_manager); @@ -33,7 +33,6 @@ const waitForPageTitleToBeShown = () => { cy.get(PAGE_TITLE).should('be.visible'); }; -// TODO: https://github.com/elastic/kibana/issues/161539 Does it need to run in Serverless? describe( 'Detections > Need Admin Callouts indicating an admin is needed to migrate the alert data set', { tags: ['@ess', '@skipInServerless'] }, diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/missing_privileges_callout.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/missing_privileges_callout.cy.ts similarity index 88% rename from x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/missing_privileges_callout.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/missing_privileges_callout.cy.ts index e12dabe044598..f38899300ed7f 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/missing_privileges_callout.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/missing_privileges_callout.cy.ts @@ -7,21 +7,21 @@ import { ROLES } from '@kbn/security-solution-plugin/common/test'; -import { ALERTS_URL } from '../../urls/navigation'; -import { RULES_MANAGEMENT_URL } from '../../urls/rules_management'; -import { getNewRule } from '../../objects/rule'; -import { PAGE_TITLE } from '../../screens/common/page'; - -import { login } from '../../tasks/login'; -import { visit } from '../../tasks/navigation'; -import { createRule, deleteCustomRule } from '../../tasks/api_calls/rules'; +import { ALERTS_URL } from '../../../urls/navigation'; +import { RULES_MANAGEMENT_URL } from '../../../urls/rules_management'; +import { getNewRule } from '../../../objects/rule'; +import { PAGE_TITLE } from '../../../screens/common/page'; + +import { login } from '../../../tasks/login'; +import { visit } from '../../../tasks/navigation'; +import { createRule, deleteCustomRule } from '../../../tasks/api_calls/rules'; import { getCallOut, waitForCallOutToBeShown, dismissCallOut, MISSING_PRIVILEGES_CALLOUT, -} from '../../tasks/common/callouts'; -import { ruleDetailsUrl } from '../../urls/rule_details'; +} from '../../../tasks/common/callouts'; +import { ruleDetailsUrl } from '../../../urls/rule_details'; const loadPageAsReadOnlyUser = (url: string) => { login(ROLES.reader); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/threat_match_enrichments.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/threat_match_enrichments.cy.ts new file mode 100644 index 0000000000000..2bda5a6acadc2 --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_alerts/threat_match_enrichments.cy.ts @@ -0,0 +1,201 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { disableExpandableFlyout } from '../../../tasks/api_calls/kibana_advanced_settings'; +import { getNewThreatIndicatorRule, indicatorRuleMatchingDoc } from '../../../objects/rule'; +import { cleanKibana } from '../../../tasks/common'; +import { login } from '../../../tasks/login'; +import { + JSON_TEXT, + TABLE_CELL, + TABLE_ROWS, + THREAT_DETAILS_VIEW, + ENRICHMENT_COUNT_NOTIFICATION, + INDICATOR_MATCH_ENRICHMENT_SECTION, + INVESTIGATION_TIME_ENRICHMENT_SECTION, + THREAT_DETAILS_ACCORDION, +} from '../../../screens/alerts_details'; +import { TIMELINE_FIELD } from '../../../screens/rule_details'; +import { expandFirstAlert, setEnrichmentDates, viewThreatIntelTab } from '../../../tasks/alerts'; +import { createRule } from '../../../tasks/api_calls/rules'; +import { openJsonView, openThreatIndicatorDetails } from '../../../tasks/alerts_details'; +import { addsFieldsToTimeline, visitRuleDetailsPage } from '../../../tasks/rule_details'; + +// TODO: https://github.com/elastic/kibana/issues/161539 +describe( + 'Threat Match Enrichment', + { tags: ['@ess', '@serverless', '@brokenInServerless'] }, + () => { + before(() => { + cleanKibana(); + // illegal_argument_exception: unknown setting [index.lifecycle.rollover_alias] + cy.task('esArchiverLoad', { archiveName: 'threat_indicator' }); + cy.task('esArchiverLoad', { archiveName: 'suspicious_source_event' }); + login(); + + disableExpandableFlyout(); + }); + + after(() => { + cy.task('esArchiverUnload', 'threat_indicator'); + cy.task('esArchiverUnload', 'suspicious_source_event'); + }); + + beforeEach(() => { + login(); + createRule({ ...getNewThreatIndicatorRule(), rule_id: 'rule_testing', enabled: true }).then( + (rule) => visitRuleDetailsPage(rule.body.id) + ); + }); + + // TODO: https://github.com/elastic/kibana/issues/161539 + // Skipped: https://github.com/elastic/kibana/issues/162818 + it.skip('Displays enrichment matched.* fields on the timeline', () => { + const expectedFields = { + 'threat.enrichments.matched.atomic': indicatorRuleMatchingDoc.atomic, + 'threat.enrichments.matched.type': indicatorRuleMatchingDoc.matchedType, + 'threat.enrichments.matched.field': + getNewThreatIndicatorRule().threat_mapping[0].entries[0].field, + 'threat.enrichments.matched.id': indicatorRuleMatchingDoc.matchedId, + 'threat.enrichments.matched.index': indicatorRuleMatchingDoc.matchedIndex, + }; + const fields = Object.keys(expectedFields) as Array; + + addsFieldsToTimeline('threat.enrichments.matched', fields); + + fields.forEach((field) => { + cy.get(TIMELINE_FIELD(field)).should('have.text', expectedFields[field]); + }); + }); + + it('Displays persisted enrichments on the JSON view', () => { + const expectedEnrichment = [ + { + 'indicator.file.hash.md5': ['9b6c3518a91d23ed77504b5416bfb5b3'], + 'matched.index': ['logs-ti_abusech.malware'], + 'indicator.file.type': ['elf'], + 'indicator.file.hash.tlsh': [ + '6D7312E017B517CC1371A8353BED205E9128223972AE35302E97528DF957703BAB2DBE', + ], + 'feed.name': ['AbuseCH malware'], + 'indicator.file.hash.ssdeep': [ + '1536:87vbq1lGAXSEYQjbChaAU2yU23M51DjZgSQAvcYkFtZTjzBht5:8D+CAXFYQChaAUk5ljnQssL', + ], + 'indicator.file.hash.sha256': [ + 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', + ], + 'indicator.first_seen': ['2021-03-10T08:02:14.000Z'], + 'matched.field': ['myhash.mysha256'], + 'indicator.type': ['file'], + 'matched.type': ['indicator_match_rule'], + 'matched.id': ['84cf452c1e0375c3d4412cb550bd1783358468a3b3b777da4829d72c7d6fb74f'], + 'matched.atomic': ['a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3'], + 'indicator.file.size': [80280], + }, + ]; + + expandFirstAlert(); + openJsonView(); + + cy.get(JSON_TEXT).then((x) => { + const parsed = JSON.parse(x.text()); + expect(parsed.fields['threat.enrichments']).to.deep.equal(expectedEnrichment); + }); + }); + + it('Displays threat indicator details on the threat intel tab', () => { + const expectedThreatIndicatorData = [ + { field: 'feed.name', value: 'AbuseCH malware' }, + { field: 'indicator.file.hash.md5', value: '9b6c3518a91d23ed77504b5416bfb5b3' }, + { + field: 'indicator.file.hash.sha256', + value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', + }, + { + field: 'indicator.file.hash.ssdeep', + value: '1536:87vbq1lGAXSEYQjbChaAU2yU23M51DjZgSQAvcYkFtZTjzBht5:8D+CAXFYQChaAUk5ljnQssL', + }, + { + field: 'indicator.file.hash.tlsh', + value: '6D7312E017B517CC1371A8353BED205E9128223972AE35302E97528DF957703BAB2DBE', + }, + { field: 'indicator.file.size', value: '80280' }, + { field: 'indicator.file.type', value: 'elf' }, + { field: 'indicator.first_seen', value: '2021-03-10T08:02:14.000Z' }, + { field: 'indicator.type', value: 'file' }, + { + field: 'matched.atomic', + value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', + }, + { field: 'matched.field', value: 'myhash.mysha256' }, + { + field: 'matched.id', + value: '84cf452c1e0375c3d4412cb550bd1783358468a3b3b777da4829d72c7d6fb74f', + }, + { field: 'matched.index', value: 'logs-ti_abusech.malware' }, + { field: 'matched.type', value: 'indicator_match_rule' }, + ]; + + expandFirstAlert(); + openThreatIndicatorDetails(); + + cy.get(ENRICHMENT_COUNT_NOTIFICATION).should('have.text', '1'); + cy.get(THREAT_DETAILS_VIEW).within(() => { + cy.get(TABLE_ROWS).should('have.length', expectedThreatIndicatorData.length); + expectedThreatIndicatorData.forEach((row, index) => { + cy.get(TABLE_ROWS) + .eq(index) + .within(() => { + cy.get(TABLE_CELL).eq(0).should('have.text', row.field); + cy.get(TABLE_CELL).eq(1).should('have.text', row.value); + }); + }); + }); + }); + + describe('with additional indicators', () => { + before(() => { + cy.task('esArchiverLoad', { archiveName: 'threat_indicator2' }); + }); + + after(() => { + cy.task('esArchiverUnload', 'threat_indicator2'); + }); + + it('Displays matched fields from both indicator match rules and investigation time enrichments on Threat Intel tab', () => { + const indicatorMatchRuleEnrichment = { + field: 'myhash.mysha256', + value: 'a04ac6d98ad989312783d4fe3456c53730b212c79a426fb215708b6c6daa3de3', + feedName: 'AbuseCH malware', + }; + const investigationTimeEnrichment = { + field: 'source.ip', + value: '192.168.1.1', + feedName: 'feed_name', + }; + + expandFirstAlert(); + viewThreatIntelTab(); + setEnrichmentDates('08/05/2018 10:00 AM'); + + cy.get(`${INDICATOR_MATCH_ENRICHMENT_SECTION} ${THREAT_DETAILS_ACCORDION}`) + .should('exist') + .should( + 'have.text', + `${indicatorMatchRuleEnrichment.field} ${indicatorMatchRuleEnrichment.value} from ${indicatorMatchRuleEnrichment.feedName}` + ); + + cy.get(`${INVESTIGATION_TIME_ENRICHMENT_SECTION} ${THREAT_DETAILS_ACCORDION}`) + .should('exist') + .should( + 'have.text', + `${investigationTimeEnrichment.field} ${investigationTimeEnrichment.value} from ${investigationTimeEnrichment.feedName}` + ); + }); + }); + } +); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/create_runtime_field.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/create_runtime_field.cy.ts new file mode 100644 index 0000000000000..2fd13f8b6696d --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/create_runtime_field.cy.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; +import { openTimelineUsingToggle } from '../../../tasks/security_main'; +import { openTimelineFieldsBrowser, populateTimeline } from '../../../tasks/timeline'; + +import { hostsUrl, ALERTS_URL } from '../../../urls/navigation'; + +import { createRule } from '../../../tasks/api_calls/rules'; + +import { getNewRule } from '../../../objects/rule'; +import { refreshPage } from '../../../tasks/security_header'; +import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; +import { createField } from '../../../tasks/create_runtime_field'; +import { openAlertsFieldBrowser } from '../../../tasks/alerts'; +import { deleteRuntimeField } from '../../../tasks/sourcerer'; +import { GET_DATA_GRID_HEADER } from '../../../screens/common/data_grid'; +import { GET_TIMELINE_HEADER } from '../../../screens/timeline'; + +const alertRunTimeField = 'field.name.alert.page'; +const timelineRuntimeField = 'field.name.timeline'; + +describe('Create DataView runtime field', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + deleteRuntimeField('security-solution-default', alertRunTimeField); + deleteRuntimeField('security-solution-default', timelineRuntimeField); + }); + + beforeEach(() => { + login(); + }); + + it('adds field to alert table', () => { + visitWithTimeRange(ALERTS_URL); + createRule(getNewRule()); + refreshPage(); + waitForAlertsToPopulate(); + openAlertsFieldBrowser(); + createField(alertRunTimeField); + cy.get(GET_DATA_GRID_HEADER(alertRunTimeField)).should('exist'); + }); + + it('adds field to timeline', () => { + visitWithTimeRange(hostsUrl('allHosts')); + openTimelineUsingToggle(); + populateTimeline(); + openTimelineFieldsBrowser(); + + createField(timelineRuntimeField); + cy.get(GET_TIMELINE_HEADER(timelineRuntimeField)).should('exist'); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer.cy.ts new file mode 100644 index 0000000000000..d26543bea97f7 --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer.cy.ts @@ -0,0 +1,115 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { DEFAULT_INDEX_PATTERN } from '@kbn/security-solution-plugin/common/constants'; + +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; + +import { hostsUrl } from '../../../urls/navigation'; +import { + addIndexToDefault, + deselectSourcererOptions, + isDataViewSelection, + isHostsStatValue, + isKibanaDataViewOption, + isNotSourcererSelection, + isSourcererOptions, + isSourcererSelection, + openAdvancedSettings, + openDataViewSelection, + openSourcerer, + resetSourcerer, + saveSourcerer, +} from '../../../tasks/sourcerer'; +import { postDataView } from '../../../tasks/common'; +import { SOURCERER } from '../../../screens/sourcerer'; + +const siemDataViewTitle = 'Security Default Data View'; +const dataViews = ['auditbeat-*,fakebeat-*', 'auditbeat-*,*beat*,siem-read*,.kibana*,fakebeat-*']; + +describe('Sourcerer', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cy.task('esArchiverResetKibana'); + dataViews.forEach((dataView: string) => postDataView(dataView)); + }); + + beforeEach(() => { + cy.clearLocalStorage(); + login(); + visitWithTimeRange(hostsUrl('allHosts')); + }); + + it('correctly loads SIEM data view', () => { + openSourcerer(); + isDataViewSelection(siemDataViewTitle); + openAdvancedSettings(); + isSourcererSelection(`auditbeat-*`); + isSourcererOptions(DEFAULT_INDEX_PATTERN.filter((pattern) => pattern !== 'auditbeat-*')); + }); + + describe('Modified badge', () => { + it('Selecting new data view does not add a modified badge', () => { + cy.get(SOURCERER.badgeModified).should(`not.exist`); + openSourcerer(); + cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); + openDataViewSelection(); + isKibanaDataViewOption(dataViews); + cy.get(SOURCERER.selectListDefaultOption).should(`contain`, siemDataViewTitle); + cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); + isDataViewSelection(dataViews[1]); + saveSourcerer(); + cy.get(SOURCERER.badgeModified).should(`not.exist`); + openSourcerer(); + cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); + }); + + it('shows modified badge when index patterns change and removes when reset', () => { + openSourcerer(); + openDataViewSelection(); + cy.get(SOURCERER.selectListOption).contains(dataViews[1]).click(); + isDataViewSelection(dataViews[1]); + openAdvancedSettings(); + const patterns = dataViews[1].split(','); + deselectSourcererOptions([patterns[0]]); + saveSourcerer(); + cy.get(SOURCERER.badgeModified).should(`exist`); + openSourcerer(); + cy.get(SOURCERER.badgeModifiedOption).should(`exist`); + resetSourcerer(); + saveSourcerer(); + cy.get(SOURCERER.badgeModified).should(`not.exist`); + openSourcerer(); + cy.get(SOURCERER.badgeModifiedOption).should(`not.exist`); + isDataViewSelection(siemDataViewTitle); + }); + }); + + it('disables save when no patterns are selected', () => { + openSourcerer(); + openAdvancedSettings(); + cy.get(SOURCERER.saveButton).should('be.enabled'); + deselectSourcererOptions(['auditbeat-*']); + cy.get(SOURCERER.saveButton).should('be.disabled'); + }); + + it( + 'adds a pattern to the default index and correctly filters out auditbeat-*', + { tags: '@brokenInServerless' }, + () => { + openSourcerer(); + isSourcererSelection(`auditbeat-*`); + isNotSourcererSelection('*beat*'); + addIndexToDefault('*beat*'); + isHostsStatValue('1'); + openSourcerer(); + openAdvancedSettings(); + isSourcererSelection(`auditbeat-*`); + isSourcererSelection('*beat*'); + } + ); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_permissions.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_permissions.cy.ts new file mode 100644 index 0000000000000..fa4bf2d27061b --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_permissions.cy.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { loginWithUser } from '../../../tasks/login'; +import { visitWithUser } from '../../../tasks/navigation'; + +import { hostsUrl } from '../../../urls/navigation'; +import { postDataView } from '../../../tasks/common'; +import { + createUsersAndRoles, + secReadCasesAll, + secReadCasesAllUser, +} from '../../../tasks/privileges'; +import { TOASTER } from '../../../screens/configure_cases'; + +const usersToCreate = [secReadCasesAllUser]; +const rolesToCreate = [secReadCasesAll]; +const dataViews = ['auditbeat-*,fakebeat-*', 'auditbeat-*,*beat*,siem-read*,.kibana*,fakebeat-*']; + +describe('Sourcerer permissions', { tags: ['@ess', '@skipInServerless'] }, () => { + before(() => { + cy.task('esArchiverResetKibana'); + dataViews.forEach((dataView: string) => postDataView(dataView)); + createUsersAndRoles(usersToCreate, rolesToCreate); + }); + + it(`role(s) ${secReadCasesAllUser.roles.join()} shows error when user does not have permissions`, () => { + loginWithUser(secReadCasesAllUser); + visitWithUser(hostsUrl('allHosts'), secReadCasesAllUser); + cy.get(TOASTER).should('have.text', 'Write role required to generate data'); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_timeline.cy.ts similarity index 92% rename from x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_timeline.cy.ts index 22729c9e7661e..64a4e7224f820 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/data_sources/sourcerer_timeline.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/sourcerer/sourcerer_timeline.cy.ts @@ -10,10 +10,10 @@ import { DEFAULT_INDEX_PATTERN, } from '@kbn/security-solution-plugin/common/constants'; -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; -import { TIMELINES_URL } from '../../urls/navigation'; +import { TIMELINES_URL } from '../../../urls/navigation'; import { clickAlertCheckbox, deselectSourcererOptions, @@ -29,12 +29,12 @@ import { refreshUntilAlertsIndexExists, resetSourcerer, saveSourcerer, -} from '../../tasks/sourcerer'; -import { openTimelineUsingToggle } from '../../tasks/security_main'; -import { SOURCERER } from '../../screens/sourcerer'; -import { createTimeline } from '../../tasks/api_calls/timelines'; -import { getTimeline, getTimelineModifiedSourcerer } from '../../objects/timeline'; -import { closeTimeline, openTimelineById } from '../../tasks/timeline'; +} from '../../../tasks/sourcerer'; +import { openTimelineUsingToggle } from '../../../tasks/security_main'; +import { SOURCERER } from '../../../screens/sourcerer'; +import { createTimeline } from '../../../tasks/api_calls/timelines'; +import { getTimeline, getTimelineModifiedSourcerer } from '../../../objects/timeline'; +import { closeTimeline, openTimelineById } from '../../../tasks/timeline'; const siemDataViewTitle = 'Security Default Data View'; const dataViews = ['auditbeat-*,fakebeat-*', 'auditbeat-*,*beat*,siem-read*,.kibana*,fakebeat-*']; diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/permissions.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/permissions.cy.ts new file mode 100644 index 0000000000000..ddc1f939c08fe --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/permissions.cy.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ROLES } from '@kbn/security-solution-plugin/common/test'; + +import { login } from '../../../tasks/login'; +import { visit } from '../../../tasks/navigation'; +import { RULES_MANAGEMENT_URL } from '../../../urls/rules_management'; +import { VALUE_LISTS_MODAL_ACTIVATOR } from '../../../screens/lists'; + +describe('value list permissions', { tags: ['@ess', '@skipInServerless'] }, () => { + describe('user with restricted access role', () => { + it('Does not allow a t1 analyst user to upload a value list', () => { + login(ROLES.t1_analyst); + visit(RULES_MANAGEMENT_URL, { role: ROLES.t1_analyst }); + cy.get(VALUE_LISTS_MODAL_ACTIVATOR).should('have.attr', 'disabled'); + }); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/value_lists.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/value_lists.cy.ts index faa82b4fc6cdf..4b1c3e93f631e 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/value_lists.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/value_lists/value_lists.cy.ts @@ -5,8 +5,6 @@ * 2.0. */ -import { ROLES } from '@kbn/security-solution-plugin/common/test'; - import { login } from '../../../tasks/login'; import { visit } from '../../../tasks/navigation'; import { RULES_MANAGEMENT_URL } from '../../../urls/rules_management'; @@ -25,253 +23,224 @@ import { deleteValueLists, KNOWN_VALUE_LIST_FILES, } from '../../../tasks/lists'; -import { - VALUE_LISTS_TABLE, - VALUE_LISTS_ROW, - VALUE_LISTS_MODAL_ACTIVATOR, -} from '../../../screens/lists'; +import { VALUE_LISTS_TABLE, VALUE_LISTS_ROW } from '../../../screens/lists'; import { refreshIndex } from '../../../tasks/api_calls/elasticsearch'; -// TODO: https://github.com/elastic/kibana/issues/161539 -// FLAKY: https://github.com/elastic/kibana/issues/165699 -describe('value lists', { tags: ['@ess', '@serverless', '@skipInServerless'] }, () => { - // TODO: https://github.com/elastic/kibana/issues/161539 - describe('management modal', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { - beforeEach(() => { - login(); - deleteValueLists([ - KNOWN_VALUE_LIST_FILES.TEXT, - KNOWN_VALUE_LIST_FILES.IPs, - KNOWN_VALUE_LIST_FILES.CIDRs, - ]); - createListsIndex(); - visit(RULES_MANAGEMENT_URL); - waitForListsIndex(); - waitForValueListsModalToBeLoaded(); - }); +describe('value lists management modal', { tags: ['@ess', '@serverless'] }, () => { + beforeEach(() => { + login(); + deleteValueLists([ + KNOWN_VALUE_LIST_FILES.TEXT, + KNOWN_VALUE_LIST_FILES.IPs, + KNOWN_VALUE_LIST_FILES.CIDRs, + ]); + createListsIndex(); + visit(RULES_MANAGEMENT_URL); + waitForListsIndex(); + waitForValueListsModalToBeLoaded(); + }); + + it('can open and close the modal', () => { + openValueListsModal(); + closeValueListsModal(); + }); - it('can open and close the modal', () => { + describe('create list types', () => { + beforeEach(() => { openValueListsModal(); - closeValueListsModal(); }); - // TODO: https://github.com/elastic/kibana/issues/161539 - // Flaky in serverless tests - describe('create list types', { tags: ['@brokenInServerless'] }, () => { - beforeEach(() => { - openValueListsModal(); - }); - - it('creates a "keyword" list from an uploaded file', () => { - selectValueListType('keyword'); - selectValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); - uploadValueList(); + it('creates a "keyword" list from an uploaded file', () => { + selectValueListType('keyword'); + selectValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); + uploadValueList(); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.TEXT); - expect($row.text()).to.contain('Keywords'); - }); - }); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.TEXT); + expect($row.text()).to.contain('Keywords'); + }); + }); - it('creates a "text" list from an uploaded file', () => { - selectValueListType('text'); - selectValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); - uploadValueList(); + it('creates a "text" list from an uploaded file', () => { + selectValueListType('text'); + selectValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); + uploadValueList(); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.TEXT); - expect($row.text()).to.contain('Text'); - }); - }); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.TEXT); + expect($row.text()).to.contain('Text'); + }); + }); - it('creates a "ip" list from an uploaded file', () => { - selectValueListType('ip'); - selectValueListsFile(KNOWN_VALUE_LIST_FILES.IPs); - uploadValueList(); + it('creates a "ip" list from an uploaded file', () => { + selectValueListType('ip'); + selectValueListsFile(KNOWN_VALUE_LIST_FILES.IPs); + uploadValueList(); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.IPs); - expect($row.text()).to.contain('IP addresses'); - }); - }); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.IPs); + expect($row.text()).to.contain('IP addresses'); + }); + }); - it('creates a "ip_range" list from an uploaded file', () => { - selectValueListType('ip_range'); - selectValueListsFile(KNOWN_VALUE_LIST_FILES.CIDRs); - uploadValueList(); + it('creates a "ip_range" list from an uploaded file', () => { + selectValueListType('ip_range'); + selectValueListsFile(KNOWN_VALUE_LIST_FILES.CIDRs); + uploadValueList(); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.CIDRs); - expect($row.text()).to.contain('IP ranges'); - }); - }); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).to.contain(KNOWN_VALUE_LIST_FILES.CIDRs); + expect($row.text()).to.contain('IP ranges'); + }); }); + }); - // TODO: https://github.com/elastic/kibana/issues/161539 - // Flaky in serverless tests - describe('delete list types', { tags: ['@brokenInServerless'] }, () => { - it('deletes a "keyword" list from an uploaded file', () => { - importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'keyword'); - openValueListsModal(); - deleteValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.TEXT); - }); - }); + describe('delete list types', () => { + it('deletes a "keyword" list from an uploaded file', () => { + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'keyword'); + openValueListsModal(); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.TEXT); + }); + }); - it('deletes a "text" list from an uploaded file', () => { - importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'text'); - openValueListsModal(); - deleteValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.TEXT); - }); - }); + it('deletes a "text" list from an uploaded file', () => { + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'text'); + openValueListsModal(); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.TEXT); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.TEXT); + }); + }); - it('deletes a "ip" from an uploaded file', () => { - importValueList(KNOWN_VALUE_LIST_FILES.IPs, 'ip'); - openValueListsModal(); - deleteValueListsFile(KNOWN_VALUE_LIST_FILES.IPs); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.IPs); - }); - }); + it('deletes a "ip" from an uploaded file', () => { + importValueList(KNOWN_VALUE_LIST_FILES.IPs, 'ip'); + openValueListsModal(); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.IPs); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.IPs); + }); + }); - it('deletes a "ip_range" from an uploaded file', () => { - importValueList(KNOWN_VALUE_LIST_FILES.CIDRs, 'ip_range', ['192.168.100.0']); - openValueListsModal(); - deleteValueListsFile(KNOWN_VALUE_LIST_FILES.CIDRs); - cy.get(VALUE_LISTS_TABLE) - .find(VALUE_LISTS_ROW) - .should(($row) => { - expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.CIDRs); - }); - }); + it('deletes a "ip_range" from an uploaded file', () => { + importValueList(KNOWN_VALUE_LIST_FILES.CIDRs, 'ip_range', ['192.168.100.0']); + openValueListsModal(); + deleteValueListsFile(KNOWN_VALUE_LIST_FILES.CIDRs); + cy.get(VALUE_LISTS_TABLE) + .find(VALUE_LISTS_ROW) + .should(($row) => { + expect($row.text()).not.to.contain(KNOWN_VALUE_LIST_FILES.CIDRs); + }); }); + }); - // TODO: https://github.com/elastic/kibana/issues/161539 - // Flaky in serverless tests - describe('export list types', { tags: ['@brokenInServerless'] }, () => { - it('exports a "keyword" list from an uploaded file', () => { - cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.TEXT}`).as( - 'exportList' - ); - importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'keyword'); + describe('export list types', () => { + it('exports a "keyword" list from an uploaded file', () => { + cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.TEXT}`).as( + 'exportList' + ); + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'keyword'); - // Importing value lists includes bulk creation of list items with refresh=wait_for - // While it should wait for data update and return after that it's not always a case with bulk operations. - // Sometimes list items are empty making this test flaky. - // To fix it refresh used list items index (for the default space) - refreshIndex('.items-default'); + // Importing value lists includes bulk creation of list items with refresh=wait_for + // While it should wait for data update and return after that it's not always a case with bulk operations. + // Sometimes list items are empty making this test flaky. + // To fix it refresh used list items index (for the default space) + refreshIndex('.items-default'); - openValueListsModal(); - exportValueList(); + openValueListsModal(); + exportValueList(); - cy.wait('@exportList').then(({ response }) => { - cy.fixture(KNOWN_VALUE_LIST_FILES.TEXT).then((list: string) => { - const [lineOne, lineTwo] = list.split('\n'); - expect(response?.body).to.contain(lineOne); - expect(response?.body).to.contain(lineTwo); - }); + cy.wait('@exportList').then(({ response }) => { + cy.fixture(KNOWN_VALUE_LIST_FILES.TEXT).then((list: string) => { + const [lineOne, lineTwo] = list.split('\n'); + expect(response?.body).to.contain(lineOne); + expect(response?.body).to.contain(lineTwo); }); }); + }); - it('exports a "text" list from an uploaded file', () => { - cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.TEXT}`).as( - 'exportList' - ); - importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'text'); + it('exports a "text" list from an uploaded file', () => { + cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.TEXT}`).as( + 'exportList' + ); + importValueList(KNOWN_VALUE_LIST_FILES.TEXT, 'text'); - // Importing value lists includes bulk creation of list items with refresh=wait_for - // While it should wait for data update and return after that it's not always a case with bulk operations. - // Sometimes list items are empty making this test flaky. - // To fix it refresh used list items index (for the default space) - refreshIndex('.items-default'); + // Importing value lists includes bulk creation of list items with refresh=wait_for + // While it should wait for data update and return after that it's not always a case with bulk operations. + // Sometimes list items are empty making this test flaky. + // To fix it refresh used list items index (for the default space) + refreshIndex('.items-default'); - openValueListsModal(); - exportValueList(); + openValueListsModal(); + exportValueList(); - cy.wait('@exportList').then(({ response }) => { - cy.fixture(KNOWN_VALUE_LIST_FILES.TEXT).then((list: string) => { - const [lineOne, lineTwo] = list.split('\n'); - expect(response?.body).to.contain(lineOne); - expect(response?.body).to.contain(lineTwo); - }); + cy.wait('@exportList').then(({ response }) => { + cy.fixture(KNOWN_VALUE_LIST_FILES.TEXT).then((list: string) => { + const [lineOne, lineTwo] = list.split('\n'); + expect(response?.body).to.contain(lineOne); + expect(response?.body).to.contain(lineTwo); }); }); + }); - it('exports a "ip" list from an uploaded file', () => { - cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.IPs}`).as( - 'exportList' - ); - importValueList(KNOWN_VALUE_LIST_FILES.IPs, 'ip'); + it('exports a "ip" list from an uploaded file', () => { + cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.IPs}`).as( + 'exportList' + ); + importValueList(KNOWN_VALUE_LIST_FILES.IPs, 'ip'); - // Importing value lists includes bulk creation of list items with refresh=wait_for - // While it should wait for data update and return after that it's not always a case with bulk operations. - // Sometimes list items are empty making this test flaky. - // To fix it refresh used list items index (for the default space) - refreshIndex('.items-default'); + // Importing value lists includes bulk creation of list items with refresh=wait_for + // While it should wait for data update and return after that it's not always a case with bulk operations. + // Sometimes list items are empty making this test flaky. + // To fix it refresh used list items index (for the default space) + refreshIndex('.items-default'); - openValueListsModal(); - exportValueList(); - cy.wait('@exportList').then(({ response }) => { - cy.fixture(KNOWN_VALUE_LIST_FILES.IPs).then((list: string) => { - const [lineOne, lineTwo] = list.split('\n'); - expect(response?.body).to.contain(lineOne); - expect(response?.body).to.contain(lineTwo); - }); + openValueListsModal(); + exportValueList(); + cy.wait('@exportList').then(({ response }) => { + cy.fixture(KNOWN_VALUE_LIST_FILES.IPs).then((list: string) => { + const [lineOne, lineTwo] = list.split('\n'); + expect(response?.body).to.contain(lineOne); + expect(response?.body).to.contain(lineTwo); }); }); + }); - it('exports a "ip_range" list from an uploaded file', () => { - cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.CIDRs}`).as( - 'exportList' - ); - importValueList(KNOWN_VALUE_LIST_FILES.CIDRs, 'ip_range', ['192.168.100.0']); + it('exports a "ip_range" list from an uploaded file', () => { + cy.intercept('POST', `/api/lists/items/_export?list_id=${KNOWN_VALUE_LIST_FILES.CIDRs}`).as( + 'exportList' + ); + importValueList(KNOWN_VALUE_LIST_FILES.CIDRs, 'ip_range', ['192.168.100.0']); - // Importing value lists includes bulk creation of list items with refresh=wait_for - // While it should wait for data update and return after that it's not always a case with bulk operations. - // Sometimes list items are empty making this test flaky. - // To fix it refresh used list items index (for the default space) - refreshIndex('.items-default'); + // Importing value lists includes bulk creation of list items with refresh=wait_for + // While it should wait for data update and return after that it's not always a case with bulk operations. + // Sometimes list items are empty making this test flaky. + // To fix it refresh used list items index (for the default space) + refreshIndex('.items-default'); - openValueListsModal(); - exportValueList(); - cy.wait('@exportList').then(({ response }) => { - cy.fixture(KNOWN_VALUE_LIST_FILES.CIDRs).then((list: string) => { - const [lineOne] = list.split('\n'); - expect(response?.body).to.contain(lineOne); - }); + openValueListsModal(); + exportValueList(); + cy.wait('@exportList').then(({ response }) => { + cy.fixture(KNOWN_VALUE_LIST_FILES.CIDRs).then((list: string) => { + const [lineOne] = list.split('\n'); + expect(response?.body).to.contain(lineOne); }); }); }); }); - - // TODO: https://github.com/elastic/kibana/issues/164451 We should find a way to make this spec work in Serverless - // TODO: https://github.com/elastic/kibana/issues/161539 - describe( - 'user with restricted access role', - { tags: ['@ess', '@serverless', '@skipInServerless'] }, - () => { - it('Does not allow a t1 analyst user to upload a value list', () => { - login(ROLES.t1_analyst); - visit(RULES_MANAGEMENT_URL, { role: ROLES.t1_analyst }); - cy.get(VALUE_LISTS_MODAL_ACTIVATOR).should('have.attr', 'disabled'); - }); - } - ); }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/enrichments.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/enrichments.cy.ts similarity index 100% rename from x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/enrichments.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/enrichments.cy.ts diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_charts.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_charts.cy.ts similarity index 79% rename from x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_charts.cy.ts rename to x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_charts.cy.ts index f5055f7c8770c..86dd58889a0a8 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_alerts/alerts_charts.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/alerts_charts.cy.ts @@ -5,25 +5,25 @@ * 2.0. */ -import { getNewRule } from '../../objects/rule'; -import { ALERTS_COUNT } from '../../screens/alerts'; +import { getNewRule } from '../../../objects/rule'; +import { ALERTS_COUNT } from '../../../screens/alerts'; import { clickAlertsHistogramLegend, clickAlertsHistogramLegendAddToTimeline, clickAlertsHistogramLegendFilterFor, clickAlertsHistogramLegendFilterOut, selectAlertsHistogram, -} from '../../tasks/alerts'; -import { createRule } from '../../tasks/api_calls/rules'; -import { cleanKibana } from '../../tasks/common'; -import { login } from '../../tasks/login'; -import { visitWithTimeRange } from '../../tasks/navigation'; -import { ALERTS_URL } from '../../urls/navigation'; +} from '../../../tasks/alerts'; +import { createRule } from '../../../tasks/api_calls/rules'; +import { cleanKibana } from '../../../tasks/common'; +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; +import { ALERTS_URL } from '../../../urls/navigation'; import { GLOBAL_SEARCH_BAR_FILTER_ITEM, GLOBAL_SEARCH_BAR_FILTER_ITEM_DELETE, -} from '../../screens/search_bar'; -import { TOASTER } from '../../screens/alerts_detection_rules'; +} from '../../../screens/search_bar'; +import { TOASTER } from '../../../screens/alerts_detection_rules'; // TODO: https://github.com/elastic/kibana/issues/161539 describe( diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_detection.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_detection.cy.ts new file mode 100644 index 0000000000000..bc0e3469b9c7e --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_detection.cy.ts @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; + +import { ALERTS_URL, TIMELINES_URL } from '../../../urls/navigation'; +import { ALERTS_HISTOGRAM_SERIES, ALERT_RULE_NAME, MESSAGE } from '../../../screens/alerts'; +import { TIMELINE_QUERY, TIMELINE_VIEW_IN_ANALYZER } from '../../../screens/timeline'; +import { selectAlertsHistogram } from '../../../tasks/alerts'; +import { createTimeline } from '../../../tasks/timelines'; + +describe('Ransomware Detection Alerts', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cy.task('esArchiverLoad', { + archiveName: 'ransomware_detection', + useCreate: true, + docsOnly: true, + }); + }); + + describe('Ransomware display in Alerts Section', () => { + beforeEach(() => { + login(); + visitWithTimeRange(ALERTS_URL); + waitForAlertsToPopulate(); + }); + + describe('Alerts table', () => { + it('shows Ransomware Alerts', () => { + cy.get(ALERT_RULE_NAME).should('have.text', 'Ransomware Detection Alert'); + }); + }); + + describe('Trend Chart', () => { + beforeEach(() => { + selectAlertsHistogram(); + }); + + it('shows Ransomware Detection Alert in the trend chart', () => { + cy.get(ALERTS_HISTOGRAM_SERIES).should('have.text', 'Ransomware Detection Alert'); + }); + }); + }); + + // FLAKY: https://github.com/elastic/kibana/issues/168602 + describe.skip('Ransomware in Timelines', () => { + before(() => { + login(); + visitWithTimeRange(TIMELINES_URL); + createTimeline(); + }); + + it('Renders ransomware entries in timelines table', () => { + cy.get(TIMELINE_QUERY).type('event.code: "ransomware"{enter}'); + + // Wait for grid to load, it should have an analyzer icon + cy.get(TIMELINE_VIEW_IN_ANALYZER).should('exist'); + + cy.get(MESSAGE).should('have.text', 'Ransomware Detection Alert'); + }); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_prevention.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_prevention.cy.ts new file mode 100644 index 0000000000000..f3fc88f6518ac --- /dev/null +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/ransomware_prevention.cy.ts @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { waitForAlertsToPopulate } from '../../../tasks/create_new_rule'; +import { login } from '../../../tasks/login'; +import { visitWithTimeRange } from '../../../tasks/navigation'; + +import { ALERTS_URL, TIMELINES_URL } from '../../../urls/navigation'; +import { ALERTS_HISTOGRAM_SERIES, ALERT_RULE_NAME, MESSAGE } from '../../../screens/alerts'; +import { TIMELINE_QUERY, TIMELINE_VIEW_IN_ANALYZER } from '../../../screens/timeline'; +import { selectAlertsHistogram } from '../../../tasks/alerts'; +import { createTimeline } from '../../../tasks/timelines'; +import { cleanKibana } from '../../../tasks/common'; + +describe('Ransomware Prevention Alerts', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cleanKibana(); + cy.task('esArchiverLoad', { + archiveName: 'ransomware_prevention', + useCreate: true, + docsOnly: true, + }); + }); + + after(() => { + cy.task('esArchiverUnload', 'ransomware_prevention'); + }); + + describe('Ransomware display in Alerts Section', () => { + beforeEach(() => { + login(); + visitWithTimeRange(ALERTS_URL); + waitForAlertsToPopulate(); + }); + + describe('Alerts table', () => { + it('shows Ransomware Alerts', () => { + cy.get(ALERT_RULE_NAME).should('have.text', 'Ransomware Prevention Alert'); + }); + }); + + describe('Trend Chart', () => { + beforeEach(() => { + selectAlertsHistogram(); + }); + + it('shows Ransomware Prevention Alert in the trend chart', () => { + cy.get(ALERTS_HISTOGRAM_SERIES).should('have.text', 'Ransomware Prevention Alert'); + }); + }); + }); + + describe('Ransomware in Timelines', () => { + beforeEach(() => { + login(); + visitWithTimeRange(TIMELINES_URL); + + createTimeline(); + }); + + it('Renders ransomware entries in timelines table', () => { + cy.get(TIMELINE_QUERY).type('event.code: "ransomware"{enter}'); + + // Wait for grid to load, it should have an analyzer icon + cy.get(TIMELINE_VIEW_IN_ANALYZER).should('exist'); + + cy.get(MESSAGE).should('have.text', 'Ransomware Prevention Alert'); + }); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/alerts.ts b/x-pack/test/security_solution_cypress/cypress/tasks/alerts.ts index 1bbdc9eac1539..4950f2c65fab2 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/alerts.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/alerts.ts @@ -304,6 +304,12 @@ export const goToAcknowledgedAlerts = () => { cy.get(TIMELINE_COLUMN_SPINNER).should('not.exist'); }; +export const markAlertsAcknowledged = () => { + cy.get(TAKE_ACTION_POPOVER_BTN).click({ force: true }); + cy.get(MARK_ALERT_ACKNOWLEDGED_BTN).should('be.visible'); + cy.get(MARK_ALERT_ACKNOWLEDGED_BTN).click(); +}; + export const markAcknowledgedFirstAlert = () => { expandFirstAlertActions(); cy.get(MARK_ALERT_ACKNOWLEDGED_BTN).should('be.visible'); From 530cdf187ae1202d2e7a142737e64c139556d7ef Mon Sep 17 00:00:00 2001 From: Zacqary Adam Xeper Date: Fri, 13 Oct 2023 14:47:31 -0500 Subject: [PATCH 36/80] [RAM] Remove restriction on setting a start time in the past on Snooze Scheduler UI (#168160) ## Summary Closes #167176 Sets the minimum date in the snooze scheduler datepicker to the current date at `00:00`. This is useful especially when the user is trying to create a recurring schedule that starts today, and should start at a time earlier than the current time on future occurrences. --- .../rules_list/components/rule_snooze/scheduler.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_snooze/scheduler.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_snooze/scheduler.tsx index 488140660f4ea..97c8065c18f21 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_snooze/scheduler.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_snooze/scheduler.tsx @@ -121,7 +121,15 @@ const RuleSnoozeSchedulerPanel: React.FunctionComponent = ({ const minDate = useMemo( // If the initial schedule is earlier than now, set minDate to it // Set minDate to now if the initial schedule is in the future - () => moment.min(moment(), moment(initialSchedule?.rRule.dtstart ?? undefined)), + () => + moment + .min(moment(), moment(initialSchedule?.rRule.dtstart ?? undefined)) + // Allow the time on minDate to be earlier than the current time + // This is useful especially when the user is trying to create a recurring schedule + // that starts today, and should start at a time earlier than the current time on future + // occurrences + .hour(0) + .minute(0), [initialSchedule] ); From 1a5c0ad3ce1bfe037c7251177395367bdc99dc63 Mon Sep 17 00:00:00 2001 From: Rodney Norris Date: Fri, 13 Oct 2023 15:37:02 -0500 Subject: [PATCH 37/80] [Serverless Search] test: improve svl search telemtry ftr (#168852) ## Summary When running these test yesterday this test was always failing, so I updated the telemetry config tests to be robust enough to pass on N runs. The current test will only pass on the 1st run since we update the labels in the 2nd test. --- .../search/telemetry/telemetry_config.ts | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/x-pack/test_serverless/api_integration/test_suites/search/telemetry/telemetry_config.ts b/x-pack/test_serverless/api_integration/test_suites/search/telemetry/telemetry_config.ts index 8df4bae9df5a0..ad523c6be982f 100644 --- a/x-pack/test_serverless/api_integration/test_suites/search/telemetry/telemetry_config.ts +++ b/x-pack/test_serverless/api_integration/test_suites/search/telemetry/telemetry_config.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { expect } from 'expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default function telemetryConfigTest({ getService }: FtrProviderContext) { @@ -23,30 +24,34 @@ export default function telemetryConfigTest({ getService }: FtrProviderContext) }; it('GET should get the default config', async () => { - await supertest + const { body } = await supertest .get('/api/telemetry/v2/config') .set(svlCommonApi.getCommonRequestHeader()) - .expect(200, baseConfig); + .expect(200); + + expect(body).toMatchObject(baseConfig); }); it('GET should get updated labels after dynamically updating them', async () => { + const uniqueJourneyName = `my-ftr-test-${new Date().getMilliseconds()}`; await supertest .put('/internal/core/_settings') .set(svlCommonApi.getInternalRequestHeader()) .set('elastic-api-version', '1') - .send({ 'telemetry.labels.journeyName': 'my-ftr-test' }) + .send({ 'telemetry.labels.journeyName': uniqueJourneyName }) .expect(200, { ok: true }); - await supertest + const { body } = await supertest .get('/api/telemetry/v2/config') .set(svlCommonApi.getCommonRequestHeader()) - .expect(200, { - ...baseConfig, - labels: { - ...baseConfig.labels, - journeyName: 'my-ftr-test', - }, - }); + .expect(200); + expect(body).toMatchObject({ + ...baseConfig, + labels: { + ...baseConfig.labels, + journeyName: uniqueJourneyName, + }, + }); }); }); } From bd3c83e34c075b835e84282ec6f30f801ac4c8cb Mon Sep 17 00:00:00 2001 From: Saarika Bhasi <55930906+saarikabhasi@users.noreply.github.com> Date: Fri, 13 Oct 2023 16:53:20 -0400 Subject: [PATCH 38/80] [Serverless Search] Consolidate Console and Search profiler, rename to dev tools (#168857) ## Summary This PR Consolidates `Console` and `Search profiler` to one tab as `Dev tools` ## Screen recording https://github.com/elastic/kibana/assets/55930906/f6b2cb0f-f27c-43f2-9151-09875673a115 --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- x-pack/plugins/serverless_search/public/layout/nav.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/serverless_search/public/layout/nav.tsx b/x-pack/plugins/serverless_search/public/layout/nav.tsx index b6f1cdbaa56ff..d35b8c4c2983c 100644 --- a/x-pack/plugins/serverless_search/public/layout/nav.tsx +++ b/x-pack/plugins/serverless_search/public/layout/nav.tsx @@ -42,10 +42,11 @@ const navigationTree: NavigationTreeDefinition = { title: i18n.translate('xpack.serverlessSearch.nav.devTools', { defaultMessage: 'Dev Tools', }), - isGroupTitle: true, + link: 'dev_tools:console', + getIsActive: ({ pathNameSerialized, prepend }) => { + return pathNameSerialized.startsWith(prepend('/app/dev_tools')); + }, }, - { link: 'dev_tools:console' }, - { link: 'dev_tools:searchprofiler' }, { id: 'explore', title: i18n.translate('xpack.serverlessSearch.nav.explore', { From c83f5db5ad618c4aec3b7dde6471e537c3b98606 Mon Sep 17 00:00:00 2001 From: Katerina Date: Fri, 13 Oct 2023 23:57:50 +0300 Subject: [PATCH 39/80] [APM] Modify `has_any_service` telemetry (#166925) # Summary fixes https://github.com/elastic/observability-bi/issues/65 ## Context Observability-bi uses the [signal](https://docs.elastic.dev/observability-bi/observability-marker#signals) `has_apm_services` based on the telemetry field `has_any_services` to determine whether a cluster has documents for at least one APM service for the given day. ## Problem Previously we determined if the cluster has any service by checking ONLY the officially supported agents. There might be cases where the cluster has agents that are not on the agent's list. Leading to the wrong result. Modified to check if there is any document with the field `service.name` and added `has_any_services_per_official_agent` to track the official agent's services ### Side effects Modifying `has_any_service` telemetry (most likely) will increase the metrics using this field. --------- Co-authored-by: Achyut Jhunjhunwala --- .../__snapshots__/apm_telemetry.test.ts.snap | 8 ++++- .../collect_data_telemetry/tasks.ts | 31 ++++++++++++++++++- .../apm/server/lib/apm_telemetry/schema.ts | 9 +++++- .../apm/server/lib/apm_telemetry/types.ts | 1 + .../schema/xpack_plugins.json | 8 ++++- 5 files changed, 53 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap b/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap index f8e220ca97946..79ecdc077ea6f 100644 --- a/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap +++ b/x-pack/plugins/apm/common/__snapshots__/apm_telemetry.test.ts.snap @@ -1153,10 +1153,16 @@ exports[`APM telemetry helpers getApmTelemetry generates a JSON object with the } } }, + "has_any_services_per_official_agent": { + "type": "boolean", + "_meta": { + "description": "Indicates whether any service is being monitored. This is determined by checking all officially supported agents within the last day" + } + }, "has_any_services": { "type": "boolean", "_meta": { - "description": "Indicates whether any service is being monitored. This is determined by checking all agents within the last day" + "description": "Indicates whether any service is being monitored within the last day." } }, "version": { diff --git a/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts b/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts index 1ae9b5752a1c8..c024a8bb0b752 100644 --- a/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts +++ b/x-pack/plugins/apm/server/lib/apm_telemetry/collect_data_telemetry/tasks.ts @@ -678,8 +678,37 @@ export const tasks: TelemetryTask[] = [ Promise.resolve({} as Record) ); + const services = await telemetryClient.search({ + index: [ + indices.error, + indices.span, + indices.metric, + indices.transaction, + ], + body: { + size: 0, + track_total_hits: true, + terminate_after: 1, + query: { + bool: { + filter: [ + { + exists: { + field: SERVICE_NAME, + }, + }, + range1d, + ], + }, + }, + timeout, + }, + }); + return { - has_any_services: sum(Object.values(servicesPerAgent)) > 0, + has_any_services_per_official_agent: + sum(Object.values(servicesPerAgent)) > 0, + has_any_services: services?.hits?.total?.value > 0, services_per_agent: servicesPerAgent, }; }, diff --git a/x-pack/plugins/apm/server/lib/apm_telemetry/schema.ts b/x-pack/plugins/apm/server/lib/apm_telemetry/schema.ts index 59f8c1f7097e7..e52be12ca5c36 100644 --- a/x-pack/plugins/apm/server/lib/apm_telemetry/schema.ts +++ b/x-pack/plugins/apm/server/lib/apm_telemetry/schema.ts @@ -567,11 +567,18 @@ export const apmPerServiceSchema: MakeSchemaFrom = { export const apmSchema: MakeSchemaFrom = { ...apmPerAgentSchema, + has_any_services_per_official_agent: { + type: 'boolean', + _meta: { + description: + 'Indicates whether any service is being monitored. This is determined by checking all officially supported agents within the last day', + }, + }, has_any_services: { type: 'boolean', _meta: { description: - 'Indicates whether any service is being monitored. This is determined by checking all agents within the last day', + 'Indicates whether any service is being monitored within the last day.', }, }, version: { diff --git a/x-pack/plugins/apm/server/lib/apm_telemetry/types.ts b/x-pack/plugins/apm/server/lib/apm_telemetry/types.ts index 11e181f552b47..fc6cfe8d3ee47 100644 --- a/x-pack/plugins/apm/server/lib/apm_telemetry/types.ts +++ b/x-pack/plugins/apm/server/lib/apm_telemetry/types.ts @@ -70,6 +70,7 @@ export interface APMPerService { } export interface APMUsage { + has_any_services_per_official_agent: boolean; has_any_services: boolean; services_per_agent: Record; version: { diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json index 69002ce27c593..abc8827e31ef7 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -4230,10 +4230,16 @@ } } }, + "has_any_services_per_official_agent": { + "type": "boolean", + "_meta": { + "description": "Indicates whether any service is being monitored. This is determined by checking all officially supported agents within the last day" + } + }, "has_any_services": { "type": "boolean", "_meta": { - "description": "Indicates whether any service is being monitored. This is determined by checking all agents within the last day" + "description": "Indicates whether any service is being monitored within the last day." } }, "version": { From 1c2df62494c2710c96be487595350f73053d5600 Mon Sep 17 00:00:00 2001 From: Devon Thomson Date: Fri, 13 Oct 2023 17:29:38 -0400 Subject: [PATCH 40/80] Re-word partial data message (#168883) Re-words the partial data message to remove the word "wrong". Co-authored-by: nreese --- src/plugins/data/public/search/search_service.test.ts | 2 +- .../data/public/search/warnings/extract_warnings.test.ts | 8 ++++---- .../data/public/search/warnings/extract_warnings.ts | 2 +- test/examples/search/warnings.ts | 4 ++-- .../functional/apps/discover/async_scripted_fields.js | 2 +- .../test_suites/common/examples/search/warnings.ts | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/plugins/data/public/search/search_service.test.ts b/src/plugins/data/public/search/search_service.test.ts index 5f9e57d05fe6b..69afad8d9b079 100644 --- a/src/plugins/data/public/search/search_service.test.ts +++ b/src/plugins/data/public/search/search_service.test.ts @@ -143,7 +143,7 @@ describe('Search service', () => { expect(notifications.toasts.addWarning).toBeCalledTimes(1); expect(notifications.toasts.addWarning).toBeCalledWith({ - title: 'The data might be incomplete or wrong.', + title: 'Results are partial and may be incomplete.', text: expect.any(Function), }); }); diff --git a/src/plugins/data/public/search/warnings/extract_warnings.test.ts b/src/plugins/data/public/search/warnings/extract_warnings.test.ts index 6a5fc046dc5d3..02e235d897dc7 100644 --- a/src/plugins/data/public/search/warnings/extract_warnings.test.ts +++ b/src/plugins/data/public/search/warnings/extract_warnings.test.ts @@ -43,7 +43,7 @@ describe('extract search response warnings', () => { expect(extractWarnings(response, mockInspectorService)).toEqual([ { type: 'incomplete', - message: 'The data might be incomplete or wrong.', + message: 'Results are partial and may be incomplete.', clusters: { '(local)': { status: 'partial', @@ -69,7 +69,7 @@ describe('extract search response warnings', () => { expect(extractWarnings(response, mockInspectorService)).toEqual([ { type: 'incomplete', - message: 'The data might be incomplete or wrong.', + message: 'Results are partial and may be incomplete.', clusters: { '(local)': { status: 'partial', @@ -188,7 +188,7 @@ describe('extract search response warnings', () => { expect(extractWarnings(response, mockInspectorService)).toEqual([ { type: 'incomplete', - message: 'The data might be incomplete or wrong.', + message: 'Results are partial and may be incomplete.', clusters: response._clusters.details, openInInspector: expect.any(Function), }, @@ -242,7 +242,7 @@ describe('extract search response warnings', () => { expect(extractWarnings(response, mockInspectorService)).toEqual([ { type: 'incomplete', - message: 'The data might be incomplete or wrong.', + message: 'Results are partial and may be incomplete.', clusters: response._clusters.details, openInInspector: expect.any(Function), }, diff --git a/src/plugins/data/public/search/warnings/extract_warnings.ts b/src/plugins/data/public/search/warnings/extract_warnings.ts index 2a6a9df484036..15b77dd5d0248 100644 --- a/src/plugins/data/public/search/warnings/extract_warnings.ts +++ b/src/plugins/data/public/search/warnings/extract_warnings.ts @@ -37,7 +37,7 @@ export function extractWarnings( warnings.push({ type: 'incomplete', message: i18n.translate('data.search.searchSource.fetch.incompleteResultsMessage', { - defaultMessage: 'The data might be incomplete or wrong.', + defaultMessage: 'Results are partial and may be incomplete.', }), clusters: rawResponse._clusters ? ( diff --git a/test/examples/search/warnings.ts b/test/examples/search/warnings.ts index b8fcd5d63564b..267a49de08bc7 100644 --- a/test/examples/search/warnings.ts +++ b/test/examples/search/warnings.ts @@ -107,7 +107,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await retry.try(async () => { const toasts = await find.allByCssSelector(toastsSelector); expect(toasts.length).to.be(2); - const expects = ['The data might be incomplete or wrong.', 'Query result']; + const expects = ['Results are partial and may be incomplete.', 'Query result']; await asyncForEach(toasts, async (t, index) => { expect(await t.getVisibleText()).to.eql(expects[index]); }); @@ -164,7 +164,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await retry.try(async () => { toasts = await find.allByCssSelector(toastsSelector); expect(toasts.length).to.be(2); - const expects = ['The data might be incomplete or wrong.', 'Query result']; + const expects = ['Results are partial and may be incomplete.', 'Query result']; await asyncForEach(toasts, async (t, index) => { expect(await t.getVisibleText()).to.eql(expects[index]); }); diff --git a/x-pack/test/functional/apps/discover/async_scripted_fields.js b/x-pack/test/functional/apps/discover/async_scripted_fields.js index f5143e5fcc084..5810830aec3a6 100644 --- a/x-pack/test/functional/apps/discover/async_scripted_fields.js +++ b/x-pack/test/functional/apps/discover/async_scripted_fields.js @@ -81,7 +81,7 @@ export default function ({ getService, getPageObjects }) { 'dscNoResultsInterceptedWarningsCallout_warningTitle' ); log.debug(shardMessage); - expect(shardMessage).to.be('The data might be incomplete or wrong.'); + expect(shardMessage).to.be('Results are partial and may be incomplete.'); }); }); diff --git a/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts b/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts index 694d1ed335c22..ff24321f11348 100644 --- a/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts +++ b/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts @@ -107,7 +107,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await retry.try(async () => { const toasts = await find.allByCssSelector(toastsSelector); expect(toasts.length).to.be(2); - const expects = ['The data might be incomplete or wrong.', 'Query result']; + const expects = ['Results are partial and may be incomplete.', 'Query result']; await asyncForEach(toasts, async (t, index) => { expect(await t.getVisibleText()).to.eql(expects[index]); }); @@ -164,7 +164,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await retry.try(async () => { toasts = await find.allByCssSelector(toastsSelector); expect(toasts.length).to.be(2); - const expects = ['The data might be incomplete or wrong.', 'Query result']; + const expects = ['Results are partial and may be incomplete.', 'Query result']; await asyncForEach(toasts, async (t, index) => { expect(await t.getVisibleText()).to.eql(expects[index]); }); From 50c59afe4b970f04b536032d1220f84d6f278bfc Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Fri, 13 Oct 2023 22:38:48 +0100 Subject: [PATCH 41/80] skip flaky suite (#168340) --- .../automated_response_actions.cy.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts index 4186317a18e26..6f337adfc35fa 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts @@ -20,7 +20,8 @@ import { createEndpointHost } from '../../tasks/create_endpoint_host'; import { deleteAllLoadedEndpointData } from '../../tasks/delete_all_endpoint_data'; import { enableAllPolicyProtections } from '../../tasks/endpoint_policy'; -describe( +// FLAKY: https://github.com/elastic/kibana/issues/168340 +describe.skip( 'Automated Response Actions', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { From 492a0746afee8264678f455f05685f777158841b Mon Sep 17 00:00:00 2001 From: Luke Elmers Date: Fri, 13 Oct 2023 16:17:22 -0600 Subject: [PATCH 42/80] Allow security solution QA QGs to soft fail. (#168898) Security solution's serverless QA quality gates which were added in https://github.com/elastic/kibana/pull/167494 are failing when trying to run cypress tests. I've marked them to soft fail here so we can unblock the serverless release pipeline. cc @watson @elastic/kibana-operations @MadameSheema @charlie-pichette @YulNaumenko --- .buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml index 979862596ae5b..991bbcff24f45 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml @@ -15,6 +15,7 @@ steps: - group: ":female-detective: Security Solution Tests" key: "security" + soft_fail: true # Remove this when tests are fixed steps: - label: ":pipeline::female-detective::seedling: Trigger Security Solution quality gate script" command: .buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh From 14a6e8928bba69f5b522105905d0b367ab5c7c45 Mon Sep 17 00:00:00 2001 From: Luke Elmers Date: Fri, 13 Oct 2023 16:42:07 -0600 Subject: [PATCH 43/80] Relocate security solution QG soft fail to the correct place. (#168901) In https://github.com/elastic/kibana/pull/168898, the `soft_fail` for the security solution quality gate was accidentally added to the wrong spot in the pipeline config. This fixes it per the [buildkite docs](https://buildkite.com/docs/pipelines/command-step#soft-fail-attributes). --- .buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml index 991bbcff24f45..c4545b6ecfaed 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml @@ -15,10 +15,10 @@ steps: - group: ":female-detective: Security Solution Tests" key: "security" - soft_fail: true # Remove this when tests are fixed steps: - label: ":pipeline::female-detective::seedling: Trigger Security Solution quality gate script" command: .buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh + soft_fail: true # Remove this when tests are fixed - label: ":pipeline::ship::seedling: Trigger Fleet serverless smoke tests for ${ENVIRONMENT}" trigger: fleet-smoke-tests # https://buildkite.com/elastic/fleet-smoke-tests From fe7afbbcb3e69eff40309396168ea5849c7d9885 Mon Sep 17 00:00:00 2001 From: Rickyanto Ang Date: Fri, 13 Oct 2023 18:09:17 -0700 Subject: [PATCH 44/80] [Cloud Security][FTR] FTRs for GCP Single account (#168773) ## Summary This PR is for GCP Single Account related FTRs --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../fleet_extensions/gcp_credential_form.tsx | 2 + .../add_cis_integration_form_page.ts | 27 ++++++- .../pages/cis_integration.ts | 72 +++++++++++++++++++ 3 files changed, 99 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credential_form.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credential_form.tsx index a1d280f58c7a6..909eb029f5e98 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credential_form.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credential_form.tsx @@ -177,12 +177,14 @@ const credentialOptionsList = [ defaultMessage: 'Credentials File', }), value: 'credentials-file', + 'data-test-subj': 'credentials_file_option_test_id', }, { text: i18n.translate('xpack.csp.gcpIntegration.credentialsJsonOption', { defaultMessage: 'Credentials JSON', }), value: 'credentials-json', + 'data-test-subj': 'credentials_json_option_test_id', }, ]; diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/add_cis_integration_form_page.ts b/x-pack/test/cloud_security_posture_functional/page_objects/add_cis_integration_form_page.ts index 924a2ae6c0dca..795c2edb62dd4 100644 --- a/x-pack/test/cloud_security_posture_functional/page_objects/add_cis_integration_form_page.ts +++ b/x-pack/test/cloud_security_posture_functional/page_objects/add_cis_integration_form_page.ts @@ -62,8 +62,23 @@ export function AddCisIntegrationFormPageProvider({ }, fillInTextField: async (selector: string, text: string) => { - const test = await testSubjects.find(selector); - await test.type(text); + const textField = await testSubjects.find(selector); + await textField.type(text); + }, + + chooseDropDown: async (selector: string, text: string) => { + const credentialTypeBox = await testSubjects.find(selector); + const chosenOption = await testSubjects.find(text); + await credentialTypeBox.click(); + await chosenOption.click(); + }, + + getFieldValueInEditPage: async (field: string) => { + /* Newly added/edited integration always shows up on top by default as such we can just always click the most top if we want to check for the latest one */ + const integrationList = await testSubjects.findAll('integrationNameLink'); + await integrationList[0].click(); + const fieldValue = await (await testSubjects.find(field)).getAttribute('value'); + return fieldValue; }, }; @@ -75,8 +90,16 @@ export function AddCisIntegrationFormPageProvider({ ); }; + const navigateToIntegrationCspList = async () => { + await PageObjects.common.navigateToActualUrl( + 'integrations', // Defined in Security Solution plugin + '/detail/cloud_security_posture/policies' + ); + }; + return { cisGcp, navigateToAddIntegrationCspmPage, + navigateToIntegrationCspList, }; } diff --git a/x-pack/test/cloud_security_posture_functional/pages/cis_integration.ts b/x-pack/test/cloud_security_posture_functional/pages/cis_integration.ts index 5935fc49b06a0..20f85163521a7 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/cis_integration.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/cis_integration.ts @@ -16,6 +16,8 @@ const GCP_MANUAL_TEST_ID = 'gcpManualOptionTestId'; const PRJ_ID_TEST_ID = 'project_id_test_id'; const ORG_ID_TEST_ID = 'organization_id_test_id'; const CREDENTIALS_TYPE_TEST_ID = 'credentials_type_test_id'; +const CREDENTIALS_FILE_TEST_ID = 'credentials_file_test_id'; +const CREDENTIALS_JSON_TEST_ID = 'credentials_json_test_id'; // eslint-disable-next-line import/no-default-export export default function (providerContext: FtrProviderContext) { @@ -103,5 +105,75 @@ export default function (providerContext: FtrProviderContext) { ); }); }); + + describe('CIS_GCP Single', () => { + it('Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are no Project ID, it should use default value', async () => { + await cisIntegrationGcp.clickOptionButton(CIS_GCP_OPTION_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_SINGLE_ACCOUNT_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_CLOUD_SHELL_TEST_ID); + await cisIntegrationGcp.clickSaveButton(); + pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegrationGcp.isPostInstallGoogleCloudShellModal(false)) === true).to.be( + true + ); + }); + + it('Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are Project ID, it should use that value', async () => { + const projectName = 'PRJ_NAME_TEST'; + await cisIntegrationGcp.clickOptionButton(CIS_GCP_OPTION_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_SINGLE_ACCOUNT_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_CLOUD_SHELL_TEST_ID); + await cisIntegrationGcp.fillInTextField('project_id_test_id', projectName); + + await cisIntegrationGcp.clickSaveButton(); + pageObjects.header.waitUntilLoadingHasFinished(); + expect( + (await cisIntegrationGcp.isPostInstallGoogleCloudShellModal(false, '', projectName)) === + true + ).to.be(true); + }); + + it('Users are able to add CIS_GCP Integration with Manual settings using Credentials File', async () => { + const projectName = 'PRJ_NAME_TEST'; + const credentialFileName = 'CRED_FILE_TEST_NAME'; + await cisIntegrationGcp.clickOptionButton(CIS_GCP_OPTION_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_SINGLE_ACCOUNT_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_MANUAL_TEST_ID); + await cisIntegrationGcp.fillInTextField(PRJ_ID_TEST_ID, projectName); + await cisIntegrationGcp.fillInTextField(CREDENTIALS_FILE_TEST_ID, credentialFileName); + + await cisIntegrationGcp.clickSaveButton(); + pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegrationGcp.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + expect( + (await cisIntegrationGcp.getFieldValueInEditPage(CREDENTIALS_FILE_TEST_ID)) === + credentialFileName + ).to.be(true); + }); + + it('Users are able to add CIS_GCP Integration with Manual settings using Credentials JSON', async () => { + const projectName = 'PRJ_NAME_TEST'; + const credentialJsonName = 'CRED_JSON_TEST_NAME'; + await cisIntegrationGcp.clickOptionButton(CIS_GCP_OPTION_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_SINGLE_ACCOUNT_TEST_ID); + await cisIntegrationGcp.clickOptionButton(GCP_MANUAL_TEST_ID); + await cisIntegrationGcp.fillInTextField(PRJ_ID_TEST_ID, projectName); + await cisIntegrationGcp.chooseDropDown( + CREDENTIALS_TYPE_TEST_ID, + 'credentials_json_option_test_id' + ); + await cisIntegrationGcp.fillInTextField(CREDENTIALS_JSON_TEST_ID, credentialJsonName); + + await cisIntegrationGcp.clickSaveButton(); + pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegrationGcp.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + expect( + (await cisIntegrationGcp.getFieldValueInEditPage(CREDENTIALS_JSON_TEST_ID)) === + credentialJsonName + ).to.be(true); + }); + }); }); } From bab28dc95d8c39d966b8f7139973eb279aced4fa Mon Sep 17 00:00:00 2001 From: Drew Tate Date: Fri, 13 Oct 2023 20:57:26 -0600 Subject: [PATCH 45/80] Migrate `visualization`, `annotation`, `graph` to `saved_object_content_storage` (#168520) ## Summary Close #167421 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../src/saved_object_content_storage.ts | 14 +- .../common/content_management/index.ts | 1 + .../common/content_management/v1/index.ts | 1 + .../common/content_management/v1/types.ts | 11 + src/plugins/event_annotation/common/index.ts | 1 + .../event_annotation_group_storage.ts | 338 +---------------- src/plugins/event_annotation/server/index.ts | 5 +- src/plugins/event_annotation/server/plugin.ts | 9 +- src/plugins/event_annotation/tsconfig.json | 5 +- .../common/content_management/index.ts | 1 + .../common/content_management/v1/index.ts | 1 + .../common/content_management/v1/types.ts | 11 + .../visualization_storage.ts | 334 +---------------- src/plugins/visualizations/server/plugin.ts | 7 +- src/plugins/visualizations/tsconfig.json | 4 +- .../graph/common/content_management/index.ts | 1 + .../common/content_management/v1/index.ts | 1 + .../common/content_management/v1/types.ts | 11 + .../content_management/graph_storage.ts | 340 ++---------------- x-pack/plugins/graph/server/index.ts | 5 +- x-pack/plugins/graph/server/plugin.ts | 9 +- x-pack/plugins/graph/tsconfig.json | 3 +- 22 files changed, 143 insertions(+), 970 deletions(-) diff --git a/packages/kbn-content-management-utils/src/saved_object_content_storage.ts b/packages/kbn-content-management-utils/src/saved_object_content_storage.ts index 8ff22a0d9be02..070bb9cd5d739 100644 --- a/packages/kbn-content-management-utils/src/saved_object_content_storage.ts +++ b/packages/kbn-content-management-utils/src/saved_object_content_storage.ts @@ -129,7 +129,7 @@ export type UpdateArgsToSoUpdateOptions = ( params: Types['UpdateOptions'] ) => SavedObjectsUpdateOptions; -export interface SOContentStorageConstrutorParams { +export interface SOContentStorageConstructorParams { savedObjectType: string; cmServicesDefinition: ServicesDefinitionSet; // this is necessary since unexpected saved object attributes could cause schema validation to fail @@ -137,6 +137,12 @@ export interface SOContentStorageConstrutorParams { createArgsToSoCreateOptions?: CreateArgsToSoCreateOptions; updateArgsToSoUpdateOptions?: UpdateArgsToSoUpdateOptions; searchArgsToSOFindOptions?: SearchArgsToSOFindOptions; + /** + * MSearch is a feature that allows searching across multiple content types + * (for example, could be used in a general content finder or the like) + * + * defaults to false + */ enableMSearch?: boolean; mSearchAdditionalSearchFields?: string[]; @@ -163,7 +169,7 @@ export abstract class SOContentStorage mSearchAdditionalSearchFields, logger, throwOnResultValidationError, - }: SOContentStorageConstrutorParams) { + }: SOContentStorageConstructorParams) { this.logger = logger; this.throwOnResultValidationError = throwOnResultValidationError ?? false; this.savedObjectType = savedObjectType; @@ -219,8 +225,8 @@ export abstract class SOContentStorage private throwOnResultValidationError: boolean; private logger: Logger; - private savedObjectType: SOContentStorageConstrutorParams['savedObjectType']; - private cmServicesDefinition: SOContentStorageConstrutorParams['cmServicesDefinition']; + private savedObjectType: SOContentStorageConstructorParams['savedObjectType']; + private cmServicesDefinition: SOContentStorageConstructorParams['cmServicesDefinition']; private createArgsToSoCreateOptions: CreateArgsToSoCreateOptions; private updateArgsToSoUpdateOptions: UpdateArgsToSoUpdateOptions; private searchArgsToSOFindOptions: SearchArgsToSOFindOptions; diff --git a/src/plugins/event_annotation/common/content_management/index.ts b/src/plugins/event_annotation/common/content_management/index.ts index 821ff93f903d3..ef97fe7cdd25f 100644 --- a/src/plugins/event_annotation/common/content_management/index.ts +++ b/src/plugins/event_annotation/common/content_management/index.ts @@ -27,6 +27,7 @@ export type { EventAnnotationGroupSearchIn, EventAnnotationGroupSearchOut, EventAnnotationGroupSearchQuery, + EventAnnotationGroupCrudTypes, } from './latest'; export * as EventAnnotationGroupV1 from './v1'; diff --git a/src/plugins/event_annotation/common/content_management/v1/index.ts b/src/plugins/event_annotation/common/content_management/v1/index.ts index d05d743a199a8..178c49c51807f 100644 --- a/src/plugins/event_annotation/common/content_management/v1/index.ts +++ b/src/plugins/event_annotation/common/content_management/v1/index.ts @@ -23,5 +23,6 @@ export type { EventAnnotationGroupSearchIn, EventAnnotationGroupSearchOut, EventAnnotationGroupSearchQuery, + EventAnnotationGroupCrudTypes, Reference, } from './types'; diff --git a/src/plugins/event_annotation/common/content_management/v1/types.ts b/src/plugins/event_annotation/common/content_management/v1/types.ts index 5996a6f0db455..d85250e3883fa 100644 --- a/src/plugins/event_annotation/common/content_management/v1/types.ts +++ b/src/plugins/event_annotation/common/content_management/v1/types.ts @@ -18,6 +18,7 @@ import { CreateResult, UpdateResult, } from '@kbn/content-management-plugin/common'; +import { ContentManagementCrudTypes } from '@kbn/content-management-utils'; import type { DataViewSpec } from '@kbn/data-views-plugin/common'; import type { EventAnnotationConfig } from '@kbn/event-annotation-common'; @@ -125,3 +126,13 @@ export type EventAnnotationGroupSearchIn = SearchIn< >; export type EventAnnotationGroupSearchOut = SearchResult; + +// ----------- CRUD TYPES -------------- + +export type EventAnnotationGroupCrudTypes = ContentManagementCrudTypes< + EventAnnotationGroupContentType, + EventAnnotationGroupSavedObjectAttributes, + CreateOptions, + UpdateOptions, + {} +>; diff --git a/src/plugins/event_annotation/common/index.ts b/src/plugins/event_annotation/common/index.ts index 4389c4e7f4c89..f163108976ef6 100644 --- a/src/plugins/event_annotation/common/index.ts +++ b/src/plugins/event_annotation/common/index.ts @@ -37,6 +37,7 @@ export type { EventAnnotationGroupSearchOut, EventAnnotationGroupDeleteIn, EventAnnotationGroupDeleteOut, + EventAnnotationGroupCrudTypes, } from './content_management'; export { CONTENT_ID } from './content_management'; export { ANNOTATIONS_LISTING_VIEW_ID } from './constants'; diff --git a/src/plugins/event_annotation/server/content_management/event_annotation_group_storage.ts b/src/plugins/event_annotation/server/content_management/event_annotation_group_storage.ts index dcb25deb71140..49a5b516c1d24 100644 --- a/src/plugins/event_annotation/server/content_management/event_annotation_group_storage.ts +++ b/src/plugins/event_annotation/server/content_management/event_annotation_group_storage.ts @@ -5,336 +5,34 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ - -import Boom from '@hapi/boom'; -import type { SearchQuery } from '@kbn/content-management-plugin/common'; -import type { ContentStorage, StorageContext } from '@kbn/content-management-plugin/server'; -import type { - SavedObject, - SavedObjectReference, - SavedObjectsFindOptions, -} from '@kbn/core-saved-objects-api-server'; - -import { getMSearch, type GetMSearchType } from '@kbn/content-management-utils'; +import { SOContentStorage } from '@kbn/content-management-utils'; import { EVENT_ANNOTATION_GROUP_TYPE } from '@kbn/event-annotation-common'; +import { Logger } from '@kbn/logging'; import { cmServicesDefinition } from '../../common/content_management/cm_services'; -import type { - EventAnnotationGroupSavedObjectAttributes, - EventAnnotationGroupSavedObject, - PartialEventAnnotationGroupSavedObject, - EventAnnotationGroupGetOut, - EventAnnotationGroupCreateIn, - EventAnnotationGroupCreateOut, - CreateOptions, - EventAnnotationGroupUpdateIn, - EventAnnotationGroupUpdateOut, - UpdateOptions, - EventAnnotationGroupDeleteOut, - EventAnnotationGroupSearchQuery, - EventAnnotationGroupSearchOut, -} from '../../common/content_management'; - -const savedObjectClientFromRequest = async (ctx: StorageContext) => { - if (!ctx.requestHandlerContext) { - throw new Error('Storage context.requestHandlerContext missing.'); - } - - const { savedObjects } = await ctx.requestHandlerContext.core; - return savedObjects.client; -}; - -type PartialSavedObject = Omit>, 'references'> & { - references: SavedObjectReference[] | undefined; -}; - -function savedObjectToEventAnnotationGroupSavedObject( - savedObject: SavedObject, - partial: false -): EventAnnotationGroupSavedObject; - -function savedObjectToEventAnnotationGroupSavedObject( - savedObject: PartialSavedObject, - partial: true -): PartialEventAnnotationGroupSavedObject; - -function savedObjectToEventAnnotationGroupSavedObject( - savedObject: - | SavedObject - | PartialSavedObject -): EventAnnotationGroupSavedObject | PartialEventAnnotationGroupSavedObject { - const { - id, - type, - updated_at: updatedAt, - created_at: createdAt, - attributes: { title, description, annotations, ignoreGlobalFilters, dataViewSpec }, - references, - error, - namespaces, - } = savedObject; - - return { - id, - type, - updatedAt, - createdAt, - attributes: { - title, - description, - annotations, - ignoreGlobalFilters, - dataViewSpec, - }, - references, - error, - namespaces, - }; -} - -const SO_TYPE = EVENT_ANNOTATION_GROUP_TYPE; - -export class EventAnnotationGroupStorage - implements - ContentStorage -{ - mSearch: GetMSearchType; - constructor() { - this.mSearch = getMSearch({ - savedObjectType: SO_TYPE, +import type { EventAnnotationGroupCrudTypes } from '../../common/content_management'; + +export class EventAnnotationGroupStorage extends SOContentStorage { + constructor({ + logger, + throwOnResultValidationError, + }: { + logger: Logger; + throwOnResultValidationError: boolean; + }) { + super({ + savedObjectType: EVENT_ANNOTATION_GROUP_TYPE, cmServicesDefinition, + enableMSearch: true, allowedSavedObjectAttributes: [ 'title', 'description', - 'ignoreGlobalFilters', 'annotations', + 'ignoreGlobalFilters', 'dataViewSpec', ], + logger, + throwOnResultValidationError, }); } - - async get(ctx: StorageContext, id: string): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - const soClient = await savedObjectClientFromRequest(ctx); - - const { - saved_object: savedObject, - alias_purpose: aliasPurpose, - alias_target_id: aliasTargetId, - outcome, - } = await soClient.resolve(SO_TYPE, id); - - const response: EventAnnotationGroupGetOut = { - item: savedObjectToEventAnnotationGroupSavedObject(savedObject, false), - meta: { - aliasPurpose, - aliasTargetId, - outcome, - }, - }; - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.get.out.result.down< - EventAnnotationGroupGetOut, - EventAnnotationGroupGetOut - >(response); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async bulkGet(): Promise { - // Not implemented. EventAnnotationGroup does not use bulkGet - throw new Error(`[bulkGet] has not been implemented. See EventAnnotationGroupStorage class.`); - } - - async create( - ctx: StorageContext, - data: EventAnnotationGroupCreateIn['data'], - options: CreateOptions - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - - // Validate input (data & options) & UP transform them to the latest version - const { value: dataToLatest, error: dataError } = transforms.create.in.data.up< - EventAnnotationGroupSavedObjectAttributes, - EventAnnotationGroupSavedObjectAttributes - >(data); - if (dataError) { - throw Boom.badRequest(`Invalid data. ${dataError.message}`); - } - - const { value: optionsToLatest, error: optionsError } = transforms.create.in.options.up< - CreateOptions, - CreateOptions - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid options. ${optionsError.message}`); - } - - // Save data in DB - const soClient = await savedObjectClientFromRequest(ctx); - const savedObject = await soClient.create( - SO_TYPE, - dataToLatest, - optionsToLatest - ); - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.create.out.result.down< - EventAnnotationGroupCreateOut, - EventAnnotationGroupCreateOut - >({ - item: savedObjectToEventAnnotationGroupSavedObject(savedObject, false), - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async update( - ctx: StorageContext, - id: string, - data: EventAnnotationGroupUpdateIn['data'], - options: UpdateOptions - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - - // Validate input (data & options) & UP transform them to the latest version - const { value: dataToLatest, error: dataError } = transforms.update.in.data.up< - EventAnnotationGroupSavedObjectAttributes, - EventAnnotationGroupSavedObjectAttributes - >(data); - if (dataError) { - throw Boom.badRequest(`Invalid data. ${dataError.message}`); - } - - const { value: optionsToLatest, error: optionsError } = transforms.update.in.options.up< - CreateOptions, - CreateOptions - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid options. ${optionsError.message}`); - } - - // Save data in DB - const soClient = await savedObjectClientFromRequest(ctx); - const partialSavedObject = await soClient.update( - SO_TYPE, - id, - dataToLatest, - optionsToLatest - ); - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.update.out.result.down< - EventAnnotationGroupUpdateOut, - EventAnnotationGroupUpdateOut - >({ - item: savedObjectToEventAnnotationGroupSavedObject(partialSavedObject, true), - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async delete(ctx: StorageContext, id: string): Promise { - const soClient = await savedObjectClientFromRequest(ctx); - await soClient.delete(SO_TYPE, id); - return { success: true }; - } - - async search( - ctx: StorageContext, - query: SearchQuery, - options: EventAnnotationGroupSearchQuery = {} - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - const soClient = await savedObjectClientFromRequest(ctx); - - // Validate and UP transform the options - const { value: optionsToLatest, error: optionsError } = transforms.search.in.options.up< - EventAnnotationGroupSearchQuery, - EventAnnotationGroupSearchQuery - >(options); - - if (optionsError) { - throw Boom.badRequest(`Invalid payload. ${optionsError.message}`); - } - - const { searchFields = ['title^3', 'description'], types = [SO_TYPE] } = optionsToLatest; - - const { included, excluded } = query.tags ?? {}; - const hasReference: SavedObjectsFindOptions['hasReference'] = included - ? included.map((id) => ({ - id, - type: 'tag', - })) - : undefined; - - const hasNoReference: SavedObjectsFindOptions['hasNoReference'] = excluded - ? excluded.map((id) => ({ - id, - type: 'tag', - })) - : undefined; - - const soQuery: SavedObjectsFindOptions = { - type: types, - search: query.text, - perPage: query.limit, - page: query.cursor ? Number(query.cursor) : undefined, - defaultSearchOperator: 'AND', - searchFields, - hasReference, - hasNoReference, - }; - - // Execute the query in the DB - const response = await soClient.find(soQuery); - - // Validate the response and DOWN transform to the request version - const { value, error: resultError } = transforms.search.out.result.down< - EventAnnotationGroupSearchOut, - EventAnnotationGroupSearchOut - >({ - hits: response.saved_objects.map((so) => - savedObjectToEventAnnotationGroupSavedObject(so, false) - ), - pagination: { - total: response.total, - }, - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } } diff --git a/src/plugins/event_annotation/server/index.ts b/src/plugins/event_annotation/server/index.ts index d9d13045ed10a..84fecda35d4f1 100644 --- a/src/plugins/event_annotation/server/index.ts +++ b/src/plugins/event_annotation/server/index.ts @@ -6,5 +6,8 @@ * Side Public License, v 1. */ +import { PluginInitializerContext } from '@kbn/core-plugins-server'; import { EventAnnotationServerPlugin } from './plugin'; -export const plugin = () => new EventAnnotationServerPlugin(); + +export const plugin = (initializerContext: PluginInitializerContext) => + new EventAnnotationServerPlugin(initializerContext); diff --git a/src/plugins/event_annotation/server/plugin.ts b/src/plugins/event_annotation/server/plugin.ts index 8cd24f8938466..cdf514228adb3 100644 --- a/src/plugins/event_annotation/server/plugin.ts +++ b/src/plugins/event_annotation/server/plugin.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { CoreSetup, Plugin } from '@kbn/core/server'; +import { CoreSetup, Plugin, PluginInitializerContext } from '@kbn/core/server'; import { ExpressionsServerSetup } from '@kbn/expressions-plugin/server'; import { PluginStart as DataPluginStart } from '@kbn/data-plugin/server'; import { ContentManagementServerSetup } from '@kbn/content-management-plugin/server'; @@ -29,6 +29,8 @@ export interface EventAnnotationStartDependencies { } export class EventAnnotationServerPlugin implements Plugin { + constructor(private readonly initializerContext: PluginInitializerContext) {} + public setup( core: CoreSetup, dependencies: SetupDependencies @@ -42,7 +44,10 @@ export class EventAnnotationServerPlugin implements Plugin { dependencies.contentManagement.register({ id: CONTENT_ID, - storage: new EventAnnotationGroupStorage(), + storage: new EventAnnotationGroupStorage({ + throwOnResultValidationError: this.initializerContext.env.mode.dev, + logger: this.initializerContext.logger.get(), + }), version: { latest: LATEST_VERSION, }, diff --git a/src/plugins/event_annotation/tsconfig.json b/src/plugins/event_annotation/tsconfig.json index c57bb18e0e19f..d115df48e8967 100644 --- a/src/plugins/event_annotation/tsconfig.json +++ b/src/plugins/event_annotation/tsconfig.json @@ -31,10 +31,11 @@ "@kbn/object-versioning", "@kbn/config-schema", "@kbn/content-management-plugin", - "@kbn/core-saved-objects-api-server", "@kbn/event-annotation-components", "@kbn/event-annotation-common", - "@kbn/content-management-utils" + "@kbn/content-management-utils", + "@kbn/logging", + "@kbn/core-plugins-server" ], "exclude": [ "target/**/*", diff --git a/src/plugins/visualizations/common/content_management/index.ts b/src/plugins/visualizations/common/content_management/index.ts index 15cff0d86c7c9..ebdd647c181d4 100644 --- a/src/plugins/visualizations/common/content_management/index.ts +++ b/src/plugins/visualizations/common/content_management/index.ts @@ -27,6 +27,7 @@ export type { VisualizationSearchIn, VisualizationSearchOut, VisualizationSearchQuery, + VisualizationCrudTypes, } from './latest'; export * as VisualizationV1 from './v1'; diff --git a/src/plugins/visualizations/common/content_management/v1/index.ts b/src/plugins/visualizations/common/content_management/v1/index.ts index 14e9f7c986995..e15eb0f46fef1 100644 --- a/src/plugins/visualizations/common/content_management/v1/index.ts +++ b/src/plugins/visualizations/common/content_management/v1/index.ts @@ -23,5 +23,6 @@ export type { VisualizationSearchIn, VisualizationSearchOut, VisualizationSearchQuery, + VisualizationCrudTypes, Reference, } from './types'; diff --git a/src/plugins/visualizations/common/content_management/v1/types.ts b/src/plugins/visualizations/common/content_management/v1/types.ts index c0961341c436b..a1e5bd6a1aba5 100644 --- a/src/plugins/visualizations/common/content_management/v1/types.ts +++ b/src/plugins/visualizations/common/content_management/v1/types.ts @@ -18,6 +18,7 @@ import { CreateResult, UpdateResult, } from '@kbn/content-management-plugin/common'; +import { ContentManagementCrudTypes } from '@kbn/content-management-utils'; import { VisualizationContentType } from '../types'; @@ -127,3 +128,13 @@ export interface VisualizationSearchQuery { export type VisualizationSearchIn = SearchIn; export type VisualizationSearchOut = SearchResult; + +// ----------- CRUD TYPES -------------- + +export type VisualizationCrudTypes = ContentManagementCrudTypes< + VisualizationContentType, + VisualizationSavedObjectAttributes, + CreateOptions, + UpdateOptions, + {} +>; diff --git a/src/plugins/visualizations/server/content_management/visualization_storage.ts b/src/plugins/visualizations/server/content_management/visualization_storage.ts index 5b5e99a7132aa..17a3e73b51479 100644 --- a/src/plugins/visualizations/server/content_management/visualization_storage.ts +++ b/src/plugins/visualizations/server/content_management/visualization_storage.ts @@ -5,343 +5,41 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import Boom from '@hapi/boom'; -import type { SearchQuery } from '@kbn/content-management-plugin/common'; -import type { ContentStorage, StorageContext } from '@kbn/content-management-plugin/server'; -import type { - SavedObject, - SavedObjectReference, - SavedObjectsFindOptions, -} from '@kbn/core-saved-objects-api-server'; -import { getMSearch, type GetMSearchType } from '@kbn/content-management-utils'; +import { SOContentStorage } from '@kbn/content-management-utils'; -import { CONTENT_ID } from '../../common/content_management'; +import { Logger } from '@kbn/logging'; import { cmServicesDefinition } from '../../common/content_management/cm_services'; import type { - VisualizationSavedObjectAttributes, - VisualizationSavedObject, - PartialVisualizationSavedObject, VisualizationContentType, - VisualizationGetOut, - VisualizationCreateIn, - VisualizationCreateOut, - CreateOptions, - VisualizationUpdateIn, - VisualizationUpdateOut, - UpdateOptions, - VisualizationDeleteOut, - VisualizationSearchQuery, - VisualizationSearchOut, + VisualizationCrudTypes, } from '../../common/content_management'; -const savedObjectClientFromRequest = async (ctx: StorageContext) => { - if (!ctx.requestHandlerContext) { - throw new Error('Storage context.requestHandlerContext missing.'); - } - - const { savedObjects } = await ctx.requestHandlerContext.core; - return savedObjects.client; -}; - -type PartialSavedObject = Omit>, 'references'> & { - references: SavedObjectReference[] | undefined; -}; - -function savedObjectToVisualizationSavedObject( - savedObject: SavedObject, - partial: false -): VisualizationSavedObject; - -function savedObjectToVisualizationSavedObject( - savedObject: PartialSavedObject, - partial: true -): PartialVisualizationSavedObject; - -function savedObjectToVisualizationSavedObject( - savedObject: - | SavedObject - | PartialSavedObject -): VisualizationSavedObject | PartialVisualizationSavedObject { - const { - id, - type, - updated_at: updatedAt, - created_at: createdAt, - attributes: { - title, - description, - visState, - kibanaSavedObjectMeta, - uiStateJSON, - savedSearchRefName, - }, - references, - error, - namespaces, - } = savedObject; - - return { - id, - type, - updatedAt, - createdAt, - attributes: { - title, - description, - visState, - kibanaSavedObjectMeta, - uiStateJSON, - savedSearchRefName, - }, - references, - error, - namespaces, - }; -} - const SO_TYPE: VisualizationContentType = 'visualization'; -export class VisualizationsStorage - implements ContentStorage -{ - mSearch: GetMSearchType; - - constructor() { - this.mSearch = getMSearch({ +export class VisualizationsStorage extends SOContentStorage { + constructor({ + logger, + throwOnResultValidationError, + }: { + logger: Logger; + throwOnResultValidationError: boolean; + }) { + super({ savedObjectType: SO_TYPE, cmServicesDefinition, + enableMSearch: true, allowedSavedObjectAttributes: [ 'title', 'description', 'version', + 'visState', 'kibanaSavedObjectMeta', 'uiStateJSON', - 'visState', 'savedSearchRefName', ], + logger, + throwOnResultValidationError, }); } - - async get(ctx: StorageContext, id: string): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - const soClient = await savedObjectClientFromRequest(ctx); - - // Save data in DB - const { - saved_object: savedObject, - alias_purpose: aliasPurpose, - alias_target_id: aliasTargetId, - outcome, - } = await soClient.resolve(SO_TYPE, id); - - const response: VisualizationGetOut = { - item: savedObjectToVisualizationSavedObject(savedObject, false), - meta: { - aliasPurpose, - aliasTargetId, - outcome, - }, - }; - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.get.out.result.down< - VisualizationGetOut, - VisualizationGetOut - >(response); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async bulkGet(): Promise { - // Not implemented. Visualizations does not use bulkGet - throw new Error(`[bulkGet] has not been implemented. See VisualizationsStorage class.`); - } - - async create( - ctx: StorageContext, - data: VisualizationCreateIn['data'], - options: CreateOptions - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - - // Validate input (data & options) & UP transform them to the latest version - const { value: dataToLatest, error: dataError } = transforms.create.in.data.up< - VisualizationSavedObjectAttributes, - VisualizationSavedObjectAttributes - >(data); - if (dataError) { - throw Boom.badRequest(`Invalid data. ${dataError.message}`); - } - - const { value: optionsToLatest, error: optionsError } = transforms.create.in.options.up< - CreateOptions, - CreateOptions - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid options. ${optionsError.message}`); - } - - // Save data in DB - const soClient = await savedObjectClientFromRequest(ctx); - const savedObject = await soClient.create( - SO_TYPE, - dataToLatest, - optionsToLatest - ); - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.create.out.result.down< - VisualizationCreateOut, - VisualizationCreateOut - >({ - item: savedObjectToVisualizationSavedObject(savedObject, false), - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async update( - ctx: StorageContext, - id: string, - data: VisualizationUpdateIn['data'], - options: UpdateOptions - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - - // Validate input (data & options) & UP transform them to the latest version - const { value: dataToLatest, error: dataError } = transforms.update.in.data.up< - VisualizationSavedObjectAttributes, - VisualizationSavedObjectAttributes - >(data); - if (dataError) { - throw Boom.badRequest(`Invalid data. ${dataError.message}`); - } - - const { value: optionsToLatest, error: optionsError } = transforms.update.in.options.up< - CreateOptions, - CreateOptions - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid options. ${optionsError.message}`); - } - - // Save data in DB - const soClient = await savedObjectClientFromRequest(ctx); - const partialSavedObject = await soClient.update( - SO_TYPE, - id, - dataToLatest, - optionsToLatest - ); - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.update.out.result.down< - VisualizationUpdateOut, - VisualizationUpdateOut - >({ - item: savedObjectToVisualizationSavedObject(partialSavedObject, true), - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async delete(ctx: StorageContext, id: string): Promise { - const soClient = await savedObjectClientFromRequest(ctx); - await soClient.delete(SO_TYPE, id); - return { success: true }; - } - - async search( - ctx: StorageContext, - query: SearchQuery, - options: VisualizationSearchQuery = {} - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - const soClient = await savedObjectClientFromRequest(ctx); - - // Validate and UP transform the options - const { value: optionsToLatest, error: optionsError } = transforms.search.in.options.up< - VisualizationSearchQuery, - VisualizationSearchQuery - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid payload. ${optionsError.message}`); - } - const { searchFields = ['title^3', 'description'], types = [CONTENT_ID] } = optionsToLatest; - - const { included, excluded } = query.tags ?? {}; - const hasReference: SavedObjectsFindOptions['hasReference'] = included - ? included.map((id) => ({ - id, - type: 'tag', - })) - : undefined; - - const hasNoReference: SavedObjectsFindOptions['hasNoReference'] = excluded - ? excluded.map((id) => ({ - id, - type: 'tag', - })) - : undefined; - - const soQuery: SavedObjectsFindOptions = { - type: types, - search: query.text, - perPage: query.limit, - page: query.cursor ? +query.cursor : undefined, - defaultSearchOperator: 'AND', - searchFields, - hasReference, - hasNoReference, - }; - - // Execute the query in the DB - const response = await soClient.find(soQuery); - - // Validate the response and DOWN transform to the request version - const { value, error: resultError } = transforms.search.out.result.down< - VisualizationSearchOut, - VisualizationSearchOut - >({ - hits: response.saved_objects.map((so) => savedObjectToVisualizationSavedObject(so, false)), - pagination: { - total: response.total, - }, - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } } diff --git a/src/plugins/visualizations/server/plugin.ts b/src/plugins/visualizations/server/plugin.ts index 6aa4a749ecb7a..fd8a0dbe2cba5 100644 --- a/src/plugins/visualizations/server/plugin.ts +++ b/src/plugins/visualizations/server/plugin.ts @@ -29,7 +29,7 @@ export class VisualizationsPlugin { private readonly logger: Logger; - constructor(initializerContext: PluginInitializerContext) { + constructor(private readonly initializerContext: PluginInitializerContext) { this.logger = initializerContext.logger.get(); } @@ -55,7 +55,10 @@ export class VisualizationsPlugin plugins.contentManagement.register({ id: CONTENT_ID, - storage: new VisualizationsStorage(), + storage: new VisualizationsStorage({ + logger: this.logger, + throwOnResultValidationError: this.initializerContext.env.mode.dev, + }), version: { latest: LATEST_VERSION, }, diff --git a/src/plugins/visualizations/tsconfig.json b/src/plugins/visualizations/tsconfig.json index a835f3151c60c..b428e361d1985 100644 --- a/src/plugins/visualizations/tsconfig.json +++ b/src/plugins/visualizations/tsconfig.json @@ -54,7 +54,6 @@ "@kbn/saved-objects-management-plugin", "@kbn/saved-objects-finder-plugin", "@kbn/content-management-plugin", - "@kbn/core-saved-objects-api-server", "@kbn/object-versioning", "@kbn/core-saved-objects-server", "@kbn/core-saved-objects-utils-server", @@ -64,7 +63,8 @@ "@kbn/content-management-utils", "@kbn/serverless", "@kbn/no-data-page-plugin", - "@kbn/search-response-warnings" + "@kbn/search-response-warnings", + "@kbn/logging" ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/graph/common/content_management/index.ts b/x-pack/plugins/graph/common/content_management/index.ts index c848adbce1747..cdaef8264125d 100644 --- a/x-pack/plugins/graph/common/content_management/index.ts +++ b/x-pack/plugins/graph/common/content_management/index.ts @@ -26,6 +26,7 @@ export type { GraphSearchIn, GraphSearchOut, GraphSearchQuery, + GraphCrudTypes, } from './latest'; export * as GraphV1 from './v1'; diff --git a/x-pack/plugins/graph/common/content_management/v1/index.ts b/x-pack/plugins/graph/common/content_management/v1/index.ts index 3ce273575aca7..2e2b8b9dd6950 100644 --- a/x-pack/plugins/graph/common/content_management/v1/index.ts +++ b/x-pack/plugins/graph/common/content_management/v1/index.ts @@ -22,5 +22,6 @@ export type { GraphSearchIn, GraphSearchOut, GraphSearchQuery, + GraphCrudTypes, Reference, } from './types'; diff --git a/x-pack/plugins/graph/common/content_management/v1/types.ts b/x-pack/plugins/graph/common/content_management/v1/types.ts index 51bb9017c38a9..c6664cf5a162c 100644 --- a/x-pack/plugins/graph/common/content_management/v1/types.ts +++ b/x-pack/plugins/graph/common/content_management/v1/types.ts @@ -17,6 +17,7 @@ import { CreateResult, UpdateResult, } from '@kbn/content-management-plugin/common'; +import { ContentManagementCrudTypes } from '@kbn/content-management-utils'; import { GraphContentType } from '../types'; @@ -113,3 +114,13 @@ export interface GraphSearchQuery { export type GraphSearchIn = SearchIn; export type GraphSearchOut = SearchResult; + +// ----------- CRUD TYPES -------------- + +export type GraphCrudTypes = ContentManagementCrudTypes< + GraphContentType, + GraphSavedObjectAttributes, + CreateOptions, + UpdateOptions, + {} +>; diff --git a/x-pack/plugins/graph/server/content_management/graph_storage.ts b/x-pack/plugins/graph/server/content_management/graph_storage.ts index e0faea8c99b9c..6487f942b29d4 100644 --- a/x-pack/plugins/graph/server/content_management/graph_storage.ts +++ b/x-pack/plugins/graph/server/content_management/graph_storage.ts @@ -4,325 +4,37 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import Boom from '@hapi/boom'; -import type { SearchQuery } from '@kbn/content-management-plugin/common'; -import type { ContentStorage, StorageContext } from '@kbn/content-management-plugin/server'; -import type { - SavedObject, - SavedObjectReference, - SavedObjectsFindOptions, -} from '@kbn/core-saved-objects-api-server'; +import { Logger } from '@kbn/logging'; +import { SOContentStorage } from '@kbn/content-management-utils'; import { cmServicesDefinition } from '../../common/content_management/cm_services'; -import type { - GraphSavedObjectAttributes, - GraphSavedObject, - PartialGraphSavedObject, - GraphGetOut, - GraphCreateIn, - GraphCreateOut, - CreateOptions, - GraphUpdateIn, - GraphUpdateOut, - UpdateOptions, - GraphDeleteOut, - GraphSearchQuery, - GraphSearchOut, -} from '../../common/content_management'; - -const savedObjectClientFromRequest = async (ctx: StorageContext) => { - if (!ctx.requestHandlerContext) { - throw new Error('Storage context.requestHandlerContext missing.'); - } - - const { savedObjects } = await ctx.requestHandlerContext.core; - return savedObjects.client; -}; - -type PartialSavedObject = Omit>, 'references'> & { - references: SavedObjectReference[] | undefined; -}; - -function savedObjectToGraphSavedObject( - savedObject: SavedObject, - partial: false -): GraphSavedObject; - -function savedObjectToGraphSavedObject( - savedObject: PartialSavedObject, - partial: true -): PartialGraphSavedObject; - -function savedObjectToGraphSavedObject( - savedObject: - | SavedObject - | PartialSavedObject -): GraphSavedObject | PartialGraphSavedObject { - const { - id, - type, - updated_at: updatedAt, - created_at: createdAt, - attributes: { - title, - description, - version, - kibanaSavedObjectMeta, - wsState, - numVertices, - numLinks, - legacyIndexPatternRef, - }, - references, - error, - namespaces, - } = savedObject; - - return { - id, - type, - updatedAt, - createdAt, - attributes: { - title, - description, - kibanaSavedObjectMeta, - wsState, - version, - numLinks, - numVertices, - legacyIndexPatternRef, - }, - references, - error, - namespaces, - }; -} +import type { GraphCrudTypes } from '../../common/content_management'; const SO_TYPE = 'graph-workspace'; -export class GraphStorage implements ContentStorage { - constructor() {} - - async get(ctx: StorageContext, id: string): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - const soClient = await savedObjectClientFromRequest(ctx); - - // Save data in DB - const { - saved_object: savedObject, - alias_purpose: aliasPurpose, - alias_target_id: aliasTargetId, - outcome, - } = await soClient.resolve(SO_TYPE, id); - - const response: GraphGetOut = { - item: savedObjectToGraphSavedObject(savedObject, false), - meta: { - aliasPurpose, - aliasTargetId, - outcome, - }, - }; - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.get.out.result.down( - response - ); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async bulkGet(): Promise { - // Not implemented. Graph does not use bulkGet - throw new Error(`[bulkGet] has not been implemented. See GraphStorage class.`); - } - - async create( - ctx: StorageContext, - data: GraphCreateIn['data'], - options: CreateOptions - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - - // Validate input (data & options) & UP transform them to the latest version - const { value: dataToLatest, error: dataError } = transforms.create.in.data.up< - GraphSavedObjectAttributes, - GraphSavedObjectAttributes - >(data); - if (dataError) { - throw Boom.badRequest(`Invalid data. ${dataError.message}`); - } - - const { value: optionsToLatest, error: optionsError } = transforms.create.in.options.up< - CreateOptions, - CreateOptions - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid options. ${optionsError.message}`); - } - - // Save data in DB - const soClient = await savedObjectClientFromRequest(ctx); - const savedObject = await soClient.create( - SO_TYPE, - dataToLatest, - optionsToLatest - ); - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.create.out.result.down< - GraphCreateOut, - GraphCreateOut - >({ - item: savedObjectToGraphSavedObject(savedObject, false), +export class GraphStorage extends SOContentStorage { + constructor({ + logger, + throwOnResultValidationError, + }: { + logger: Logger; + throwOnResultValidationError: boolean; + }) { + super({ + savedObjectType: SO_TYPE, + cmServicesDefinition, + allowedSavedObjectAttributes: [ + 'title', + 'description', + 'kibanaSavedObjectMeta', + 'wsState', + 'version', + 'numLinks', + 'numVertices', + 'legacyIndexPatternRef', + ], + logger, + throwOnResultValidationError, }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async update( - ctx: StorageContext, - id: string, - data: GraphUpdateIn['data'], - options: UpdateOptions - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - - // Validate input (data & options) & UP transform them to the latest version - const { value: dataToLatest, error: dataError } = transforms.update.in.data.up< - GraphSavedObjectAttributes, - GraphSavedObjectAttributes - >(data); - if (dataError) { - throw Boom.badRequest(`Invalid data. ${dataError.message}`); - } - - const { value: optionsToLatest, error: optionsError } = transforms.update.in.options.up< - CreateOptions, - CreateOptions - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid options. ${optionsError.message}`); - } - - // Save data in DB - const soClient = await savedObjectClientFromRequest(ctx); - const partialSavedObject = await soClient.update( - SO_TYPE, - id, - dataToLatest, - optionsToLatest - ); - - // Validate DB response and DOWN transform to the request version - const { value, error: resultError } = transforms.update.out.result.down< - GraphUpdateOut, - GraphUpdateOut - >({ - item: savedObjectToGraphSavedObject(partialSavedObject, true), - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; - } - - async delete(ctx: StorageContext, id: string): Promise { - const soClient = await savedObjectClientFromRequest(ctx); - await soClient.delete(SO_TYPE, id); - return { success: true }; - } - - async search( - ctx: StorageContext, - query: SearchQuery, - options: GraphSearchQuery = {} - ): Promise { - const { - utils: { getTransforms }, - version: { request: requestVersion }, - } = ctx; - const transforms = getTransforms(cmServicesDefinition, requestVersion); - const soClient = await savedObjectClientFromRequest(ctx); - - // Validate and UP transform the options - const { value: optionsToLatest, error: optionsError } = transforms.search.in.options.up< - GraphSearchQuery, - GraphSearchQuery - >(options); - if (optionsError) { - throw Boom.badRequest(`Invalid payload. ${optionsError.message}`); - } - const { searchFields = ['title^3', 'description'], types = ['graph-workspace'] } = - optionsToLatest; - - const { included, excluded } = query.tags ?? {}; - const hasReference: SavedObjectsFindOptions['hasReference'] = included - ? included.map((id) => ({ - id, - type: 'tag', - })) - : undefined; - - const hasNoReference: SavedObjectsFindOptions['hasNoReference'] = excluded - ? excluded.map((id) => ({ - id, - type: 'tag', - })) - : undefined; - - const soQuery: SavedObjectsFindOptions = { - type: types, - search: query.text, - perPage: query.limit, - page: query.cursor ? Number(query.cursor) : undefined, - defaultSearchOperator: 'AND', - searchFields, - hasReference, - hasNoReference, - }; - - // Execute the query in the DB - const response = await soClient.find(soQuery); - - // Validate the response and DOWN transform to the request version - const { value, error: resultError } = transforms.search.out.result.down< - GraphSearchOut, - GraphSearchOut - >({ - hits: response.saved_objects.map((so) => savedObjectToGraphSavedObject(so, false)), - pagination: { - total: response.total, - }, - }); - - if (resultError) { - throw Boom.badRequest(`Invalid response. ${resultError.message}`); - } - - return value; } } diff --git a/x-pack/plugins/graph/server/index.ts b/x-pack/plugins/graph/server/index.ts index 886c8e4267cb6..86dca6c119604 100644 --- a/x-pack/plugins/graph/server/index.ts +++ b/x-pack/plugins/graph/server/index.ts @@ -5,12 +5,13 @@ * 2.0. */ -import { PluginConfigDescriptor } from '@kbn/core/server'; +import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; import { configSchema, ConfigSchema } from '../config'; import { GraphPlugin } from './plugin'; -export const plugin = () => new GraphPlugin(); +export const plugin = (initializerContext: PluginInitializerContext) => + new GraphPlugin(initializerContext); export const config: PluginConfigDescriptor = { exposeToBrowser: { diff --git a/x-pack/plugins/graph/server/plugin.ts b/x-pack/plugins/graph/server/plugin.ts index db33a04c6a0bf..88e45bc007e47 100644 --- a/x-pack/plugins/graph/server/plugin.ts +++ b/x-pack/plugins/graph/server/plugin.ts @@ -6,7 +6,7 @@ */ import { i18n } from '@kbn/i18n'; -import { Plugin, CoreSetup, CoreStart } from '@kbn/core/server'; +import { Plugin, CoreSetup, CoreStart, PluginInitializerContext } from '@kbn/core/server'; import { DEFAULT_APP_CATEGORIES } from '@kbn/core/server'; import { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; import { HomeServerPluginSetup } from '@kbn/home-plugin/server'; @@ -23,6 +23,8 @@ import { GraphStorage } from './content_management/graph_storage'; export class GraphPlugin implements Plugin { private licenseState: LicenseState | null = null; + constructor(private readonly initializerContext: PluginInitializerContext) {} + public setup( core: CoreSetup, { @@ -45,7 +47,10 @@ export class GraphPlugin implements Plugin { contentManagement.register({ id: CONTENT_ID, - storage: new GraphStorage(), + storage: new GraphStorage({ + throwOnResultValidationError: this.initializerContext.env.mode.dev, + logger: this.initializerContext.logger.get(), + }), version: { latest: LATEST_VERSION, }, diff --git a/x-pack/plugins/graph/tsconfig.json b/x-pack/plugins/graph/tsconfig.json index 1e8059c99c5d7..1ab9c265359a9 100644 --- a/x-pack/plugins/graph/tsconfig.json +++ b/x-pack/plugins/graph/tsconfig.json @@ -41,12 +41,13 @@ "@kbn/saved-objects-finder-plugin", "@kbn/core-saved-objects-server", "@kbn/content-management-plugin", - "@kbn/core-saved-objects-api-server", "@kbn/object-versioning", "@kbn/content-management-table-list-view-table", "@kbn/content-management-table-list-view", "@kbn/core-ui-settings-browser", "@kbn/react-kibana-mount", + "@kbn/content-management-utils", + "@kbn/logging", ], "exclude": [ "target/**/*", From 7c6cb47d4ce19b31b9b22c15f27d1dde80b27313 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sat, 14 Oct 2023 00:57:24 -0400 Subject: [PATCH 46/80] [api-docs] 2023-10-14 Daily api_docs build (#168906) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/490 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.devdocs.json | 128 ++ api_docs/alerting.mdx | 4 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.devdocs.json | 96 +- api_docs/data.mdx | 4 +- api_docs/data_query.mdx | 4 +- api_docs/data_search.mdx | 4 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.devdocs.json | 116 +- api_docs/data_views.mdx | 4 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 5 +- api_docs/deprecations_by_plugin.mdx | 13 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.devdocs.json | 34 + api_docs/event_annotation.mdx | 4 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.devdocs.json | 52 + api_docs/kbn_apm_synthtrace.mdx | 4 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mocks.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- .../kbn_content_management_utils.devdocs.json | 36 +- api_docs/kbn_content_management_utils.mdx | 4 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- .../kbn_core_test_helpers_model_versions.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- ...kbn_core_user_settings_server_internal.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_generate_csv_types.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- .../kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.devdocs.json | 6 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- ...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.devdocs.json | 1072 +--------- api_docs/kbn_slo_schema.mdx | 4 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_subscription_tracking.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_url_state.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.devdocs.json | 114 +- api_docs/kibana_react.mdx | 4 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/log_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.devdocs.json | 1886 ++++++----------- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_log_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 20 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.devdocs.json | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 608 files changed, 1785 insertions(+), 3003 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index d8bb7bb6c8d16..ef96f20be6fe6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index eb864e759be6f..890f23aebcd07 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 71391973107fe..ff0e5fb678e5c 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-10-13 +date: 2023-10-14 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 3140b43430a01..d92d8b3859a2b 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -5466,6 +5466,101 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage", + "type": "Function", + "tags": [], + "label": "getRuleCircuitBreakerErrorMessage", + "description": [], + "signature": [ + "({ name, interval, intervalAvailable, action, rules, }: { name?: string | undefined; interval: number; intervalAvailable: number; action: \"create\" | \"update\" | \"bulkEdit\" | \"enable\" | \"bulkEnable\"; rules?: number | undefined; }) => string" + ], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage.$1", + "type": "Object", + "tags": [], + "label": "{\n name = '',\n interval,\n intervalAvailable,\n action,\n rules = 1,\n}", + "description": [], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage.$1.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage.$1.interval", + "type": "number", + "tags": [], + "label": "interval", + "description": [], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage.$1.intervalAvailable", + "type": "number", + "tags": [], + "label": "intervalAvailable", + "description": [], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage.$1.action", + "type": "CompoundType", + "tags": [], + "label": "action", + "description": [], + "signature": [ + "\"create\" | \"update\" | \"bulkEdit\" | \"enable\" | \"bulkEnable\"" + ], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "alerting", + "id": "def-common.getRuleCircuitBreakerErrorMessage.$1.rules", + "type": "number", + "tags": [], + "label": "rules", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "alerting", "id": "def-common.getRuleTagsAggregation", @@ -5645,6 +5740,39 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "alerting", + "id": "def-common.parseRuleCircuitBreakerErrorMessage", + "type": "Function", + "tags": [], + "label": "parseRuleCircuitBreakerErrorMessage", + "description": [], + "signature": [ + "(message: string) => { summary: string; details?: string | undefined; }" + ], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "alerting", + "id": "def-common.parseRuleCircuitBreakerErrorMessage.$1", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/alerting/common/rule_circuit_breaker_error_message.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "alerting", "id": "def-common.validateDurationSchema", diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index d9ddd76fd95ac..4edae29fa2b3a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 776 | 1 | 745 | 50 | +| 785 | 1 | 754 | 50 | ## Client diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index be106b4414d7d..7c04c6844711a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index c3e53bac68ef3..4f6ba37b4e9e8 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 37d8c9c2fd458..1c1b067fbf22e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 32a9b1088d44d..ae5a323fd8bf3 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index c5eaec7b72e31..9a1349719365f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 95b16032b2c17..a5fae0eecdb80 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index dc156609a0c1f..ade6a41a3d116 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 14a64d9976b55..6b3c5e6e6c1aa 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index f90bb10215c5c..85d8a2f072654 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index c8fd0b2984d3b..55077cc633f14 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index 0402ff904e014..f65fc71a8f5fc 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index 35819ef940e0b..e1f6cc8398d8c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index dd8010ee20848..96a2828638697 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 6131157f8c1e5..3aed209b893c7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index 4ae00130a22c8..a69c353a66876 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 012e2b3eddbec..57dd5b07fab79 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 9c8db5d9fdc1b..e2a54a55b1d9a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 62e1c71a17416..418a8e8b56a4a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 97294d675c7c1..2d8e7afe05bbf 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-10-13 +date: 2023-10-14 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 83f4f01db8b1f..e03aad192c7d2 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -7805,6 +7805,20 @@ "path": "src/plugins/data_views/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "data", + "id": "def-public.GetFieldsOptions.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -14244,6 +14258,22 @@ "index pattern string" ] }, + { + "parentPluginId": "data", + "id": "def-server.DataView.getAllowHidden", + "type": "Function", + "tags": [], + "label": "getAllowHidden", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "data", "id": "def-server.DataView.setIndexPattern", @@ -17235,7 +17265,7 @@ "signature": [ "(options: { pattern: string | string[]; metaFields?: string[] | undefined; fieldCapsOptions?: { allow_no_indices: boolean; includeUnmapped?: boolean | undefined; } | undefined; type?: string | undefined; rollupIndex?: string | undefined; indexFilter?: ", "QueryDslQueryContainer", - " | undefined; fields?: string[] | undefined; }) => Promise<{ fields: ", + " | undefined; fields?: string[] | undefined; allowHidden?: boolean | undefined; }) => Promise<{ fields: ", { "pluginId": "dataViews", "scope": "server", @@ -17358,6 +17388,20 @@ "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "trackAdoption": false } ] } @@ -22003,6 +22047,22 @@ "index pattern string" ] }, + { + "parentPluginId": "data", + "id": "def-common.DataView.getAllowHidden", + "type": "Function", + "tags": [], + "label": "getAllowHidden", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "data", "id": "def-common.DataView.setIndexPattern", @@ -26905,6 +26965,22 @@ "path": "src/plugins/data_views/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [ + "\nAllow hidden and system indices when loading field list" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -27154,6 +27230,20 @@ "path": "src/plugins/data_views/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "data", + "id": "def-common.GetFieldsOptions.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -27331,7 +27421,7 @@ "section": "def-common.FieldAttrs", "text": "FieldAttrs" }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; allowHidden?: boolean | undefined; }" ], "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", "deprecated": false, @@ -28458,7 +28548,7 @@ "section": "def-common.FieldAttrs", "text": "FieldAttrs" }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; allowHidden?: boolean | undefined; }" ], "path": "src/plugins/data_views/common/types.ts", "deprecated": false, diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 61cb2ad104183..19bf8de032ec6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3284 | 33 | 2549 | 24 | +| 3290 | 33 | 2554 | 24 | ## Client diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 2396215941b7d..8ab2d4140a094 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3284 | 33 | 2549 | 24 | +| 3290 | 33 | 2554 | 24 | ## Client diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 4da6bdf3c0309..80e947ed15f6a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3284 | 33 | 2549 | 24 | +| 3290 | 33 | 2554 | 24 | ## Client diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 76146ece14ca1..9a8d10de17dd7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 8e5bd0814c469..5e7d97ca59c89 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index e625d0103f4db..383fc8bbf00c1 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-10-13 +date: 2023-10-14 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 068d11d335ab7..d26df0275f478 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -1225,6 +1225,22 @@ "index pattern string" ] }, + { + "parentPluginId": "dataViews", + "id": "def-public.DataView.getAllowHidden", + "type": "Function", + "tags": [], + "label": "getAllowHidden", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "dataViews", "id": "def-public.DataView.setIndexPattern", @@ -6126,6 +6142,22 @@ "path": "src/plugins/data_views/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "dataViews", + "id": "def-public.DataViewAttributes.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [ + "\nAllow hidden and system indices when loading field list" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -7782,7 +7814,7 @@ "section": "def-common.FieldAttrs", "text": "FieldAttrs" }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; allowHidden?: boolean | undefined; }" ], "path": "src/plugins/data_views/common/types.ts", "deprecated": false, @@ -9232,6 +9264,22 @@ "index pattern string" ] }, + { + "parentPluginId": "dataViews", + "id": "def-server.DataView.getAllowHidden", + "type": "Function", + "tags": [], + "label": "getAllowHidden", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "dataViews", "id": "def-server.DataView.setIndexPattern", @@ -12517,7 +12565,7 @@ "signature": [ "(options: { pattern: string | string[]; metaFields?: string[] | undefined; fieldCapsOptions?: { allow_no_indices: boolean; includeUnmapped?: boolean | undefined; } | undefined; type?: string | undefined; rollupIndex?: string | undefined; indexFilter?: ", "QueryDslQueryContainer", - " | undefined; fields?: string[] | undefined; }) => Promise<{ fields: ", + " | undefined; fields?: string[] | undefined; allowHidden?: boolean | undefined; }) => Promise<{ fields: ", { "pluginId": "dataViews", "scope": "server", @@ -12640,6 +12688,20 @@ "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "dataViews", + "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "trackAdoption": false } ] } @@ -16300,6 +16362,22 @@ "index pattern string" ] }, + { + "parentPluginId": "dataViews", + "id": "def-common.DataView.getAllowHidden", + "type": "Function", + "tags": [], + "label": "getAllowHidden", + "description": [], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "dataViews", "id": "def-common.DataView.setIndexPattern", @@ -20723,6 +20801,22 @@ "path": "src/plugins/data_views/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "dataViews", + "id": "def-common.DataViewAttributes.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [ + "\nAllow hidden and system indices when loading field list" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -23055,6 +23149,20 @@ "path": "src/plugins/data_views/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "dataViews", + "id": "def-common.GetFieldsOptions.allowHidden", + "type": "CompoundType", + "tags": [], + "label": "allowHidden", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -23737,7 +23845,7 @@ "section": "def-common.FieldAttrs", "text": "FieldAttrs" }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; allowHidden?: boolean | undefined; }" ], "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", "deprecated": false, @@ -25460,7 +25568,7 @@ "section": "def-common.FieldAttrs", "text": "FieldAttrs" }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; allowHidden?: boolean | 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 4d2d73c2f5f8f..94e144063049b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1041 | 0 | 257 | 2 | +| 1048 | 0 | 262 | 2 | ## Client diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 822366d2fd440..cd8af93f73da7 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-10-13 +date: 2023-10-14 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 e8421c15bd5e7..668877a73d72b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -25,7 +25,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | stackAlerts, alerting, securitySolution, inputControlVis | - | | | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, lens, triggersActionsUi, ml, apm, exploratoryView, logsShared, fleet, stackAlerts, dataVisualizer, infra, canvas, presentationUtil, enterpriseSearch, graph, visTypeTimeseries, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, eventAnnotationListing, inputControlVis, visDefaultEditor, visTypeTimelion, visTypeVega, data | - | | | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, data, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, lens, triggersActionsUi, ml, apm, exploratoryView, logsShared, fleet, stackAlerts, dataVisualizer, infra, canvas, presentationUtil, enterpriseSearch, graph, visTypeTimeseries, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, eventAnnotationListing, inputControlVis, visDefaultEditor, visTypeTimelion, visTypeVega | - | -| | home, data, esUiShared, savedObjectsManagement, exploratoryView, fleet, observability, ml, apm, indexLifecycleManagement, observabilityOnboarding, synthetics, upgradeAssistant, uptime, ux, kibanaOverview | - | +| | home, data, esUiShared, savedObjectsManagement, exploratoryView, fleet, ml, apm, indexLifecycleManagement, observabilityOnboarding, synthetics, upgradeAssistant, uptime, ux, kibanaOverview | - | | | share, uiActions, guidedOnboarding, home, serverless, management, spaces, savedObjects, indexManagement, visualizations, controls, dashboard, savedObjectsTagging, expressionXY, lens, expressionMetricVis, expressionGauge, security, alerting, triggersActionsUi, cases, aiops, advancedSettings, exploratoryView, fleet, licenseManagement, maps, dataVisualizer, ml, infra, profiling, apm, expressionImage, expressionMetric, expressionError, expressionRevealImage, expressionRepeatImage, expressionShape, crossClusterReplication, enterpriseSearch, globalSearchBar, graph, grokdebugger, indexLifecycleManagement, ingestPipelines, logstash, monitoring, observabilityOnboarding, osquery, devTools, painlessLab, remoteClusters, rollup, searchprofiler, newsfeed, securitySolution, snapshotRestore, synthetics, transform, upgradeAssistant, uptime, ux, watcher, cloudDataMigration, console, filesManagement, kibanaOverview, visDefaultEditor, expressionHeatmap, expressionLegacyMetricVis, expressionPartitionVis, expressionTagcloud, visTypeTable, visTypeTimelion, visTypeTimeseries, visTypeVega, visTypeVislib | - | | | encryptedSavedObjects, actions, data, ml, logstash, securitySolution, cloudChat | - | | | actions, ml, savedObjectsTagging, enterpriseSearch | - | @@ -130,7 +130,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | visTypePie | - | | | @kbn/core-elasticsearch-server-internal, @kbn/core-plugins-server-internal, observabilityOnboarding, console | - | | | @kbn/content-management-table-list-view, filesManagement | - | -| | navigation | - | | | @kbn/react-kibana-context-styled, kibanaReact | - | | | encryptedSavedObjects | - | | | @kbn/core | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 03cb728187dec..f2e00130c8df1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -1217,14 +1217,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] -## navigation - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx#:~:text=MountPointPortal), [top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx#:~:text=MountPointPortal), [top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx#:~:text=MountPointPortal) | - | - - - ## newsfeed | Deprecated API | Reference location(s) | Remove By | @@ -1241,7 +1233,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [custom_threshold_rule_expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx#:~:text=title), [alert_details_app_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title)+ 2 more | - | | | [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [custom_threshold_rule_expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx#:~:text=title), [alert_details_app_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title)+ 2 more | - | | | [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [custom_threshold_rule_expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx#:~:text=title), [alert_details_app_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section.tsx#:~:text=title) | - | -| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/application/index.tsx#:~:text=RedirectAppLinks) | - | | | [render_cell_value.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/alerts_table/render_cell_value.tsx#:~:text=DeprecatedCellValueElementProps), [render_cell_value.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/alerts_table/render_cell_value.tsx#:~:text=DeprecatedCellValueElementProps) | - | @@ -1628,7 +1619,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title), [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title) | - | | | [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title), [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title) | - | | | [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title) | - | -| | [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [rule_details.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx#:~:text=toMountPoint), [rule_details.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx#:~:text=toMountPoint) | - | +| | [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [rule_add.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx#:~:text=toMountPoint), [rule_add.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx#:~:text=toMountPoint), [rule_edit.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx#:~:text=toMountPoint), [rule_edit.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx#:~:text=toMountPoint)+ 6 more | - | | | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/app.tsx#:~:text=KibanaThemeProvider), [connectors_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx#:~:text=KibanaThemeProvider), [connectors_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx#:~:text=KibanaThemeProvider), [connectors_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx#:~:text=KibanaThemeProvider), [test_utils.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx#:~:text=KibanaThemeProvider), [test_utils.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx#:~:text=KibanaThemeProvider), [test_utils.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx#:~:text=KibanaThemeProvider) | - | | | [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index cecb3d80242de..8e9c67c67c4c6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index c0a4bfe859c31..530ceaf11a3c8 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-10-13 +date: 2023-10-14 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 74a8f12238fa6..acbd4370dac3e 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-10-13 +date: 2023-10-14 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 5d0ebea4e7e3b..5c90511bb1c35 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 2f8309c500725..2897a54af2add 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 93389224bcfcf..b30e3736c8482 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index a0f72b4d361d0..ffbe30c695d69 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index d2548827e4e23..7a09d1705c8d3 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index f044fc71dc077..e1f065af8faed 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index bf7fb17909aea..a717a63794c86 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 466ace9cd2701..b019e67dbb469 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.devdocs.json b/api_docs/event_annotation.devdocs.json index 1eb8c01aefbad..f107d3ee6c768 100644 --- a/api_docs/event_annotation.devdocs.json +++ b/api_docs/event_annotation.devdocs.json @@ -1100,6 +1100,40 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "eventAnnotation", + "id": "def-common.EventAnnotationGroupCrudTypes", + "type": "Type", + "tags": [], + "label": "EventAnnotationGroupCrudTypes", + "description": [], + "signature": [ + { + "pluginId": "@kbn/content-management-utils", + "scope": "common", + "docId": "kibKbnContentManagementUtilsPluginApi", + "section": "def-common.ContentManagementCrudTypes", + "text": "ContentManagementCrudTypes" + }, + "<\"event-annotation-group\", ", + { + "pluginId": "eventAnnotation", + "scope": "common", + "docId": "kibEventAnnotationPluginApi", + "section": "def-common.EventAnnotationGroupSavedObjectAttributes", + "text": "EventAnnotationGroupSavedObjectAttributes" + }, + ", ", + "CreateOptions", + ", ", + "UpdateOptions", + ", {}>" + ], + "path": "src/plugins/event_annotation/common/content_management/v1/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "eventAnnotation", "id": "def-common.EventAnnotationGroupDeleteIn", diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 1427c7d198c8a..944e68e4998de 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 200 | 0 | 200 | 6 | +| 201 | 0 | 201 | 6 | ## Client diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index a29bf0c55a4b5..451707d58ad9e 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 35d55d3f80d03..e9c02f023599c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 4bc9e596ea246..deac03df8281c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index dfc7233dac22a..413317fbd89bf 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 5a8856a4172b8..aa44ef856d0ce 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 31cddad30bf5d..d38f6079642e1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index b0007e2ed0bda..1fb5e447167ad 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index df30f7f99e4f2..91613cf45fd5f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 487391bb91cc1..17ef0f21d48bc 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 124f632d2a44f..2f745607f3aa4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 9850f2f399a42..81b2ec2508f66 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 6ba257fd16c79..fcb6885e17e0d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index d18d9f066954c..70a4bf4f789f1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 4e1e4a3803e56..1bcbe00bad7d4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index f2d8870825460..08493381fdc5c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index c3466ee0bb2f6..a00d94a9a4472 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 835cd6193eea7..f6a75c5eb0167 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 5b89418f7972e..f311deff34ae7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 71e579ac8864c..d837a36bbf95e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 2f7777a833d36..77acd22318b3d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index cb6d1a9f6e6a9..9da65057cdd98 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 99ebd903aa732..f964c8e570495 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index dcd3a4282b3cb..adb729fd21882 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 196faf394bd56..a5c733f4c524f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index e6f55b2ea32d9..626a7333ceb03 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 7b8651f4ee4b2..76297b25e8291 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index 8afb87595f25f..02848b51c9177 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 75dcbbaf58a79..41a4a8f78e0b7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 3d8ae953e468c..dc8c53d5e14cb 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index c2fc618610185..dc1ad7aa4cd68 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 823f1535b6d4b..48b492d4a835f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index adbc96ef9a55c..35e1640890a9a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index a5bbc32bcd4bf..5a99f04929a32 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index dd206e5be8188..502e4e65ba435 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 3ac6a7add9f33..adbe728fd10e6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index a96184a7173f6..5af6de4841b83 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 36d8f35d4f74a..071831027d2c6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 7312b4bb183d6..c9f2df26b0423 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 89610b2175c17..96978484cd46f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 5bc432c4e6b5a..5c8eaf8d36a25 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 02548842a0a20..5eb8b5846559a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index e5f1aec959278..15b0aaa372647 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 3c37f0ba78783..50d8f4ca5ce10 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 87f2814babec1..726970331f8db 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index db5519b07d607..7f4cef728b0b1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index aaf023d129541..89695d94a8415 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight'] --- import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 4aca03e5cddbb..bb6ebd7e069ba 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.devdocs.json b/api_docs/kbn_apm_synthtrace.devdocs.json index 8b54b2e9a2299..721b44855b3cb 100644 --- a/api_docs/kbn_apm_synthtrace.devdocs.json +++ b/api_docs/kbn_apm_synthtrace.devdocs.json @@ -503,6 +503,40 @@ } ], "functions": [ + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.addObserverVersionTransform", + "type": "Function", + "tags": [], + "label": "addObserverVersionTransform", + "description": [], + "signature": [ + "(observerVersion: string) => ", + "Transform" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/utils/transform_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.addObserverVersionTransform.$1", + "type": "string", + "tags": [], + "label": "observerVersion", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/utils/transform_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/apm-synthtrace", "id": "def-server.createLogger", @@ -550,6 +584,24 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.deleteSummaryFieldTransform", + "type": "Function", + "tags": [], + "label": "deleteSummaryFieldTransform", + "description": [], + "signature": [ + "() => ", + "Transform" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/utils/transform_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [], diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 6857600f9df1a..461bcb6520c56 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-10-13 +date: 2023-10-14 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 | |-------------------|-----------|------------------------|-----------------| -| 28 | 0 | 28 | 7 | +| 31 | 0 | 31 | 7 | ## Server diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 91d8d3af564ac..5b5d418c4d9ab 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 3176df01a3e95..b581f5d3561b8 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index e01b456d78bf3..ef773a820820c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index a22d077e13b8a..ed650278d1a1b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 1528e98c3862e..2bc11326beb44 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index a614f2c674ee6..d0e4eb6b782da 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index f3f470a36f552..28f3a706570e3 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 85a704574edfc..43ed8d617f2ed 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 4ae5b1e79b79f..65b1681cef70d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 0fa76395bde65..6a3198a1daa73 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 1dba53c610992..0bdafdbcbda0e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 4ecb6a3e90039..c2a0a9ef628d1 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-10-13 +date: 2023-10-14 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 4686767a305c0..a8696dfe2c210 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-10-13 +date: 2023-10-14 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 6c67d5875cc47..7c79ed58eabec 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 3eb348eee7d02..383b766be53bf 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 67cf5d3840d5e..659f0dfb3c95f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 9640b18d741b8..8980dcb79d6f1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index 1423a226fccbb..43e11ad1e3a66 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 679655131b173..21787dec02cda 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index b67992c6d1716..15ede67db0c85 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 664264d7c751c..9e740a2c17606 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.devdocs.json b/api_docs/kbn_content_management_utils.devdocs.json index 545ea911e0490..4225db663ec83 100644 --- a/api_docs/kbn_content_management_utils.devdocs.json +++ b/api_docs/kbn_content_management_utils.devdocs.json @@ -81,8 +81,8 @@ "pluginId": "@kbn/content-management-utils", "scope": "common", "docId": "kibKbnContentManagementUtilsPluginApi", - "section": "def-common.SOContentStorageConstrutorParams", - "text": "SOContentStorageConstrutorParams" + "section": "def-common.SOContentStorageConstructorParams", + "text": "SOContentStorageConstructorParams" }, "" ], @@ -2725,18 +2725,18 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams", + "id": "def-common.SOContentStorageConstructorParams", "type": "Interface", "tags": [], - "label": "SOContentStorageConstrutorParams", + "label": "SOContentStorageConstructorParams", "description": [], "signature": [ { "pluginId": "@kbn/content-management-utils", "scope": "common", "docId": "kibKbnContentManagementUtilsPluginApi", - "section": "def-common.SOContentStorageConstrutorParams", - "text": "SOContentStorageConstrutorParams" + "section": "def-common.SOContentStorageConstructorParams", + "text": "SOContentStorageConstructorParams" }, "" ], @@ -2746,7 +2746,7 @@ "children": [ { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.savedObjectType", + "id": "def-common.SOContentStorageConstructorParams.savedObjectType", "type": "string", "tags": [], "label": "savedObjectType", @@ -2757,7 +2757,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.cmServicesDefinition", + "id": "def-common.SOContentStorageConstructorParams.cmServicesDefinition", "type": "Object", "tags": [], "label": "cmServicesDefinition", @@ -2777,7 +2777,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.allowedSavedObjectAttributes", + "id": "def-common.SOContentStorageConstructorParams.allowedSavedObjectAttributes", "type": "Array", "tags": [], "label": "allowedSavedObjectAttributes", @@ -2791,7 +2791,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.createArgsToSoCreateOptions", + "id": "def-common.SOContentStorageConstructorParams.createArgsToSoCreateOptions", "type": "Function", "tags": [], "label": "createArgsToSoCreateOptions", @@ -2812,7 +2812,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.updateArgsToSoUpdateOptions", + "id": "def-common.SOContentStorageConstructorParams.updateArgsToSoUpdateOptions", "type": "Function", "tags": [], "label": "updateArgsToSoUpdateOptions", @@ -2833,7 +2833,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.searchArgsToSOFindOptions", + "id": "def-common.SOContentStorageConstructorParams.searchArgsToSOFindOptions", "type": "Function", "tags": [], "label": "searchArgsToSOFindOptions", @@ -2854,11 +2854,13 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.enableMSearch", + "id": "def-common.SOContentStorageConstructorParams.enableMSearch", "type": "CompoundType", "tags": [], "label": "enableMSearch", - "description": [], + "description": [ + "\nMSearch is a feature that allows searching across multiple content types\n(for example, could be used in a general content finder or the like)\n\ndefaults to false" + ], "signature": [ "boolean | undefined" ], @@ -2868,7 +2870,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.mSearchAdditionalSearchFields", + "id": "def-common.SOContentStorageConstructorParams.mSearchAdditionalSearchFields", "type": "Array", "tags": [], "label": "mSearchAdditionalSearchFields", @@ -2882,7 +2884,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.logger", + "id": "def-common.SOContentStorageConstructorParams.logger", "type": "Object", "tags": [], "label": "logger", @@ -2902,7 +2904,7 @@ }, { "parentPluginId": "@kbn/content-management-utils", - "id": "def-common.SOContentStorageConstrutorParams.throwOnResultValidationError", + "id": "def-common.SOContentStorageConstructorParams.throwOnResultValidationError", "type": "boolean", "tags": [], "label": "throwOnResultValidationError", diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 4ce5763bb79f3..d79096637fc80 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 191 | 1 | 126 | 0 | +| 191 | 1 | 125 | 0 | ## Common diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 0d5061fda446b..3284c7b522d74 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index ff40b69d1ba7d..679610c4faef9 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index fbf0d3f72e0a8..409eafd3bbe66 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 2e52c90bae757..a85523e7e373f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 1f89c3b8f2685..2119ce8419a8e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index e4a8bdc2d16d6..a22f576e7ce67 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index 4dea30ec2182b..9dd00823bd18a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index a5bb036200b28..6d01e4ec44616 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index c4b3649375c14..f3afb4feb0901 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index fd156fef12cd0..a715615a237ba 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 9f39153e78974..c44ab29cb354a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 573edf15b8470..721bb3ff60461 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index 0a69ee1bfb862..71b54f70abeb6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index cccadcccb0039..7d35931bf7f69 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 2904e62286332..5c68eb529475d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index db33192c78c86..2c2701b543ef4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index 00cba60e8de11..e3f65d11f3b62 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index c906b11b43e54..eb12ce0acbd7a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 18d2a56f8e442..a016104fc3b9f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index e869a3dbcc0ad..8d98670429c38 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index 993618d588b8e..49861d6c2823b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 37c33bf975e56..a0f90035ac651 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index ea44c048085ed..932649450f4f0 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 7b881f1899c6a..e4d81fd1f1010 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index ae4bdd944db56..3b9a582ca8f1e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index 90db00ff6831c..d3c48e7deacfa 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 9fa8e1e42f706..bd7e90bc9e6e7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 8986bdee822bb..f55f682ae6225 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index cfb052ff70b96..3a0928e930ef3 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index b259dc935ebf9..28abd3a3d5eb4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index f10b1e89f23ca..e68c653dd90e1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 1420fee862018..b6cac1c2c5950 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index e4ef323bd5cb2..8819aa1a72d24 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 715db79cf04b0..1b8b3f64e13d5 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index d9f315493ac45..14a6d15557c89 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 457959aa1766d..de51eeb164fe7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index f717e8699ae3f..1a075ff00d6f6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index cc32d40be7973..40f02fe06187a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 3444a9a2d908f..a5652e347456f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index dff2b793de069..d0e6b11123012 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 24abb3ac7588e..0662ac310f06b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 5996dd4420a82..b2e698af78d92 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index ddec34dad7e1f..552d4764e6282 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index c10913dee689c..4c205683924b7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index e60c57ce1b239..00357409904d6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index 3bf12543f025b..66c36f40ad11c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index a9c8ffea5d8de..ede1e988b9adb 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index 258b7ec2851c3..2c8ca2fa47bdf 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index 14e9d3e6b7c4d..c2ace3e7d6881 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index c7b6481996dff..b14dd62c906ee 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 141e858940249..d36844cb235cd 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index 743742e7d5175..94f48da2d23e6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 16a4daa0a5b8c..1fa78e332c092 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index a0505820875a3..4cddb4b8fd00a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index b2ad15a6f6feb..3ce7d22549c4f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 26d5ff214084e..13495976a7235 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index 62c475e820061..9b878b8d07a07 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 3d545d5d7c064..82c9d36490c71 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index f17f702477d08..c6be78713e322 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index 98f352832055a..c42fd6a09f403 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 27c5000852bdf..2c00e86b1784f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index a484867d9b387..24a9c707618f1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 2a03157cccc2c..a789e9c17b55a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index 0e50db41c0e94..45cec3ec444f9 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index 568340bdc3415..b1acc7e330bad 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index c618f0af1785d..f14debb1bfcbe 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index f510c96aa8f96..31c7ee99c8b95 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 8be77253b3d80..6574afbacd9ed 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 92d57089090ae..da146a51107e7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 2ac0ef7af40f9..f26816db1d265 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 7420f09b614fd..6f27cbcb9bae6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index 559ae13504006..06fb47181c52f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 4aa68beed800d..770047bc9fb59 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index e76feae942b86..5ec0d9c632587 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index 5a811604677d6..3007b0551a32c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index 00851a03ea95f..e72ff18bc9ccb 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 4d6a9ba724b73..73e017965f105 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 113579ca77349..c9e02d10c2939 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index 083b0b4ce299a..37f8751489d87 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 74ee9f0bd7e27..f7f09eb8b7a86 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index bbfa157b9547b..35d8e3a9cfc5a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index 321346d1f6c3a..12175023a35da 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 34ca735b84bc0..03560733d820e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 82c37715bde03..d7bb7cfb49f3c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index d08d591305b6c..477c6fe0dd722 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index e2a11ff2cd653..42f3fcefde763 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 23220c6a3b845..d2ca415fe96a5 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index 08288450c2113..25d869360acfd 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index e0fbef8fc12c6..150500788ec43 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index aafb53056f88a..32c30f3cdb467 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index fafd34437aa5a..87afc1b72d0da 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 3f1833d77c38b..f03c5327cd242 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index 13bca7101a4ed..9fd5a69361ff4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index a6e2a8507c412..c46f69d84520b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 825b9fb0ca99b..dd14e7565840d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index a9041f287c27d..6d90f63ad2f13 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index fff2154ba4f98..cf0b97cd2a0ac 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index a2ad280dfcfa1..58d4cf9ea887d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 09f2be79b0977..13f7b137e95eb 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index b404964a396b0..269b7ecbe3001 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index c56147f080ac7..d1da5d5cdd241 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index a4e565fc8e8f5..2e1e7e3269b18 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index 51413996db22e..29f67b024df74 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 49e74d740001b..f880e4da75285 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index d31abf68210c0..f39ffc755ebc6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 3450d114dafdb..9c74ef236db77 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index dbb34b4430558..6a598ea90c455 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 9c4b3bf995492..3c27dd91f327e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 76224c8016dbc..235a00f427c57 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index ecbc35c7ecb76..2adf5d9e0cc61 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 1867c113a8e59..23abaa49f21b5 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index ea6f7a163ecc3..0a76c5ad18831 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index 7ad8a1848cdb2..55e24c9109b88 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index efbfbc7d97d49..9b419037216f3 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 747d099ccc978..0f14a2f58a471 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 64ef270486124..7465f9ebff733 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index c3fb4232decf1..fce1427ea9ee1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 46ed4eac883c7..0a3e6ff537e02 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index e78eab11eb889..b2ff6986931ef 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 317b82f177f33..8743488066033 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 9482252792f29..76b318ea231b1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 76a14a896e7c1..40ff476c58fd9 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index c1d32f7f5b0b0..738260eb1a773 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index 5da67898d1bf8..0c763314bc62b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index 1c062a2f4eb69..f00432ad85112 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index a6f7bff514330..0fbfb21ca970c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index 5be88e89d5263..62fdc42ad27bf 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 8ce8508d9c09c..0b22e4d963be0 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 2dc0eb57d3ee6..0f5e66abbf445 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index 0f1df3afc4373..3c6354c73e7f0 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 68c87ddfe724a..97c603b39aa65 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index f55e8720b88af..105d542bb6ca8 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index 899bb13520fef..c00173372ea9d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index 92e75b0c23363..43daf98f078a1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index fe9e8127ef252..10dbe4a1a3682 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index 8ba779f186f6e..353d5ff85833b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index ab707f88d9192..36d9bab5e1996 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index ea612a9611ce4..ea5e4e5ee13a6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index 12cd648e13eb2..9d6094935c6cf 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 0fa2288196cb9..3285812ac774d 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index dc77f47be4503..2906908b99105 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index cfa0c10002dd0..edb7ed8d3cd79 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index b605f8fa709ea..92736f2cf9177 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index d9ca3b3f863db..6c2d9c40e93a7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index a05117546a9e5..49af9dd757861 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index e32a1a0f78d7b..599556c0f65a9 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index f0cd6a53d9768..649e90a349021 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 8fd57e5143f1d..af166ec75fdf8 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index fef577c961466..6702f7b78b089 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 575ce18530f5e..2e05dc3f1cc23 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index e1378ee866a48..b8a5dae5e160a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 8a0ba77e5d07d..24118385ff7fa 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index 57e1f7c336add..97a5da317c18c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 78bee4583b29b..24148be220f01 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 2ddc79964a735..09f36ca000981 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx index 1951dc8d93496..0c08b49c2bb46 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal'] --- import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 873e6fcc337ed..1af7795cb2c8e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index ef6d0c1880bca..f99194bbdfe85 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 04470cc89fdcd..e53d921877b31 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index a493b0715b32b..4dd445aefc00a 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index a23bb5e640ccc..9c514f0b6d91c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 66a222189b584..8598d11cfcfc3 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 41b93c1d5c4be..17c832b88d584 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index b102f312755c4..d608d6e7e85bc 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 8f3705d27a9f5..53f767ef1d324 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index ca30d569de47e..3f59d2720025a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index 0b8826a03fb83..7c26fbbf2bed4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index deed6462e6a1a..32c86370b6f31 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index 358a798a0cbc0..f0878511dc6c3 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index 77c97a9fb5381..f27f8f0a953a6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index bdd547267b596..f2a0afc02c1bb 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index 98a59af49fc1b..393d800b2d98f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index 62d10cc83a5ea..5ae9bb2d822a3 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 716cf32fd7493..46946636d426d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 1d7ad3333ed3b..e417a63a9d214 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index d830502f259df..6134ecff7be6c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 0581baf8aaebd..7164503805108 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index f499bb42bce27..7dc0ad1854685 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 8867f68291c0b..fe1ab44acb6ee 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 5fdb8f182c242..1d797a20a11ce 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index 3a0aef4ea6449..888994516a204 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index bc57a90ef9dbb..cb4e4636e0c3a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx index a3c0db41bdc90..fa3cd7d72d736 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs'] --- import kbnEcsObj from './kbn_ecs.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 847bef5ea7e24..414c0a91e9114 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 9a7773935d6b5..f7aa182832738 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 9284a210b2899..95b9e36f0c640 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 8a9c83dfa5b9f..b06e2ab667869 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 38a80799d6eef..ea51165eeeb1d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 6974717ec7059..4ae60d722f81b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index 1b827f3ff9eba..2f2d474a68b15 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index de87fef4fa100..797e67cc9e210 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 4b985767fdca4..698031c4dab55 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index b30ef02a37f25..da2fa3de84bb9 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index aeba9a2c3ab11..d0545a041da1b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 0d119c7cc1fba..533672a7a8821 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index a73ba9fa5fb90..abb529784b662 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index e287fb446f003..a51bab98e5761 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index 6258ce1eba920..91aa19f43c4dc 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 8cd05107e5c6e..1a0c50165c688 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index d9d60780ab218..7ed74f2260e3d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 5016da363b1be..b53e5640998a6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx index d630cac3853e7..cd1f880e807d7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types'] --- import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index c4364ad3fa702..f836c379a8945 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 50164d28062e8..03d287e4968c7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index eafd2092237f8..df6e387ded59c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index b87ac0ee9d603..9c87878c0a22a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index e69205aad036b..589019d7668b1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index b644fb33c2b4b..b5998d04d5f3b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index a91ed0983b566..44c219ff2635f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index e5cb2e042832c..dc73658388821 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 9ed38b28d9c41..c87b67c9ef888 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index f63f61e702870..67bfe93193c0b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index d8f100609a069..de89b4563f152 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-10-13 +date: 2023-10-14 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 6a4b95c7792e5..0be10a72350c6 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-10-13 +date: 2023-10-14 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 13259c0d9d4ad..647d841097d08 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 468db31058cba..4935d7d7b4c29 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 52a4cb5d0e2c5..5c7fa814b9727 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 0b5c4593421fa..7a0f346ffcc4e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index eb7f7ef37716e..f165f22a2d194 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 6d03674aa0c5c..c0c5e4ad781d8 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 5fcc6adce10c3..1cde3581d83e9 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index e77f193a24098..876afab99ef59 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index c8fa19008f6fe..c36a413391acf 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index bec5b026b3cf6..1f0ce710e5c89 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index c436920aa4832..92b9ab49c917a 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index e3f406b78aaf7..90dc3468db6c7 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 72394390324bf..f2b91a819e9cc 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index a70769422beca..3da81948fad61 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 6d5153659532a..e53cc63f01bb2 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index a4f3d2e088c0d..7813911f24aee 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index 145b4d07da5e2..f12b858fa1523 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 67b13debc8089..7bbfcf0c822f5 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index d7564d250d4a2..a4720bd44a21c 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 1e9a042255dab..014a77238b19e 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 546000f2ed730..c6c026ea72a93 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index e7cf46e806c32..ee98166c0c5d5 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index b150293b11edd..8b1be084bb591 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 9f5efdf12a5cc..ecbe35a02bd63 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index 1d9f371d84757..b2db3dff812d7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 40d8fd8700b8c..a4915adca8003 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index b1ff0acba670f..5131b2c332615 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 38282cd9fa1e7..4825d1c4ad2a1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index 415c8c00a3df2..1bdf04196a3e3 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index ee8aaf1e91996..a15f176277f6b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index b173f48852279..663faca8d3b34 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index 2772bd7362bf3..d684dfc54d6fc 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index 53a5896191f71..4c28e3e375cf0 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index f0525fe0ff6ca..94c2a221ff015 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index ae07329944689..9b59bc3c659a6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index 31f18cc32b274..3614a6232e1dd 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme'] --- import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 8ee4fb7752a74..83e21535442b1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index 805fb634e2cf7..a37d12e1a31ae 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index 9c97a6ece7be6..08c122265febc 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index ad67ed3dacc99..213697520ac10 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index cffd3dc660b07..352984016f63b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index c0700a3fecc68..a681a821920e0 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index 49ca205d7bf32..7364a550c0787 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index a45004dd35f15..ec59c35b8b024 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index 470c9c3242dfe..cf3e9d9584f3b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 90dcfec26f391..8b28d27ae9c35 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 7704e0655e9a4..1923a7b2088b1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 59921f1c5523a..e420e95e6c42e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index 52dbe9953b494..461233414ac5a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index bea0e794f8cb4..7a72941bc203f 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 5ac88bf3902bd..c4225a2843bf4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 642931328d7e8..07964e389d90e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index 577f08c988c33..95078e1adbe2c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index cd6d3a7544cba..0974472dd8673 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 3ec40e5ffa1cd..15c6b4d242a23 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index f60a496106306..1752ea35a7cc1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 1f1e78ca2b52f..8b224dda920d0 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 5e75506976e79..edea1427cac09 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 3b96bb0044b32..1f7ff153f9cd7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index 2e78bc9e11ae8..9e79ff4078bc8 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index c34ca93833f3e..e2da6eb0ca7c2 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 02ddaafca7496..610393776e129 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index 7b5bca1177508..51e927b56bd42 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index f9f31419f1920..89530d5004236 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.devdocs.json b/api_docs/kbn_react_kibana_mount.devdocs.json index 243b8bd440a2c..6524362eea9af 100644 --- a/api_docs/kbn_react_kibana_mount.devdocs.json +++ b/api_docs/kbn_react_kibana_mount.devdocs.json @@ -190,7 +190,7 @@ "section": "def-common.MountPoint", "text": "MountPoint" }, - ") => void" + " | undefined) => void" ], "path": "packages/react/kibana_mount/mount_point_portal.tsx", "deprecated": false, @@ -211,12 +211,12 @@ "section": "def-common.MountPoint", "text": "MountPoint" }, - "" + " | undefined" ], "path": "packages/react/kibana_mount/mount_point_portal.tsx", "deprecated": false, "trackAdoption": false, - "isRequired": true + "isRequired": false } ], "returnComment": [] diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 7b2d345647844..4c822135819f9 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 3f8474a0f9ccc..bd581a62bc1e1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index e42dc265bbc11..13a181d91ef69 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 3b13d5305fca5..499335d48f631 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index f8f51fe197866..47755a66189a4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index b493f7f409087..5d222d20ea099 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index a2a36b432a836..a254d0dccafe9 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index e3dc9245e3557..96a1cf63a88a4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 44776c3cb1ba2..e22aa2656b46d 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index a0a3fb5d95cd2..de7f9d976dd17 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index a92ce8a277ae7..438f3ef430bf7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 812b5bd31baf2..2167f26baa393 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index d3ce93a91d31a..965017def1c9a 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 57106ba96c421..e5f13efd846c6 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 86876d0bf1b70..6396fe095a7b1 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index f214ad39c1de7..3fc86832534c0 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index 7b588c06249fe..05c58ced41b05 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index aab292ad203b7..2b0c3b9c06e53 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 064fe0f424bb5..f9f0e4829a018 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index 41b358168c209..b3872a61ff525 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 5f106f071d536..86e7d344f2359 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index b34e2f6ea9839..906b3886f2139 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index a9c394d159025..831d82609d81f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index 2dee458ee1f04..88f0ffa984891 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index a83d8a18f7821..5477d68069ea3 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 5163415c16def..dde5d439ae514 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 5179e5647b9c7..1fd9d033f775c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 8600a6c8687e0..6d169827465e8 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 4539a9eb1a4ab..587b99ab55008 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index bd02c02065c7b..c67cb2c793e98 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index e2f417f66e4b7..ddd757a27bbe2 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 0e0d1d53b6471..a9f165d259e75 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index a6284bed3b746..6eaddbf38e212 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index d0840c35193e2..4507bc9d89bdd 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index a9c761d9d4f40..1fe741a691fc5 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index a5172a86fd367..38bc7fabc6ad0 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index a9c33d32d7e1d..db4a5aed3ff91 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 751b5932099d7..59bd912c1f6d9 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index f27d95fb7dfc8..ce221e77c8992 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index a9d3c85bdf755..76913b281cc97 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 03d29e7a15fb4..c0e4da07b9724 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 91d880e0e7f31..ab2d62327221f 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 9672e72175807..eda7d7812774b 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 5be6367ddd8e6..e46264f9db4bf 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 3815381c8c3a9..69a2389b9f511 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index c3a9109cd4edb..44b2300a099f1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index 7362d0399a9b1..b4412dc78be0d 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-10-13 +date: 2023-10-14 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 379435a8d16fe..5d154b50fbb1b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index 8662693d6867a..542361ffcd883 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-10-13 +date: 2023-10-14 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 d9c493c688e2f..62af39840e6cc 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 6d9cc23183f53..10e86039f898e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index 8abfa394c2ffb..5bfc06e922f17 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index 1f9b14e9a6153..b5488b7357764 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index aa8eb3be75b34..b65e82858e42c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index 9b5d1de0cb243..262b24c5ead3d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index 5abe4cb6efe39..38d5a9195b88c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 10a5876f0fb00..9e15b0df97443 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index cda82baa2b761..1333188d3c313 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 87d2b7e739d96..d4962ba09a080 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index 491b08c40816c..8f7c0303869cd 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index 2ccc2f0caba6d..ad18b01f2acd0 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index e0aec17c313ae..e94b11fbbe325 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index 43740ddfe75fa..3c4f7e848d3d4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index c5264d585e59c..2d6696b1c655d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 60f5fdd5f87c8..9879a22ac78f6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index fc7c70fc92fd4..5e1fa030d286f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 349f915bcdf62..5abd3f3b72737 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index f4f6edb9bfbbb..90a35262a995b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index ec6138b09fd57..08bbb3810983d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index ba1854e912120..afb50275f7c4f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 7d57b6195dc05..e7dd00fa5630f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index c568f768c1661..db2ba9aab9d87 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index e921454628d2c..2dc607292dde8 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 7b64db15b7e4d..3eba01c64ec66 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index 8aaf7dbfbbcd8..daf4834d64f98 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index d9a62df779c56..2966b611eb421 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index dc0550e61390e..f5604549fec1a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 952a4654abb0f..7eb3cfacecc8d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index d1756bf5f21dd..8576c35d9a79d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 91fbb22653a2b..d61b665235c02 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 038c858b62a18..89f29d895679c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index faa139d420cd5..b437b56b34d3d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 7c69caf08a170..1f0f1cc22681c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index e3d7833963460..8e4306a88f91d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.devdocs.json b/api_docs/kbn_slo_schema.devdocs.json index 0666cd886ffa9..84ef4fa26f48d 100644 --- a/api_docs/kbn_slo_schema.devdocs.json +++ b/api_docs/kbn_slo_schema.devdocs.json @@ -474,75 +474,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.CreateCompositeSLOInput", - "type": "Type", - "tags": [], - "label": "CreateCompositeSLOInput", - "description": [], - "signature": [ - "{ name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; } & { id?: string | undefined; tags?: string[] | undefined; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.CreateCompositeSLOParams", - "type": "Type", - "tags": [], - "label": "CreateCompositeSLOParams", - "description": [], - "signature": [ - "{ name: string; timeWindow: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; } & { id?: string | undefined; tags?: string[] | undefined; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.CreateCompositeSLOResponse", - "type": "Type", - "tags": [], - "label": "CreateCompositeSLOResponse", - "description": [], - "signature": [ - "{ id: string; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.CreateSLOInput", @@ -688,36 +619,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.FindCompositeSLOParams", - "type": "Type", - "tags": [], - "label": "FindCompositeSLOParams", - "description": [], - "signature": [ - "{ name?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"creationTime\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.FindCompositeSLOResponse", - "type": "Type", - "tags": [], - "label": "FindCompositeSLOResponse", - "description": [], - "signature": [ - "{ page: number; perPage: number; total: number; results: ({ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.FindSloDefinitionsResponse", @@ -767,21 +668,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.GetCompositeSLOResponse", - "type": "Type", - "tags": [], - "label": "GetCompositeSLOResponse", - "description": [], - "signature": [ - "{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.GetPreviewDataParams", @@ -1022,75 +908,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.UpdateCompositeSLOInput", - "type": "Type", - "tags": [], - "label": "UpdateCompositeSLOInput", - "description": [], - "signature": [ - "{ name?: string | undefined; compositeMethod?: \"weightedAverage\" | undefined; sources?: { id: string; revision: number; weight: number; }[] | undefined; timeWindow?: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }) | undefined; tags?: string[] | undefined; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.UpdateCompositeSLOParams", - "type": "Type", - "tags": [], - "label": "UpdateCompositeSLOParams", - "description": [], - "signature": [ - "{ name?: string | undefined; compositeMethod?: \"weightedAverage\" | undefined; sources?: { id: string; revision: number; weight: number; }[] | undefined; timeWindow?: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }) | undefined; tags?: string[] | undefined; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.UpdateCompositeSLOResponse", - "type": "Type", - "tags": [], - "label": "UpdateCompositeSLOResponse", - "description": [], - "signature": [ - "{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.UpdateSLOInput", @@ -1402,381 +1219,76 @@ }, { "parentPluginId": "@kbn/slo-schema", - "id": "def-common.compositeSloIdSchema", - "type": "Object", - "tags": [], - "label": "compositeSloIdSchema", - "description": [], - "signature": [ - "StringC" - ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.compositeSLOResponseSchema", + "id": "def-common.createSLOParamsSchema", "type": "Object", "tags": [], - "label": "compositeSLOResponseSchema", + "label": "createSLOParamsSchema", "description": [], "signature": [ "TypeC", - "<{ id: ", + "<{ body: ", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", "StringC", - "; name: ", + "; description: ", "StringC", - "; timeWindow: ", + "; indicator: ", "UnionC", "<[", "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", + "<{ type: ", "LiteralC", - "<\"rolling\">; }>, ", + "<\"sli.apm.transactionDuration\">; params: ", + "IntersectionC", + "<[", "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", + "<{ environment: ", + "UnionC", + "<[", "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", + "<\"*\">, ", + "StringC", + "]>; service: ", "UnionC", "<[", "LiteralC", - "<\"occurrences\">, ", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", "<[", - "TypeC", - "<{ target: ", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; threshold: ", "NumberC", + "; index: ", + "StringC", "; }>, ", "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; compositeMethod: ", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", + "<\"sli.apm.transactionErrorRate\">; params: ", + "IntersectionC", + "<[", "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; tags: ", - "ArrayC", - "<", - "StringC", - ">; createdAt: ", - "Type", - "; updatedAt: ", - "Type", - "; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.compositeSloSchema", - "type": "Object", - "tags": [], - "label": "compositeSloSchema", - "description": [], - "signature": [ - "TypeC", - "<{ id: ", - "StringC", - "; name: ", - "StringC", - "; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; sources: ", - "ArrayC", - "<", - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; tags: ", - "ArrayC", - "<", - "StringC", - ">; createdAt: ", - "Type", - "; updatedAt: ", - "Type", - "; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.createCompositeSLOParamsSchema", - "type": "Object", - "tags": [], - "label": "createCompositeSLOParamsSchema", - "description": [], - "signature": [ - "TypeC", - "<{ body: ", - "IntersectionC", - "<[", - "TypeC", - "<{ name: ", - "StringC", - "; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; }>, ", - "PartialC", - "<{ id: ", - "StringC", - "; tags: ", - "ArrayC", - "<", - "StringC", - ">; }>]>; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.createSLOParamsSchema", - "type": "Object", - "tags": [], - "label": "createSLOParamsSchema", - "description": [], - "signature": [ - "TypeC", - "<{ body: ", - "IntersectionC", - "<[", - "TypeC", - "<{ name: ", - "StringC", - "; description: ", - "StringC", - "; indicator: ", - "UnionC", - "<[", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.apm.transactionDuration\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ environment: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; service: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionType: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionName: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; threshold: ", - "NumberC", - "; index: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.apm.transactionErrorRate\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ environment: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", "StringC", "]>; service: ", "UnionC", @@ -2089,26 +1601,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.deleteCompositeSLOParamsSchema", - "type": "Object", - "tags": [], - "label": "deleteCompositeSLOParamsSchema", - "description": [], - "signature": [ - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.deleteSLOInstancesParamsSchema", @@ -2228,206 +1720,40 @@ "StringC", "]>; }>>; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.fetchHistoricalSummaryResponseSchema", - "type": "Object", - "tags": [], - "label": "fetchHistoricalSummaryResponseSchema", - "description": [], - "signature": [ - "ArrayC", - "<", - "TypeC", - "<{ sloId: ", - "StringC", - "; instanceId: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; data: ", - "ArrayC", - "<", - "IntersectionC", - "<[", - "TypeC", - "<{ date: ", - "Type", - "; }>, ", - "TypeC", - "<{ status: ", - "UnionC", - "<[", - "LiteralC", - "<\"NO_DATA\">, ", - "LiteralC", - "<\"HEALTHY\">, ", - "LiteralC", - "<\"DEGRADING\">, ", - "LiteralC", - "<\"VIOLATED\">]>; sliValue: ", - "NumberC", - "; errorBudget: ", - "TypeC", - "<{ initial: ", - "NumberC", - "; consumed: ", - "NumberC", - "; remaining: ", - "NumberC", - "; isEstimated: ", - "BooleanC", - "; }>; }>]>>; }>>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.findCompositeSLOParamsSchema", - "type": "Object", - "tags": [], - "label": "findCompositeSLOParamsSchema", - "description": [], - "signature": [ - "PartialC", - "<{ query: ", - "PartialC", - "<{ name: ", - "StringC", - "; page: ", - "StringC", - "; perPage: ", - "StringC", - "; sortBy: ", - "LiteralC", - "<\"creationTime\">; sortDirection: ", - "UnionC", - "<[", - "LiteralC", - "<\"asc\">, ", - "LiteralC", - "<\"desc\">]>; }>; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.findCompositeSLOResponseSchema", - "type": "Object", - "tags": [], - "label": "findCompositeSLOResponseSchema", - "description": [], - "signature": [ - "TypeC", - "<{ page: ", - "NumberC", - "; perPage: ", - "NumberC", - "; total: ", - "NumberC", - "; results: ", - "ArrayC", - "<", - "IntersectionC", - "<[", - "TypeC", - "<{ id: ", - "StringC", - "; name: ", - "StringC", - "; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.fetchHistoricalSummaryResponseSchema", + "type": "Object", + "tags": [], + "label": "fetchHistoricalSummaryResponseSchema", + "description": [], + "signature": [ "ArrayC", "<", "TypeC", - "<{ id: ", + "<{ sloId: ", "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; tags: ", + "; instanceId: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; data: ", "ArrayC", "<", - "StringC", - ">; createdAt: ", - "Type", - "; updatedAt: ", + "IntersectionC", + "<[", + "TypeC", + "<{ date: ", "Type", "; }>, ", "TypeC", - "<{ summary: ", - "TypeC", "<{ status: ", "UnionC", "<[", @@ -2450,9 +1776,9 @@ "NumberC", "; isEstimated: ", "BooleanC", - "; }>; }>; }>]>>; }>" + "; }>; }>]>>; }>>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3285,26 +2611,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.getCompositeSLOParamsSchema", - "type": "Object", - "tags": [], - "label": "getCompositeSLOParamsSchema", - "description": [], - "signature": [ - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.getPreviewDataParamsSchema", @@ -6584,198 +5890,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.updateCompositeSLOParamsSchema", - "type": "Object", - "tags": [], - "label": "updateCompositeSLOParamsSchema", - "description": [], - "signature": [ - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; body: ", - "PartialC", - "<{ name: ", - "StringC", - "; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; tags: ", - "ArrayC", - "<", - "StringC", - ">; }>; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.updateCompositeSLOResponseSchema", - "type": "Object", - "tags": [], - "label": "updateCompositeSLOResponseSchema", - "description": [], - "signature": [ - "TypeC", - "<{ id: ", - "StringC", - "; name: ", - "StringC", - "; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; tags: ", - "ArrayC", - "<", - "StringC", - ">; createdAt: ", - "Type", - "; updatedAt: ", - "Type", - "; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.updateSLOParamsSchema", @@ -7481,44 +6595,6 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.weightedAverageCompositeMethodSchema", - "type": "Object", - "tags": [], - "label": "weightedAverageCompositeMethodSchema", - "description": [], - "signature": [ - "LiteralC", - "<\"weightedAverage\">" - ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.weightedAverageSourceSchema", - "type": "Object", - "tags": [], - "label": "weightedAverageSourceSchema", - "description": [], - "signature": [ - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>" - ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/composite_slo.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false } ] } diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 663784b09c593..2a31489ca1ad8 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/actionable-observability](https://github.com/orgs/elastic/team | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 135 | 0 | 132 | 0 | +| 114 | 0 | 111 | 0 | ## Common diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index a3b8882176c69..02d57480bfb5a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index a02aac657ff06..a0029321693b4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 6064036234f28..814509603010f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 2746e31e5ae0b..fdb4373177d42 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_subscription_tracking.mdx b/api_docs/kbn_subscription_tracking.mdx index fc1df3c28ab2b..28c15bd4cd798 100644 --- a/api_docs/kbn_subscription_tracking.mdx +++ b/api_docs/kbn_subscription_tracking.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-subscription-tracking title: "@kbn/subscription-tracking" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/subscription-tracking plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/subscription-tracking'] --- import kbnSubscriptionTrackingObj from './kbn_subscription_tracking.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 80bb2a0ac7e3d..faf93ebfc4d2a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 0d4709dd82849..a5b6b9e962711 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 8e92fe5b15c52..742c99bff9b05 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index 6fe10e8401012..102dadb83b950 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index 0860d723e700b..cc93cd62c830d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index ae59e6ec72d5a..43d9574af8c6a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index eaef648842edd..9412c716865c4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index c86a50c136500..f1d7bd31608f1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index bc56fbcbd18f9..314072f86bb3a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index f00b394f320e6..4fc8e32aa6646 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index ad93fb0fc29f0..f2a869e333687 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 6c973b652d9e8..927a50b08d6ea 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 0f62e52feb7a5..8f141d6937ce9 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 4bc684c6d6f68..a5eaf80ddbea0 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index c6d4e5accc08f..07f6363b5c0b6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 5037e224aaf89..2499dfe0c550e 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index a6422cdd78882..82f282fb2cfd8 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index af754ce6811af..a0702f874cfa8 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 558ff8b63fbf5..d80a435cdd5e5 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 683ab330db2bf..0c45003726f07 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 7d7bf111df786..7a31ca47f0303 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index 1cf5cbf55219f..54cea1878dfee 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 94bc18be12643..d947c417bef92 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-10-13 +date: 2023-10-14 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 4816b7a229250..d7f793bb39e59 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index 572bcd5ed3e62..e4eed36b4b7c1 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -2156,76 +2156,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.MountPointPortal", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "MountPointPortal", - "description": [], - "signature": [ - "React.FunctionComponent<", - { - "pluginId": "@kbn/react-kibana-mount", - "scope": "common", - "docId": "kibKbnReactKibanaMountPluginApi", - "section": "def-common.MountPointPortalProps", - "text": "MountPointPortalProps" - }, - ">" - ], - "path": "src/plugins/kibana_react/public/util/index.tsx", - "deprecated": true, - "trackAdoption": false, - "references": [ - { - "plugin": "navigation", - "path": "src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx" - }, - { - "plugin": "navigation", - "path": "src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx" - }, - { - "plugin": "navigation", - "path": "src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx" - } - ], - "returnComment": [], - "children": [ - { - "parentPluginId": "kibanaReact", - "id": "def-public.MountPointPortal.$1", - "type": "CompoundType", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "P & { children?: React.ReactNode; }" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.MountPointPortal.$2", - "type": "Any", - "tags": [], - "label": "context", - "description": [], - "signature": [ - "any" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "kibanaReact", "id": "def-public.NoDataCard", @@ -2748,18 +2678,6 @@ "plugin": "fleet", "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx" }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/application/index.tsx" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/application/index.tsx" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/application/index.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx" @@ -3297,6 +3215,30 @@ "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx" }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx" + }, { "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx" @@ -3305,6 +3247,14 @@ "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx" }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx" + }, { "plugin": "cases", "path": "x-pack/plugins/cases/public/common/use_cases_toast.tsx" diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 8d909f29cd49c..cdc03435e2b57 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 176 | 0 | 138 | 4 | +| 173 | 0 | 137 | 4 | ## Client diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index f2ee0ec66d85b..039cc74a09710 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index cb953b15d4551..ad3e66992eb8a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 0cf2453f74b88..b4f8c44261be4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 7ba97f64caa85..cede2c5b2ea1d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index b1c760033e8df..53851f7b23ca1 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 0a04fab7f374c..8a70bc46903b0 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 300854ed209a2..848cc0c8bdbca 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 63e4fcf8f0640..061467f05d2c7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index ebee0dbe48cc7..e24c7c6007238 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 8685b73e5b78c..9d848a6c57e16 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index e3b10d70aa9cb..cf43da6b25c85 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 23546fd5cb45a..f1dd823ee9bee 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index dfcae06dd3a02..7631aabfccfd6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 2cbaf4ca92982..37e080b757fb0 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index bf8d214e70405..3b657e0524f69 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index f0916edad26b2..8eb9faacbbaae 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index d0e9e02ce16d5..4d0a51cbdbe48 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-10-13 +date: 2023-10-14 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 b9a369129a46e..f055bf6fff2f8 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-10-13 +date: 2023-10-14 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 02cc3b802621f..022a6cfbf79b6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index afdcec8eb8ea4..dbca6817821df 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index caf8772883755..1830ec8ea33d1 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-10-13 +date: 2023-10-14 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 41c8070018e81..a4d690ff05845 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -8047,7 +8047,7 @@ "label": "config", "description": [], "signature": [ - "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" + "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; }" ], "path": "x-pack/plugins/observability/server/routes/types.ts", "deprecated": false, @@ -8124,63 +8124,7 @@ "label": "ObservabilityAPIReturnType", "description": [], "signature": [ - "{ \"GET /api/observability/composite_slos 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos 2023-05-24\"; params?: ", - "PartialC", - "<{ query: ", - "PartialC", - "<{ name: ", - "StringC", - "; page: ", - "StringC", - "; perPage: ", - "StringC", - "; sortBy: ", - "LiteralC", - "<\"creationTime\">; sortDirection: ", - "UnionC", - "<[", - "LiteralC", - "<\"asc\">, ", - "LiteralC", - "<\"desc\">]>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params?: { query?: { name?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"creationTime\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"GET /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; }; }) => Promise<{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"DELETE /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"DELETE /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", + "{ \"GET /internal/observability/slos/{id}/_instances\": { endpoint: \"GET /internal/observability/slos/{id}/_instances\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -8194,7 +8138,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", + " & { params: { path: { id: string; }; }; }) => Promise<{ groupBy: string; instances: string[]; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -8202,374 +8146,106 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - ") | undefined; \"PUT /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"PUT /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", - "TypeC", - "<{ path: ", + "; \"POST /internal/observability/slos/_preview\": { endpoint: \"POST /internal/observability/slos/_preview\"; params?: ", "TypeC", - "<{ id: ", - "StringC", - "; }>; body: ", - "PartialC", - "<{ name: ", - "StringC", - "; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", + "<{ body: ", "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; timeWindow: ", + "<{ indicator: ", "UnionC", "<[", "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", + "<{ type: ", "LiteralC", - "<\"rolling\">; }>, ", + "<\"sli.apm.transactionDuration\">; params: ", + "IntersectionC", + "<[", "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", + "<{ environment: ", + "UnionC", + "<[", "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", + "<\"*\">, ", + "StringC", + "]>; service: ", "UnionC", "<[", "LiteralC", - "<\"occurrences\">, ", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", "<[", - "TypeC", - "<{ target: ", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; threshold: ", "NumberC", + "; index: ", + "StringC", "; }>, ", "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; tags: ", - "ArrayC", - "<", + "<{ filter: ", "StringC", - ">; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; body: { name?: string | undefined; compositeMethod?: \"weightedAverage\" | undefined; sources?: { id: string; revision: number; weight: number; }[] | undefined; timeWindow?: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }) | undefined; tags?: string[] | undefined; }; }; }) => Promise<{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"POST /api/observability/composite_slos 2023-05-24\"?: ({ endpoint: \"POST /api/observability/composite_slos 2023-05-24\"; params?: ", + "; }>]>; }>, ", "TypeC", - "<{ body: ", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionErrorRate\">; params: ", "IntersectionC", "<[", "TypeC", - "<{ name: ", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", "StringC", - "; timeWindow: ", + "]>; service: ", "UnionC", "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", "UnionC", "<[", "LiteralC", - "<\"occurrences\">, ", + "<\"*\">, ", + "StringC", + "]>; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", "LiteralC", - "<\"timeslices\">]>; objective: ", + "<\"sli.kql.custom\">; params: ", "IntersectionC", "<[", "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; }>, ", - "PartialC", - "<{ id: ", - "StringC", - "; tags: ", - "ArrayC", - "<", - "StringC", - ">; }>]>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { body: { name: string; timeWindow: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; } & { id?: string | undefined; tags?: string[] | undefined; }; }; }) => Promise<{ id: string; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"GET /internal/observability/slos/{id}/_instances\": { endpoint: \"GET /internal/observability/slos/{id}/_instances\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; }; }) => Promise<{ groupBy: string; instances: string[]; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /internal/observability/slos/_preview\": { endpoint: \"POST /internal/observability/slos/_preview\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ indicator: ", - "UnionC", - "<[", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.apm.transactionDuration\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ environment: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; service: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionType: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionName: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; threshold: ", - "NumberC", - "; index: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.apm.transactionErrorRate\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ environment: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; service: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionType: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionName: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; index: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.kql.custom\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ index: ", - "StringC", - "; good: ", - "StringC", - "; total: ", - "StringC", - "; timestampField: ", - "StringC", + "<{ index: ", + "StringC", + "; good: ", + "StringC", + "; total: ", + "StringC", + "; timestampField: ", + "StringC", "; }>, ", "PartialC", "<{ filter: ", @@ -8698,631 +8374,15 @@ "NumberC", "; to: ", "NumberC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>]>; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>]>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { body: { indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; }; }; }) => Promise<{ date: string; sliValue: number; }[]>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /internal/observability/slos/{id}/_burn_rates\": { endpoint: \"POST /internal/observability/slos/{id}/_burn_rates\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; body: ", - "TypeC", - "<{ instanceId: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; windows: ", - "ArrayC", - "<", - "TypeC", - "<{ name: ", - "StringC", - "; duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; body: { instanceId: string; windows: { name: string; duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; }[]; }; }; }) => Promise<{ burnRates: { name: string; burnRate: number; sli: number; }[]; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /internal/observability/slos/_diagnosis\": { endpoint: \"GET /internal/observability/slos/_diagnosis\"; params?: undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - ") => Promise<{ licenseAndFeatures: ", - "PublicLicenseJSON", - "; userPrivileges: { write: ", - "SecurityHasPrivilegesResponse", - "; read: ", - "SecurityHasPrivilegesResponse", - "; }; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"PUT /api/observability/slos/{id} 2023-10-31\": { endpoint: \"PUT /api/observability/slos/{id} 2023-10-31\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; body: ", - "PartialC", - "<{ name: ", - "StringC", - "; description: ", - "StringC", - "; indicator: ", - "UnionC", - "<[", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.apm.transactionDuration\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ environment: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; service: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionType: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionName: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; threshold: ", - "NumberC", - "; index: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.apm.transactionErrorRate\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ environment: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; service: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionType: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; transactionName: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; index: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.kql.custom\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ index: ", - "StringC", - "; good: ", - "StringC", - "; total: ", - "StringC", - "; timestampField: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.metric.custom\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ index: ", - "StringC", - "; good: ", - "TypeC", - "<{ metrics: ", - "ArrayC", - "<", - "IntersectionC", - "<[", - "TypeC", - "<{ name: ", - "StringC", - "; aggregation: ", - "KeyofC", - "<{ sum: boolean; }>; field: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>>; equation: ", - "StringC", - "; }>; total: ", - "TypeC", - "<{ metrics: ", - "ArrayC", - "<", - "IntersectionC", - "<[", - "TypeC", - "<{ name: ", - "StringC", - "; aggregation: ", - "KeyofC", - "<{ sum: boolean; }>; field: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>>; equation: ", - "StringC", - "; }>; timestampField: ", - "StringC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>, ", - "TypeC", - "<{ type: ", - "LiteralC", - "<\"sli.histogram.custom\">; params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ index: ", - "StringC", - "; timestampField: ", - "StringC", - "; good: ", - "UnionC", - "<[", - "IntersectionC", - "<[", - "TypeC", - "<{ field: ", - "StringC", - "; aggregation: ", - "LiteralC", - "<\"value_count\">; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>, ", - "IntersectionC", - "<[", - "TypeC", - "<{ field: ", - "StringC", - "; aggregation: ", - "LiteralC", - "<\"range\">; from: ", - "NumberC", - "; to: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>]>; total: ", - "UnionC", - "<[", - "IntersectionC", - "<[", - "TypeC", - "<{ field: ", - "StringC", - "; aggregation: ", - "LiteralC", - "<\"value_count\">; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>, ", - "IntersectionC", - "<[", - "TypeC", - "<{ field: ", - "StringC", - "; aggregation: ", - "LiteralC", - "<\"range\">; from: ", - "NumberC", - "; to: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>]>; }>, ", - "PartialC", - "<{ filter: ", - "StringC", - "; }>]>; }>]>; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; settings: ", - "PartialC", - "<{ syncDelay: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; frequency: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>; tags: ", - "ArrayC", - "<", - "StringC", - ">; groupBy: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; body: { name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }) | undefined; settings?: { syncDelay?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; frequency?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /api/observability/slos/{id} 2023-10-31\": { endpoint: \"GET /api/observability/slos/{id} 2023-10-31\"; params?: ", - "IntersectionC", - "<[", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }>, ", - "PartialC", - "<{ query: ", - "PartialC", - "<{ instanceId: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; }>; }>]> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; } & { query?: { instanceId?: string | undefined; } | undefined; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /api/observability/slos 2023-10-31\": { endpoint: \"GET /api/observability/slos 2023-10-31\"; params?: ", - "PartialC", - "<{ query: ", - "PartialC", - "<{ kqlQuery: ", - "StringC", - "; page: ", - "StringC", - "; perPage: ", - "StringC", - "; sortBy: ", - "UnionC", - "<[", - "LiteralC", - "<\"error_budget_consumed\">, ", - "LiteralC", - "<\"error_budget_remaining\">, ", - "LiteralC", - "<\"sli_value\">, ", - "LiteralC", - "<\"status\">]>; sortDirection: ", - "UnionC", - "<[", - "LiteralC", - "<\"asc\">, ", - "LiteralC", - "<\"desc\">]>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params?: { query?: { kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /internal/observability/slos/_definitions\": { endpoint: \"GET /internal/observability/slos/_definitions\"; params?: ", - "TypeC", - "<{ query: ", - "TypeC", - "<{ search: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { query: { search: string; }; }; }) => Promise<({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; })[]>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /internal/observability/slos/_historical_summary\": { endpoint: \"POST /internal/observability/slos/_historical_summary\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ list: ", - "ArrayC", - "<", - "TypeC", - "<{ sloId: ", - "StringC", - "; instanceId: ", - "UnionC", - "<[", - "LiteralC", - "<\"*\">, ", - "StringC", - "]>; }>>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise<{ sloId: string; instanceId: string; data: ({ date: string; } & { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; })[]; }[]>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /api/observability/slos/{id}/enable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/enable 2023-10-31\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", + "; }>, ", + "PartialC", + "<{ filter: ", "StringC", - "; }>; }> | undefined; handler: ({}: ", + "; }>]>]>; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>]>; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9330,7 +8390,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", + " & { params: { body: { indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; }; }; }) => Promise<{ date: string; sliValue: number; }[]>; } & ", { "pluginId": "observability", "scope": "server", @@ -9338,41 +8398,37 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /api/observability/slos/{id}/disable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/disable 2023-10-31\"; params?: ", + "; \"POST /internal/observability/slos/{id}/_burn_rates\": { endpoint: \"POST /internal/observability/slos/{id}/_burn_rates\"; params?: ", "TypeC", "<{ path: ", "TypeC", "<{ id: ", "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /api/observability/slos/_delete_instances 2023-10-31\": { endpoint: \"POST /api/observability/slos/_delete_instances 2023-10-31\"; params?: ", - "TypeC", - "<{ body: ", + "; }>; body: ", "TypeC", - "<{ list: ", + "<{ instanceId: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; windows: ", "ArrayC", "<", "TypeC", - "<{ sloId: ", - "StringC", - "; instanceId: ", + "<{ name: ", "StringC", - "; }>>; }>; }> | undefined; handler: ({}: ", + "; duration: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; }>>; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9380,7 +8436,15 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise; } & ", + " & { params: { path: { id: string; }; body: { instanceId: string; windows: { name: string; duration: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; }[]; }; }; }) => Promise<{ burnRates: { name: string; burnRate: number; sli: number; }[]; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -9388,13 +8452,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"DELETE /api/observability/slos/{id} 2023-10-31\": { endpoint: \"DELETE /api/observability/slos/{id} 2023-10-31\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", + "; \"GET /internal/observability/slos/_diagnosis\": { endpoint: \"GET /internal/observability/slos/_diagnosis\"; params?: undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9402,7 +8460,13 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", + ") => Promise<{ licenseAndFeatures: ", + "PublicLicenseJSON", + "; userPrivileges: { write: ", + "SecurityHasPrivilegesResponse", + "; read: ", + "SecurityHasPrivilegesResponse", + "; }; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -9410,12 +8474,14 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /api/observability/slos 2023-10-31\": { endpoint: \"POST /api/observability/slos 2023-10-31\"; params?: ", + "; \"PUT /api/observability/slos/{id} 2023-10-31\": { endpoint: \"PUT /api/observability/slos/{id} 2023-10-31\"; params?: ", "TypeC", - "<{ body: ", - "IntersectionC", - "<[", + "<{ path: ", "TypeC", + "<{ id: ", + "StringC", + "; }>; body: ", + "PartialC", "<{ name: ", "StringC", "; description: ", @@ -9708,11 +8774,7 @@ "section": "def-common.Duration", "text": "Duration" }, - ", string, unknown>; }>]>; }>, ", - "PartialC", - "<{ id: ", - "StringC", - "; settings: ", + ", string, unknown>; }>]>; settings: ", "PartialC", "<{ syncDelay: ", "Type", @@ -9744,7 +8806,7 @@ "LiteralC", "<\"*\">, ", "StringC", - "]>; }>]>; }> | undefined; handler: ({}: ", + "]>; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9752,7 +8814,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ", + " & { params: { path: { id: string; }; body: { name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; } | undefined; timeWindow?: { duration: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -9768,7 +8830,7 @@ "section": "def-common.Duration", "text": "Duration" }, - "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", + "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -9776,7 +8838,7 @@ "section": "def-common.Duration", "text": "Duration" }, - " | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: ", + " | undefined; }) | undefined; settings?: { syncDelay?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -9786,13 +8848,165 @@ }, " | undefined; frequency?: ", { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /api/observability/slos/{id} 2023-10-31\": { endpoint: \"GET /api/observability/slos/{id} 2023-10-31\"; params?: ", + "IntersectionC", + "<[", + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; }>; }>, ", + "PartialC", + "<{ query: ", + "PartialC", + "<{ instanceId: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; }>; }>]> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { path: { id: string; }; } & { query?: { instanceId?: string | undefined; } | undefined; }; }) => Promise<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /api/observability/slos 2023-10-31\": { endpoint: \"GET /api/observability/slos 2023-10-31\"; params?: ", + "PartialC", + "<{ query: ", + "PartialC", + "<{ kqlQuery: ", + "StringC", + "; page: ", + "StringC", + "; perPage: ", + "StringC", + "; sortBy: ", + "UnionC", + "<[", + "LiteralC", + "<\"error_budget_consumed\">, ", + "LiteralC", + "<\"error_budget_remaining\">, ", + "LiteralC", + "<\"sli_value\">, ", + "LiteralC", + "<\"status\">]>; sortDirection: ", + "UnionC", + "<[", + "LiteralC", + "<\"asc\">, ", + "LiteralC", + "<\"desc\">]>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params?: { query?: { kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"GET /internal/observability/slos/_definitions\": { endpoint: \"GET /internal/observability/slos/_definitions\"; params?: ", + "TypeC", + "<{ query: ", + "TypeC", + "<{ search: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { query: { search: string; }; }; }) => Promise<({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; groupBy: string; createdAt: string; updatedAt: string; } & { instanceId?: string | undefined; })[]>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"POST /internal/observability/slos/_historical_summary\": { endpoint: \"POST /internal/observability/slos/_historical_summary\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ list: ", + "ArrayC", + "<", + "TypeC", + "<{ sloId: ", + "StringC", + "; instanceId: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; }>>; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" + }, + " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise<{ sloId: string; instanceId: string; data: ({ date: string; } & { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; })[]; }[]>; } & ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" + }, + "; \"POST /api/observability/slos/{id}/enable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/enable 2023-10-31\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + { + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteHandlerResources", + "text": "ObservabilityRouteHandlerResources" }, - " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; }>; } & ", + " & { params: { path: { id: string; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -9800,15 +9014,11 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\": { endpoint: \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\"; params?: ", + "; \"POST /api/observability/slos/{id}/disable 2023-10-31\": { endpoint: \"POST /api/observability/slos/{id}/disable 2023-10-31\"; params?: ", "TypeC", - "<{ query: ", + "<{ path: ", "TypeC", - "<{ registrationContexts: ", - "ArrayC", - "<", - "StringC", - ">; namespace: ", + "<{ id: ", "StringC", "; }>; }> | undefined; handler: ({}: ", { @@ -9818,7 +9028,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { query: { registrationContexts: string[]; namespace: string; }; }; }) => Promise; } & ", + " & { params: { path: { id: string; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -9826,57 +9036,19 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", - "ServerRouteCreateOptions", - " ? TReturnType : never" - ], - "path": "x-pack/plugins/observability/server/routes/types.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-server.ObservabilityConfig", - "type": "Type", - "tags": [], - "label": "ObservabilityConfig", - "description": [], - "signature": [ - "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" - ], - "path": "x-pack/plugins/observability/server/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-server.ObservabilityServerRouteRepository", - "type": "Type", - "tags": [], - "label": "ObservabilityServerRouteRepository", - "description": [], - "signature": [ - "{ \"GET /api/observability/composite_slos 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos 2023-05-24\"; params?: ", - "PartialC", - "<{ query: ", - "PartialC", - "<{ name: ", - "StringC", - "; page: ", + "; \"POST /api/observability/slos/_delete_instances 2023-10-31\": { endpoint: \"POST /api/observability/slos/_delete_instances 2023-10-31\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ list: ", + "ArrayC", + "<", + "TypeC", + "<{ sloId: ", "StringC", - "; perPage: ", + "; instanceId: ", "StringC", - "; sortBy: ", - "LiteralC", - "<\"creationTime\">; sortDirection: ", - "UnionC", - "<[", - "LiteralC", - "<\"asc\">, ", - "LiteralC", - "<\"desc\">]>; }>; }> | undefined; handler: ({}: ", + "; }>>; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9884,7 +9056,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params?: { query?: { name?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"creationTime\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", + " & { params: { body: { list: { sloId: string; instanceId: string; }[]; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -9892,7 +9064,7 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - ") | undefined; \"GET /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", + "; \"DELETE /api/observability/slos/{id} 2023-10-31\": { endpoint: \"DELETE /api/observability/slos/{id} 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", @@ -9906,7 +9078,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; }; }) => Promise<{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ", + " & { params: { path: { id: string; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -9914,51 +9086,249 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - ") | undefined; \"DELETE /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"DELETE /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", + "; \"POST /api/observability/slos 2023-10-31\": { endpoint: \"POST /api/observability/slos 2023-10-31\"; params?: ", "TypeC", - "<{ path: ", + "<{ body: ", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; description: ", + "StringC", + "; indicator: ", + "UnionC", + "<[", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionDuration\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; threshold: ", + "NumberC", + "; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.apm.transactionErrorRate\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ environment: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; service: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionType: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; transactionName: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; index: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.kql.custom\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ index: ", + "StringC", + "; good: ", + "StringC", + "; total: ", + "StringC", + "; timestampField: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.metric.custom\">; params: ", + "IntersectionC", + "<[", + "TypeC", + "<{ index: ", + "StringC", + "; good: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "KeyofC", + "<{ sum: boolean; }>; field: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>>; equation: ", + "StringC", + "; }>; total: ", + "TypeC", + "<{ metrics: ", + "ArrayC", + "<", + "IntersectionC", + "<[", + "TypeC", + "<{ name: ", + "StringC", + "; aggregation: ", + "KeyofC", + "<{ sum: boolean; }>; field: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>>; equation: ", + "StringC", + "; }>; timestampField: ", + "StringC", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>, ", + "TypeC", + "<{ type: ", + "LiteralC", + "<\"sli.histogram.custom\">; params: ", + "IntersectionC", + "<[", "TypeC", - "<{ id: ", + "<{ index: ", "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"PUT /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"PUT /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", + "; timestampField: ", + "StringC", + "; good: ", + "UnionC", + "<[", + "IntersectionC", + "<[", "TypeC", - "<{ path: ", + "<{ field: ", + "StringC", + "; aggregation: ", + "LiteralC", + "<\"value_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", "TypeC", - "<{ id: ", + "<{ field: ", "StringC", - "; }>; body: ", + "; aggregation: ", + "LiteralC", + "<\"range\">; from: ", + "NumberC", + "; to: ", + "NumberC", + "; }>, ", "PartialC", - "<{ name: ", + "<{ filter: ", + "StringC", + "; }>]>]>; total: ", + "UnionC", + "<[", + "IntersectionC", + "<[", + "TypeC", + "<{ field: ", "StringC", - "; compositeMethod: ", + "; aggregation: ", "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", + "<\"value_count\">; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>, ", + "IntersectionC", + "<[", "TypeC", - "<{ id: ", + "<{ field: ", "StringC", - "; revision: ", + "; aggregation: ", + "LiteralC", + "<\"range\">; from: ", "NumberC", - "; weight: ", + "; to: ", "NumberC", - "; }>>; timeWindow: ", + "; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>]>; }>, ", + "PartialC", + "<{ filter: ", + "StringC", + "; }>]>; }>]>; timeWindow: ", "UnionC", "<[", "TypeC", @@ -10014,11 +9384,43 @@ "section": "def-common.Duration", "text": "Duration" }, - ", string, unknown>; }>]>; tags: ", + ", string, unknown>; }>]>; }>, ", + "PartialC", + "<{ id: ", + "StringC", + "; settings: ", + "PartialC", + "<{ syncDelay: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; frequency: ", + "Type", + "<", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; }>; tags: ", "ArrayC", "<", "StringC", - ">; }>; }> | undefined; handler: ({}: ", + ">; groupBy: ", + "UnionC", + "<[", + "LiteralC", + "<\"*\">, ", + "StringC", + "]>; }>]>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -10026,7 +9428,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; body: { name?: string | undefined; compositeMethod?: \"weightedAverage\" | undefined; sources?: { id: string; revision: number; weight: number; }[] | undefined; timeWindow?: { duration: ", + " & { params: { body: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string; total: string; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; } & { filter?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); } & { filter?: string | undefined; }; }; timeWindow: { duration: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -10042,7 +9444,7 @@ "section": "def-common.Duration", "text": "Duration" }, - "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", + "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -10050,29 +9452,7 @@ "section": "def-common.Duration", "text": "Duration" }, - " | undefined; }) | undefined; tags?: string[] | undefined; }; }; }) => Promise<{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"POST /api/observability/composite_slos 2023-05-24\"?: ({ endpoint: \"POST /api/observability/composite_slos 2023-05-24\"; params?: ", - "TypeC", - "<{ body: ", - "IntersectionC", - "<[", - "TypeC", - "<{ name: ", - "StringC", - "; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", + " | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -10080,13 +9460,7 @@ "section": "def-common.Duration", "text": "Duration" }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", + " | undefined; frequency?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -10094,55 +9468,25 @@ "section": "def-common.Duration", "text": "Duration" }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", + " | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | undefined; }; }; }) => Promise<{ id: string; }>; } & ", { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" + "pluginId": "observability", + "scope": "server", + "docId": "kibObservabilityPluginApi", + "section": "def-server.ObservabilityRouteCreateOptions", + "text": "ObservabilityRouteCreateOptions" }, - ", string, unknown>; }>]>; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", + "; \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\": { endpoint: \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\"; params?: ", "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; }>, ", - "PartialC", - "<{ id: ", - "StringC", - "; tags: ", + "<{ query: ", + "TypeC", + "<{ registrationContexts: ", "ArrayC", "<", "StringC", - ">; }>]>; }> | undefined; handler: ({}: ", + ">; namespace: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -10150,31 +9494,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { name: string; timeWindow: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; } & { id?: string | undefined; tags?: string[] | undefined; }; }; }) => Promise<{ id: string; }>; } & ", + " & { params: { query: { registrationContexts: string[]; namespace: string; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -10182,7 +9502,39 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - ") | undefined; \"GET /internal/observability/slos/{id}/_instances\": { endpoint: \"GET /internal/observability/slos/{id}/_instances\"; params?: ", + "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", + "ServerRouteCreateOptions", + " ? TReturnType : never" + ], + "path": "x-pack/plugins/observability/server/routes/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-server.ObservabilityConfig", + "type": "Type", + "tags": [], + "label": "ObservabilityConfig", + "description": [], + "signature": [ + "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; }" + ], + "path": "x-pack/plugins/observability/server/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-server.ObservabilityServerRouteRepository", + "type": "Type", + "tags": [], + "label": "ObservabilityServerRouteRepository", + "description": [], + "signature": [ + "{ \"GET /internal/observability/slos/{id}/_instances\": { endpoint: \"GET /internal/observability/slos/{id}/_instances\"; params?: ", "TypeC", "<{ path: ", "TypeC", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 406b1a7758854..e176ab873fc00 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index ad0c28c661779..0d2592f226e25 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index 785491ab3d56f..d63136f014f27 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 65abccdb2725f..fac9c83814f2d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index c2727f378fc83..de4feec1a601d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 0ee9afde4b3d4..32c6dee894a00 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index 49eaa09865613..3b4edd39ff408 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 0249c29154560..f76927148aedc 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 75816 | 223 | 64609 | 1580 | +| 75818 | 223 | 64609 | 1580 | ## Plugin Directory @@ -30,7 +30,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 269 | 0 | 263 | 31 | | | [@elastic/appex-sharedux @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 17 | 1 | 15 | 2 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 67 | 1 | 4 | 1 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 776 | 1 | 745 | 50 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 785 | 1 | 754 | 50 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | The user interface for Elastic APM | 29 | 0 | 29 | 120 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 9 | 0 | 9 | 0 | | | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | Asset manager plugin for entity assets (inventory, topology, etc) | 9 | 0 | 9 | 2 | @@ -56,11 +56,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 268 | 0 | 249 | 1 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 109 | 0 | 106 | 11 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 54 | 0 | 51 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3284 | 33 | 2549 | 24 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3290 | 33 | 2554 | 24 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin provides the ability to create data views via a modal flyout inside Kibana apps | 35 | 0 | 25 | 5 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Reusable data view field editor across Kibana | 72 | 0 | 33 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data view management app | 2 | 0 | 2 | 0 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 1041 | 0 | 257 | 2 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 1048 | 0 | 262 | 2 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 31 | 3 | 25 | 1 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 12 | 0 | 10 | 3 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 118 | 0 | 76 | 18 | @@ -72,7 +72,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 51 | 0 | 44 | 0 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Adds dashboards for discovering and managing Enterprise Search products. | 5 | 0 | 5 | 0 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 115 | 3 | 111 | 3 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The Event Annotation service contains expressions for event annotations | 200 | 0 | 200 | 6 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The Event Annotation service contains expressions for event annotations | 201 | 0 | 201 | 6 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The listing page for event annotations. | 15 | 0 | 15 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 111 | 0 | 111 | 11 | | | [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) | - | 132 | 1 | 132 | 14 | @@ -113,7 +113,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 123 | 2 | 96 | 4 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides UI and APIs for the interactive setup mode. | 28 | 0 | 18 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 6 | 0 | 6 | 0 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 176 | 0 | 138 | 4 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 173 | 0 | 137 | 4 | | kibanaUsageCollection | [@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) | - | 610 | 3 | 417 | 9 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 5 | 0 | 5 | 1 | @@ -232,7 +232,7 @@ 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) | - | 28 | 0 | 28 | 7 | +| | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 31 | 0 | 31 | 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 | @@ -254,7 +254,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 15 | 0 | 15 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 10 | 0 | 10 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 59 | 0 | 41 | 4 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 191 | 1 | 126 | 0 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 191 | 1 | 125 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 0 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 7 | 0 | 7 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 4 | 0 | @@ -617,7 +617,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 15 | 0 | 4 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 9 | 0 | 3 | 0 | -| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 135 | 0 | 132 | 0 | +| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 114 | 0 | 111 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 20 | 0 | 12 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 102 | 2 | 65 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 4 | 0 | 2 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 374dffc956d22..347a3d011075d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 99627e5d8dc83..4cbc3c793a6b9 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 851fe998ea03c..339da78bfd012 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 1ee1a3e18796a..2ceeb0fd535e5 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 50e69f56c7ad2..459a6d734dd55 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 708bdee82dd53..0fbd2e2a364f9 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 198f18e79f134..dce6b5bd83688 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 03b6466297a49..7d6859e2986db 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 51668f5557d77..9a6194ce528ee 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 98be04de9aac4..9bf8adfab2720 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 214327fcf1d03..3bd85fadf0072 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 042dc9d006f25..4b0191b31b072 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index f9d02e1ee5511..d199f5b2118a4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 41d19e53be7d7..74d52b0a7b672 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index f8e045aeeb5c4..8cc892d2d6652 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index f799695f67c26..b7f1005f84d6b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 9ded21e910927..7427488a2f8af 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index e2dbf897488a5..a2803fc79beca 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 9721dcf9f75d4..30597cbcb30a3 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index 84255bc3b2a11..6d392fb6a8937 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index 86f4606339ee8..5120408180c9a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index f9c0daae7f755..3237deb600d5d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index 9a54a0b781151..b28b15cba7db3 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index c4b0f7b9cb35a..bc770b94c53bf 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 667f4d08c1f68..de1535d433240 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 45612085d9a97..32c15cf44d349 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index b23b05607de43..454b2e82908c7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 1a2f5a654f27f..0c82acb3215ac 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index 3e627b7dc2e2e..09a87357fc49b 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 1151f5661a3b8..dfa5db05f5ef2 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 4c0ffac2cba81..97731a6bdfc67 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 20f3dc6f17e2b..cb6bb7e928d3f 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index 5a611ef796604..071215141c3e6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 41d15e4cb1a60..362d30aa11cc5 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index 8f6b993e82959..5685bbfd1cd31 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 54acd6b1fd585..33da32460b477 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 7e3387a4b5cc6..5374be4086aa7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 44259b14ec464..c82e8b37d64d7 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index d91145a0c9084..a741d8d23b030 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.devdocs.json b/api_docs/ui_actions.devdocs.json index 8aa60c3c65f77..fc3e6efa4a21a 100644 --- a/api_docs/ui_actions.devdocs.json +++ b/api_docs/ui_actions.devdocs.json @@ -2218,7 +2218,7 @@ "section": "def-common.FieldAttrs", "text": "FieldAttrs" }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; allowHidden?: boolean | undefined; }" ], "path": "src/plugins/ui_actions/public/types.ts", "deprecated": false, diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index be86250dfc5e0..80d64ca2c9d99 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 80f0401f9b691..ab16ae7ed195c 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index f5faca199cca7..8531277329fad 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index f9ae071bd7246..64ea039a5dfce 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 4bb9df61841be..5cbd3355885c4 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 8a10cc425afe6..c0af1bf45e353 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index 194fd4e51de80..1dfa61d728be2 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2023-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 6c9dc56caaeca..4b678992e229a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 1a1e4479220a9..2851d4278864a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index a729fa45309e7..6f881168e785d 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 47e35699557fb..8bdca282f0c96 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 52a0a899dbef5..6cc34e8dbb99e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 575a3defc126e..cd75ea320e3c9 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 32a5aa5fa9889..1722509148ffe 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 0ae3d93b69732..22855353c871e 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 2856d4eaadec4..f16f952866509 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index eba40cb38e613..41b7dff7e13f6 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index 497298d5539f7..f543686fa0913 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index bf84e5b8f4597..cb0c02e8756be 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 267d3e9529708..897db0415fb3a 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index dd3b7c4af2dd1..00e8ba04ffa65 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-10-13 +date: 2023-10-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From dea2b0390652d014e2a2af4fdadd545e90fdbf45 Mon Sep 17 00:00:00 2001 From: Christos Nasikas Date: Sat, 14 Oct 2023 10:54:20 +0300 Subject: [PATCH 47/80] [Cases] Wait for the configuration page to appear before starting the tests (#168465) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../observability/cases/configure.ts | 18 +++++++++++++----- .../security/ftr/cases/configure.ts | 12 ++++++++++-- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts b/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts index 3ed07084edd8c..f63ce94ead3fe 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts @@ -21,14 +21,24 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { const find = getService('find'); describe('Configure Case', function () { - // Error: timed out waiting for assertRadioGroupValue: Expected the radio group value to equal "close-by-pushing" + // security_exception: action [indices:data/write/delete/byquery] is unauthorized for user [elastic] with effective roles [superuser] on restricted indices [.kibana_alerting_cases], this action is granted by the index privileges [delete,write,all] this.tags(['failsOnMKI']); before(async () => { await svlCommonPage.login(); await svlObltNavigation.navigateToLandingPage(); await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'observability-overview:cases' }); + await header.waitUntilLoadingHasFinished(); + + await retry.waitFor('configure-case-button exist', async () => { + return await testSubjects.exists('configure-case-button'); + }); + await common.clickAndValidate('configure-case-button', 'case-configure-title'); await header.waitUntilLoadingHasFinished(); + + await retry.waitFor('case-configure-title exist', async () => { + return await testSubjects.exists('case-configure-title'); + }); }); after(async () => { @@ -36,8 +46,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await svlCommonPage.forceLogout(); }); - // FLAKY: https://github.com/elastic/kibana/issues/166469 - describe.skip('Closure options', function () { + describe('Closure options', function () { it('defaults the closure option correctly', async () => { await cases.common.assertRadioGroupValue('closure-options-radio-group', 'close-by-user'); }); @@ -50,8 +59,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/167869 - describe.skip('Connectors', function () { + describe('Connectors', function () { it('defaults the connector to none correctly', async () => { await retry.waitFor('dropdown-connector-no-connector to exist', async () => { return await testSubjects.exists('dropdown-connector-no-connector'); diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cases/configure.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cases/configure.ts index 5c71abf3ad7ba..19cd7a3ccdce0 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cases/configure.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cases/configure.ts @@ -26,8 +26,18 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await svlCommonPage.login(); await svlSecNavigation.navigateToLandingPage(); await testSubjects.click('solutionSideNavItemLink-cases'); + await header.waitUntilLoadingHasFinished(); + + await retry.waitFor('configure-case-button exist', async () => { + return await testSubjects.exists('configure-case-button'); + }); + await common.clickAndValidate('configure-case-button', 'case-configure-title'); await header.waitUntilLoadingHasFinished(); + + await retry.waitFor('case-configure-title exist', async () => { + return await testSubjects.exists('case-configure-title'); + }); }); after(async () => { @@ -36,8 +46,6 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { }); describe('Closure options', function () { - // Error: Expected the radio group value to equal "close-by-pushing" (got "close-by-user") - this.tags(['failsOnMKI']); it('defaults the closure option correctly', async () => { await cases.common.assertRadioGroupValue('closure-options-radio-group', 'close-by-user'); }); From 81544b7f76ea5f3cba0a70933c1847a29d5631cd Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sun, 15 Oct 2023 00:50:53 -0400 Subject: [PATCH 48/80] [api-docs] 2023-10-15 Daily api_docs build (#168911) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/491 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_common.mdx | 2 +- api_docs/kbn_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mocks.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- api_docs/kbn_content_management_content_editor.mdx | 2 +- api_docs/kbn_content_management_tabbed_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- api_docs/kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- api_docs/kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- api_docs/kbn_core_application_browser_internal.mdx | 2 +- api_docs/kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- api_docs/kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- api_docs/kbn_core_custom_branding_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- api_docs/kbn_core_deprecations_browser_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- api_docs/kbn_core_deprecations_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_mocks.mdx | 2 +- api_docs/kbn_core_environment_server_internal.mdx | 2 +- api_docs/kbn_core_environment_server_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_browser.mdx | 2 +- api_docs/kbn_core_execution_context_browser_internal.mdx | 2 +- api_docs/kbn_core_execution_context_browser_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_common.mdx | 2 +- api_docs/kbn_core_execution_context_server.mdx | 2 +- api_docs/kbn_core_execution_context_server_internal.mdx | 2 +- api_docs/kbn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- api_docs/kbn_core_http_context_server_mocks.mdx | 2 +- api_docs/kbn_core_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- api_docs/kbn_core_http_resources_server_internal.mdx | 2 +- api_docs/kbn_core_http_resources_server_mocks.mdx | 2 +- api_docs/kbn_core_http_router_server_internal.mdx | 2 +- api_docs/kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- api_docs/kbn_core_injected_metadata_browser_mocks.mdx | 2 +- api_docs/kbn_core_integrations_browser_internal.mdx | 2 +- api_docs/kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- api_docs/kbn_core_notifications_browser_internal.mdx | 2 +- api_docs/kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- api_docs/kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- api_docs/kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_api_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- .../kbn_core_saved_objects_import_export_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- api_docs/kbn_core_saved_objects_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- api_docs/kbn_core_test_helpers_deprecations_getters.mdx | 2 +- api_docs/kbn_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- api_docs/kbn_core_test_helpers_model_versions.mdx | 2 +- api_docs/kbn_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- api_docs/kbn_core_ui_settings_server_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- api_docs/kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- api_docs/kbn_core_user_settings_server_internal.mdx | 2 +- api_docs/kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_generate_csv_types.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- api_docs/kbn_management_settings_application.mdx | 2 +- api_docs/kbn_management_settings_components_field_category.mdx | 2 +- api_docs/kbn_management_settings_components_field_input.mdx | 2 +- api_docs/kbn_management_settings_components_field_row.mdx | 2 +- api_docs/kbn_management_settings_components_form.mdx | 2 +- api_docs/kbn_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- api_docs/kbn_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- api_docs/kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- api_docs/kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- api_docs/kbn_security_solution_storybook_config.mdx | 2 +- api_docs/kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_alerting_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- api_docs/kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- api_docs/kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- api_docs/kbn_shared_ux_avatar_user_profile_components.mdx | 2 +- api_docs/kbn_shared_ux_button_exit_full_screen.mdx | 2 +- api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_subscription_tracking.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_url_state.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/log_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_log_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 597 files changed, 597 insertions(+), 597 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index ef96f20be6fe6..8f58ca2eaff97 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-10-14 +date: 2023-10-15 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 890f23aebcd07..adbbd3e9da87d 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-10-14 +date: 2023-10-15 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 ff0e5fb678e5c..e0f6b6db40179 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 4edae29fa2b3a..514ff791b1715 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 7c04c6844711a..07ad66ffc915e 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 4f6ba37b4e9e8..f38868e671cc4 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 1c1b067fbf22e..cc900e9f0a12b 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-10-14 +date: 2023-10-15 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 ae5a323fd8bf3..5df32560c5aa5 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-10-14 +date: 2023-10-15 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 9a1349719365f..733c86a4f15f5 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-10-14 +date: 2023-10-15 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 a5fae0eecdb80..8dd30f57ba7e2 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-10-14 +date: 2023-10-15 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 ade6a41a3d116..1b582aa054f72 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-10-14 +date: 2023-10-15 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 6b3c5e6e6c1aa..f15a05b51355d 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-10-14 +date: 2023-10-15 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 85d8a2f072654..31154d14923a9 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 55077cc633f14..4ebb5321c9304 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-10-14 +date: 2023-10-15 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 f65fc71a8f5fc..3303da3887947 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-10-14 +date: 2023-10-15 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 e1f6cc8398d8c..31127e9c4390d 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-10-14 +date: 2023-10-15 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 96a2828638697..bd0d4b428ca44 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-10-14 +date: 2023-10-15 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 3aed209b893c7..781dc1a047386 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-10-14 +date: 2023-10-15 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 a69c353a66876..f15dc523e6a26 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-10-14 +date: 2023-10-15 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 57dd5b07fab79..9086b65554229 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-10-14 +date: 2023-10-15 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 e2a54a55b1d9a..3ee0bb3d464a1 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-10-14 +date: 2023-10-15 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 418a8e8b56a4a..546d6fc95a868 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-10-14 +date: 2023-10-15 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 2d8e7afe05bbf..ba3f2178335f2 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 19bf8de032ec6..9a44e619751b4 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-10-14 +date: 2023-10-15 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 8ab2d4140a094..1ca00b2faa83d 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-10-14 +date: 2023-10-15 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 80e947ed15f6a..4b08d2efdf7bd 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-10-14 +date: 2023-10-15 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 9a8d10de17dd7..17b15773d4b39 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-10-14 +date: 2023-10-15 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 5e7d97ca59c89..98d06734e5f46 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-10-14 +date: 2023-10-15 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 383fc8bbf00c1..a7c1c039e11eb 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 94e144063049b..56087f89db602 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-10-14 +date: 2023-10-15 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 cd8af93f73da7..4db4dfa1e5f75 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-10-14 +date: 2023-10-15 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 668877a73d72b..ed4efb5ff9915 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index f2e00130c8df1..d5d471b2ab5bb 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 8e9c67c67c4c6..8638596374c2d 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 530ceaf11a3c8..f6938415c024b 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-10-14 +date: 2023-10-15 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 acbd4370dac3e..12cb87b28d81e 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-10-14 +date: 2023-10-15 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 5c90511bb1c35..7951906ff43aa 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-10-14 +date: 2023-10-15 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 2897a54af2add..6a3714147e4f7 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index b30e3736c8482..695235acb23a6 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index ffbe30c695d69..1d43df1ea1717 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-10-14 +date: 2023-10-15 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 7a09d1705c8d3..d2434a326d95c 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-10-14 +date: 2023-10-15 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 e1f065af8faed..bdda74ff6362b 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-10-14 +date: 2023-10-15 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 a717a63794c86..1f5562abd7ac5 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-10-14 +date: 2023-10-15 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 b019e67dbb469..000fe48fd8652 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 944e68e4998de..4f6a44313a26b 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 451707d58ad9e..b4032f76edf42 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index e9c02f023599c..26f6d3e81b898 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-10-14 +date: 2023-10-15 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 deac03df8281c..8b749ede6d728 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-10-14 +date: 2023-10-15 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 413317fbd89bf..c0a167d55b053 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-10-14 +date: 2023-10-15 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 aa44ef856d0ce..04a846f7a22bd 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-10-14 +date: 2023-10-15 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 d38f6079642e1..df095bca9dab0 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-10-14 +date: 2023-10-15 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 1fb5e447167ad..7ef04c7e9e711 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-10-14 +date: 2023-10-15 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 91613cf45fd5f..87dec6336d87b 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-10-14 +date: 2023-10-15 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 17ef0f21d48bc..a50281dacfe17 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-10-14 +date: 2023-10-15 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 2f745607f3aa4..9905c1e47f07c 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-10-14 +date: 2023-10-15 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 81b2ec2508f66..4c273bf454239 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-10-14 +date: 2023-10-15 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 fcb6885e17e0d..834665c1c9dd0 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-10-14 +date: 2023-10-15 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 70a4bf4f789f1..6732c45ba3c73 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-10-14 +date: 2023-10-15 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 1bcbe00bad7d4..e6eac6580b71b 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-10-14 +date: 2023-10-15 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 08493381fdc5c..a0f1fa7fac314 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-10-14 +date: 2023-10-15 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 a00d94a9a4472..6ace70c9e7976 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-10-14 +date: 2023-10-15 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 f6a75c5eb0167..8bc1808dac812 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-10-14 +date: 2023-10-15 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 f311deff34ae7..ffa9af195dc11 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-10-14 +date: 2023-10-15 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 d837a36bbf95e..645668408d65e 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-10-14 +date: 2023-10-15 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 77acd22318b3d..2b54b0ccc8f65 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-10-14 +date: 2023-10-15 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 9da65057cdd98..836b749b58035 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-10-14 +date: 2023-10-15 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 f964c8e570495..8268961e7ce3e 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index adb729fd21882..1c54dabe8a236 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index a5c733f4c524f..fba33028dd4bb 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-10-14 +date: 2023-10-15 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 626a7333ceb03..a2b227b134e29 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-10-14 +date: 2023-10-15 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 76297b25e8291..c5b84c39b2d1e 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-10-14 +date: 2023-10-15 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 02848b51c9177..a1bf52320b7e2 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-10-14 +date: 2023-10-15 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 41a4a8f78e0b7..d6e3521bc05f8 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-10-14 +date: 2023-10-15 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 dc8c53d5e14cb..8f9ecb4b809a9 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-10-14 +date: 2023-10-15 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 dc1ad7aa4cd68..4042955e26572 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-10-14 +date: 2023-10-15 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 48b492d4a835f..c4b2ad7e4ea2b 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-10-14 +date: 2023-10-15 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 35e1640890a9a..0a247ae895b5b 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-10-14 +date: 2023-10-15 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 5a99f04929a32..0168c2caaae48 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-10-14 +date: 2023-10-15 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 502e4e65ba435..682335b267e73 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-10-14 +date: 2023-10-15 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 adbe728fd10e6..1ca173ed26faf 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 5af6de4841b83..acb9b2479f6f5 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 071831027d2c6..829e3473a28d8 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index c9f2df26b0423..b535f3fefc14c 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-10-14 +date: 2023-10-15 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 96978484cd46f..1cbefb93c6efd 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-10-14 +date: 2023-10-15 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 5c8eaf8d36a25..1619f5bdcd0f9 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-10-14 +date: 2023-10-15 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 5eb8b5846559a..14b7adc1ae774 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-10-14 +date: 2023-10-15 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 15b0aaa372647..c9e5533e31bd2 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-10-14 +date: 2023-10-15 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 50d8f4ca5ce10..c0350b33ae21c 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-10-14 +date: 2023-10-15 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 726970331f8db..1fffce9912692 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-10-14 +date: 2023-10-15 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 7f4cef728b0b1..0e038ac7ee4d1 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-10-14 +date: 2023-10-15 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 89695d94a8415..5ed1e16913ab3 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-10-14 +date: 2023-10-15 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 bb6ebd7e069ba..45f47a64f81e5 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 461bcb6520c56..23cce59a83cb1 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 5b5d418c4d9ab..640c1d1e40c19 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index b581f5d3561b8..b276c70ff4c2d 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-10-14 +date: 2023-10-15 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 ef773a820820c..074cdcb21f368 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-10-14 +date: 2023-10-15 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 ed650278d1a1b..8418b04d36f67 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-10-14 +date: 2023-10-15 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 2bc11326beb44..2afb9721a7cc4 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-10-14 +date: 2023-10-15 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 d0e4eb6b782da..db302b1263914 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-10-14 +date: 2023-10-15 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 28f3a706570e3..a23e1cf346837 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-10-14 +date: 2023-10-15 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 43ed8d617f2ed..d05c8343061c5 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-10-14 +date: 2023-10-15 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 65b1681cef70d..a5059ea4174aa 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-10-14 +date: 2023-10-15 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 6a3198a1daa73..eccdbfd30d9c9 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-10-14 +date: 2023-10-15 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 0bdafdbcbda0e..53f0eed489a53 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-10-14 +date: 2023-10-15 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 c2a0a9ef628d1..55c67bb210354 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-10-14 +date: 2023-10-15 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 a8696dfe2c210..26a52a9d509a1 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-10-14 +date: 2023-10-15 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 7c79ed58eabec..c5f62d903c33a 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-10-14 +date: 2023-10-15 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 383b766be53bf..5c51381b03f7e 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-10-14 +date: 2023-10-15 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 659f0dfb3c95f..e3ffc8f5a01dd 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-10-14 +date: 2023-10-15 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 8980dcb79d6f1..9be8ef87ef68d 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-10-14 +date: 2023-10-15 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 43e11ad1e3a66..23e6f72823ba2 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-10-14 +date: 2023-10-15 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 21787dec02cda..05e355c3d5bd6 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-10-14 +date: 2023-10-15 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 15ede67db0c85..906a3536759a1 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-10-14 +date: 2023-10-15 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 9e740a2c17606..3a48ee38d34ba 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-10-14 +date: 2023-10-15 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 d79096637fc80..d1e9ec48b5f29 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-10-14 +date: 2023-10-15 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 3284c7b522d74..83dbe6c85f725 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-10-14 +date: 2023-10-15 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 679610c4faef9..746dbd8b758e0 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-10-14 +date: 2023-10-15 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 409eafd3bbe66..9902bb5ea0869 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-10-14 +date: 2023-10-15 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 a85523e7e373f..fa6d3f7184b5c 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-10-14 +date: 2023-10-15 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 2119ce8419a8e..7a0c281a9d5c3 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-10-14 +date: 2023-10-15 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 a22f576e7ce67..700e41fb581c2 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-10-14 +date: 2023-10-15 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 9dd00823bd18a..da4922b4cf3b2 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-10-14 +date: 2023-10-15 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 6d01e4ec44616..c1025ba936469 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-10-14 +date: 2023-10-15 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 f3afb4feb0901..2e3035d8fc75e 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-10-14 +date: 2023-10-15 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 a715615a237ba..ad69263170e50 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-10-14 +date: 2023-10-15 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 c44ab29cb354a..3fb94bc904504 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-10-14 +date: 2023-10-15 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 721bb3ff60461..8df0356ebb009 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-10-14 +date: 2023-10-15 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 71b54f70abeb6..f2b2c351cafa9 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-10-14 +date: 2023-10-15 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 7d35931bf7f69..42111734a71db 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-10-14 +date: 2023-10-15 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 5c68eb529475d..3bccf4077696f 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-10-14 +date: 2023-10-15 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 2c2701b543ef4..f521c96a823b9 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-10-14 +date: 2023-10-15 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 e3f65d11f3b62..ee20a3edb9661 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-10-14 +date: 2023-10-15 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 eb12ce0acbd7a..cf010320e5a98 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-10-14 +date: 2023-10-15 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 a016104fc3b9f..3946007fa6982 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-10-14 +date: 2023-10-15 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 8d98670429c38..15c602b1fcb24 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-10-14 +date: 2023-10-15 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 49861d6c2823b..d74ea7f671a5b 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-10-14 +date: 2023-10-15 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 a0f90035ac651..483a712f85b6e 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-10-14 +date: 2023-10-15 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 932649450f4f0..d176f70a3ce4e 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-10-14 +date: 2023-10-15 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 e4d81fd1f1010..1fcac920a99d7 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-10-14 +date: 2023-10-15 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 3b9a582ca8f1e..a483f899efa9b 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-10-14 +date: 2023-10-15 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 d3c48e7deacfa..0e46a12fe80b6 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-10-14 +date: 2023-10-15 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 bd7e90bc9e6e7..3b31492ac11b4 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-10-14 +date: 2023-10-15 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 f55f682ae6225..10fe6f67bf47b 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-10-14 +date: 2023-10-15 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 3a0928e930ef3..ad77790ded3fb 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-10-14 +date: 2023-10-15 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 28abd3a3d5eb4..3e2f97c9e0dd1 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-10-14 +date: 2023-10-15 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 e68c653dd90e1..c8481d20bcbed 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-10-14 +date: 2023-10-15 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 b6cac1c2c5950..7e19025105606 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-10-14 +date: 2023-10-15 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 8819aa1a72d24..2567850a5d072 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-10-14 +date: 2023-10-15 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 1b8b3f64e13d5..188a6e4a270d0 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-10-14 +date: 2023-10-15 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 14a6d15557c89..729a7a255a6aa 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-10-14 +date: 2023-10-15 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 de51eeb164fe7..365a208e168f7 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-10-14 +date: 2023-10-15 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 1a075ff00d6f6..90f62a4903319 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-10-14 +date: 2023-10-15 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 40f02fe06187a..cc159e078c849 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-10-14 +date: 2023-10-15 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 a5652e347456f..4fcd9ab750b54 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-10-14 +date: 2023-10-15 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 d0e6b11123012..a6b8e70f40f56 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-10-14 +date: 2023-10-15 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 0662ac310f06b..888bd8444c0e0 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-10-14 +date: 2023-10-15 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 b2e698af78d92..64dbc7942a15c 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-10-14 +date: 2023-10-15 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 552d4764e6282..ac9571f1f2d66 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-10-14 +date: 2023-10-15 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 4c205683924b7..adce5fba8a596 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-10-14 +date: 2023-10-15 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 00357409904d6..d31fd1e259817 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-10-14 +date: 2023-10-15 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 66c36f40ad11c..fb4d076d8777a 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-10-14 +date: 2023-10-15 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 ede1e988b9adb..6b7fb074cf15f 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-10-14 +date: 2023-10-15 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 2c8ca2fa47bdf..ef8a840563e6d 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-10-14 +date: 2023-10-15 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 c2ace3e7d6881..8f2ed181c1084 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-10-14 +date: 2023-10-15 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 b14dd62c906ee..b7dc6f30dd223 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-10-14 +date: 2023-10-15 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 d36844cb235cd..3ec1b02774352 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-10-14 +date: 2023-10-15 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 94f48da2d23e6..3a959560f0270 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-10-14 +date: 2023-10-15 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 1fa78e332c092..f7524197ee9c6 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-10-14 +date: 2023-10-15 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 4cddb4b8fd00a..bc39f744d2e1a 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-10-14 +date: 2023-10-15 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 3ce7d22549c4f..90d02b73ec50a 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-10-14 +date: 2023-10-15 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 13495976a7235..dad0dd47d1804 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-10-14 +date: 2023-10-15 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 9b878b8d07a07..53e3215f8f6f1 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-10-14 +date: 2023-10-15 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 82c9d36490c71..5e16f1a4c2d71 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-10-14 +date: 2023-10-15 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 c6be78713e322..a88ddb2f5f1ab 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-10-14 +date: 2023-10-15 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 c42fd6a09f403..cf5967e2e1001 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-10-14 +date: 2023-10-15 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 2c00e86b1784f..3ae6825a97da6 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-10-14 +date: 2023-10-15 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 24a9c707618f1..53bc8e83e9f3c 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-10-14 +date: 2023-10-15 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 a789e9c17b55a..41921751a6bd2 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-10-14 +date: 2023-10-15 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 45cec3ec444f9..c52174763060e 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-10-14 +date: 2023-10-15 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 b1acc7e330bad..554a5ffefeebf 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-10-14 +date: 2023-10-15 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 f14debb1bfcbe..7529b28565afa 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-10-14 +date: 2023-10-15 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 31c7ee99c8b95..54d1d81b1d16e 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-10-14 +date: 2023-10-15 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 6574afbacd9ed..ddf525cf8681e 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-10-14 +date: 2023-10-15 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 da146a51107e7..b45180eabb1ba 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index f26816db1d265..9ddedee8adfd5 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-10-14 +date: 2023-10-15 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 6f27cbcb9bae6..89197e816bd11 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-10-14 +date: 2023-10-15 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 06fb47181c52f..6f881c2cb14cb 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-10-14 +date: 2023-10-15 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 770047bc9fb59..2fdbed216161f 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-10-14 +date: 2023-10-15 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 5ec0d9c632587..0bf99905a732a 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-10-14 +date: 2023-10-15 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 3007b0551a32c..da95cfe5b63fe 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-10-14 +date: 2023-10-15 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 e72ff18bc9ccb..10dadf0b095e7 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-10-14 +date: 2023-10-15 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 73e017965f105..e963d6c6ca6e7 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-10-14 +date: 2023-10-15 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 c9e02d10c2939..3c7bbafb56c3e 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-10-14 +date: 2023-10-15 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 37f8751489d87..c527988e79961 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-10-14 +date: 2023-10-15 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 f7f09eb8b7a86..fde3030aac83b 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-10-14 +date: 2023-10-15 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 35d8e3a9cfc5a..e8aa5d544c407 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-10-14 +date: 2023-10-15 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 12175023a35da..ae258623d8932 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-10-14 +date: 2023-10-15 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 03560733d820e..2c0780495db4b 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-10-14 +date: 2023-10-15 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 d7bb7cfb49f3c..09941582fc6ed 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-10-14 +date: 2023-10-15 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 477c6fe0dd722..766e6745c4b50 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-10-14 +date: 2023-10-15 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 42f3fcefde763..6ff23e0afff54 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-10-14 +date: 2023-10-15 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 d2ca415fe96a5..3dec583787f70 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-10-14 +date: 2023-10-15 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 25d869360acfd..e102c5a24efff 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-10-14 +date: 2023-10-15 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 150500788ec43..89eb0ac28b2d6 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-10-14 +date: 2023-10-15 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 32c30f3cdb467..eba716536a175 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-10-14 +date: 2023-10-15 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 87afc1b72d0da..2d258ee4e4320 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-10-14 +date: 2023-10-15 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 f03c5327cd242..0eb9f83dc9f6c 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-10-14 +date: 2023-10-15 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 9fd5a69361ff4..0c86d679523db 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-10-14 +date: 2023-10-15 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 c46f69d84520b..9a2ed56800deb 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-10-14 +date: 2023-10-15 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 dd14e7565840d..12587dc234f3b 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-10-14 +date: 2023-10-15 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 6d90f63ad2f13..450d984c0ebdd 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-10-14 +date: 2023-10-15 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 cf0b97cd2a0ac..d68c6ba90df9a 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-10-14 +date: 2023-10-15 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 58d4cf9ea887d..f06d29c9bb52f 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-10-14 +date: 2023-10-15 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 13f7b137e95eb..e0b48922d5bfe 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-10-14 +date: 2023-10-15 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 269b7ecbe3001..1892f2d5f1c88 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-10-14 +date: 2023-10-15 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 d1da5d5cdd241..70e3e8fa81f31 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-10-14 +date: 2023-10-15 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 2e1e7e3269b18..2968ebcb66dbc 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-10-14 +date: 2023-10-15 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 29f67b024df74..a91df954399fc 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-10-14 +date: 2023-10-15 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 f880e4da75285..15a48de0397cf 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-10-14 +date: 2023-10-15 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 f39ffc755ebc6..ddd21e9a43aef 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-10-14 +date: 2023-10-15 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 9c74ef236db77..4d926bfa3c7e9 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-10-14 +date: 2023-10-15 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 6a598ea90c455..ce24ef87cf823 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-10-14 +date: 2023-10-15 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 3c27dd91f327e..5368fd66dd200 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-10-14 +date: 2023-10-15 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 235a00f427c57..698bebd92016a 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-10-14 +date: 2023-10-15 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 2adf5d9e0cc61..59f0c2f3ed2e4 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-10-14 +date: 2023-10-15 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 23abaa49f21b5..63236c540d5d6 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-10-14 +date: 2023-10-15 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 0a76c5ad18831..fa30749806797 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-10-14 +date: 2023-10-15 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 55e24c9109b88..72730bfb40427 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-10-14 +date: 2023-10-15 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 9b419037216f3..d80555ca23256 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 0f14a2f58a471..603d5350f1213 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-10-14 +date: 2023-10-15 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 7465f9ebff733..7ea33f6e0b85d 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-10-14 +date: 2023-10-15 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 fce1427ea9ee1..74b2a3bf3153c 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-10-14 +date: 2023-10-15 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 0a3e6ff537e02..265a6e888a4fa 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-10-14 +date: 2023-10-15 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 b2ff6986931ef..7cfcdca9c618b 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-10-14 +date: 2023-10-15 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 8743488066033..f522499af8803 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-10-14 +date: 2023-10-15 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 76b318ea231b1..7afe58df85410 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-10-14 +date: 2023-10-15 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 40ff476c58fd9..fd1bb55d11e87 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-10-14 +date: 2023-10-15 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 738260eb1a773..9ad702f481de6 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-10-14 +date: 2023-10-15 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 0c763314bc62b..7053e8614cb90 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-10-14 +date: 2023-10-15 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 f00432ad85112..f21e7bd234367 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-10-14 +date: 2023-10-15 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 0fbfb21ca970c..9112c4f9188ce 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-10-14 +date: 2023-10-15 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 62fdc42ad27bf..490cfe63b4f08 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-10-14 +date: 2023-10-15 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 0b22e4d963be0..80bb245ec4692 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-10-14 +date: 2023-10-15 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 0f5e66abbf445..2ce9d88492532 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-10-14 +date: 2023-10-15 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 3c6354c73e7f0..184b38b621600 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-10-14 +date: 2023-10-15 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 97c603b39aa65..12b5e8e2c6c3c 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-10-14 +date: 2023-10-15 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 105d542bb6ca8..20cc636acce97 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-10-14 +date: 2023-10-15 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 c00173372ea9d..08664bdee2e23 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-10-14 +date: 2023-10-15 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 43daf98f078a1..58c41568514c9 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-10-14 +date: 2023-10-15 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 10dbe4a1a3682..23a865b2ef73c 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-10-14 +date: 2023-10-15 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 353d5ff85833b..f8461f8bc8992 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-10-14 +date: 2023-10-15 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 36d9bab5e1996..85f8fe26707fb 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-10-14 +date: 2023-10-15 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 ea5e4e5ee13a6..0b2aba732ab26 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-10-14 +date: 2023-10-15 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 9d6094935c6cf..b021474ec66c7 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 3285812ac774d..551824b726036 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 2906908b99105..7fad5f5c27d57 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-10-14 +date: 2023-10-15 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 edb7ed8d3cd79..7efc2c2532e84 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-10-14 +date: 2023-10-15 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 92736f2cf9177..694df1485d5c0 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 6c2d9c40e93a7..2984756dda7c8 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-10-14 +date: 2023-10-15 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 49af9dd757861..62cc3ae2882f6 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-10-14 +date: 2023-10-15 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 599556c0f65a9..e90870c150c76 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-10-14 +date: 2023-10-15 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 649e90a349021..f996ab1e5d99a 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-10-14 +date: 2023-10-15 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 af166ec75fdf8..b4696bf2b9114 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-10-14 +date: 2023-10-15 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 6702f7b78b089..f11edb4f8d37e 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-10-14 +date: 2023-10-15 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 2e05dc3f1cc23..d12dc68038f4e 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-10-14 +date: 2023-10-15 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 b8a5dae5e160a..5437b6eefecbd 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-10-14 +date: 2023-10-15 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 24118385ff7fa..27a148658f662 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-10-14 +date: 2023-10-15 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 97a5da317c18c..2932152b718bc 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-10-14 +date: 2023-10-15 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 24148be220f01..760617dc3db32 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-10-14 +date: 2023-10-15 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 09f36ca000981..b72e44d790549 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-10-14 +date: 2023-10-15 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 0c08b49c2bb46..5537fe256d253 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-10-14 +date: 2023-10-15 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 1af7795cb2c8e..46d540046118f 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-10-14 +date: 2023-10-15 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 f99194bbdfe85..8de14f7f87af0 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-10-14 +date: 2023-10-15 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 e53d921877b31..2fc57508f1493 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 4dd445aefc00a..0b4a7066a322e 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 9c514f0b6d91c..331cd910f9892 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-10-14 +date: 2023-10-15 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 8598d11cfcfc3..3122adf6c2f38 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-10-14 +date: 2023-10-15 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 17c832b88d584..c6208830b7b76 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-10-14 +date: 2023-10-15 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 d608d6e7e85bc..9c9efd41da16a 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-10-14 +date: 2023-10-15 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 53f767ef1d324..184222a0edc7b 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-10-14 +date: 2023-10-15 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 3f59d2720025a..644fe977dac0a 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-10-14 +date: 2023-10-15 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 7c26fbbf2bed4..4ce637b12e867 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-10-14 +date: 2023-10-15 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 32c86370b6f31..e50ca2e968d2f 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-10-14 +date: 2023-10-15 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 f0878511dc6c3..17cd6afb44067 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-10-14 +date: 2023-10-15 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 f27f8f0a953a6..ca057256a541d 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-10-14 +date: 2023-10-15 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 f2a0afc02c1bb..e76034d59c3fe 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-10-14 +date: 2023-10-15 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 393d800b2d98f..cb2a5e1538e1f 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-10-14 +date: 2023-10-15 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 5ae9bb2d822a3..9d1033dfeb500 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-10-14 +date: 2023-10-15 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 46946636d426d..77b167c30e4aa 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-10-14 +date: 2023-10-15 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 e417a63a9d214..0121755452098 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-10-14 +date: 2023-10-15 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 6134ecff7be6c..1325eae8cd4c2 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-10-14 +date: 2023-10-15 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 7164503805108..2c160a2e35e15 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index 7dc0ad1854685..c619cd28032ea 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index fe1ab44acb6ee..38a70c2936525 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-10-14 +date: 2023-10-15 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 1d797a20a11ce..af055867ff747 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-10-14 +date: 2023-10-15 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 888994516a204..a06291012b92b 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-10-14 +date: 2023-10-15 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 cb4e4636e0c3a..a9e3cfc4b9e1b 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-10-14 +date: 2023-10-15 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 fa3cd7d72d736..713f0eeb95ddd 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-10-14 +date: 2023-10-15 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 414c0a91e9114..e1a15edfeefaa 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-10-14 +date: 2023-10-15 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 f7aa182832738..ecc4416c95cf4 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-10-14 +date: 2023-10-15 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 95b9e36f0c640..8cd993088127d 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-10-14 +date: 2023-10-15 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 b06e2ab667869..ebb43cad1754e 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-10-14 +date: 2023-10-15 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 ea51165eeeb1d..b7288ea277ffb 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-10-14 +date: 2023-10-15 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 4ae60d722f81b..5b749b921880d 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-10-14 +date: 2023-10-15 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 2f2d474a68b15..3bba402480819 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-10-14 +date: 2023-10-15 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 797e67cc9e210..28496cfc9c989 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 698031c4dab55..24ac95fc97200 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index da2fa3de84bb9..ffa326eeb0dc7 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index d0545a041da1b..df0cbe6fb054f 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-10-14 +date: 2023-10-15 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 533672a7a8821..78989dc733247 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index abb529784b662..5cb22fee13278 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index a51bab98e5761..b4be7708ebaec 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-10-14 +date: 2023-10-15 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 91aa19f43c4dc..32981202fe6a2 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-10-14 +date: 2023-10-15 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 1a0c50165c688..bc2cc735d58b1 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-10-14 +date: 2023-10-15 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 7ed74f2260e3d..56f7a44d279e0 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-10-14 +date: 2023-10-15 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 b53e5640998a6..a62035a12e8f8 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-10-14 +date: 2023-10-15 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 cd1f880e807d7..5aa6a6770e897 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-10-14 +date: 2023-10-15 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 f836c379a8945..4471b57b2022c 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-10-14 +date: 2023-10-15 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 03d287e4968c7..692e15fded743 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-10-14 +date: 2023-10-15 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 df6e387ded59c..b1db5340a0c28 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-10-14 +date: 2023-10-15 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 9c87878c0a22a..06cddfcdb5bad 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-10-14 +date: 2023-10-15 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 589019d7668b1..0a2c9e24cc10b 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-10-14 +date: 2023-10-15 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 b5998d04d5f3b..0ea7a2cb3b464 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-10-14 +date: 2023-10-15 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 44c219ff2635f..39402797b7375 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-10-14 +date: 2023-10-15 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 dc73658388821..6cdc7be433b11 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-10-14 +date: 2023-10-15 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 c87b67c9ef888..6e09620c6adc9 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-10-14 +date: 2023-10-15 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 67bfe93193c0b..602d69cb3b3d5 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-10-14 +date: 2023-10-15 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 de89b4563f152..fcd00e824e52d 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-10-14 +date: 2023-10-15 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 0be10a72350c6..2fbc02900de5b 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-10-14 +date: 2023-10-15 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 647d841097d08..d672357606a3c 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-10-14 +date: 2023-10-15 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 4935d7d7b4c29..ee27ee75c9523 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-10-14 +date: 2023-10-15 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 5c7fa814b9727..e0b140ec722b8 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-10-14 +date: 2023-10-15 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 7a0f346ffcc4e..d2981aeab7aa9 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-10-14 +date: 2023-10-15 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 f165f22a2d194..999e0d442bff5 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index c0c5e4ad781d8..0bbbe2e365e8c 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 1cde3581d83e9..766c925524629 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-10-14 +date: 2023-10-15 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 876afab99ef59..fbea7cddb8e5a 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-10-14 +date: 2023-10-15 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 c36a413391acf..a660e5c8291bc 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index 1f0ce710e5c89..941aa4f41455d 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 92b9ab49c917a..87bf106be5969 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index 90dc3468db6c7..94986e218a235 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index f2b91a819e9cc..21684706b8bb1 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 3da81948fad61..05cfd744aaefe 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index e53cc63f01bb2..89781d2d11bd3 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 7813911f24aee..728df23902cd6 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index f12b858fa1523..7ff9ce0084d7e 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 7bbfcf0c822f5..ea7fa826750ce 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index a4720bd44a21c..b311f8bf2af7e 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 014a77238b19e..38a837e4eae0e 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index c6c026ea72a93..d56ab874b1d57 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index ee98166c0c5d5..02b4473b0bf39 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-10-14 +date: 2023-10-15 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 8b1be084bb591..0d206461fb0c7 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-10-14 +date: 2023-10-15 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 ecbe35a02bd63..7f32a809143ff 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-10-14 +date: 2023-10-15 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 b2db3dff812d7..b1dd92d48f0ee 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index a4915adca8003..24a59fa95a518 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index 5131b2c332615..2feafbe2a5cb6 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 4825d1c4ad2a1..12363e1bab751 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-10-14 +date: 2023-10-15 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 1bdf04196a3e3..1b5d0a19a2f40 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-10-14 +date: 2023-10-15 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 a15f176277f6b..49f7612c2b67b 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-10-14 +date: 2023-10-15 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 663faca8d3b34..071bc63c0122c 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-10-14 +date: 2023-10-15 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 d684dfc54d6fc..71c78ae59c6dc 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index 4c28e3e375cf0..b90235666a1ed 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 94c2a221ff015..b63127d2e9d6b 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-10-14 +date: 2023-10-15 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 9b59bc3c659a6..d8c0be4fc33ad 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-10-14 +date: 2023-10-15 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 3614a6232e1dd..e431c5af5970c 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-10-14 +date: 2023-10-15 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 83e21535442b1..039a7d1e1b6f5 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-10-14 +date: 2023-10-15 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 a37d12e1a31ae..0736973e299e7 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-10-14 +date: 2023-10-15 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 08c122265febc..d40060af21ef4 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-10-14 +date: 2023-10-15 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 213697520ac10..693414ff4195b 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-10-14 +date: 2023-10-15 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 352984016f63b..9a406bcf73082 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-10-14 +date: 2023-10-15 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 a681a821920e0..0e2f38337ac17 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-10-14 +date: 2023-10-15 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 7364a550c0787..1998bad8988a1 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-10-14 +date: 2023-10-15 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 ec59c35b8b024..cda1656c0cbb6 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-10-14 +date: 2023-10-15 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 cf3e9d9584f3b..6b1e02c0d76d1 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-10-14 +date: 2023-10-15 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 8b28d27ae9c35..2143f148be0a9 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-10-14 +date: 2023-10-15 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 1923a7b2088b1..4635a4ed1c324 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-10-14 +date: 2023-10-15 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 e420e95e6c42e..dfc48de1fef07 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-10-14 +date: 2023-10-15 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 461233414ac5a..14332da8fe1fc 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 7a72941bc203f..185aea7b2b2e3 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index c4225a2843bf4..82062e6a59529 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-10-14 +date: 2023-10-15 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 07964e389d90e..e2ece86f81572 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-10-14 +date: 2023-10-15 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 95078e1adbe2c..5df9365db1eaa 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-10-14 +date: 2023-10-15 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 0974472dd8673..914fdf2ef226f 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-10-14 +date: 2023-10-15 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 15c6b4d242a23..46b3ba48d8939 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-10-14 +date: 2023-10-15 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 1752ea35a7cc1..da69c157cfa57 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 8b224dda920d0..3c05744650a8a 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index edea1427cac09..653cb4ed4d898 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-10-14 +date: 2023-10-15 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 1f7ff153f9cd7..d143e5e679d9f 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index 9e79ff4078bc8..7098d24f62c8e 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index e2da6eb0ca7c2..ed23e9d7e897c 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 610393776e129..10ea15d81496b 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index 51e927b56bd42..6bec86754b5a5 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index 89530d5004236..02bd8f40d7602 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 4c822135819f9..5c76fc386781e 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index bd581a62bc1e1..34ed025409fc3 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-10-14 +date: 2023-10-15 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 13a181d91ef69..bf8bcfaf11334 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-10-14 +date: 2023-10-15 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 499335d48f631..7b20f28a904f3 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-10-14 +date: 2023-10-15 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 47755a66189a4..ae7817df14ae9 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-10-14 +date: 2023-10-15 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 5d222d20ea099..c13194f4d5100 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index a254d0dccafe9..a81be06994b10 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 96a1cf63a88a4..ed029cb1a9897 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index e22aa2656b46d..c5da61c133cd4 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index de7f9d976dd17..ef98a0ed37f19 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-10-14 +date: 2023-10-15 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 438f3ef430bf7..976d37bb6128a 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 2167f26baa393..800ec16c7f6bd 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 965017def1c9a..ac745e4b9107c 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index e5f13efd846c6..c46b049ba1168 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 6396fe095a7b1..c35f2ef0eb71f 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 3fc86832534c0..7c91fe293a83e 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index 05c58ced41b05..b14d90690df2d 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-10-14 +date: 2023-10-15 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 2b0c3b9c06e53..0e5a5e40492ef 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-10-14 +date: 2023-10-15 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 f9f0e4829a018..1aed9ef485e3a 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-10-14 +date: 2023-10-15 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 b3872a61ff525..b9ce192fa6255 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-10-14 +date: 2023-10-15 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 86e7d344f2359..c7c2e14fd4126 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-10-14 +date: 2023-10-15 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 906b3886f2139..0352248603738 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-10-14 +date: 2023-10-15 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 831d82609d81f..fbebcdb9021a2 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-10-14 +date: 2023-10-15 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 88f0ffa984891..38d79173742d3 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-10-14 +date: 2023-10-15 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 5477d68069ea3..a0a3f165e6bd5 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-10-14 +date: 2023-10-15 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 dde5d439ae514..1c2a914fb4b5e 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-10-14 +date: 2023-10-15 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 1fd9d033f775c..5ecaad5dfc2f9 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-10-14 +date: 2023-10-15 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 6d169827465e8..87ff4ad860d81 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-10-14 +date: 2023-10-15 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 587b99ab55008..65d0370501b00 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-10-14 +date: 2023-10-15 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 c67cb2c793e98..55b0bb85f315c 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index ddd757a27bbe2..e4a493f36623a 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-10-14 +date: 2023-10-15 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 a9f165d259e75..83ae83697df7d 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-10-14 +date: 2023-10-15 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 6eaddbf38e212..cfa747286c59a 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-10-14 +date: 2023-10-15 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 4507bc9d89bdd..5407d598da1ae 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-10-14 +date: 2023-10-15 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 1fe741a691fc5..39f29fe801197 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-10-14 +date: 2023-10-15 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 38bc7fabc6ad0..737cd1aa5a029 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-10-14 +date: 2023-10-15 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 db4a5aed3ff91..416a907f87f05 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-10-14 +date: 2023-10-15 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 59bd912c1f6d9..34bcdd8092417 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index ce221e77c8992..84d301e761309 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index 76913b281cc97..df848241c216e 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index c0e4da07b9724..dccf04f7554ec 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index ab2d62327221f..635bc8a7f44e0 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index eda7d7812774b..79163a3bbdf95 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index e46264f9db4bf..00322a5e5327e 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-10-14 +date: 2023-10-15 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 69a2389b9f511..73d6ecfe06c95 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-10-14 +date: 2023-10-15 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 44b2300a099f1..aa1fe4020b77d 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-10-14 +date: 2023-10-15 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 b4412dc78be0d..b1500ef36915f 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-10-14 +date: 2023-10-15 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 5d154b50fbb1b..85872198f6e8c 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-10-14 +date: 2023-10-15 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 542361ffcd883..2e8ad0f157631 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-10-14 +date: 2023-10-15 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 62af39840e6cc..d0a7e0ba1793c 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-10-14 +date: 2023-10-15 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 10e86039f898e..83a612583eb39 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-10-14 +date: 2023-10-15 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 5bfc06e922f17..746ba4cbc86b8 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-10-14 +date: 2023-10-15 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 b5488b7357764..e2a256ac04b04 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-10-14 +date: 2023-10-15 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 b65e82858e42c..e4b4cdf4f02be 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-10-14 +date: 2023-10-15 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 262b24c5ead3d..ad360496c88d2 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-10-14 +date: 2023-10-15 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 38d5a9195b88c..b3604c1c2fb17 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-10-14 +date: 2023-10-15 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 9e15b0df97443..5379dfe3634d3 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-10-14 +date: 2023-10-15 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 1333188d3c313..9303b656c8d88 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-10-14 +date: 2023-10-15 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 d4962ba09a080..e39bfa0fadb26 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-10-14 +date: 2023-10-15 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 8f7c0303869cd..b6a120e9ad661 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-10-14 +date: 2023-10-15 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 ad18b01f2acd0..63c5e6faf44f4 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-10-14 +date: 2023-10-15 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 e94b11fbbe325..496e3d735b3e5 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-10-14 +date: 2023-10-15 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 3c4f7e848d3d4..ba5d40cd6467a 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-10-14 +date: 2023-10-15 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 2d6696b1c655d..0ec1dc3cf48b6 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-10-14 +date: 2023-10-15 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 9879a22ac78f6..0c88e11c00d39 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-10-14 +date: 2023-10-15 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 5e1fa030d286f..32cff6f88981c 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-10-14 +date: 2023-10-15 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 5abd3f3b72737..8942e13d1cf8f 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-10-14 +date: 2023-10-15 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 90a35262a995b..0addc0bc21644 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-10-14 +date: 2023-10-15 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 08bbb3810983d..7140c27bc8d9d 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-10-14 +date: 2023-10-15 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 afb50275f7c4f..ca86085c1f779 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-10-14 +date: 2023-10-15 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 e7dd00fa5630f..935a480de20bc 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-10-14 +date: 2023-10-15 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 db2ba9aab9d87..c3240a965e3e3 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-10-14 +date: 2023-10-15 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 2dc607292dde8..26dfe8784a514 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-10-14 +date: 2023-10-15 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 3eba01c64ec66..1518c85556558 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-10-14 +date: 2023-10-15 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 daf4834d64f98..40f0c12ebd713 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-10-14 +date: 2023-10-15 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 2966b611eb421..7d5f0e121b142 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-10-14 +date: 2023-10-15 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 f5604549fec1a..a849662e843fc 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-10-14 +date: 2023-10-15 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 7eb3cfacecc8d..2d921ad311040 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-10-14 +date: 2023-10-15 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 8576c35d9a79d..dacd9435ac5d7 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-10-14 +date: 2023-10-15 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 d61b665235c02..c274dbb1ac8f7 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-10-14 +date: 2023-10-15 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 89f29d895679c..ca48894ded99e 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-10-14 +date: 2023-10-15 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 b437b56b34d3d..ee743c6aad660 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-10-14 +date: 2023-10-15 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 1f0f1cc22681c..fc87540229c6c 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-10-14 +date: 2023-10-15 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 8e4306a88f91d..fb1df1259f13b 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-10-14 +date: 2023-10-15 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 2a31489ca1ad8..258c917cf6a09 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-10-14 +date: 2023-10-15 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 02d57480bfb5a..2a61149df0bba 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-10-14 +date: 2023-10-15 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 a0029321693b4..9f219fdb4c67a 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-10-14 +date: 2023-10-15 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 814509603010f..8686f2d3e9e69 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-10-14 +date: 2023-10-15 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 fdb4373177d42..e148589d79251 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_subscription_tracking.mdx b/api_docs/kbn_subscription_tracking.mdx index 28c15bd4cd798..114448356e0f2 100644 --- a/api_docs/kbn_subscription_tracking.mdx +++ b/api_docs/kbn_subscription_tracking.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-subscription-tracking title: "@kbn/subscription-tracking" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/subscription-tracking plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/subscription-tracking'] --- import kbnSubscriptionTrackingObj from './kbn_subscription_tracking.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index faf93ebfc4d2a..ae4aa3929b621 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-10-14 +date: 2023-10-15 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 a5b6b9e962711..da2a1a3342c3d 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-10-14 +date: 2023-10-15 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 742c99bff9b05..83ee884a01f2d 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-10-14 +date: 2023-10-15 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 102dadb83b950..45ae84cf12400 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-10-14 +date: 2023-10-15 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 cc93cd62c830d..5981dffbbddd0 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-10-14 +date: 2023-10-15 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 43d9574af8c6a..79bc51cba4f1a 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-10-14 +date: 2023-10-15 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 9412c716865c4..e1d5797a811df 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-10-14 +date: 2023-10-15 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 f1d7bd31608f1..884b0cc4402f5 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-10-14 +date: 2023-10-15 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 314072f86bb3a..433e55eb0f23f 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-10-14 +date: 2023-10-15 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 4fc8e32aa6646..ed1f37e3fea3c 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-10-14 +date: 2023-10-15 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 f2a869e333687..c26a0ad99d20e 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 927a50b08d6ea..fe64949cd9b01 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 8f141d6937ce9..b37f3d12f5a32 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index a5eaf80ddbea0..187abf6fad77b 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-10-14 +date: 2023-10-15 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 07f6363b5c0b6..b9c0f840f66d2 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 2499dfe0c550e..b390d9ebd5ac7 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 82f282fb2cfd8..d63f93b41f21e 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-10-14 +date: 2023-10-15 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 a0702f874cfa8..4807c3994ea60 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-10-14 +date: 2023-10-15 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 d80a435cdd5e5..b48233de8925e 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-10-14 +date: 2023-10-15 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 0c45003726f07..2d6db7a607cac 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 7a31ca47f0303..b119318249c72 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index 54cea1878dfee..601f72198a59c 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index d947c417bef92..ba041ced4d3ee 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-10-14 +date: 2023-10-15 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 d7f793bb39e59..e27925236789b 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-10-14 +date: 2023-10-15 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 cdc03435e2b57..9056043fb1c5f 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-10-14 +date: 2023-10-15 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 039cc74a09710..85e25dd8e6981 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-10-14 +date: 2023-10-15 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 ad3e66992eb8a..362dbdad0f503 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-10-14 +date: 2023-10-15 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 b4f8c44261be4..e96762b22d4ad 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-10-14 +date: 2023-10-15 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 cede2c5b2ea1d..3391559a912a9 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-10-14 +date: 2023-10-15 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 53851f7b23ca1..6ec7b5767608d 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-10-14 +date: 2023-10-15 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 8a70bc46903b0..7d4de65852d8a 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 848cc0c8bdbca..0ab4177f98649 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 061467f05d2c7..b8c392b12aca9 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index e24c7c6007238..e67224cb1582e 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 9d848a6c57e16..24a5e1f3ada0b 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index cf43da6b25c85..17129e6361fe0 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-10-14 +date: 2023-10-15 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 f1dd823ee9bee..23ed347358a53 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-10-14 +date: 2023-10-15 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 7631aabfccfd6..f8084dc7e071d 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 37e080b757fb0..de64a89c2456d 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 3b657e0524f69..41f2904be89c9 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-10-14 +date: 2023-10-15 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 8eb9faacbbaae..527c07eba5b8d 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-10-14 +date: 2023-10-15 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 4d0a51cbdbe48..3daf28fcc8f8f 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-10-14 +date: 2023-10-15 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 f055bf6fff2f8..79b573fb0b5cf 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-10-14 +date: 2023-10-15 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 022a6cfbf79b6..1a5954557e937 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index dbca6817821df..711e0a0724874 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 1830ec8ea33d1..81c476cbc3fc6 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index e176ab873fc00..55329e836f6aa 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 0d2592f226e25..25655d031cd67 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index d63136f014f27..c898d17d8b8ef 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index fac9c83814f2d..fcc338bc07170 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-10-14 +date: 2023-10-15 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 de4feec1a601d..cd1d3f0f86ed4 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 32c6dee894a00..196f23a273ba6 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index 3b4edd39ff408..3d7085c56f789 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index f76927148aedc..74c0ef45c1b7d 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 347a3d011075d..cc0483902bfec 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-10-14 +date: 2023-10-15 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 4cbc3c793a6b9..283215d5ff11f 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 339da78bfd012..3ddce8482cc0c 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 2ceeb0fd535e5..c0091583e262b 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-10-14 +date: 2023-10-15 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 459a6d734dd55..0b37855f67321 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 0fbd2e2a364f9..89333e46141ae 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index dce6b5bd83688..858194933be7c 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-10-14 +date: 2023-10-15 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 7d6859e2986db..e46ac90841586 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-10-14 +date: 2023-10-15 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 9a6194ce528ee..2be2adb4c0ab0 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-10-14 +date: 2023-10-15 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 9bf8adfab2720..ed16de59ddf3b 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-10-14 +date: 2023-10-15 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 3bd85fadf0072..4893333ffcf19 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-10-14 +date: 2023-10-15 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 4b0191b31b072..576c260ebab06 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-10-14 +date: 2023-10-15 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 d199f5b2118a4..2648336fd7c9f 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-10-14 +date: 2023-10-15 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 74d52b0a7b672..47dd8486bef84 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-10-14 +date: 2023-10-15 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 8cc892d2d6652..bdf5a009324b6 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-10-14 +date: 2023-10-15 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 b7f1005f84d6b..6be7bab550ee7 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-10-14 +date: 2023-10-15 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 7427488a2f8af..d6d9350ce3cb4 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index a2803fc79beca..c2c6e86b9dd47 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 30597cbcb30a3..5114efb37f49d 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index 6d392fb6a8937..255ed63bfef31 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index 5120408180c9a..223abd9be444a 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-10-14 +date: 2023-10-15 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 3237deb600d5d..ea91ebbc7ad84 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-10-14 +date: 2023-10-15 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 b28b15cba7db3..c1214558beeaa 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index bc770b94c53bf..5dabcfd775677 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-10-14 +date: 2023-10-15 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 de1535d433240..751a96c3022f0 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-10-14 +date: 2023-10-15 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 32c15cf44d349..a3a5e014e7ce9 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-10-14 +date: 2023-10-15 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 454b2e82908c7..926cbb8fdd6d5 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-10-14 +date: 2023-10-15 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 0c82acb3215ac..b7b4e9961bb38 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-10-14 +date: 2023-10-15 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 09a87357fc49b..8b45d134a8937 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-10-14 +date: 2023-10-15 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 dfa5db05f5ef2..099e560595a6f 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-10-14 +date: 2023-10-15 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 97731a6bdfc67..f606f57f9a6eb 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-10-14 +date: 2023-10-15 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 cb6bb7e928d3f..ade9fdc9a00f8 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-10-14 +date: 2023-10-15 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 071215141c3e6..cbb401c693e6a 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-10-14 +date: 2023-10-15 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 362d30aa11cc5..d8c24380cbb00 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-10-14 +date: 2023-10-15 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 5685bbfd1cd31..3ade5507ec23e 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-10-14 +date: 2023-10-15 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 33da32460b477..0ee59ee1200d0 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-10-14 +date: 2023-10-15 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 5374be4086aa7..3738823bf6b96 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-10-14 +date: 2023-10-15 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 c82e8b37d64d7..ee716385b5dcf 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index a741d8d23b030..ce113fece9ace 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-10-14 +date: 2023-10-15 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 80d64ca2c9d99..62b13d45b5239 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-10-14 +date: 2023-10-15 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 ab16ae7ed195c..5032796bffdbe 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 8531277329fad..1c902e985ec4a 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 64ea039a5dfce..ce6fe41d44e18 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-10-14 +date: 2023-10-15 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 5cbd3355885c4..b792ccedd5b6c 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-10-14 +date: 2023-10-15 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 c0af1bf45e353..dc6f633d2ba67 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index 1dfa61d728be2..a1093cf720cbe 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2023-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 4b678992e229a..be22db35b554b 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-10-14 +date: 2023-10-15 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 2851d4278864a..924eeeff2536c 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-10-14 +date: 2023-10-15 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 6f881168e785d..410ecf0d648df 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-10-14 +date: 2023-10-15 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 8bdca282f0c96..8f7ad27670e4d 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-10-14 +date: 2023-10-15 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 6cc34e8dbb99e..7240bd5671ebc 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-10-14 +date: 2023-10-15 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 cd75ea320e3c9..91c7d29035416 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-10-14 +date: 2023-10-15 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 1722509148ffe..8d6c59ff29a5d 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-10-14 +date: 2023-10-15 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 22855353c871e..8e90655ee0479 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-10-14 +date: 2023-10-15 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 f16f952866509..d1d4d95cc8713 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-10-14 +date: 2023-10-15 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 41b7dff7e13f6..d3e355e1dc35c 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-10-14 +date: 2023-10-15 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 f543686fa0913..9f011c7d764c0 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-10-14 +date: 2023-10-15 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 cb0c02e8756be..ea6fb4ea82c2e 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-10-14 +date: 2023-10-15 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 897db0415fb3a..9600bf3dcc150 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 00e8ba04ffa65..9ca8fed0569f5 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-10-14 +date: 2023-10-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 02177248ec97d487cd84a1a7bf3889cb22fa34f1 Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Sun, 15 Oct 2023 12:51:42 +0200 Subject: [PATCH 49/80] `kibana_usage_collection`: optimize SO PIT searches (#168677) ## Summary Properly loop though PIT search pages instead of fetching all documents at once --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../fetch_all_saved_objects.ts | 28 ------ .../application_usage/rollups/total.test.ts | 19 ++-- .../application_usage/rollups/total.ts | 73 +++++++------- .../telemetry_application_usage_collector.ts | 87 ++++++++-------- .../server/lib/find_all.test.ts | 99 ------------------- .../server/lib/find_all.ts | 25 ----- .../server/lib/index.ts | 1 - .../server/routes/scroll_count.ts | 22 ++--- 8 files changed, 92 insertions(+), 262 deletions(-) delete mode 100644 src/plugins/kibana_usage_collection/server/collectors/application_usage/fetch_all_saved_objects.ts delete mode 100644 src/plugins/saved_objects_management/server/lib/find_all.test.ts delete mode 100644 src/plugins/saved_objects_management/server/lib/find_all.ts diff --git a/src/plugins/kibana_usage_collection/server/collectors/application_usage/fetch_all_saved_objects.ts b/src/plugins/kibana_usage_collection/server/collectors/application_usage/fetch_all_saved_objects.ts deleted file mode 100644 index 261b1dc0adb00..0000000000000 --- a/src/plugins/kibana_usage_collection/server/collectors/application_usage/fetch_all_saved_objects.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { - ISavedObjectsRepository, - SavedObjectsCreatePointInTimeFinderOptions, - SavedObjectsFindResult, -} from '@kbn/core/server'; - -export async function fetchAllSavedObjects( - soRepository: ISavedObjectsRepository, - findOptions: SavedObjectsCreatePointInTimeFinderOptions -): Promise>> { - const finder = soRepository.createPointInTimeFinder({ ...findOptions, perPage: 1000 }); - - const allSavedObjects: Array> = []; - - for await (const { saved_objects: savedObjects } of finder.find()) { - allSavedObjects.push(...savedObjects); - } - - return allSavedObjects; -} diff --git a/src/plugins/kibana_usage_collection/server/collectors/application_usage/rollups/total.test.ts b/src/plugins/kibana_usage_collection/server/collectors/application_usage/rollups/total.test.ts index e5dd0996e440d..251fc15b8e2c9 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/application_usage/rollups/total.test.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/application_usage/rollups/total.test.ts @@ -177,18 +177,11 @@ describe('rollTotals', () => { ], { overwrite: true } ); - expect(savedObjectClient.delete).toHaveBeenCalledTimes(3); - expect(savedObjectClient.delete).toHaveBeenCalledWith( - SAVED_OBJECTS_DAILY_TYPE, - 'appId-2:2020-01-01' - ); - expect(savedObjectClient.delete).toHaveBeenCalledWith( - SAVED_OBJECTS_DAILY_TYPE, - 'appId-1:2020-01-01' - ); - expect(savedObjectClient.delete).toHaveBeenCalledWith( - SAVED_OBJECTS_DAILY_TYPE, - 'appId-1:2020-01-01:viewId-1' - ); + expect(savedObjectClient.bulkDelete).toHaveBeenCalledTimes(1); + expect(savedObjectClient.bulkDelete).toHaveBeenCalledWith([ + { type: SAVED_OBJECTS_DAILY_TYPE, id: 'appId-2:2020-01-01' }, + { type: SAVED_OBJECTS_DAILY_TYPE, id: 'appId-1:2020-01-01' }, + { type: SAVED_OBJECTS_DAILY_TYPE, id: 'appId-1:2020-01-01:viewId-1' }, + ]); }); }); diff --git a/src/plugins/kibana_usage_collection/server/collectors/application_usage/rollups/total.ts b/src/plugins/kibana_usage_collection/server/collectors/application_usage/rollups/total.ts index 8487c0ea8418e..80afa4e08bcc6 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/application_usage/rollups/total.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/application_usage/rollups/total.ts @@ -16,7 +16,6 @@ import { SAVED_OBJECTS_TOTAL_TYPE, } from '../saved_objects_types'; import { serializeKey } from './utils'; -import { fetchAllSavedObjects } from '../fetch_all_saved_objects'; /** * Moves all the daily documents into aggregated "total" documents as we don't care about any granularity after 90 days @@ -29,56 +28,56 @@ export async function rollTotals(logger: Logger, savedObjectsClient?: ISavedObje } try { - const [rawApplicationUsageTotals, rawApplicationUsageDaily] = await Promise.all([ - fetchAllSavedObjects(savedObjectsClient, { - type: SAVED_OBJECTS_TOTAL_TYPE, - }), - fetchAllSavedObjects(savedObjectsClient, { - type: SAVED_OBJECTS_DAILY_TYPE, - filter: `${SAVED_OBJECTS_DAILY_TYPE}.attributes.timestamp < now-90d`, - }), - ]); + const usageTotalsFinder = savedObjectsClient.createPointInTimeFinder({ + type: SAVED_OBJECTS_TOTAL_TYPE, + perPage: 200, + }); + const existingTotals: Record< + string, + { appId: string; viewId: string; minutesOnScreen: number; numberOfClicks: number } + > = {}; + for await (const { saved_objects: savedObjects } of usageTotalsFinder.find()) { + for (const savedObject of savedObjects) { + const { + appId, + viewId = MAIN_APP_DEFAULT_VIEW_ID, + numberOfClicks, + minutesOnScreen, + } = savedObject.attributes; - const existingTotals = rawApplicationUsageTotals.reduce( - ( - acc, - { - attributes: { appId, viewId = MAIN_APP_DEFAULT_VIEW_ID, numberOfClicks, minutesOnScreen }, - } - ) => { const key = viewId === MAIN_APP_DEFAULT_VIEW_ID ? appId : serializeKey(appId, viewId); - // No need to sum because there should be 1 document per appId only - acc[key] = { appId, viewId, numberOfClicks, minutesOnScreen }; - return acc; - }, - {} as Record< - string, - { appId: string; viewId: string; minutesOnScreen: number; numberOfClicks: number } - > - ); + existingTotals[key] = { appId, viewId, numberOfClicks, minutesOnScreen }; + } + } - const totals = rawApplicationUsageDaily.reduce( - (acc, { attributes }) => { + const usageDailyFinder = savedObjectsClient.createPointInTimeFinder({ + type: SAVED_OBJECTS_DAILY_TYPE, + filter: `${SAVED_OBJECTS_DAILY_TYPE}.attributes.timestamp < now-90d`, + perPage: 200, + }); + const totals = { ...existingTotals }; + const usageDailyIdsToDelete: string[] = []; + for await (const { saved_objects: savedObjects } of usageDailyFinder.find()) { + for (const savedObject of savedObjects) { const { appId, viewId = MAIN_APP_DEFAULT_VIEW_ID, numberOfClicks, minutesOnScreen, - } = attributes; + } = savedObject.attributes; const key = viewId === MAIN_APP_DEFAULT_VIEW_ID ? appId : serializeKey(appId, viewId); - const existing = acc[key] || { minutesOnScreen: 0, numberOfClicks: 0 }; + const existing = totals[key] || { minutesOnScreen: 0, numberOfClicks: 0 }; - acc[key] = { + totals[key] = { appId, viewId, numberOfClicks: numberOfClicks + existing.numberOfClicks, minutesOnScreen: minutesOnScreen + existing.minutesOnScreen, }; - return acc; - }, - { ...existingTotals } - ); + usageDailyIdsToDelete.push(savedObject.id); + } + } await Promise.all([ Object.entries(totals).length && @@ -90,8 +89,8 @@ export async function rollTotals(logger: Logger, savedObjectsClient?: ISavedObje })), { overwrite: true } ), - ...rawApplicationUsageDaily.map( - ({ id }) => savedObjectsClient.delete(SAVED_OBJECTS_DAILY_TYPE, id) // There is no bulkDelete :( + savedObjectsClient.bulkDelete( + usageDailyIdsToDelete.map((id) => ({ id, type: SAVED_OBJECTS_DAILY_TYPE })) ), ]); } catch (err) { diff --git a/src/plugins/kibana_usage_collection/server/collectors/application_usage/telemetry_application_usage_collector.ts b/src/plugins/kibana_usage_collection/server/collectors/application_usage/telemetry_application_usage_collector.ts index b689582ee2b72..16ddf9c2a9e26 100644 --- a/src/plugins/kibana_usage_collection/server/collectors/application_usage/telemetry_application_usage_collector.ts +++ b/src/plugins/kibana_usage_collection/server/collectors/application_usage/telemetry_application_usage_collector.ts @@ -22,7 +22,6 @@ import { applicationUsageSchema } from './schema'; import { rollTotals, serializeKey } from './rollups'; import { ROLL_TOTAL_INDICES_INTERVAL, ROLL_INDICES_START } from './constants'; import type { ApplicationUsageTelemetryReport, ApplicationUsageViews } from './types'; -import { fetchAllSavedObjects } from './fetch_all_saved_objects'; export const transformByApplicationViews = ( report: ApplicationUsageViews @@ -68,29 +67,27 @@ export function registerApplicationUsageCollector( if (typeof savedObjectsClient === 'undefined') { return; } - const [rawApplicationUsageTotals, rawApplicationUsageDaily] = await Promise.all([ - fetchAllSavedObjects(savedObjectsClient, { + + const usageTotalsFinder = savedObjectsClient.createPointInTimeFinder( + { type: SAVED_OBJECTS_TOTAL_TYPE, - }), - fetchAllSavedObjects(savedObjectsClient, { - type: SAVED_OBJECTS_DAILY_TYPE, - }), - ]); - - const applicationUsageFromTotals = rawApplicationUsageTotals.reduce( - ( - acc, - { - attributes: { - appId, - viewId = MAIN_APP_DEFAULT_VIEW_ID, - minutesOnScreen, - numberOfClicks, - }, - } - ) => { - const existing = acc[appId] || { clicks_total: 0, minutes_on_screen_total: 0 }; - acc[serializeKey(appId, viewId)] = { + perPage: 200, + } + ); + const applicationUsageFromTotals: ApplicationUsageTelemetryReport = {}; + for await (const { saved_objects: savedObjects } of usageTotalsFinder.find()) { + for (const savedObject of savedObjects) { + const { + appId, + viewId = MAIN_APP_DEFAULT_VIEW_ID, + minutesOnScreen, + numberOfClicks, + } = savedObject.attributes; + const existing = applicationUsageFromTotals[appId] || { + clicks_total: 0, + minutes_on_screen_total: 0, + }; + applicationUsageFromTotals[serializeKey(appId, viewId)] = { appId, viewId, clicks_total: numberOfClicks + existing.clicks_total, @@ -102,28 +99,28 @@ export function registerApplicationUsageCollector( minutes_on_screen_30_days: 0, minutes_on_screen_90_days: 0, }; - return acc; - }, - {} as ApplicationUsageTelemetryReport - ); + } + } + const nowMinus7 = moment().subtract(7, 'days'); const nowMinus30 = moment().subtract(30, 'days'); const nowMinus90 = moment().subtract(90, 'days'); - const applicationUsage = rawApplicationUsageDaily.reduce( - ( - acc, - { - attributes: { - appId, - viewId = MAIN_APP_DEFAULT_VIEW_ID, - minutesOnScreen, - numberOfClicks, - timestamp, - }, - } - ) => { - const existing = acc[serializeKey(appId, viewId)] || { + const usageDailyFinder = savedObjectsClient.createPointInTimeFinder({ + type: SAVED_OBJECTS_DAILY_TYPE, + perPage: 200, + }); + const applicationUsage = { ...applicationUsageFromTotals }; + for await (const { saved_objects: savedObjects } of usageDailyFinder.find()) { + for (const savedObject of savedObjects) { + const { + appId, + viewId = MAIN_APP_DEFAULT_VIEW_ID, + minutesOnScreen, + numberOfClicks, + timestamp, + } = savedObject.attributes; + const existing = applicationUsage[serializeKey(appId, viewId)] || { appId, viewId, clicks_total: 0, @@ -154,7 +151,7 @@ export function registerApplicationUsageCollector( minutes_on_screen_90_days: existing.minutes_on_screen_90_days + minutesOnScreen, }; - acc[serializeKey(appId, viewId)] = { + applicationUsage[serializeKey(appId, viewId)] = { ...existing, clicks_total: existing.clicks_total + numberOfClicks, minutes_on_screen_total: existing.minutes_on_screen_total + minutesOnScreen, @@ -162,10 +159,8 @@ export function registerApplicationUsageCollector( ...(isInLast30Days ? last30Days : {}), ...(isInLast90Days ? last90Days : {}), }; - return acc; - }, - applicationUsageFromTotals - ); + } + } return transformByApplicationViews(applicationUsage); }, diff --git a/src/plugins/saved_objects_management/server/lib/find_all.test.ts b/src/plugins/saved_objects_management/server/lib/find_all.test.ts deleted file mode 100644 index 13135ce41b06e..0000000000000 --- a/src/plugins/saved_objects_management/server/lib/find_all.test.ts +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { times } from 'lodash'; -import { SavedObjectsFindOptions, SavedObjectsFindResult } from '@kbn/core/server'; -import { savedObjectsClientMock } from '@kbn/core/server/mocks'; -import { findAll } from './find_all'; - -describe('findAll', () => { - let savedObjectsClient: ReturnType; - - const createObj = (id: number): SavedObjectsFindResult => ({ - type: 'type', - id: `id-${id}`, - attributes: {}, - score: 1, - references: [], - }); - - beforeEach(() => { - savedObjectsClient = savedObjectsClientMock.create(); - }); - - it('calls `client.createPointInTimeFinder` with the correct parameters', async () => { - const query: SavedObjectsFindOptions = { - type: ['some-type', 'another-type'], - }; - - savedObjectsClient.find.mockResolvedValue({ - saved_objects: [], - total: 1, - per_page: 20, - page: 1, - }); - - await findAll(savedObjectsClient, query); - - expect(savedObjectsClient.createPointInTimeFinder).toHaveBeenCalledTimes(1); - expect(savedObjectsClient.createPointInTimeFinder).toHaveBeenCalledWith(query); - }); - - it('returns the results from the PIT search', async () => { - const query: SavedObjectsFindOptions = { - type: ['some-type', 'another-type'], - }; - - savedObjectsClient.find.mockResolvedValue({ - saved_objects: [createObj(1), createObj(2)], - total: 1, - per_page: 20, - page: 1, - }); - - const results = await findAll(savedObjectsClient, query); - - expect(savedObjectsClient.find).toHaveBeenCalledTimes(1); - expect(savedObjectsClient.find).toHaveBeenCalledWith( - expect.objectContaining({ - ...query, - }), - undefined // internalOptions - ); - - expect(results).toEqual([createObj(1), createObj(2)]); - }); - - it('works when the PIT search returns multiple batches', async () => { - const query: SavedObjectsFindOptions = { - type: ['some-type', 'another-type'], - perPage: 2, - }; - const objPerPage = 2; - - let callCount = 0; - savedObjectsClient.find.mockImplementation(({}) => { - callCount++; - const firstInPage = (callCount - 1) * objPerPage + 1; - return Promise.resolve({ - saved_objects: - callCount > 3 - ? [createObj(firstInPage)] - : [createObj(firstInPage), createObj(firstInPage + 1)], - total: objPerPage * 3, - per_page: objPerPage, - page: callCount!, - }); - }); - - const results = await findAll(savedObjectsClient, query); - - expect(savedObjectsClient.find).toHaveBeenCalledTimes(4); - expect(results).toEqual(times(7, (num) => createObj(num + 1))); - }); -}); diff --git a/src/plugins/saved_objects_management/server/lib/find_all.ts b/src/plugins/saved_objects_management/server/lib/find_all.ts deleted file mode 100644 index bb27bbd3765ef..0000000000000 --- a/src/plugins/saved_objects_management/server/lib/find_all.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { - SavedObjectsClientContract, - SavedObject, - SavedObjectsCreatePointInTimeFinderOptions, -} from '@kbn/core/server'; - -export const findAll = async ( - client: SavedObjectsClientContract, - findOptions: SavedObjectsCreatePointInTimeFinderOptions -): Promise => { - const finder = client.createPointInTimeFinder(findOptions); - const results: SavedObject[] = []; - for await (const result of finder.find()) { - results.push(...result.saved_objects); - } - return results; -}; diff --git a/src/plugins/saved_objects_management/server/lib/index.ts b/src/plugins/saved_objects_management/server/lib/index.ts index 9ee181246075c..0038152891b7c 100644 --- a/src/plugins/saved_objects_management/server/lib/index.ts +++ b/src/plugins/saved_objects_management/server/lib/index.ts @@ -8,5 +8,4 @@ export { toSavedObjectWithMeta } from './to_saved_object_with_meta'; export { injectMetaAttributes } from './inject_meta_attributes'; -export { findAll } from './find_all'; export { findRelationships } from './find_relationships'; diff --git a/src/plugins/saved_objects_management/server/routes/scroll_count.ts b/src/plugins/saved_objects_management/server/routes/scroll_count.ts index 210bb3b27c67f..d5649572ccbed 100644 --- a/src/plugins/saved_objects_management/server/routes/scroll_count.ts +++ b/src/plugins/saved_objects_management/server/routes/scroll_count.ts @@ -10,7 +10,6 @@ import { schema } from '@kbn/config-schema'; import type { IRouter, SavedObjectsCreatePointInTimeFinderOptions } from '@kbn/core/server'; import { chain } from 'lodash'; import type { v1 } from '../../common'; -import { findAll } from '../lib'; export const registerScrollForCountRoute = (router: IRouter) => { router.post( @@ -45,7 +44,7 @@ export const registerScrollForCountRoute = (router: IRouter) => { const client = getClient({ includedHiddenTypes }); const findOptions: SavedObjectsCreatePointInTimeFinderOptions = { type: typesToInclude, - perPage: 1000, + perPage: 500, }; if (searchString) { findOptions.search = `${searchString}*`; @@ -56,18 +55,15 @@ export const registerScrollForCountRoute = (router: IRouter) => { findOptions.hasReferenceOperator = 'OR'; } - const objects = await findAll(client, findOptions); - - const counts = objects.reduce((accum, result) => { - const type = result.type; - accum[type] = accum[type] || 0; - accum[type]++; - return accum; - }, {} as Record); - + const counts: Record = {}; for (const type of typesToInclude) { - if (!counts[type]) { - counts[type] = 0; + counts[type] = 0; + } + + const finder = client.createPointInTimeFinder(findOptions); + for await (const { saved_objects: savedObjects } of finder.find()) { + for (const { type } of savedObjects) { + counts[type]++; } } From fed5c5285972464805a25bcadff1c7ff343686c7 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Sun, 15 Oct 2023 19:39:02 +0100 Subject: [PATCH 50/80] skip flaky suite (#166572) --- test/api_integration/apis/home/sample_data.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/api_integration/apis/home/sample_data.ts b/test/api_integration/apis/home/sample_data.ts index 6037773c577b0..c455eed849c4b 100644 --- a/test/api_integration/apis/home/sample_data.ts +++ b/test/api_integration/apis/home/sample_data.ts @@ -72,7 +72,8 @@ export default function ({ getService }: FtrProviderContext) { }); }); - describe('dates', () => { + // FLAKY: https://github.com/elastic/kibana/issues/166572 + describe.skip('dates', () => { it('should load elasticsearch index containing sample data with dates relative to current time', async () => { const resp = await es.search<{ timestamp: string }>({ index: 'kibana_sample_data_flights', From ebbb1d4d383ab02c1bbe8437e64f3cd78070ee42 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Sun, 15 Oct 2023 19:40:49 +0100 Subject: [PATCH 51/80] skip flaky suite (#152913) --- .../test/cloud_security_posture_functional/pages/findings.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/cloud_security_posture_functional/pages/findings.ts b/x-pack/test/cloud_security_posture_functional/pages/findings.ts index 2dbee8496998a..69c1fd6949f51 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/findings.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/findings.ts @@ -164,7 +164,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); }); - describe('Table Sort', () => { + // FLAKY: https://github.com/elastic/kibana/issues/152913 + describe.skip('Table Sort', () => { type SortingMethod = (a: string, b: string) => number; type SortDirection = 'asc' | 'desc'; // Sort by lexical order will sort by the first character of the string (case-sensitive) From 753a58483403b7fd5e51fa88b7f66e4a3045153a Mon Sep 17 00:00:00 2001 From: Istvan Nagy Date: Sun, 15 Oct 2023 23:58:33 +0200 Subject: [PATCH 52/80] Docker image uses a numeric user ID (#168617) Co-authored-by: Brad White --- .../os_packages/docker_generator/templates/base/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile b/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile index 8bf470f489cb7..dca3b04faba82 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile +++ b/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile @@ -196,4 +196,4 @@ CMD ["/usr/local/bin/kibana-docker"] {{/cloud}} -USER kibana +USER 1000 From c8a4fda5155def5a325da52618d83d214cf833e2 Mon Sep 17 00:00:00 2001 From: Philippe Oberti Date: Sun, 15 Oct 2023 20:58:32 -0500 Subject: [PATCH 53/80] [Security Solution] expandable flyout - folder structure (#168473) --- .../kbn-expandable-flyout/.storybook/main.js | 9 + packages/kbn-expandable-flyout/README.md | 49 ++--- .../src/components/left_section.tsx | 4 +- .../src/components/preview_section.test.tsx | 9 +- .../src/components/preview_section.tsx | 20 +- .../src/components/right_section.tsx | 4 +- .../src/components/test_ids.ts | 12 +- .../src/index.stories.tsx | 196 ++++++++++++++++++ .../kbn-expandable-flyout/src/index.test.tsx | 12 +- src/dev/storybook/aliases.ts | 3 +- .../control_columns/row_action/index.tsx | 2 +- .../event_details/response_actions_view.tsx | 2 +- .../pages/alerts/alert_details_redirect.tsx | 2 +- .../public/detections/pages/alerts/utils.ts | 2 +- .../security_solution/public/flyout/README.md | 59 +++--- .../isolate_host/content.tsx | 8 +- .../isolate_host/context.tsx | 4 +- .../isolate_host/header.test.tsx | 0 .../isolate_host/header.tsx | 0 .../isolate_host/index.tsx | 0 .../isolate_host/test_ids.ts | 2 +- .../left/components/analyze_graph.test.tsx | 4 +- .../left/components/analyze_graph.tsx | 6 +- .../components/correlations_details.test.tsx | 4 +- .../left/components/correlations_details.tsx | 0 ...correlations_details_alerts_table.test.tsx | 2 +- .../correlations_details_alerts_table.tsx | 12 +- .../left/components/entities_details.test.tsx | 6 +- .../left/components/entities_details.tsx | 0 .../left/components/host_details.test.tsx | 36 ++-- .../left/components/host_details.tsx | 50 ++--- .../components/investigation_guide.test.tsx | 2 +- .../left/components/investigation_guide.tsx | 4 +- .../components/prevalence_details.test.tsx | 6 +- .../left/components/prevalence_details.tsx | 12 +- .../related_alerts_by_ancestry.test.tsx | 4 +- .../components/related_alerts_by_ancestry.tsx | 0 ...lated_alerts_by_same_source_event.test.tsx | 4 +- .../related_alerts_by_same_source_event.tsx | 0 .../related_alerts_by_session.test.tsx | 4 +- .../components/related_alerts_by_session.tsx | 0 .../left/components/related_cases.test.tsx | 4 +- .../left/components/related_cases.tsx | 4 +- .../left/components/response_details.test.tsx | 10 +- .../left/components/response_details.tsx | 6 +- .../left/components/session_view.test.tsx | 6 +- .../left/components/session_view.tsx | 2 +- .../components/suppressed_alerts.test.tsx | 4 +- .../left/components/suppressed_alerts.tsx | 6 +- .../left/components/test_ids.ts | 2 +- .../threat_intelligence_details.test.tsx | 6 +- .../threat_intelligence_details.tsx | 6 +- .../left/components/user_details.test.tsx | 36 ++-- .../left/components/user_details.tsx | 50 ++--- .../{ => document_details}/left/content.tsx | 0 .../{ => document_details}/left/context.tsx | 12 +- .../{ => document_details}/left/header.tsx | 0 .../left/hooks/use_fetch_alerts.test.tsx | 4 +- .../left/hooks/use_fetch_alerts.ts | 2 +- .../left/hooks/use_paginated_alerts.tsx | 0 .../left/hooks/use_pagination_and_sorting.ts | 0 .../use_threat_intelligence_details.test.ts | 24 +-- .../hooks/use_threat_intelligence_details.ts | 20 +- .../{ => document_details}/left/index.tsx | 0 .../left/mocks/mock_context.ts | 0 .../left/services/find_alerts.ts | 0 .../{ => document_details}/left/tabs.tsx | 0 .../left/tabs/insights_tab.tsx | 0 .../left/tabs/investigation_tab.tsx | 0 .../left/tabs/response_tab.tsx | 0 .../left/tabs/test_ids.ts | 2 +- .../left/tabs/visualize_tab.tsx | 4 +- .../{ => document_details}/left/test_ids.ts | 2 +- .../components/alert_reason_preview.test.tsx | 2 +- .../components/alert_reason_preview.tsx | 6 +- .../preview/components/rule_preview.test.tsx | 20 +- .../preview/components/rule_preview.tsx | 22 +- .../components/rule_preview_footer.test.tsx | 2 +- .../components/rule_preview_footer.tsx | 4 +- .../components/rule_preview_title.test.tsx | 4 +- .../preview/components/rule_preview_title.tsx | 6 +- .../preview/components/test_ids.ts | 2 +- .../preview/context.tsx | 4 +- .../{ => document_details}/preview/index.tsx | 0 .../preview/mocks/mock_context.ts | 0 .../{ => document_details}/preview/panels.tsx | 0 .../right/components/about_section.test.tsx | 4 +- .../right/components/about_section.tsx | 0 .../components/analyzer_preview.test.tsx | 6 +- .../right/components/analyzer_preview.tsx | 6 +- .../analyzer_preview_container.test.tsx | 18 +- .../components/analyzer_preview_container.tsx | 14 +- .../components/correlations_overview.test.tsx | 4 +- .../components/correlations_overview.tsx | 2 +- .../right/components/description.test.tsx | 0 .../right/components/description.tsx | 2 +- .../components/entities_overview.test.tsx | 4 +- .../right/components/entities_overview.tsx | 2 +- .../expand_detail_button.stories.tsx | 0 .../components/expand_detail_button.test.tsx | 0 .../right/components/expand_detail_button.tsx | 0 .../components/expandable_section.stories.tsx | 0 .../components/expandable_section.test.tsx | 0 .../right/components/expandable_section.tsx | 0 .../right/components/header_title.test.tsx | 10 +- .../right/components/header_title.tsx | 12 +- .../components/highlighted_fields.test.tsx | 6 +- .../right/components/highlighted_fields.tsx | 8 +- .../highlighted_fields_cell.test.tsx | 6 +- .../components/highlighted_fields_cell.tsx | 4 +- .../components/host_entity_overview.test.tsx | 18 +- .../right/components/host_entity_overview.tsx | 28 +-- .../components/insights_section.test.tsx | 6 +- .../right/components/insights_section.tsx | 0 .../insights_summary_row.stories.tsx | 0 .../components/insights_summary_row.test.tsx | 0 .../right/components/insights_summary_row.tsx | 2 +- .../components/investigation_guide.test.tsx | 0 .../right/components/investigation_guide.tsx | 0 .../components/investigation_section.test.tsx | 4 +- .../components/investigation_section.tsx | 0 .../right/components/mitre_attack.test.tsx | 0 .../right/components/mitre_attack.tsx | 2 +- .../components/prevalence_overview.test.tsx | 4 +- .../right/components/prevalence_overview.tsx | 2 +- .../right/components/reason.test.tsx | 0 .../right/components/reason.tsx | 2 +- .../related_alerts_by_ancestry.test.tsx | 0 .../components/related_alerts_by_ancestry.tsx | 0 ...lated_alerts_by_same_source_event.test.tsx | 0 .../related_alerts_by_same_source_event.tsx | 0 .../related_alerts_by_session.test.tsx | 0 .../components/related_alerts_by_session.tsx | 0 .../right/components/related_cases.test.tsx | 0 .../right/components/related_cases.tsx | 0 .../right/components/response_button.test.tsx | 2 +- .../right/components/response_button.tsx | 0 .../components/response_section.test.tsx | 0 .../right/components/response_section.tsx | 0 .../right/components/risk_score.test.tsx | 0 .../right/components/risk_score.tsx | 0 .../right/components/session_preview.test.tsx | 2 +- .../right/components/session_preview.tsx | 6 +- .../session_preview_container.test.tsx | 8 +- .../components/session_preview_container.tsx | 14 +- .../right/components/severity.test.tsx | 2 +- .../right/components/severity.tsx | 8 +- .../right/components/status.test.tsx | 6 +- .../right/components/status.tsx | 14 +- .../components/suppressed_alerts.test.tsx | 0 .../right/components/suppressed_alerts.tsx | 2 +- .../right/components/test_ids.ts | 2 +- .../threat_intelligence_overview.test.tsx | 4 +- .../threat_intelligence_overview.tsx | 2 +- .../components/user_entity_overview.test.tsx | 18 +- .../right/components/user_entity_overview.tsx | 28 +-- .../visualizations_section.test.tsx | 6 +- .../components/visualizations_section.tsx | 0 .../{ => document_details}/right/content.tsx | 0 .../{ => document_details}/right/context.tsx | 12 +- .../{ => document_details}/right/footer.tsx | 4 +- .../right/header.test.tsx | 2 +- .../{ => document_details}/right/header.tsx | 0 .../right/hooks/use_accordion_state.ts | 0 .../right/hooks/use_assistant.test.tsx | 4 +- .../right/hooks/use_assistant.ts | 8 +- .../use_fetch_threat_intelligence.test.tsx | 4 +- .../hooks/use_fetch_threat_intelligence.ts | 10 +- .../right/hooks/use_process_data.test.tsx | 0 .../right/hooks/use_process_data.ts | 2 +- .../right/hooks/use_session_preview.test.tsx | 2 +- .../right/hooks/use_session_preview.ts | 2 +- .../{ => document_details}/right/index.tsx | 0 .../right/mocks/mock_analyzer_data.ts | 2 +- .../right/mocks/mock_context.ts | 0 .../{ => document_details}/right/tabs.tsx | 0 .../right/tabs/json_tab.test.tsx | 0 .../right/tabs/json_tab.tsx | 2 +- .../right/tabs/overview_tab.tsx | 0 .../right/tabs/table_tab.test.tsx | 2 +- .../right/tabs/table_tab.tsx | 20 +- .../right/tabs/test_ids.ts | 2 +- .../{ => document_details}/right/test_ids.ts | 2 +- .../right/utils/analyzer_helpers.test.tsx | 0 .../right/utils/analyzer_helpers.ts | 2 +- .../components/cell_tooltip_wrapper.test.tsx | 0 .../components/cell_tooltip_wrapper.tsx | 0 .../shared/constants/event_kinds.ts | 0 .../shared/constants/field_names.ts | 0 .../shared/context/url_sync.tsx | 0 ...expandable_flyout_state_from_event_meta.ts | 0 .../use_sync_flyout_state_with_url.test.tsx | 0 .../url/use_sync_flyout_state_with_url.tsx | 2 +- .../shared/hooks/use_event_details.test.tsx | 20 +- .../shared/hooks/use_event_details.ts | 20 +- .../shared/hooks/use_fetch_prevalence.ts | 8 +- ..._fetch_related_alerts_by_ancestry.test.tsx | 4 +- .../use_fetch_related_alerts_by_ancestry.ts | 4 +- ...lated_alerts_by_same_source_event.test.tsx | 4 +- ...tch_related_alerts_by_same_source_event.ts | 4 +- ...e_fetch_related_alerts_by_session.test.tsx | 4 +- .../use_fetch_related_alerts_by_session.ts | 4 +- .../hooks/use_fetch_related_cases.test.tsx | 0 .../shared/hooks/use_fetch_related_cases.ts | 4 +- .../hooks/use_highlighted_fields.test.tsx | 0 .../shared/hooks/use_highlighted_fields.ts | 4 +- .../hooks/use_investigation_guide.test.ts | 8 +- .../shared/hooks/use_investigation_guide.ts | 6 +- .../shared/hooks/use_prevalence.test.tsx | 0 .../shared/hooks/use_prevalence.ts | 0 ...e_show_related_alerts_by_ancestry.test.tsx | 8 +- .../use_show_related_alerts_by_ancestry.ts | 8 +- ...lated_alerts_by_same_source_event.test.tsx | 0 ...how_related_alerts_by_same_source_event.ts | 2 +- ...se_show_related_alerts_by_session.test.tsx | 0 .../use_show_related_alerts_by_session.ts | 2 +- .../hooks/use_show_related_cases.test.tsx | 4 +- .../shared/hooks/use_show_related_cases.ts | 2 +- .../hooks/use_show_suppressed_alerts.test.tsx | 0 .../hooks/use_show_suppressed_alerts.ts | 2 +- .../shared/mocks/mock_browser_fields.ts | 0 .../mocks/mock_data_as_nested_object.ts | 0 .../mock_data_formatted_for_field_browser.ts | 0 .../shared/mocks/mock_flyout_context.ts | 0 .../shared/mocks/mock_get_fields_data.ts | 0 .../shared/mocks/mock_search_hit.ts | 2 +- .../shared/utils.test.tsx | 0 .../{ => document_details}/shared/utils.tsx | 0 .../shared/utils/build_requests.ts | 0 .../shared/utils/fetch_data.ts | 0 .../utils/highlighted_fields_helpers.test.ts | 0 .../utils/highlighted_fields_helpers.ts | 0 .../security_solution/public/flyout/index.tsx | 26 +-- .../components/copy_to_clipboard.stories.tsx | 80 +++++++ .../components/flyout_error.stories.tsx | 19 ++ .../shared/components/flyout_error.test.tsx | 2 +- .../flyout/shared/components/flyout_error.tsx | 2 +- .../components/flyout_loading.stories.tsx | 19 ++ .../shared/components/flyout_loading.test.tsx | 2 +- .../shared/components/flyout_loading.tsx | 4 +- .../flyout/shared/components/test_ids.ts | 4 +- .../public/flyout/shared/test_ids.ts | 3 - .../alert_details_left_panel.ts | 4 +- ...t_details_left_panel_analyzer_graph_tab.ts | 4 +- ...ert_details_left_panel_correlations_tab.ts | 4 +- .../alert_details_left_panel_entities_tab.ts | 4 +- ...rt_details_left_panel_investigation_tab.ts | 4 +- ...alert_details_left_panel_prevalence_tab.ts | 4 +- .../alert_details_left_panel_response_tab.ts | 4 +- ...ert_details_left_panel_session_view_tab.ts | 2 +- ...ails_left_panel_threat_intelligence_tab.ts | 2 +- ...ails_preview_panel_alert_reason_preview.ts | 2 +- ...lert_details_preview_panel_rule_preview.ts | 2 +- .../alert_details_right_panel.ts | 4 +- .../alert_details_right_panel_json_tab.ts | 6 +- .../alert_details_right_panel_overview_tab.ts | 2 +- .../alert_details_right_panel_table_tab.ts | 2 +- .../alert_details_right_panel_overview_tab.ts | 2 +- 258 files changed, 952 insertions(+), 608 deletions(-) create mode 100644 packages/kbn-expandable-flyout/.storybook/main.js create mode 100644 packages/kbn-expandable-flyout/src/index.stories.tsx rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/isolate_host/content.tsx (81%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/isolate_host/context.tsx (94%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/isolate_host/header.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/isolate_host/header.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/isolate_host/index.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/isolate_host/test_ids.ts (87%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/analyze_graph.test.tsx (91%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/analyze_graph.tsx (86%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/correlations_details.test.tsx (98%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/correlations_details.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/correlations_details_alerts_table.test.tsx (98%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/correlations_details_alerts_table.tsx (92%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/entities_details.test.tsx (93%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/entities_details.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/host_details.test.tsx (83%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/host_details.tsx (83%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/investigation_guide.test.tsx (98%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/investigation_guide.tsx (92%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/prevalence_details.test.tsx (98%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/prevalence_details.tsx (96%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/related_alerts_by_ancestry.test.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/related_alerts_by_ancestry.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/related_alerts_by_same_source_event.test.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/related_alerts_by_same_source_event.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/related_alerts_by_session.test.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/related_alerts_by_session.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/related_cases.test.tsx (96%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/related_cases.tsx (95%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/response_details.test.tsx (92%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/response_details.tsx (85%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/session_view.test.tsx (92%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/session_view.tsx (96%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/suppressed_alerts.test.tsx (96%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/suppressed_alerts.tsx (89%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/test_ids.ts (98%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/threat_intelligence_details.test.tsx (93%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/threat_intelligence_details.tsx (82%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/user_details.test.tsx (81%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/components/user_details.tsx (83%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/content.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/context.tsx (87%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/header.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/hooks/use_fetch_alerts.test.tsx (96%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/hooks/use_fetch_alerts.ts (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/hooks/use_paginated_alerts.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/hooks/use_pagination_and_sorting.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/hooks/use_threat_intelligence_details.test.ts (73%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/hooks/use_threat_intelligence_details.ts (76%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/index.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/mocks/mock_context.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/services/find_alerts.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/tabs.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/tabs/insights_tab.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/tabs/investigation_tab.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/tabs/response_tab.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/tabs/test_ids.ts (96%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/tabs/visualize_tab.tsx (95%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/left/test_ids.ts (92%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/components/alert_reason_preview.test.tsx (96%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/components/alert_reason_preview.tsx (88%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/components/rule_preview.test.tsx (86%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/components/rule_preview.tsx (85%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/components/rule_preview_footer.test.tsx (96%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/components/rule_preview_footer.tsx (86%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/components/rule_preview_title.test.tsx (93%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/components/rule_preview_title.tsx (87%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/components/test_ids.ts (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/context.tsx (94%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/index.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/mocks/mock_context.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/preview/panels.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/about_section.test.tsx (94%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/about_section.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/analyzer_preview.test.tsx (91%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/analyzer_preview.tsx (91%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/analyzer_preview_container.test.tsx (85%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/analyzer_preview_container.tsx (85%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/correlations_overview.test.tsx (98%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/correlations_overview.tsx (98%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/description.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/description.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/entities_overview.test.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/entities_overview.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/expand_detail_button.stories.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/expand_detail_button.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/expand_detail_button.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/expandable_section.stories.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/expandable_section.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/expandable_section.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/header_title.test.tsx (92%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/header_title.tsx (89%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/highlighted_fields.test.tsx (89%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/highlighted_fields.tsx (93%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/highlighted_fields_cell.test.tsx (95%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/highlighted_fields_cell.tsx (94%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/host_entity_overview.test.tsx (91%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/host_entity_overview.tsx (85%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/insights_section.test.tsx (92%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/insights_section.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/insights_summary_row.stories.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/insights_summary_row.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/insights_summary_row.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/investigation_guide.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/investigation_guide.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/investigation_section.test.tsx (92%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/investigation_section.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/mitre_attack.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/mitre_attack.tsx (93%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/prevalence_overview.test.tsx (98%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/prevalence_overview.tsx (98%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/reason.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/reason.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/related_alerts_by_ancestry.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/related_alerts_by_ancestry.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/related_alerts_by_same_source_event.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/related_alerts_by_same_source_event.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/related_alerts_by_session.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/related_alerts_by_session.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/related_cases.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/related_cases.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/response_button.test.tsx (96%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/response_button.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/response_section.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/response_section.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/risk_score.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/risk_score.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/session_preview.test.tsx (98%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/session_preview.tsx (92%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/session_preview_container.test.tsx (95%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/session_preview_container.tsx (89%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/severity.test.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/severity.tsx (88%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/status.test.tsx (89%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/status.tsx (79%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/suppressed_alerts.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/suppressed_alerts.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/test_ids.ts (99%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/threat_intelligence_overview.test.tsx (98%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/threat_intelligence_overview.tsx (98%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/user_entity_overview.test.tsx (91%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/user_entity_overview.tsx (84%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/visualizations_section.test.tsx (90%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/components/visualizations_section.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/content.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/context.tsx (87%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/footer.tsx (88%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/header.test.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/header.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/hooks/use_accordion_state.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/hooks/use_assistant.test.tsx (95%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/hooks/use_assistant.ts (90%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/hooks/use_fetch_threat_intelligence.test.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/hooks/use_fetch_threat_intelligence.ts (88%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/hooks/use_process_data.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/hooks/use_process_data.ts (95%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/hooks/use_session_preview.test.tsx (95%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/hooks/use_session_preview.ts (95%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/index.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/mocks/mock_analyzer_data.ts (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/mocks/mock_context.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/tabs.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/tabs/json_tab.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/tabs/json_tab.tsx (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/tabs/overview_tab.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/tabs/table_tab.test.tsx (95%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/tabs/table_tab.tsx (77%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/tabs/test_ids.ts (90%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/test_ids.ts (91%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/utils/analyzer_helpers.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/right/utils/analyzer_helpers.ts (97%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/components/cell_tooltip_wrapper.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/components/cell_tooltip_wrapper.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/constants/event_kinds.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/constants/field_names.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/context/url_sync.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/url/expandable_flyout_state_from_event_meta.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/url/use_sync_flyout_state_with_url.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/url/use_sync_flyout_state_with_url.tsx (95%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_event_details.test.tsx (73%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_event_details.ts (77%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_fetch_prevalence.ts (95%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_fetch_related_alerts_by_ancestry.test.tsx (92%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_fetch_related_alerts_by_ancestry.ts (90%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_fetch_related_alerts_by_same_source_event.test.tsx (94%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_fetch_related_alerts_by_same_source_event.ts (91%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_fetch_related_alerts_by_session.test.tsx (93%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_fetch_related_alerts_by_session.ts (91%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_fetch_related_cases.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_fetch_related_cases.ts (93%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_highlighted_fields.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_highlighted_fields.ts (94%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_investigation_guide.test.ts (85%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_investigation_guide.ts (79%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_prevalence.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_prevalence.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx (92%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_show_related_alerts_by_ancestry.ts (87%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_show_related_alerts_by_same_source_event.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_show_related_alerts_by_same_source_event.ts (93%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_show_related_alerts_by_session.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_show_related_alerts_by_session.ts (93%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_show_related_cases.test.tsx (90%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_show_related_cases.ts (86%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_show_suppressed_alerts.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/hooks/use_show_suppressed_alerts.ts (93%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/mocks/mock_browser_fields.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/mocks/mock_data_as_nested_object.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/mocks/mock_data_formatted_for_field_browser.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/mocks/mock_flyout_context.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/mocks/mock_get_fields_data.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/mocks/mock_search_hit.ts (92%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/utils.test.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/utils.tsx (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/utils/build_requests.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/utils/fetch_data.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/utils/highlighted_fields_helpers.test.ts (100%) rename x-pack/plugins/security_solution/public/flyout/{ => document_details}/shared/utils/highlighted_fields_helpers.ts (100%) create mode 100644 x-pack/plugins/security_solution/public/flyout/shared/components/copy_to_clipboard.stories.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.stories.tsx create mode 100644 x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.stories.tsx diff --git a/packages/kbn-expandable-flyout/.storybook/main.js b/packages/kbn-expandable-flyout/.storybook/main.js new file mode 100644 index 0000000000000..8dc3c5d1518f4 --- /dev/null +++ b/packages/kbn-expandable-flyout/.storybook/main.js @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = require('@kbn/storybook').defaultConfig; diff --git a/packages/kbn-expandable-flyout/README.md b/packages/kbn-expandable-flyout/README.md index 8a9a201ff89af..63a6f9483ead0 100644 --- a/packages/kbn-expandable-flyout/README.md +++ b/packages/kbn-expandable-flyout/README.md @@ -9,30 +9,36 @@ The flyout is composed of 3 sections: - a left wider section to show more details - a preview section, that overlays the right section. This preview section can display multiple panels one after the other and displays a `Back` button -At the moment, displaying more than one flyout within the same plugin might be complicated, unless there are in difference areas in the codebase and the contexts don't conflict with each other. +> Run `yarn storybook expandable_flyout` to take a quick look at the expandable flyout in action -## What the package offers +## Design decisions -The ExpandableFlyout [React component](https://github.com/elastic/kibana/tree/main/packages/kbn-expandable-flyout/src/components/index) that renders the UI. +The expandable-flyout package is designed to render a single flyout for an entire plugin. While displaying multiple flyouts might be feasible, it will be a bit complicated, and we recommend instead to build multiple panels, with each their own context to manage their data (for example, take a look at the Security Solution [setup](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout)). -The ExpandableFlyout [React context](https://github.com/elastic/kibana/tree/main/packages/kbn-expandable-flyout/src/components/context) that exposes the following api: +The expandable-flyout is making some strict UI design decisions: +- when in collapsed mode (i.e. when only the right/preview section is open), the flyout's width is fixed to the EUI `s` size +- when in expanded mode (i.e. when the left section is opened), the flyout's width is fixed to the EUI `l` size. Internally the right, left and preview sections' widths are set to a hardcoded percentage (40%, 60$ and 40% respectively) + +## Package API + +The ExpandableFlyout [React component](https://github.com/elastic/kibana/tree/main/packages/kbn-expandable-flyout/src/index.tsx) renders the UI, leveraging an [EuiFlyout](https://eui.elastic.co/#/layout/flyout). + +The ExpandableFlyout [React context](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/context.tsx) manages the internal state of the expandable flyout, and exposes the following api: - **openFlyout**: open the flyout with a set of panels -- **openFlyoutRightPanel**: open a right panel -- **openFlyoutLeftPanel**: open a left panel -- **openFlyoutPreviewPanel**: open a preview panel -- **closeFlyoutRightPanel**: close the right panel -- **closeFlyoutLeftPanel**: close the left panel -- **closeFlyoutPreviewPanel**: close the preview panels -- **previousFlyoutPreviewPanel**: navigate to the previous preview panel +- **openRightPanel**: open a right panel +- **openLeftPanel**: open a left panel +- **openPreviewPanel**: open a preview panel +- **closeRightPanel**: close the right panel +- **closeLeftPanel**: close the left panel +- **closePreviewPanel**: close the preview panels +- **previousPreviewPanel**: navigate to the previous preview panel - **closeFlyout**: close the flyout -To retrieve the flyout's layout (left, right and preview panels), you can use the **panels** from the same [React context](https://github.com/elastic/kibana/tree/main/packages/kbn-expandable-flyout/src/components/context); - -- To have more details about how these above api work, see the code documentation [here](https://github.com/elastic/kibana/tree/main/packages/kbn-expandable-flyout/src/utils/helpers). +To retrieve the flyout's layout (left, right and preview panels), you can use the **panels** from the same [React context](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/context.tsx). ## Usage -To use the expandable flyout in your plugin, first you need wrap your code with the context provider at a high enough level as follows: +To use the expandable flyout in your plugin, first you need wrap your code with the [context provider](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/context.tsx) at a high enough level as follows: ```typescript jsx @@ -41,25 +47,20 @@ To use the expandable flyout in your plugin, first you need wrap your code with ``` -Then use the React UI component where you need: +Then use the [React UI component](https://github.com/elastic/kibana/tree/main/packages/kbn-expandable-flyout/src/index.tsx) where you need: ```typescript jsx ``` -where `myPanels` is a list of all the panels that can be rendered in the flyout (see interface [here](https://github.com/elastic/kibana/tree/main/packages/kbn-expandable-flyout/src/components/index)). +_where `myPanels` is a list of all the panels that can be rendered in the flyout_ ## Terminology ### Section -One of the 3 areas of the flyout (left, right or preview). +One of the 3 areas of the flyout (**left**, **right** or **preview**). ### Panel -A set of properties defining what's displayed in one of the flyout section. - -## Future work - -- add the feature to save the flyout state (layout) to the url (https://github.com/elastic/security-team/issues/6119) -- introduce the notion of scope to be able to handle more than one flyout per plugin?? \ No newline at end of file +A set of properties defining what's displayed in one of the flyout section (see interface [here](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/types.ts)). diff --git a/packages/kbn-expandable-flyout/src/components/left_section.tsx b/packages/kbn-expandable-flyout/src/components/left_section.tsx index d388923c01d69..1d2a4a7eeabac 100644 --- a/packages/kbn-expandable-flyout/src/components/left_section.tsx +++ b/packages/kbn-expandable-flyout/src/components/left_section.tsx @@ -8,7 +8,7 @@ import { EuiFlexItem } from '@elastic/eui'; import React, { useMemo } from 'react'; -import { LEFT_SECTION } from './test_ids'; +import { LEFT_SECTION_TEST_ID } from './test_ids'; interface LeftSectionProps { /** @@ -30,7 +30,7 @@ export const LeftSection: React.FC = ({ component, width }: Le [width] ); return ( - + {component} ); diff --git a/packages/kbn-expandable-flyout/src/components/preview_section.test.tsx b/packages/kbn-expandable-flyout/src/components/preview_section.test.tsx index 41926400e11f5..f365c8f299623 100644 --- a/packages/kbn-expandable-flyout/src/components/preview_section.test.tsx +++ b/packages/kbn-expandable-flyout/src/components/preview_section.test.tsx @@ -9,7 +9,10 @@ import React from 'react'; import { render } from '@testing-library/react'; import { PreviewSection } from './preview_section'; -import { PREVIEW_SECTION_BACK_BUTTON, PREVIEW_SECTION_CLOSE_BUTTON } from './test_ids'; +import { + PREVIEW_SECTION_BACK_BUTTON_TEST_ID, + PREVIEW_SECTION_CLOSE_BUTTON_TEST_ID, +} from './test_ids'; import { ExpandableFlyoutContext } from '../context'; describe('PreviewSection', () => { @@ -36,7 +39,7 @@ describe('PreviewSection', () => { ); - expect(getByTestId(PREVIEW_SECTION_CLOSE_BUTTON)).toBeInTheDocument(); + expect(getByTestId(PREVIEW_SECTION_CLOSE_BUTTON_TEST_ID)).toBeInTheDocument(); }); it('should render back button in header', () => { @@ -50,6 +53,6 @@ describe('PreviewSection', () => { ); - expect(getByTestId(PREVIEW_SECTION_BACK_BUTTON)).toBeInTheDocument(); + expect(getByTestId(PREVIEW_SECTION_BACK_BUTTON_TEST_ID)).toBeInTheDocument(); }); }); diff --git a/packages/kbn-expandable-flyout/src/components/preview_section.tsx b/packages/kbn-expandable-flyout/src/components/preview_section.tsx index 1bb3f84d1b5f5..1cc2243d65849 100644 --- a/packages/kbn-expandable-flyout/src/components/preview_section.tsx +++ b/packages/kbn-expandable-flyout/src/components/preview_section.tsx @@ -19,10 +19,10 @@ import React from 'react'; import { css } from '@emotion/react'; import { has } from 'lodash'; import { - PREVIEW_SECTION_BACK_BUTTON, - PREVIEW_SECTION_CLOSE_BUTTON, - PREVIEW_SECTION_HEADER, - PREVIEW_SECTION, + PREVIEW_SECTION_BACK_BUTTON_TEST_ID, + PREVIEW_SECTION_CLOSE_BUTTON_TEST_ID, + PREVIEW_SECTION_HEADER_TEST_ID, + PREVIEW_SECTION_TEST_ID, } from './test_ids'; import { useExpandableFlyoutContext } from '../..'; import { BACK_BUTTON, CLOSE_BUTTON } from './translations'; @@ -97,7 +97,7 @@ export const PreviewSection: React.FC = ({ closePreviewPanel()} - data-test-subj={PREVIEW_SECTION_CLOSE_BUTTON} + data-test-subj={PREVIEW_SECTION_CLOSE_BUTTON_TEST_ID} aria-label={CLOSE_BUTTON} /> @@ -110,7 +110,7 @@ export const PreviewSection: React.FC = ({ iconType="arrowLeft" iconSide="left" onClick={() => previousPreviewPanel()} - data-test-subj={PREVIEW_SECTION_BACK_BUTTON} + data-test-subj={PREVIEW_SECTION_BACK_BUTTON_TEST_ID} aria-label={BACK_BUTTON} > {BACK_BUTTON} @@ -140,7 +140,7 @@ export const PreviewSection: React.FC = ({ box-shadow: 0px 0px 5px 5px ${euiTheme.colors.darkShade}; `} className="eui-yScroll" - data-test-subj={PREVIEW_SECTION} + data-test-subj={PREVIEW_SECTION_TEST_ID} > {isPreviewBanner(banner) && ( @@ -149,7 +149,11 @@ export const PreviewSection: React.FC = ({ )} - + {header} {component} diff --git a/packages/kbn-expandable-flyout/src/components/right_section.tsx b/packages/kbn-expandable-flyout/src/components/right_section.tsx index 7857c2b4fba48..6e7e94dc14048 100644 --- a/packages/kbn-expandable-flyout/src/components/right_section.tsx +++ b/packages/kbn-expandable-flyout/src/components/right_section.tsx @@ -8,7 +8,7 @@ import { EuiFlexItem } from '@elastic/eui'; import React, { useMemo } from 'react'; -import { RIGHT_SECTION } from './test_ids'; +import { RIGHT_SECTION_TEST_ID } from './test_ids'; interface RightSectionProps { /** @@ -34,7 +34,7 @@ export const RightSection: React.FC = ({ ); return ( - + {component} ); diff --git a/packages/kbn-expandable-flyout/src/components/test_ids.ts b/packages/kbn-expandable-flyout/src/components/test_ids.ts index 430f87f85c5d5..439ba2e826073 100644 --- a/packages/kbn-expandable-flyout/src/components/test_ids.ts +++ b/packages/kbn-expandable-flyout/src/components/test_ids.ts @@ -6,14 +6,14 @@ * Side Public License, v 1. */ -export const RIGHT_SECTION = 'rightSection'; +export const RIGHT_SECTION_TEST_ID = 'rightSection'; -export const LEFT_SECTION = 'leftSection'; +export const LEFT_SECTION_TEST_ID = 'leftSection'; -export const PREVIEW_SECTION = 'previewSection'; +export const PREVIEW_SECTION_TEST_ID = 'previewSection'; -export const PREVIEW_SECTION_CLOSE_BUTTON = 'previewSectionCloseButton'; +export const PREVIEW_SECTION_CLOSE_BUTTON_TEST_ID = 'previewSectionCloseButton'; -export const PREVIEW_SECTION_BACK_BUTTON = 'previewSectionBackButton'; +export const PREVIEW_SECTION_BACK_BUTTON_TEST_ID = 'previewSectionBackButton'; -export const PREVIEW_SECTION_HEADER = 'previewSectionHeader'; +export const PREVIEW_SECTION_HEADER_TEST_ID = 'previewSectionHeader'; diff --git a/packages/kbn-expandable-flyout/src/index.stories.tsx b/packages/kbn-expandable-flyout/src/index.stories.tsx new file mode 100644 index 0000000000000..2bbc26c3363f3 --- /dev/null +++ b/packages/kbn-expandable-flyout/src/index.stories.tsx @@ -0,0 +1,196 @@ +/* + * Copyright 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 type { Story } from '@storybook/react'; +import { + EuiButton, + EuiFlexGroup, + EuiFlexItem, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlyoutHeader, + EuiPanel, + EuiTitle, +} from '@elastic/eui'; +import { ExpandableFlyout } from '.'; +import { ExpandableFlyoutContext } from './context'; + +export default { + component: ExpandableFlyout, + title: 'ExpandableFlyout', +}; + +const registeredPanels = [ + { + key: 'right', + component: () => ( + <> + + +

{'Right panel header'}

+
+
+ +

{'Example of a right component body'}

+
+ + + + {'Footer button'} + + + + + ), + }, + { + key: 'left', + component: () => ( + + + + +

{'Left panel header'}

+
+
+

{'Example of a left component content'}

+ +
+
+ ), + }, + { + key: 'preview1', + component: () => ( + + + + +

{'Preview panel header'}

+
+
+

{'Example of a preview component content'}

+ +
+
+ ), + }, + { + key: 'preview2', + component: () => ( + + + + +

{'Second preview panel header'}

+
+
+

{'Example of another preview component content'}

+ +
+
+ ), + }, +]; + +export const Right: Story = () => { + const context: ExpandableFlyoutContext = { + panels: { + right: { + id: 'right', + }, + left: {}, + preview: [], + }, + closeFlyout: () => window.alert('closeFlyout api'), + } as unknown as ExpandableFlyoutContext; + + return ( + + + + ); +}; + +export const Left: Story = () => { + const context: ExpandableFlyoutContext = { + panels: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: [], + }, + closeFlyout: () => window.alert('closeFlyout api'), + } as unknown as ExpandableFlyoutContext; + + return ( + + + + ); +}; + +export const Preview: Story = () => { + const context: ExpandableFlyoutContext = { + panels: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: [ + { + id: 'preview1', + }, + ], + }, + closePreviewPanel: () => window.alert('closePreviewPanel api'), + closeFlyout: () => window.alert('closeFlyout api'), + } as unknown as ExpandableFlyoutContext; + + return ( + + + + ); +}; + +export const MultiplePreviews: Story = () => { + const context: ExpandableFlyoutContext = { + panels: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: [ + { + id: 'preview1', + }, + { + id: 'preview2', + }, + ], + }, + closePreviewPanel: () => window.alert('closePreviewPanel api'), + previousPreviewPanel: () => window.alert('previousPreviewPanel api'), + closeFlyout: () => window.alert('closeFlyout api'), + } as unknown as ExpandableFlyoutContext; + + return ( + + + + ); +}; diff --git a/packages/kbn-expandable-flyout/src/index.test.tsx b/packages/kbn-expandable-flyout/src/index.test.tsx index f09da565651b9..c6da99ad01777 100644 --- a/packages/kbn-expandable-flyout/src/index.test.tsx +++ b/packages/kbn-expandable-flyout/src/index.test.tsx @@ -10,7 +10,11 @@ import React from 'react'; import { render } from '@testing-library/react'; import { Panel } from './types'; import { ExpandableFlyout } from '.'; -import { LEFT_SECTION, PREVIEW_SECTION, RIGHT_SECTION } from './components/test_ids'; +import { + LEFT_SECTION_TEST_ID, + PREVIEW_SECTION_TEST_ID, + RIGHT_SECTION_TEST_ID, +} from './components/test_ids'; import { ExpandableFlyoutContext } from './context'; describe('ExpandableFlyout', () => { @@ -56,7 +60,7 @@ describe('ExpandableFlyout', () => { ); - expect(getByTestId(RIGHT_SECTION)).toBeInTheDocument(); + expect(getByTestId(RIGHT_SECTION_TEST_ID)).toBeInTheDocument(); }); it('should render left section', () => { @@ -76,7 +80,7 @@ describe('ExpandableFlyout', () => { ); - expect(getByTestId(LEFT_SECTION)).toBeInTheDocument(); + expect(getByTestId(LEFT_SECTION_TEST_ID)).toBeInTheDocument(); }); it('should render preview section', () => { @@ -98,6 +102,6 @@ describe('ExpandableFlyout', () => { ); - expect(getByTestId(PREVIEW_SECTION)).toBeInTheDocument(); + expect(getByTestId(PREVIEW_SECTION_TEST_ID)).toBeInTheDocument(); }); }); diff --git a/src/dev/storybook/aliases.ts b/src/dev/storybook/aliases.ts index fea9d8629f382..a43fd71d0004e 100644 --- a/src/dev/storybook/aliases.ts +++ b/src/dev/storybook/aliases.ts @@ -27,9 +27,9 @@ export const storybookAliases = { dashboard: 'src/plugins/dashboard/.storybook', data: 'src/plugins/data/.storybook', discover: 'src/plugins/discover/.storybook', - log_explorer: 'x-pack/plugins/log_explorer/.storybook', embeddable: 'src/plugins/embeddable/.storybook', es_ui_shared: 'src/plugins/es_ui_shared/.storybook', + expandable_flyout: 'packages/kbn-expandable-flyout/.storybook', expression_error: 'src/plugins/expression_error/.storybook', expression_image: 'src/plugins/expression_image/.storybook', expression_metric_vis: 'src/plugins/chart_expressions/expression_legacy_metric/.storybook', @@ -45,6 +45,7 @@ export const storybookAliases = { infra: 'x-pack/plugins/infra/.storybook', kibana_react: 'src/plugins/kibana_react/.storybook', lists: 'x-pack/plugins/lists/.storybook', + log_explorer: 'x-pack/plugins/log_explorer/.storybook', management: 'packages/kbn-management/storybook/config', observability: 'x-pack/plugins/observability/.storybook', observability_ai_assistant: 'x-pack/plugins/observability_ai_assistant/.storybook', diff --git a/x-pack/plugins/security_solution/public/common/components/control_columns/row_action/index.tsx b/x-pack/plugins/security_solution/public/common/components/control_columns/row_action/index.tsx index e2950f3ecf73e..650497f39f61f 100644 --- a/x-pack/plugins/security_solution/public/common/components/control_columns/row_action/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/control_columns/row_action/index.tsx @@ -12,7 +12,7 @@ import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { dataTableActions, TableId } from '@kbn/securitysolution-data-table'; import { useUiSetting$ } from '@kbn/kibana-react-plugin/public'; import { ENABLE_EXPANDABLE_FLYOUT_SETTING } from '../../../../../common/constants'; -import { RightPanelKey } from '../../../../flyout/right'; +import { RightPanelKey } from '../../../../flyout/document_details/right'; import type { SetEventsDeleted, SetEventsLoading, diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/response_actions_view.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/response_actions_view.tsx index 23f0948304379..58e18114f08f9 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/response_actions_view.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/response_actions_view.tsx @@ -11,7 +11,7 @@ import type { EuiTabbedContentTab } from '@elastic/eui'; import { EuiLink, EuiNotificationBadge, EuiSpacer } from '@elastic/eui'; import type { Ecs } from '@kbn/cases-plugin/common'; import { FormattedMessage } from '@kbn/i18n-react'; -import { RESPONSE_NO_DATA_TEST_ID } from '../../../flyout/left/components/test_ids'; +import { RESPONSE_NO_DATA_TEST_ID } from '../../../flyout/document_details/left/components/test_ids'; import type { SearchHit } from '../../../../common/search_strategy'; import type { ExpandedEventFieldsObject, diff --git a/x-pack/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.tsx b/x-pack/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.tsx index 41516d06942ff..1f1ce5618abfd 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/alerts/alert_details_redirect.tsx @@ -23,7 +23,7 @@ import { URL_PARAM_KEY } from '../../../common/hooks/use_url_state'; import { inputsSelectors } from '../../../common/store'; import { formatPageFilterSearchParam } from '../../../../common/utils/format_page_filter_search_param'; import { resolveFlyoutParams } from './utils'; -import { FLYOUT_URL_PARAM } from '../../../flyout/shared/hooks/url/use_sync_flyout_state_with_url'; +import { FLYOUT_URL_PARAM } from '../../../flyout/document_details/shared/hooks/url/use_sync_flyout_state_with_url'; export const AlertDetailsRedirect = () => { const { alertId } = useParams<{ alertId: string }>(); diff --git a/x-pack/plugins/security_solution/public/detections/pages/alerts/utils.ts b/x-pack/plugins/security_solution/public/detections/pages/alerts/utils.ts index c08f6fd6ac4ee..fbc9c2723d45a 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/alerts/utils.ts +++ b/x-pack/plugins/security_solution/public/detections/pages/alerts/utils.ts @@ -6,7 +6,7 @@ */ import { encode } from '@kbn/rison'; -import { expandableFlyoutStateFromEventMeta } from '../../../flyout/shared/hooks/url/expandable_flyout_state_from_event_meta'; +import { expandableFlyoutStateFromEventMeta } from '../../../flyout/document_details/shared/hooks/url/expandable_flyout_state_from_event_meta'; export interface ResolveFlyoutParamsConfig { index: string; diff --git a/x-pack/plugins/security_solution/public/flyout/README.md b/x-pack/plugins/security_solution/public/flyout/README.md index 43fee6ce87152..1d0e272af3ec5 100644 --- a/x-pack/plugins/security_solution/public/flyout/README.md +++ b/x-pack/plugins/security_solution/public/flyout/README.md @@ -1,44 +1,51 @@ -# expandable flyout panels +# Security Solution expandable flyouts + +For more info on the expandable flyout, see the `@kbn/expandable-flyout` package. ## Description -This folder hosts the panels that are displayed in the expandable flyout (see `@kbn/expandable-flyout` package). +The Security Solution plugin aims at having a single instance of the expandable flyout. That instance can display as many panels as we need. This folder hosts all the panels that are can be displayed in the Security Solution flyout. Panels can be differentiated as to be displayed in different sections of the expandable flyout (right, left or preview), but ultimately, nothing prevents us from displaying a panel in any section we want. -> Remember to add any new panels to the `index.tsx` at the root of the `flyout` folder. These are passed to the `@kbn/expandable-flyout` package as `registeredPanels`. +> Remember to add any new panels to the `index.tsx` at the root of the [flyout folder](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout). These are passed to the `@kbn/expandable-flyout` package as `registeredPanels`. Failing to do so will result in the panel not being rendered. ## Notes -At the moment, we only have a single expandable flyout for the Security Solution plugin. This flyout will be used for all documents (signals, events, indicators, assets and findings). We're using a set of generic right/left/preview panels, hence the following folder structure: - +The structure of the `flyout` folder is intended to work as follows: +- multiple top level folders referring to the _type_ of flyout (for example document details, user, host, rule, cases...) and would contain all the panels for that flyout _type_. Each of these top level folders can be organized the way you want, but we recommend following a similar structure to the one we have for the `document_details` flyout type, where the `right`, `left` and `preview` folders correspond to the panels displayed in the right, left and preview flyout sections respectively. The `shared` folder contains any shared components/hooks/services/helpers that are used within the other folders. ``` -flyout -│ index.tsx -│ README.md -│ -└───right -└───left -└───preview +document_details +└─── right +└─── left +└─── preview +└─── shared ``` +- one top level `shared` folder containing all the components/hooks/services/helpers that are used across multiple flyout types. Putting code in this folder should be very deliberate, and should follow some guidelines: + - code built in isolation (meaning that it should not be built with a specific flyout type or usage in mind) + - extensively tested + - components should have storybook stories -If different right, left or preview panels are needed, we should refactor the folder structure as follows: - +The `flyout` folder structure should therefore look like this: ``` flyout │ index.tsx +│ jest.config.js │ README.md │ -└───documents -│ └───right -│ └───left -│ └───preview +└─── document_details +│ └─── right +│ └─── left +│ └─── preview +│ +└─── new_type +│ └─── right +│ └─── preview +│ +└─── other_new_type +│ └─── right +│ └─── left │ -└───new_type -│ └───right -│ └───left -│ └───preview +└─── ... │ -└───other_new_type - └───right - └───left - └───preview +└─── shared + └─── components ``` diff --git a/x-pack/plugins/security_solution/public/flyout/isolate_host/content.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/content.tsx similarity index 81% rename from x-pack/plugins/security_solution/public/flyout/isolate_host/content.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/content.tsx index 7f3671cc60805..e2b34e4010aaa 100644 --- a/x-pack/plugins/security_solution/public/flyout/isolate_host/content.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/content.tsx @@ -10,11 +10,11 @@ import React, { useCallback } from 'react'; import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { EuiPanel } from '@elastic/eui'; import { RightPanelKey } from '../right'; -import { useBasicDataFromDetailsData } from '../../timelines/components/side_panel/event_details/helpers'; -import { EndpointIsolateSuccess } from '../../common/components/endpoint/host_isolation'; -import { useHostIsolationTools } from '../../timelines/components/side_panel/event_details/use_host_isolation_tools'; +import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; +import { EndpointIsolateSuccess } from '../../../common/components/endpoint/host_isolation'; +import { useHostIsolationTools } from '../../../timelines/components/side_panel/event_details/use_host_isolation_tools'; import { useIsolateHostPanelContext } from './context'; -import { HostIsolationPanel } from '../../detections/components/host_isolation'; +import { HostIsolationPanel } from '../../../detections/components/host_isolation'; /** * Document details expandable flyout section content for the isolate host component, displaying the form or the success banner diff --git a/x-pack/plugins/security_solution/public/flyout/isolate_host/context.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/context.tsx similarity index 94% rename from x-pack/plugins/security_solution/public/flyout/isolate_host/context.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/context.tsx index 17d31ebd002af..53393e2f8a79b 100644 --- a/x-pack/plugins/security_solution/public/flyout/isolate_host/context.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/context.tsx @@ -9,8 +9,8 @@ import type { TimelineEventsDetailsItem } from '@kbn/timelines-plugin/common'; import React, { createContext, memo, useContext, useMemo } from 'react'; import { useEventDetails } from '../shared/hooks/use_event_details'; -import { FlyoutError } from '../shared/components/flyout_error'; -import { FlyoutLoading } from '../shared/components/flyout_loading'; +import { FlyoutError } from '../../shared/components/flyout_error'; +import { FlyoutLoading } from '../../shared/components/flyout_loading'; import type { IsolateHostPanelProps } from '.'; export interface IsolateHostPanelContext { diff --git a/x-pack/plugins/security_solution/public/flyout/isolate_host/header.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/header.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/isolate_host/header.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/header.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/isolate_host/header.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/isolate_host/header.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/header.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/isolate_host/index.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/isolate_host/index.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/isolate_host/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/test_ids.ts similarity index 87% rename from x-pack/plugins/security_solution/public/flyout/isolate_host/test_ids.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/test_ids.ts index 24b62d913772d..b3b18c76b4333 100644 --- a/x-pack/plugins/security_solution/public/flyout/isolate_host/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/isolate_host/test_ids.ts @@ -5,6 +5,6 @@ * 2.0. */ -import { PREFIX } from '../shared/test_ids'; +import { PREFIX } from '../../shared/test_ids'; export const FLYOUT_HEADER_TITLE_TEST_ID = `${PREFIX}HeaderTitle` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/analyze_graph.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.test.tsx similarity index 91% rename from x-pack/plugins/security_solution/public/flyout/left/components/analyze_graph.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.test.tsx index d0a18279805cd..7b2307d06669d 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/analyze_graph.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import '@testing-library/jest-dom'; import { LeftPanelContext } from '../context'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { AnalyzeGraph } from './analyze_graph'; import { ANALYZER_GRAPH_TEST_ID } from './test_ids'; @@ -18,7 +18,7 @@ jest.mock('react-router-dom', () => { return { ...actual, useLocation: jest.fn().mockReturnValue({ pathname: '' }) }; }); -jest.mock('../../../resolver/view/use_resolver_query_params_cleaner'); +jest.mock('../../../../resolver/view/use_resolver_query_params_cleaner'); const mockDispatch = jest.fn(); jest.mock('react-redux', () => { diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/analyze_graph.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.tsx similarity index 86% rename from x-pack/plugins/security_solution/public/flyout/left/components/analyze_graph.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.tsx index 5ce8e47c681dd..6a252296983a3 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/analyze_graph.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/analyze_graph.tsx @@ -10,9 +10,9 @@ import React, { useMemo } from 'react'; import { useLeftPanelContext } from '../context'; import { ANALYZER_GRAPH_TEST_ID } from './test_ids'; -import { Resolver } from '../../../resolver/view'; -import { useTimelineDataFilters } from '../../../timelines/containers/use_timeline_data_filters'; -import { isActiveTimeline } from '../../../helpers'; +import { Resolver } from '../../../../resolver/view'; +import { useTimelineDataFilters } from '../../../../timelines/containers/use_timeline_data_filters'; +import { isActiveTimeline } from '../../../../helpers'; export const ANALYZE_GRAPH_ID = 'analyze_graph'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.test.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.test.tsx index c6efa418f9079..21214670241aa 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import { CorrelationsDetails } from './correlations_details'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { LeftPanelContext } from '../context'; import { useShowRelatedAlertsByAncestry } from '../../shared/hooks/use_show_related_alerts_by_ancestry'; import { useShowRelatedAlertsBySameSourceEvent } from '../../shared/hooks/use_show_related_alerts_by_same_source_event'; @@ -27,7 +27,7 @@ import { useFetchRelatedAlertsByAncestry } from '../../shared/hooks/use_fetch_re import { useFetchRelatedAlertsBySameSourceEvent } from '../../shared/hooks/use_fetch_related_alerts_by_same_source_event'; import { useFetchRelatedCases } from '../../shared/hooks/use_fetch_related_cases'; import { mockContextValue } from '../mocks/mock_context'; -import { EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID } from '../../shared/components/test_ids'; +import { EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID } from '../../../shared/components/test_ids'; jest.mock('react-router-dom', () => { const actual = jest.requireActual('react-router-dom'); diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/components/correlations_details.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.test.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.test.tsx index 250889402e455..f183df7f95913 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { EuiBasicTable } from '@elastic/eui'; import { CorrelationsDetailsAlertsTable, columns } from './correlations_details_alerts_table'; import { usePaginatedAlerts } from '../hooks/use_paginated_alerts'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.tsx similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.tsx index 60296da8d43cd..0740263ca3347 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/correlations_details_alerts_table.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/correlations_details_alerts_table.tsx @@ -15,13 +15,13 @@ import { ALERT_REASON, ALERT_RULE_NAME } from '@kbn/rule-data-utils'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { CellTooltipWrapper } from '../../shared/components/cell_tooltip_wrapper'; -import type { DataProvider } from '../../../../common/types'; -import { SeverityBadge } from '../../../detections/components/rules/severity_badge'; +import type { DataProvider } from '../../../../../common/types'; +import { SeverityBadge } from '../../../../detections/components/rules/severity_badge'; import { usePaginatedAlerts } from '../hooks/use_paginated_alerts'; -import { ExpandablePanel } from '../../shared/components/expandable_panel'; -import { InvestigateInTimelineButton } from '../../../common/components/event_details/table/investigate_in_timeline_button'; -import { ACTION_INVESTIGATE_IN_TIMELINE } from '../../../detections/components/alerts_table/translations'; -import { getDataProvider } from '../../../common/components/event_details/table/use_action_cell_data_provider'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; +import { InvestigateInTimelineButton } from '../../../../common/components/event_details/table/investigate_in_timeline_button'; +import { ACTION_INVESTIGATE_IN_TIMELINE } from '../../../../detections/components/alerts_table/translations'; +import { getDataProvider } from '../../../../common/components/event_details/table/use_action_cell_data_provider'; export const TIMESTAMP_DATE_FORMAT = 'MMM D, YYYY @ HH:mm:ss.SSS'; const dataProviderLimit = 5; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/entities_details.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/entities_details.test.tsx similarity index 93% rename from x-pack/plugins/security_solution/public/flyout/left/components/entities_details.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/entities_details.test.tsx index 17a94e7d05c25..80d7324d1cf51 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/entities_details.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/entities_details.test.tsx @@ -9,18 +9,18 @@ import React from 'react'; import { render } from '@testing-library/react'; import '@testing-library/jest-dom'; import { LeftPanelContext } from '../context'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { EntitiesDetails } from './entities_details'; import { ENTITIES_DETAILS_TEST_ID, HOST_DETAILS_TEST_ID, USER_DETAILS_TEST_ID } from './test_ids'; import { mockContextValue } from '../mocks/mock_context'; -import { EXPANDABLE_PANEL_CONTENT_TEST_ID } from '../../shared/components/test_ids'; +import { EXPANDABLE_PANEL_CONTENT_TEST_ID } from '../../../shared/components/test_ids'; jest.mock('react-router-dom', () => { const actual = jest.requireActual('react-router-dom'); return { ...actual, useLocation: jest.fn().mockReturnValue({ pathname: '' }) }; }); -jest.mock('../../../resolver/view/use_resolver_query_params_cleaner'); +jest.mock('../../../../resolver/view/use_resolver_query_params_cleaner'); const mockDispatch = jest.fn(); jest.mock('react-redux', () => { diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/entities_details.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/entities_details.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/components/entities_details.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/entities_details.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/host_details.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/host_details.test.tsx similarity index 83% rename from x-pack/plugins/security_solution/public/flyout/left/components/host_details.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/host_details.test.tsx index 71c54530e1563..b711e6d3d5f7e 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/host_details.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/host_details.test.tsx @@ -7,21 +7,21 @@ import React from 'react'; import { render } from '@testing-library/react'; -import type { Anomalies } from '../../../common/components/ml/types'; -import { TestProviders } from '../../../common/mock'; +import type { Anomalies } from '../../../../common/components/ml/types'; +import { TestProviders } from '../../../../common/mock'; import { HostDetails } from './host_details'; -import { useMlCapabilities } from '../../../common/components/ml/hooks/use_ml_capabilities'; -import { useRiskScore } from '../../../explore/containers/risk_score'; -import { mockAnomalies } from '../../../common/components/ml/mock'; -import { useHostDetails } from '../../../explore/hosts/containers/hosts/details'; -import { useHostRelatedUsers } from '../../../common/containers/related_entities/related_users'; -import { RiskSeverity } from '../../../../common/search_strategy'; +import { useMlCapabilities } from '../../../../common/components/ml/hooks/use_ml_capabilities'; +import { useRiskScore } from '../../../../explore/containers/risk_score'; +import { mockAnomalies } from '../../../../common/components/ml/mock'; +import { useHostDetails } from '../../../../explore/hosts/containers/hosts/details'; +import { useHostRelatedUsers } from '../../../../common/containers/related_entities/related_users'; +import { RiskSeverity } from '../../../../../common/search_strategy'; import { HOST_DETAILS_TEST_ID, HOST_DETAILS_INFO_TEST_ID, HOST_DETAILS_RELATED_USERS_TABLE_TEST_ID, } from './test_ids'; -import { EXPANDABLE_PANEL_CONTENT_TEST_ID } from '../../shared/components/test_ids'; +import { EXPANDABLE_PANEL_CONTENT_TEST_ID } from '../../../shared/components/test_ids'; jest.mock('react-router-dom', () => { const actual = jest.requireActual('react-router-dom'); @@ -39,8 +39,8 @@ jest.mock('react-redux', () => { const from = '2022-07-28T08:20:18.966Z'; const to = '2022-07-28T08:20:18.966Z'; -jest.mock('../../../common/containers/use_global_time', () => { - const actual = jest.requireActual('../../../common/containers/use_global_time'); +jest.mock('../../../../common/containers/use_global_time', () => { + const actual = jest.requireActual('../../../../common/containers/use_global_time'); return { ...actual, useGlobalTime: jest @@ -53,19 +53,19 @@ jest.mock('uuid', () => ({ v4: jest.fn().mockReturnValue('uuid'), })); -jest.mock('../../../common/components/ml/hooks/use_ml_capabilities'); +jest.mock('../../../../common/components/ml/hooks/use_ml_capabilities'); const mockUseMlUserPermissions = useMlCapabilities as jest.Mock; const mockUseHasSecurityCapability = jest.fn().mockReturnValue(false); -jest.mock('../../../helper_hooks', () => ({ +jest.mock('../../../../helper_hooks', () => ({ useHasSecurityCapability: () => mockUseHasSecurityCapability(), })); -jest.mock('../../../common/containers/sourcerer', () => ({ +jest.mock('../../../../common/containers/sourcerer', () => ({ useSourcererDataView: jest.fn().mockReturnValue({ selectedPatterns: ['index'] }), })); -jest.mock('../../../common/components/ml/anomaly/anomaly_table_provider', () => ({ +jest.mock('../../../../common/components/ml/anomaly/anomaly_table_provider', () => ({ AnomalyTableProvider: ({ children, }: { @@ -77,13 +77,13 @@ jest.mock('../../../common/components/ml/anomaly/anomaly_table_provider', () => }) => children({ anomaliesData: mockAnomalies, isLoadingAnomaliesData: false, jobNameById: {} }), })); -jest.mock('../../../explore/hosts/containers/hosts/details'); +jest.mock('../../../../explore/hosts/containers/hosts/details'); const mockUseHostDetails = useHostDetails as jest.Mock; -jest.mock('../../../common/containers/related_entities/related_users'); +jest.mock('../../../../common/containers/related_entities/related_users'); const mockUseHostsRelatedUsers = useHostRelatedUsers as jest.Mock; -jest.mock('../../../explore/containers/risk_score'); +jest.mock('../../../../explore/containers/risk_score'); const mockUseRiskScore = useRiskScore as jest.Mock; const timestamp = '2022-07-25T08:20:18.966Z'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/host_details.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/host_details.tsx similarity index 83% rename from x-pack/plugins/security_solution/public/flyout/left/components/host_details.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/host_details.tsx index 48df07b8a3bc9..bdfb03639382c 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/host_details.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/host_details.tsx @@ -21,36 +21,36 @@ import { } from '@elastic/eui'; import type { EuiBasicTableColumn } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { getSourcererScopeId } from '../../../helpers'; -import { ExpandablePanel } from '../../shared/components/expandable_panel'; -import type { RelatedUser } from '../../../../common/search_strategy/security_solution/related_entities/related_users'; -import type { RiskSeverity } from '../../../../common/search_strategy'; -import { HostOverview } from '../../../overview/components/host_overview'; -import { AnomalyTableProvider } from '../../../common/components/ml/anomaly/anomaly_table_provider'; -import { InspectButton, InspectButtonContainer } from '../../../common/components/inspect'; -import { NetworkDetailsLink } from '../../../common/components/links'; -import { RiskScoreEntity } from '../../../../common/search_strategy'; -import { RiskScoreLevel } from '../../../explore/components/risk_score/severity/common'; -import { DefaultFieldRenderer } from '../../../timelines/components/field_renderers/field_renderers'; -import { InputsModelId } from '../../../common/store/inputs/constants'; +import { getSourcererScopeId } from '../../../../helpers'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; +import type { RelatedUser } from '../../../../../common/search_strategy/security_solution/related_entities/related_users'; +import type { RiskSeverity } from '../../../../../common/search_strategy'; +import { HostOverview } from '../../../../overview/components/host_overview'; +import { AnomalyTableProvider } from '../../../../common/components/ml/anomaly/anomaly_table_provider'; +import { InspectButton, InspectButtonContainer } from '../../../../common/components/inspect'; +import { NetworkDetailsLink } from '../../../../common/components/links'; +import { RiskScoreEntity } from '../../../../../common/search_strategy'; +import { RiskScoreLevel } from '../../../../explore/components/risk_score/severity/common'; +import { DefaultFieldRenderer } from '../../../../timelines/components/field_renderers/field_renderers'; +import { InputsModelId } from '../../../../common/store/inputs/constants'; import { SecurityCellActions, CellActionsMode, SecurityCellActionsTrigger, -} from '../../../common/components/cell_actions'; -import { useGlobalTime } from '../../../common/containers/use_global_time'; -import { useSourcererDataView } from '../../../common/containers/sourcerer'; -import { manageQuery } from '../../../common/components/page/manage_query'; -import { scoreIntervalToDateTime } from '../../../common/components/ml/score/score_interval_to_datetime'; -import { setAbsoluteRangeDatePicker } from '../../../common/store/inputs/actions'; -import { hostToCriteria } from '../../../common/components/ml/criteria/host_to_criteria'; -import { useHostDetails } from '../../../explore/hosts/containers/hosts/details'; -import { useHostRelatedUsers } from '../../../common/containers/related_entities/related_users'; -import { useMlCapabilities } from '../../../common/components/ml/hooks/use_ml_capabilities'; -import { getEmptyTagValue } from '../../../common/components/empty_value'; +} from '../../../../common/components/cell_actions'; +import { useGlobalTime } from '../../../../common/containers/use_global_time'; +import { useSourcererDataView } from '../../../../common/containers/sourcerer'; +import { manageQuery } from '../../../../common/components/page/manage_query'; +import { scoreIntervalToDateTime } from '../../../../common/components/ml/score/score_interval_to_datetime'; +import { setAbsoluteRangeDatePicker } from '../../../../common/store/inputs/actions'; +import { hostToCriteria } from '../../../../common/components/ml/criteria/host_to_criteria'; +import { useHostDetails } from '../../../../explore/hosts/containers/hosts/details'; +import { useHostRelatedUsers } from '../../../../common/containers/related_entities/related_users'; +import { useMlCapabilities } from '../../../../common/components/ml/hooks/use_ml_capabilities'; +import { getEmptyTagValue } from '../../../../common/components/empty_value'; import { HOST_DETAILS_TEST_ID, HOST_DETAILS_RELATED_USERS_TABLE_TEST_ID } from './test_ids'; -import { ENTITY_RISK_LEVEL } from '../../../explore/components/risk_score/translations'; -import { useHasSecurityCapability } from '../../../helper_hooks'; +import { ENTITY_RISK_LEVEL } from '../../../../explore/components/risk_score/translations'; +import { useHasSecurityCapability } from '../../../../helper_hooks'; const HOST_DETAILS_ID = 'entities-hosts-details'; const RELATED_USERS_ID = 'entities-hosts-related-users'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/investigation_guide.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.test.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/flyout/left/components/investigation_guide.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.test.tsx index f628fac332c6d..95b4e0a600594 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/investigation_guide.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import { InvestigationGuide } from './investigation_guide'; import { LeftPanelContext } from '../context'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { INVESTIGATION_GUIDE_TEST_ID, INVESTIGATION_GUIDE_LOADING_TEST_ID } from './test_ids'; import { mockContextValue } from '../mocks/mock_context'; import { useInvestigationGuide } from '../../shared/hooks/use_investigation_guide'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/investigation_guide.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.tsx similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/left/components/investigation_guide.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.tsx index 4c6452093f5e8..bffe966b944b2 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/investigation_guide.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/investigation_guide.tsx @@ -10,8 +10,8 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { useInvestigationGuide } from '../../shared/hooks/use_investigation_guide'; import { useLeftPanelContext } from '../context'; import { INVESTIGATION_GUIDE_TEST_ID, INVESTIGATION_GUIDE_LOADING_TEST_ID } from './test_ids'; -import { InvestigationGuideView } from '../../../common/components/event_details/investigation_guide_view'; -import { FlyoutLoading } from '../../shared/components/flyout_loading'; +import { InvestigationGuideView } from '../../../../common/components/event_details/investigation_guide_view'; +import { FlyoutLoading } from '../../../shared/components/flyout_loading'; /** * Investigation guide displayed in the left panel. diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/prevalence_details.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.test.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/flyout/left/components/prevalence_details.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.test.tsx index a76fb83074451..3d881e80b0e47 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/prevalence_details.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.test.tsx @@ -21,8 +21,8 @@ import { PREVALENCE_DETAILS_TABLE_UPSELL_CELL_TEST_ID, } from './test_ids'; import { usePrevalence } from '../../shared/hooks/use_prevalence'; -import { TestProviders } from '../../../common/mock'; -import { licenseService } from '../../../common/hooks/use_license'; +import { TestProviders } from '../../../../common/mock'; +import { licenseService } from '../../../../common/hooks/use_license'; jest.mock('../../shared/hooks/use_prevalence'); @@ -34,7 +34,7 @@ jest.mock('react-redux', () => { useDispatch: () => mockDispatch, }; }); -jest.mock('../../../common/hooks/use_license', () => { +jest.mock('../../../../common/hooks/use_license', () => { const licenseServiceInstance = { isPlatinumPlus: jest.fn(), }; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/prevalence_details.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/flyout/left/components/prevalence_details.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.tsx index bb92a793506b5..6498e4f0399d4 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/prevalence_details.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/prevalence_details.tsx @@ -22,9 +22,9 @@ import { useEuiTheme, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { FormattedCount } from '../../../common/components/formatted_number'; -import { useLicense } from '../../../common/hooks/use_license'; -import { InvestigateInTimelineButton } from '../../../common/components/event_details/table/investigate_in_timeline_button'; +import { FormattedCount } from '../../../../common/components/formatted_number'; +import { useLicense } from '../../../../common/hooks/use_license'; +import { InvestigateInTimelineButton } from '../../../../common/components/event_details/table/investigate_in_timeline_button'; import type { PrevalenceData } from '../../shared/hooks/use_prevalence'; import { usePrevalence } from '../../shared/hooks/use_prevalence'; import { @@ -43,9 +43,9 @@ import { useLeftPanelContext } from '../context'; import { getDataProvider, getDataProviderAnd, -} from '../../../common/components/event_details/table/use_action_cell_data_provider'; -import { getEmptyTagValue } from '../../../common/components/empty_value'; -import { IS_OPERATOR } from '../../../../common/types'; +} from '../../../../common/components/event_details/table/use_action_cell_data_provider'; +import { getEmptyTagValue } from '../../../../common/components/empty_value'; +import { IS_OPERATOR } from '../../../../../common/types'; export const PREVALENCE_TAB_ID = 'prevalence-details'; const DEFAULT_FROM = 'now-30d'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_ancestry.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.test.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_ancestry.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.test.tsx index 73e22f2267319..d7f4a35fd11c5 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_ancestry.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TABLE_TEST_ID, CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TEST_ID, @@ -18,7 +18,7 @@ import { EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../shared/components/test_ids'; +} from '../../../shared/components/test_ids'; import { usePaginatedAlerts } from '../hooks/use_paginated_alerts'; jest.mock('../../shared/hooks/use_fetch_related_alerts_by_ancestry'); diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_ancestry.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_ancestry.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_ancestry.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_same_source_event.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.test.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_same_source_event.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.test.tsx index de46c22eb5199..66902bd9bda34 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_same_source_event.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TEST_ID, CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TABLE_TEST_ID, @@ -18,7 +18,7 @@ import { EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../shared/components/test_ids'; +} from '../../../shared/components/test_ids'; import { usePaginatedAlerts } from '../hooks/use_paginated_alerts'; jest.mock('../../shared/hooks/use_fetch_related_alerts_by_same_source_event'); diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_same_source_event.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_same_source_event.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_same_source_event.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_session.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.test.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_session.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.test.tsx index 99ef4c7408555..ca5489b13c8c3 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_session.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { CORRELATIONS_DETAILS_BY_SESSION_SECTION_TABLE_TEST_ID, CORRELATIONS_DETAILS_BY_SESSION_SECTION_TEST_ID, @@ -19,7 +19,7 @@ import { EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../shared/components/test_ids'; +} from '../../../shared/components/test_ids'; jest.mock('../../shared/hooks/use_fetch_related_alerts_by_session'); jest.mock('../hooks/use_paginated_alerts'); diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_session.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/components/related_alerts_by_session.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_alerts_by_session.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/related_cases.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_cases.test.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/flyout/left/components/related_cases.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_cases.test.tsx index 264794666234a..db9eb7bdfb3ae 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/related_cases.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_cases.test.tsx @@ -18,10 +18,10 @@ import { EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../shared/components/test_ids'; +} from '../../../shared/components/test_ids'; jest.mock('../../shared/hooks/use_fetch_related_cases'); -jest.mock('../../../common/components/links', () => ({ +jest.mock('../../../../common/components/links', () => ({ CaseDetailsLink: jest .fn() .mockImplementation(({ title }) => <>{``}), diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/related_cases.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_cases.tsx similarity index 95% rename from x-pack/plugins/security_solution/public/flyout/left/components/related_cases.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_cases.tsx index 54c96effd60e8..a9ed2ac935b5d 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/related_cases.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/related_cases.tsx @@ -11,13 +11,13 @@ import { EuiInMemoryTable } from '@elastic/eui'; import type { RelatedCase } from '@kbn/cases-plugin/common'; import { FormattedMessage } from '@kbn/i18n-react'; import { CellTooltipWrapper } from '../../shared/components/cell_tooltip_wrapper'; -import { CaseDetailsLink } from '../../../common/components/links'; +import { CaseDetailsLink } from '../../../../common/components/links'; import { CORRELATIONS_DETAILS_CASES_SECTION_TABLE_TEST_ID, CORRELATIONS_DETAILS_CASES_SECTION_TEST_ID, } from './test_ids'; import { useFetchRelatedCases } from '../../shared/hooks/use_fetch_related_cases'; -import { ExpandablePanel } from '../../shared/components/expandable_panel'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; const ICON = 'warning'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/response_details.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/response_details.test.tsx similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/left/components/response_details.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/response_details.test.tsx index 9f477ee45991c..46871d2f3ab61 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/response_details.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/response_details.test.tsx @@ -9,14 +9,14 @@ import React from 'react'; import { render } from '@testing-library/react'; import '@testing-library/jest-dom'; import { LeftPanelContext } from '../context'; -import { rawEventData, TestProviders } from '../../../common/mock'; +import { rawEventData, TestProviders } from '../../../../common/mock'; import { RESPONSE_DETAILS_TEST_ID } from './test_ids'; import { ResponseDetails } from './response_details'; -import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; -jest.mock('../../../common/hooks/use_experimental_features'); -jest.mock('../../../common/lib/kibana', () => { - const originalModule = jest.requireActual('../../../common/lib/kibana'); +jest.mock('../../../../common/hooks/use_experimental_features'); +jest.mock('../../../../common/lib/kibana', () => { + const originalModule = jest.requireActual('../../../../common/lib/kibana'); return { ...originalModule, useKibana: jest.fn().mockReturnValue({ diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/response_details.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/response_details.tsx similarity index 85% rename from x-pack/plugins/security_solution/public/flyout/left/components/response_details.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/response_details.tsx index 82ce4ac3ffdb0..9e2ab547e9af6 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/response_details.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/response_details.tsx @@ -11,9 +11,9 @@ import styled from 'styled-components'; import { FormattedMessage } from '@kbn/i18n-react'; import { RESPONSE_DETAILS_TEST_ID } from './test_ids'; import { useLeftPanelContext } from '../context'; -import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; -import { useOsqueryTab } from '../../../common/components/event_details/osquery_tab'; -import { useResponseActionsView } from '../../../common/components/event_details/response_actions_view'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +import { useOsqueryTab } from '../../../../common/components/event_details/osquery_tab'; +import { useResponseActionsView } from '../../../../common/components/event_details/response_actions_view'; const ExtendedFlyoutWrapper = styled.div` figure { diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/session_view.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/session_view.test.tsx similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/left/components/session_view.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/session_view.test.tsx index 8ca9ac2f480fa..559aeb5427bea 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/session_view.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/session_view.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import '@testing-library/jest-dom'; import { LeftPanelContext } from '../context'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { SESSION_VIEW_TEST_ID } from './test_ids'; import { SessionView } from './session_view'; import { @@ -32,8 +32,8 @@ const mockFieldsData = (prop: string) => { return mockData[prop]; }; -jest.mock('../../../common/lib/kibana', () => { - const originalModule = jest.requireActual('../../../common/lib/kibana'); +jest.mock('../../../../common/lib/kibana', () => { + const originalModule = jest.requireActual('../../../../common/lib/kibana'); return { ...originalModule, useKibana: jest.fn().mockReturnValue({ diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/session_view.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/session_view.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/flyout/left/components/session_view.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/session_view.tsx index e35efacfb3195..60bafd1765179 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/session_view.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/session_view.tsx @@ -14,7 +14,7 @@ import { } from '../../shared/constants/field_names'; import { getField } from '../../shared/utils'; import { SESSION_VIEW_TEST_ID } from './test_ids'; -import { useKibana } from '../../../common/lib/kibana'; +import { useKibana } from '../../../../common/lib/kibana'; import { useLeftPanelContext } from '../context'; export const SESSION_VIEW_ID = 'session-view'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/suppressed_alerts.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.test.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/flyout/left/components/suppressed_alerts.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.test.tsx index 4bc1a8f5fb0d0..a94f3c5ba33fd 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/suppressed_alerts.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { CORRELATIONS_DETAILS_SUPPRESSED_ALERTS_SECTION_TEST_ID, SUPPRESSED_ALERTS_SECTION_TECHNICAL_PREVIEW_TEST_ID, @@ -17,7 +17,7 @@ import { EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../shared/components/test_ids'; +} from '../../../shared/components/test_ids'; import { LeftPanelContext } from '../context'; import { mockContextValue } from '../mocks/mock_context'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/suppressed_alerts.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.tsx similarity index 89% rename from x-pack/plugins/security_solution/public/flyout/left/components/suppressed_alerts.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.tsx index c2123ced63feb..554b567ca35ae 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/suppressed_alerts.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/suppressed_alerts.tsx @@ -9,13 +9,13 @@ import React from 'react'; import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; import { EuiBetaBadge, EuiFlexItem, EuiFlexGroup } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { ExpandablePanel } from '../../shared/components/expandable_panel'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; import { CORRELATIONS_DETAILS_SUPPRESSED_ALERTS_SECTION_TEST_ID, SUPPRESSED_ALERTS_SECTION_TECHNICAL_PREVIEW_TEST_ID, } from './test_ids'; -import { SUPPRESSED_ALERTS_COUNT_TECHNICAL_PREVIEW } from '../../../common/components/event_details/insights/translations'; -import { InvestigateInTimelineAction } from '../../../detections/components/alerts_table/timeline_actions/investigate_in_timeline_action'; +import { SUPPRESSED_ALERTS_COUNT_TECHNICAL_PREVIEW } from '../../../../common/components/event_details/insights/translations'; +import { InvestigateInTimelineAction } from '../../../../detections/components/alerts_table/timeline_actions/investigate_in_timeline_action'; export interface SuppressedAlertsProps { /** diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts similarity index 98% rename from x-pack/plugins/security_solution/public/flyout/left/components/test_ids.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts index b3ab7dc341c7d..b36f674892f58 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { PREFIX } from '../../shared/test_ids'; +import { PREFIX } from '../../../shared/test_ids'; /* Visualization tab */ diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/threat_intelligence_details.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.test.tsx similarity index 93% rename from x-pack/plugins/security_solution/public/flyout/left/components/threat_intelligence_details.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.test.tsx index 3f666415d562d..110a6f186d584 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/threat_intelligence_details.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import '@testing-library/jest-dom'; import { LeftPanelContext } from '../context'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { THREAT_INTELLIGENCE_DETAILS_ENRICHMENTS_TEST_ID, THREAT_INTELLIGENCE_DETAILS_LOADING_TEST_ID, @@ -17,8 +17,8 @@ import { import { ThreatIntelligenceDetails } from './threat_intelligence_details'; import { useThreatIntelligenceDetails } from '../hooks/use_threat_intelligence_details'; -jest.mock('../../../common/lib/kibana', () => { - const originalModule = jest.requireActual('../../../common/lib/kibana'); +jest.mock('../../../../common/lib/kibana', () => { + const originalModule = jest.requireActual('../../../../common/lib/kibana'); return { ...originalModule, useKibana: jest.fn().mockReturnValue({ diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/threat_intelligence_details.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.tsx similarity index 82% rename from x-pack/plugins/security_solution/public/flyout/left/components/threat_intelligence_details.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.tsx index 351740cd86094..0c9182c8885a6 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/threat_intelligence_details.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/threat_intelligence_details.tsx @@ -8,11 +8,11 @@ import React from 'react'; import { EuiSpacer } from '@elastic/eui'; import isEmpty from 'lodash/isEmpty'; -import { EnrichmentRangePicker } from '../../../common/components/event_details/cti_details/enrichment_range_picker'; -import { ThreatDetailsView } from '../../../common/components/event_details/cti_details/threat_details_view'; +import { EnrichmentRangePicker } from '../../../../common/components/event_details/cti_details/enrichment_range_picker'; +import { ThreatDetailsView } from '../../../../common/components/event_details/cti_details/threat_details_view'; import { useThreatIntelligenceDetails } from '../hooks/use_threat_intelligence_details'; import { THREAT_INTELLIGENCE_DETAILS_LOADING_TEST_ID } from './test_ids'; -import { FlyoutLoading } from '../../shared/components/flyout_loading'; +import { FlyoutLoading } from '../../../shared/components/flyout_loading'; export const THREAT_INTELLIGENCE_TAB_ID = 'threat-intelligence-details'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/user_details.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/user_details.test.tsx similarity index 81% rename from x-pack/plugins/security_solution/public/flyout/left/components/user_details.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/user_details.test.tsx index 6667d7eacd97e..1f2d5b464d4e9 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/user_details.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/user_details.test.tsx @@ -7,21 +7,21 @@ import React from 'react'; import { render } from '@testing-library/react'; -import type { Anomalies } from '../../../common/components/ml/types'; -import { TestProviders } from '../../../common/mock'; +import type { Anomalies } from '../../../../common/components/ml/types'; +import { TestProviders } from '../../../../common/mock'; import { UserDetails } from './user_details'; -import { useMlCapabilities } from '../../../common/components/ml/hooks/use_ml_capabilities'; -import { useRiskScore } from '../../../explore/containers/risk_score'; -import { mockAnomalies } from '../../../common/components/ml/mock'; -import { useObservedUserDetails } from '../../../explore/users/containers/users/observed_details'; -import { useUserRelatedHosts } from '../../../common/containers/related_entities/related_hosts'; -import { RiskSeverity } from '../../../../common/search_strategy'; +import { useMlCapabilities } from '../../../../common/components/ml/hooks/use_ml_capabilities'; +import { useRiskScore } from '../../../../explore/containers/risk_score'; +import { mockAnomalies } from '../../../../common/components/ml/mock'; +import { useObservedUserDetails } from '../../../../explore/users/containers/users/observed_details'; +import { useUserRelatedHosts } from '../../../../common/containers/related_entities/related_hosts'; +import { RiskSeverity } from '../../../../../common/search_strategy'; import { USER_DETAILS_TEST_ID, USER_DETAILS_INFO_TEST_ID, USER_DETAILS_RELATED_HOSTS_TABLE_TEST_ID, } from './test_ids'; -import { EXPANDABLE_PANEL_CONTENT_TEST_ID } from '../../shared/components/test_ids'; +import { EXPANDABLE_PANEL_CONTENT_TEST_ID } from '../../../shared/components/test_ids'; jest.mock('react-router-dom', () => { const actual = jest.requireActual('react-router-dom'); @@ -39,8 +39,8 @@ jest.mock('react-redux', () => { const from = '2022-07-20T08:20:18.966Z'; const to = '2022-07-28T08:20:18.966Z'; -jest.mock('../../../common/containers/use_global_time', () => { - const actual = jest.requireActual('../../../common/containers/use_global_time'); +jest.mock('../../../../common/containers/use_global_time', () => { + const actual = jest.requireActual('../../../../common/containers/use_global_time'); return { ...actual, useGlobalTime: jest @@ -53,14 +53,14 @@ jest.mock('uuid', () => ({ v4: jest.fn().mockReturnValue('uuid'), })); -jest.mock('../../../common/components/ml/hooks/use_ml_capabilities'); +jest.mock('../../../../common/components/ml/hooks/use_ml_capabilities'); const mockUseMlUserPermissions = useMlCapabilities as jest.Mock; -jest.mock('../../../common/containers/sourcerer', () => ({ +jest.mock('../../../../common/containers/sourcerer', () => ({ useSourcererDataView: jest.fn().mockReturnValue({ selectedPatterns: ['index'] }), })); -jest.mock('../../../common/components/ml/anomaly/anomaly_table_provider', () => ({ +jest.mock('../../../../common/components/ml/anomaly/anomaly_table_provider', () => ({ AnomalyTableProvider: ({ children, }: { @@ -72,15 +72,15 @@ jest.mock('../../../common/components/ml/anomaly/anomaly_table_provider', () => }) => children({ anomaliesData: mockAnomalies, isLoadingAnomaliesData: false, jobNameById: {} }), })); -jest.mock('../../../helper_hooks', () => ({ useHasSecurityCapability: () => true })); +jest.mock('../../../../helper_hooks', () => ({ useHasSecurityCapability: () => true })); -jest.mock('../../../explore/users/containers/users/observed_details'); +jest.mock('../../../../explore/users/containers/users/observed_details'); const mockUseObservedUserDetails = useObservedUserDetails as jest.Mock; -jest.mock('../../../common/containers/related_entities/related_hosts'); +jest.mock('../../../../common/containers/related_entities/related_hosts'); const mockUseUsersRelatedHosts = useUserRelatedHosts as jest.Mock; -jest.mock('../../../explore/containers/risk_score'); +jest.mock('../../../../explore/containers/risk_score'); const mockUseRiskScore = useRiskScore as jest.Mock; const timestamp = '2022-07-25T08:20:18.966Z'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/components/user_details.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/user_details.tsx similarity index 83% rename from x-pack/plugins/security_solution/public/flyout/left/components/user_details.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/components/user_details.tsx index 25722a3fae370..daa58fc4d0379 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/components/user_details.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/user_details.tsx @@ -21,36 +21,36 @@ import { } from '@elastic/eui'; import type { EuiBasicTableColumn } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { getSourcererScopeId } from '../../../helpers'; -import { ExpandablePanel } from '../../shared/components/expandable_panel'; -import type { RelatedHost } from '../../../../common/search_strategy/security_solution/related_entities/related_hosts'; -import type { RiskSeverity } from '../../../../common/search_strategy'; -import { UserOverview } from '../../../overview/components/user_overview'; -import { AnomalyTableProvider } from '../../../common/components/ml/anomaly/anomaly_table_provider'; -import { InspectButton, InspectButtonContainer } from '../../../common/components/inspect'; -import { NetworkDetailsLink } from '../../../common/components/links'; -import { RiskScoreEntity } from '../../../../common/search_strategy'; -import { RiskScoreLevel } from '../../../explore/components/risk_score/severity/common'; -import { DefaultFieldRenderer } from '../../../timelines/components/field_renderers/field_renderers'; +import { getSourcererScopeId } from '../../../../helpers'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; +import type { RelatedHost } from '../../../../../common/search_strategy/security_solution/related_entities/related_hosts'; +import type { RiskSeverity } from '../../../../../common/search_strategy'; +import { UserOverview } from '../../../../overview/components/user_overview'; +import { AnomalyTableProvider } from '../../../../common/components/ml/anomaly/anomaly_table_provider'; +import { InspectButton, InspectButtonContainer } from '../../../../common/components/inspect'; +import { NetworkDetailsLink } from '../../../../common/components/links'; +import { RiskScoreEntity } from '../../../../../common/search_strategy'; +import { RiskScoreLevel } from '../../../../explore/components/risk_score/severity/common'; +import { DefaultFieldRenderer } from '../../../../timelines/components/field_renderers/field_renderers'; import { SecurityCellActions, CellActionsMode, SecurityCellActionsTrigger, -} from '../../../common/components/cell_actions'; -import { InputsModelId } from '../../../common/store/inputs/constants'; -import { useGlobalTime } from '../../../common/containers/use_global_time'; -import { useSourcererDataView } from '../../../common/containers/sourcerer'; -import { scoreIntervalToDateTime } from '../../../common/components/ml/score/score_interval_to_datetime'; -import { setAbsoluteRangeDatePicker } from '../../../common/store/inputs/actions'; -import { hostToCriteria } from '../../../common/components/ml/criteria/host_to_criteria'; -import { manageQuery } from '../../../common/components/page/manage_query'; -import { useObservedUserDetails } from '../../../explore/users/containers/users/observed_details'; -import { useUserRelatedHosts } from '../../../common/containers/related_entities/related_hosts'; -import { useMlCapabilities } from '../../../common/components/ml/hooks/use_ml_capabilities'; -import { getEmptyTagValue } from '../../../common/components/empty_value'; +} from '../../../../common/components/cell_actions'; +import { InputsModelId } from '../../../../common/store/inputs/constants'; +import { useGlobalTime } from '../../../../common/containers/use_global_time'; +import { useSourcererDataView } from '../../../../common/containers/sourcerer'; +import { scoreIntervalToDateTime } from '../../../../common/components/ml/score/score_interval_to_datetime'; +import { setAbsoluteRangeDatePicker } from '../../../../common/store/inputs/actions'; +import { hostToCriteria } from '../../../../common/components/ml/criteria/host_to_criteria'; +import { manageQuery } from '../../../../common/components/page/manage_query'; +import { useObservedUserDetails } from '../../../../explore/users/containers/users/observed_details'; +import { useUserRelatedHosts } from '../../../../common/containers/related_entities/related_hosts'; +import { useMlCapabilities } from '../../../../common/components/ml/hooks/use_ml_capabilities'; +import { getEmptyTagValue } from '../../../../common/components/empty_value'; import { USER_DETAILS_RELATED_HOSTS_TABLE_TEST_ID, USER_DETAILS_TEST_ID } from './test_ids'; -import { ENTITY_RISK_LEVEL } from '../../../explore/components/risk_score/translations'; -import { useHasSecurityCapability } from '../../../helper_hooks'; +import { ENTITY_RISK_LEVEL } from '../../../../explore/components/risk_score/translations'; +import { useHasSecurityCapability } from '../../../../helper_hooks'; const USER_DETAILS_ID = 'entities-users-details'; const RELATED_HOSTS_ID = 'entities-users-related-hosts'; diff --git a/x-pack/plugins/security_solution/public/flyout/left/content.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/content.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/content.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/context.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/context.tsx similarity index 87% rename from x-pack/plugins/security_solution/public/flyout/left/context.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/context.tsx index a791dcbf5fb5a..6dd0f65af4922 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/context.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/context.tsx @@ -9,13 +9,13 @@ import type { BrowserFields, TimelineEventsDetailsItem } from '@kbn/timelines-pl import React, { createContext, memo, useContext, useMemo } from 'react'; import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; import { useEventDetails } from '../shared/hooks/use_event_details'; -import { FlyoutError } from '../shared/components/flyout_error'; -import { FlyoutLoading } from '../shared/components/flyout_loading'; -import type { SearchHit } from '../../../common/search_strategy'; +import { FlyoutError } from '../../shared/components/flyout_error'; +import { FlyoutLoading } from '../../shared/components/flyout_loading'; +import type { SearchHit } from '../../../../common/search_strategy'; import type { LeftPanelProps } from '.'; -import type { GetFieldsData } from '../../common/hooks/use_get_fields_data'; -import { useBasicDataFromDetailsData } from '../../timelines/components/side_panel/event_details/helpers'; -import { useRuleWithFallback } from '../../detection_engine/rule_management/logic/use_rule_with_fallback'; +import type { GetFieldsData } from '../../../common/hooks/use_get_fields_data'; +import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; +import { useRuleWithFallback } from '../../../detection_engine/rule_management/logic/use_rule_with_fallback'; export interface LeftPanelContext { /** diff --git a/x-pack/plugins/security_solution/public/flyout/left/header.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/header.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/header.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.test.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.test.tsx index cc28c004741bd..b0c2e1c3a2ef5 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.test.tsx @@ -8,11 +8,11 @@ import React from 'react'; import { renderHook } from '@testing-library/react-hooks'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import { useKibana } from '../../../common/lib/kibana'; +import { useKibana } from '../../../../common/lib/kibana'; import { createFindAlerts } from '../services/find_alerts'; import { useFetchAlerts, type UseAlertsQueryParams } from './use_fetch_alerts'; -jest.mock('../../../common/lib/kibana'); +jest.mock('../../../../common/lib/kibana'); jest.mock('../services/find_alerts'); describe('useFetchAlerts', () => { diff --git a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.ts similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.ts index 4e9b7541801c8..b425cc960f7ac 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_fetch_alerts.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_fetch_alerts.ts @@ -9,7 +9,7 @@ import { useMemo } from 'react'; import { useQuery } from '@tanstack/react-query'; import type { AggregationsAggregate, SearchResponse } from '@elastic/elasticsearch/lib/api/types'; import { isNumber } from 'lodash'; -import { useKibana } from '../../../common/lib/kibana'; +import { useKibana } from '../../../../common/lib/kibana'; import { type AlertsQueryParams, createFindAlerts } from '../services/find_alerts'; export type UseAlertsQueryParams = AlertsQueryParams; diff --git a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_paginated_alerts.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_paginated_alerts.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/hooks/use_paginated_alerts.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_paginated_alerts.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_pagination_and_sorting.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_pagination_and_sorting.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/hooks/use_pagination_and_sorting.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_pagination_and_sorting.ts diff --git a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_threat_intelligence_details.test.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.test.ts similarity index 73% rename from x-pack/plugins/security_solution/public/flyout/left/hooks/use_threat_intelligence_details.test.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.test.ts index 14319c8fa4404..33def43adb2dd 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_threat_intelligence_details.test.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.test.ts @@ -8,25 +8,25 @@ import { useThreatIntelligenceDetails } from './use_threat_intelligence_details'; import { renderHook } from '@testing-library/react-hooks'; -import { useTimelineEventsDetails } from '../../../timelines/containers/details'; -import { useSourcererDataView } from '../../../common/containers/sourcerer'; -import { useRouteSpy } from '../../../common/utils/route/use_route_spy'; +import { useTimelineEventsDetails } from '../../../../timelines/containers/details'; +import { useSourcererDataView } from '../../../../common/containers/sourcerer'; +import { useRouteSpy } from '../../../../common/utils/route/use_route_spy'; import { useLeftPanelContext } from '../context'; -import { useInvestigationTimeEnrichment } from '../../../common/containers/cti/event_enrichment'; -import { SecurityPageName } from '../../../../common/constants'; -import type { RouteSpyState } from '../../../common/utils/route/types'; +import { useInvestigationTimeEnrichment } from '../../../../common/containers/cti/event_enrichment'; +import { SecurityPageName } from '../../../../../common/constants'; +import type { RouteSpyState } from '../../../../common/utils/route/types'; import { type GetBasicDataFromDetailsData, useBasicDataFromDetailsData, -} from '../../../timelines/components/side_panel/event_details/helpers'; +} from '../../../../timelines/components/side_panel/event_details/helpers'; import { mockContextValue } from '../mocks/mock_context'; -jest.mock('../../../timelines/containers/details'); -jest.mock('../../../common/containers/sourcerer'); -jest.mock('../../../common/utils/route/use_route_spy'); +jest.mock('../../../../timelines/containers/details'); +jest.mock('../../../../common/containers/sourcerer'); +jest.mock('../../../../common/utils/route/use_route_spy'); jest.mock('../context'); -jest.mock('../../../common/containers/cti/event_enrichment'); -jest.mock('../../../timelines/components/side_panel/event_details/helpers'); +jest.mock('../../../../common/containers/cti/event_enrichment'); +jest.mock('../../../../timelines/components/side_panel/event_details/helpers'); describe('useThreatIntelligenceDetails', () => { beforeEach(() => { diff --git a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_threat_intelligence_details.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.ts similarity index 76% rename from x-pack/plugins/security_solution/public/flyout/left/hooks/use_threat_intelligence_details.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.ts index c291e2a123c3d..2256f3756f920 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/hooks/use_threat_intelligence_details.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.ts @@ -6,22 +6,22 @@ */ import { useMemo } from 'react'; -import type { RunTimeMappings } from '../../../../common/api/search_strategy'; -import type { CtiEnrichment, EventFields } from '../../../../common/search_strategy'; -import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; +import type { RunTimeMappings } from '../../../../../common/api/search_strategy'; +import type { CtiEnrichment, EventFields } from '../../../../../common/search_strategy'; +import { useBasicDataFromDetailsData } from '../../../../timelines/components/side_panel/event_details/helpers'; import { filterDuplicateEnrichments, getEnrichmentFields, parseExistingEnrichments, timelineDataToEnrichment, -} from '../../../common/components/event_details/cti_details/helpers'; -import { SecurityPageName } from '../../../../common/constants'; -import { SourcererScopeName } from '../../../common/store/sourcerer/model'; +} from '../../../../common/components/event_details/cti_details/helpers'; +import { SecurityPageName } from '../../../../../common/constants'; +import { SourcererScopeName } from '../../../../common/store/sourcerer/model'; -import { useInvestigationTimeEnrichment } from '../../../common/containers/cti/event_enrichment'; -import { useTimelineEventsDetails } from '../../../timelines/containers/details'; -import { useSourcererDataView } from '../../../common/containers/sourcerer'; -import { useRouteSpy } from '../../../common/utils/route/use_route_spy'; +import { useInvestigationTimeEnrichment } from '../../../../common/containers/cti/event_enrichment'; +import { useTimelineEventsDetails } from '../../../../timelines/containers/details'; +import { useSourcererDataView } from '../../../../common/containers/sourcerer'; +import { useRouteSpy } from '../../../../common/utils/route/use_route_spy'; import { useLeftPanelContext } from '../context'; export interface ThreatIntelligenceDetailsValue { diff --git a/x-pack/plugins/security_solution/public/flyout/left/index.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/index.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/mocks/mock_context.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/mocks/mock_context.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/mocks/mock_context.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/left/mocks/mock_context.ts diff --git a/x-pack/plugins/security_solution/public/flyout/left/services/find_alerts.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/services/find_alerts.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/services/find_alerts.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/left/services/find_alerts.ts diff --git a/x-pack/plugins/security_solution/public/flyout/left/tabs.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/tabs.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/tabs.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/tabs/insights_tab.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/insights_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/tabs/insights_tab.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/insights_tab.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/tabs/investigation_tab.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/investigation_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/tabs/investigation_tab.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/investigation_tab.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/tabs/response_tab.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/response_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/left/tabs/response_tab.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/response_tab.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/left/tabs/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts similarity index 96% rename from x-pack/plugins/security_solution/public/flyout/left/tabs/test_ids.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts index bb1dfa035f13a..eba61a013d048 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/tabs/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { PREFIX } from '../../shared/test_ids'; +import { PREFIX } from '../../../shared/test_ids'; const VISUALIZE_TAB_TEST_ID = `${PREFIX}VisualizeTab` as const; export const VISUALIZE_TAB_BUTTON_GROUP_TEST_ID = `${VISUALIZE_TAB_TEST_ID}ButtonGroup` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/left/tabs/visualize_tab.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx similarity index 95% rename from x-pack/plugins/security_solution/public/flyout/left/tabs/visualize_tab.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx index 632bcb856a257..b23d61f19e053 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/tabs/visualize_tab.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx @@ -21,8 +21,8 @@ import { } from './test_ids'; import { ANALYZE_GRAPH_ID, AnalyzeGraph } from '../components/analyze_graph'; import { SESSION_VIEW_ID, SessionView } from '../components/session_view'; -import { ALERTS_ACTIONS } from '../../../common/lib/apm/user_actions'; -import { useStartTransaction } from '../../../common/lib/apm/use_start_transaction'; +import { ALERTS_ACTIONS } from '../../../../common/lib/apm/user_actions'; +import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction'; const visualizeButtons: EuiButtonGroupOptionProps[] = [ { diff --git a/x-pack/plugins/security_solution/public/flyout/left/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/test_ids.ts similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/left/test_ids.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/left/test_ids.ts index 4bcb3808dafe9..3c0ba8b2a1c0c 100644 --- a/x-pack/plugins/security_solution/public/flyout/left/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/test_ids.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { PREFIX } from '../shared/test_ids'; +import { PREFIX } from '../../shared/test_ids'; export const VISUALIZE_TAB_TEST_ID = `${PREFIX}FlyoutVisualizeTab` as const; export const INSIGHTS_TAB_TEST_ID = `${PREFIX}FlyoutInsightsTab` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/alert_reason_preview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/alert_reason_preview.test.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/flyout/preview/components/alert_reason_preview.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/components/alert_reason_preview.test.tsx index 1408a5f658630..5e0194c7ec91a 100644 --- a/x-pack/plugins/security_solution/public/flyout/preview/components/alert_reason_preview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/alert_reason_preview.test.tsx @@ -13,7 +13,7 @@ import { mockContextValue } from '../mocks/mock_context'; import { ALERT_REASON_PREVIEW_BODY_TEST_ID } from './test_ids'; import { AlertReasonPreview } from './alert_reason_preview'; import { ThemeProvider } from 'styled-components'; -import { getMockTheme } from '../../../common/lib/kibana/kibana_react.mock'; +import { getMockTheme } from '../../../../common/lib/kibana/kibana_react.mock'; const mockTheme = getMockTheme({ eui: { euiFontSizeXS: '' } }); diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/alert_reason_preview.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/alert_reason_preview.tsx similarity index 88% rename from x-pack/plugins/security_solution/public/flyout/preview/components/alert_reason_preview.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/components/alert_reason_preview.tsx index 3702160339b06..e9b6996db78cb 100644 --- a/x-pack/plugins/security_solution/public/flyout/preview/components/alert_reason_preview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/alert_reason_preview.tsx @@ -12,9 +12,9 @@ import { euiThemeVars } from '@kbn/ui-theme'; import { FormattedMessage } from '@kbn/i18n-react'; import { ALERT_REASON_PREVIEW_BODY_TEST_ID } from './test_ids'; import { usePreviewPanelContext } from '../context'; -import { getRowRenderer } from '../../../timelines/components/timeline/body/renderers/get_row_renderer'; -import { defaultRowRenderers } from '../../../timelines/components/timeline/body/renderers'; -import { FlyoutError } from '../../shared/components/flyout_error'; +import { getRowRenderer } from '../../../../timelines/components/timeline/body/renderers/get_row_renderer'; +import { defaultRowRenderers } from '../../../../timelines/components/timeline/body/renderers'; +import { FlyoutError } from '../../../shared/components/flyout_error'; const ReasonPreviewContainerWrapper = styled.div` overflow-x: auto; diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview.test.tsx similarity index 86% rename from x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview.test.tsx index 9a76a852b5a92..095973bb0d260 100644 --- a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview.test.tsx @@ -13,16 +13,16 @@ import { mockContextValue } from '../mocks/mock_context'; import { mockFlyoutContextValue } from '../../shared/mocks/mock_flyout_context'; import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; import { ThemeProvider } from 'styled-components'; -import { getMockTheme } from '../../../common/lib/kibana/kibana_react.mock'; -import { TestProviders } from '../../../common/mock'; -import { useRuleWithFallback } from '../../../detection_engine/rule_management/logic/use_rule_with_fallback'; -import { getStepsData } from '../../../detections/pages/detection_engine/rules/helpers'; +import { getMockTheme } from '../../../../common/lib/kibana/kibana_react.mock'; +import { TestProviders } from '../../../../common/mock'; +import { useRuleWithFallback } from '../../../../detection_engine/rule_management/logic/use_rule_with_fallback'; +import { getStepsData } from '../../../../detections/pages/detection_engine/rules/helpers'; import { mockAboutStepRule, mockDefineStepRule, mockScheduleStepRule, -} from '../../../detection_engine/rule_management_ui/components/rules_table/__mocks__/mock'; -import { useGetSavedQuery } from '../../../detections/pages/detection_engine/rules/use_get_saved_query'; +} from '../../../../detection_engine/rule_management_ui/components/rules_table/__mocks__/mock'; +import { useGetSavedQuery } from '../../../../detections/pages/detection_engine/rules/use_get_saved_query'; import { RULE_PREVIEW_BODY_TEST_ID, RULE_PREVIEW_ABOUT_HEADER_TEST_ID, @@ -36,16 +36,16 @@ import { RULE_PREVIEW_LOADING_TEST_ID, } from './test_ids'; -jest.mock('../../../common/lib/kibana'); +jest.mock('../../../../common/lib/kibana'); const mockUseRuleWithFallback = useRuleWithFallback as jest.Mock; -jest.mock('../../../detection_engine/rule_management/logic/use_rule_with_fallback'); +jest.mock('../../../../detection_engine/rule_management/logic/use_rule_with_fallback'); const mockGetStepsData = getStepsData as jest.Mock; -jest.mock('../../../detections/pages/detection_engine/rules/helpers'); +jest.mock('../../../../detections/pages/detection_engine/rules/helpers'); const mockUseGetSavedQuery = useGetSavedQuery as jest.Mock; -jest.mock('../../../detections/pages/detection_engine/rules/use_get_saved_query'); +jest.mock('../../../../detections/pages/detection_engine/rules/use_get_saved_query'); const mockTheme = getMockTheme({ eui: { euiColorMediumShade: '#ece' } }); diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview.tsx similarity index 85% rename from x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview.tsx index 84448aea0eb49..4587368488050 100644 --- a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview.tsx @@ -7,20 +7,20 @@ import React, { memo, useState, useEffect } from 'react'; import { EuiText, EuiHorizontalRule, EuiSpacer, EuiPanel } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { useKibana } from '../../../common/lib/kibana'; -import { useGetSavedQuery } from '../../../detections/pages/detection_engine/rules/use_get_saved_query'; -import type { Rule } from '../../../detection_engine/rule_management/logic'; +import { useKibana } from '../../../../common/lib/kibana'; +import { useGetSavedQuery } from '../../../../detections/pages/detection_engine/rules/use_get_saved_query'; +import type { Rule } from '../../../../detection_engine/rule_management/logic'; import { usePreviewPanelContext } from '../context'; import { ExpandableSection } from '../../right/components/expandable_section'; -import { useRuleWithFallback } from '../../../detection_engine/rule_management/logic/use_rule_with_fallback'; -import { getStepsData } from '../../../detections/pages/detection_engine/rules/helpers'; +import { useRuleWithFallback } from '../../../../detection_engine/rule_management/logic/use_rule_with_fallback'; +import { getStepsData } from '../../../../detections/pages/detection_engine/rules/helpers'; import { RulePreviewTitle } from './rule_preview_title'; -import { StepAboutRuleReadOnly } from '../../../detections/components/rules/step_about_rule'; -import { StepDefineRuleReadOnly } from '../../../detections/components/rules/step_define_rule'; -import { StepScheduleRuleReadOnly } from '../../../detections/components/rules/step_schedule_rule'; -import { StepRuleActionsReadOnly } from '../../../detections/components/rules/step_rule_actions'; -import { FlyoutLoading } from '../../shared/components/flyout_loading'; -import { FlyoutError } from '../../shared/components/flyout_error'; +import { StepAboutRuleReadOnly } from '../../../../detections/components/rules/step_about_rule'; +import { StepDefineRuleReadOnly } from '../../../../detections/components/rules/step_define_rule'; +import { StepScheduleRuleReadOnly } from '../../../../detections/components/rules/step_schedule_rule'; +import { StepRuleActionsReadOnly } from '../../../../detections/components/rules/step_rule_actions'; +import { FlyoutLoading } from '../../../shared/components/flyout_loading'; +import { FlyoutError } from '../../../shared/components/flyout_error'; import { RULE_PREVIEW_BODY_TEST_ID, RULE_PREVIEW_ABOUT_TEST_ID, diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_footer.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview_footer.test.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_footer.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview_footer.test.tsx index a6df858cc5d57..ffe0e83c7d5fd 100644 --- a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_footer.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview_footer.test.tsx @@ -7,7 +7,7 @@ import { render } from '@testing-library/react'; import React from 'react'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { mockContextValue } from '../mocks/mock_context'; import { PreviewPanelContext } from '../context'; import { RULE_PREVIEW_FOOTER_TEST_ID, RULE_PREVIEW_NAVIGATE_TO_RULE_TEST_ID } from './test_ids'; diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_footer.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview_footer.tsx similarity index 86% rename from x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_footer.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview_footer.tsx index e645a08f18197..84118102a8c6f 100644 --- a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_footer.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview_footer.tsx @@ -9,8 +9,8 @@ import React, { memo } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiFlyoutFooter } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { usePreviewPanelContext } from '../context'; -import { RenderRuleName } from '../../../timelines/components/timeline/body/renderers/formatted_field_helpers'; -import { SIGNAL_RULE_NAME_FIELD_NAME } from '../../../timelines/components/timeline/body/renderers/constants'; +import { RenderRuleName } from '../../../../timelines/components/timeline/body/renderers/formatted_field_helpers'; +import { SIGNAL_RULE_NAME_FIELD_NAME } from '../../../../timelines/components/timeline/body/renderers/constants'; import { RULE_PREVIEW_FOOTER_TEST_ID } from './test_ids'; /** diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_title.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview_title.test.tsx similarity index 93% rename from x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_title.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview_title.test.tsx index a66a64f9b0811..439db1fa98cc2 100644 --- a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_title.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview_title.test.tsx @@ -11,8 +11,8 @@ import type { RulePreviewTitleProps } from './rule_preview_title'; import { RulePreviewTitle } from './rule_preview_title'; import { mockFlyoutContextValue } from '../../shared/mocks/mock_flyout_context'; import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; -import { TestProviders } from '../../../common/mock'; -import type { Rule } from '../../../detection_engine/rule_management/logic'; +import { TestProviders } from '../../../../common/mock'; +import type { Rule } from '../../../../detection_engine/rule_management/logic'; import { RULE_PREVIEW_TITLE_TEST_ID, RULE_PREVIEW_RULE_CREATED_BY_TEST_ID, diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_title.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview_title.tsx similarity index 87% rename from x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_title.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview_title.tsx index 9f3373fa80a3a..9ea1564b9bcd0 100644 --- a/x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview_title.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview_title.tsx @@ -7,9 +7,9 @@ import React from 'react'; import { EuiTitle, EuiText, EuiSpacer, EuiFlexGroup, EuiFlexItem, EuiBadge } from '@elastic/eui'; -import { DELETED_RULE } from '../../../detection_engine/rule_details_ui/pages/rule_details/translations'; -import type { Rule } from '../../../detection_engine/rule_management/logic'; -import { CreatedBy, UpdatedBy } from '../../../detections/components/rules/rule_info'; +import { DELETED_RULE } from '../../../../detection_engine/rule_details_ui/pages/rule_details/translations'; +import type { Rule } from '../../../../detection_engine/rule_management/logic'; +import { CreatedBy, UpdatedBy } from '../../../../detections/components/rules/rule_info'; import { RULE_PREVIEW_TITLE_TEST_ID, RULE_PREVIEW_RULE_CREATED_BY_TEST_ID, diff --git a/x-pack/plugins/security_solution/public/flyout/preview/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/test_ids.ts similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/preview/components/test_ids.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/components/test_ids.ts index 61842f9670415..09989a662ddc6 100644 --- a/x-pack/plugins/security_solution/public/flyout/preview/components/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/preview/components/test_ids.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { PREFIX } from '../../shared/test_ids'; +import { PREFIX } from '../../../shared/test_ids'; import { CONTENT_TEST_ID, HEADER_TEST_ID } from '../../right/components/expandable_section'; /* Rule preview */ diff --git a/x-pack/plugins/security_solution/public/flyout/preview/context.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/context.tsx similarity index 94% rename from x-pack/plugins/security_solution/public/flyout/preview/context.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/context.tsx index c99fbbd0456b9..3a1044ce484a9 100644 --- a/x-pack/plugins/security_solution/public/flyout/preview/context.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/preview/context.tsx @@ -9,8 +9,8 @@ import React, { createContext, memo, useContext, useMemo } from 'react'; import type { DataViewBase } from '@kbn/es-query'; import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; import { useEventDetails } from '../shared/hooks/use_event_details'; -import { FlyoutError } from '../shared/components/flyout_error'; -import { FlyoutLoading } from '../shared/components/flyout_loading'; +import { FlyoutError } from '../../shared/components/flyout_error'; +import { FlyoutLoading } from '../../shared/components/flyout_loading'; import type { PreviewPanelProps } from '.'; export interface PreviewPanelContext { diff --git a/x-pack/plugins/security_solution/public/flyout/preview/index.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/preview/index.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/preview/mocks/mock_context.ts b/x-pack/plugins/security_solution/public/flyout/document_details/preview/mocks/mock_context.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/preview/mocks/mock_context.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/mocks/mock_context.ts diff --git a/x-pack/plugins/security_solution/public/flyout/preview/panels.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/preview/panels.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/preview/panels.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/preview/panels.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/about_section.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/about_section.test.tsx similarity index 94% rename from x-pack/plugins/security_solution/public/flyout/right/components/about_section.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/about_section.test.tsx index 9b672f5008460..9559a696d1c83 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/about_section.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/about_section.test.tsx @@ -8,12 +8,12 @@ import React from 'react'; import { act, render } from '@testing-library/react'; import { ABOUT_SECTION_CONTENT_TEST_ID, ABOUT_SECTION_HEADER_TEST_ID } from './test_ids'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { AboutSection } from './about_section'; import { RightPanelContext } from '../context'; import { mockContextValue } from '../mocks/mock_context'; -jest.mock('../../../common/components/link_to'); +jest.mock('../../../../common/components/link_to'); const renderAboutSection = (expanded: boolean = false) => render( diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/about_section.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/about_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/about_section.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/about_section.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_preview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.test.tsx similarity index 91% rename from x-pack/plugins/security_solution/public/flyout/right/components/analyzer_preview.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.test.tsx index 22afc55bbd6cf..e79da52a541b1 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_preview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.test.tsx @@ -7,8 +7,8 @@ import { render } from '@testing-library/react'; import React from 'react'; -import { TestProviders } from '../../../common/mock'; -import { useAlertPrevalenceFromProcessTree } from '../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; +import { TestProviders } from '../../../../common/mock'; +import { useAlertPrevalenceFromProcessTree } from '../../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; import { mockContextValue } from '../mocks/mock_context'; import { mockDataFormattedForFieldBrowser } from '../../shared/mocks/mock_data_formatted_for_field_browser'; import { RightPanelContext } from '../context'; @@ -16,7 +16,7 @@ import { AnalyzerPreview } from './analyzer_preview'; import { ANALYZER_PREVIEW_TEST_ID } from './test_ids'; import * as mock from '../mocks/mock_analyzer_data'; -jest.mock('../../../common/containers/alerts/use_alert_prevalence_from_process_tree', () => ({ +jest.mock('../../../../common/containers/alerts/use_alert_prevalence_from_process_tree', () => ({ useAlertPrevalenceFromProcessTree: jest.fn(), })); const mockUseAlertPrevalenceFromProcessTree = useAlertPrevalenceFromProcessTree as jest.Mock; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_preview.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.tsx similarity index 91% rename from x-pack/plugins/security_solution/public/flyout/right/components/analyzer_preview.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.tsx index 5d4a21fca293b..e8f23bc4638bd 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_preview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview.tsx @@ -13,9 +13,9 @@ import { ANALYZER_PREVIEW_TEST_ID, ANALYZER_PREVIEW_LOADING_TEST_ID } from './te import { getTreeNodes } from '../utils/analyzer_helpers'; import { ANCESTOR_ID, RULE_INDICES } from '../../shared/constants/field_names'; import { useRightPanelContext } from '../context'; -import { useAlertPrevalenceFromProcessTree } from '../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; -import type { StatsNode } from '../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; -import { isActiveTimeline } from '../../../helpers'; +import { useAlertPrevalenceFromProcessTree } from '../../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; +import type { StatsNode } from '../../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; +import { isActiveTimeline } from '../../../../helpers'; const CHILD_COUNT_LIMIT = 3; const ANCESTOR_LEVEL = 3; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_preview_container.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.test.tsx similarity index 85% rename from x-pack/plugins/security_solution/public/flyout/right/components/analyzer_preview_container.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.test.tsx index 14b475f95c3c7..5b27fd70781db 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_preview_container.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.test.tsx @@ -6,14 +6,14 @@ */ import { render, screen } from '@testing-library/react'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import React from 'react'; import { RightPanelContext } from '../context'; import { mockContextValue } from '../mocks/mock_context'; import { AnalyzerPreviewContainer } from './analyzer_preview_container'; -import { isInvestigateInResolverActionEnabled } from '../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'; +import { isInvestigateInResolverActionEnabled } from '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'; import { ANALYZER_PREVIEW_TEST_ID } from './test_ids'; -import { useAlertPrevalenceFromProcessTree } from '../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; +import { useAlertPrevalenceFromProcessTree } from '../../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; import * as mock from '../mocks/mock_analyzer_data'; import { EXPANDABLE_PANEL_CONTENT_TEST_ID, @@ -21,14 +21,16 @@ import { EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../shared/components/test_ids'; +} from '../../../shared/components/test_ids'; import { mockDataFormattedForFieldBrowser } from '../../shared/mocks/mock_data_formatted_for_field_browser'; -import { useInvestigateInTimeline } from '../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; +import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; -jest.mock('../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'); -jest.mock('../../../common/containers/alerts/use_alert_prevalence_from_process_tree'); jest.mock( - '../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline' + '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver' +); +jest.mock('../../../../common/containers/alerts/use_alert_prevalence_from_process_tree'); +jest.mock( + '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline' ); jest.mock('react-router-dom', () => { const actual = jest.requireActual('react-router-dom'); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_preview_container.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx similarity index 85% rename from x-pack/plugins/security_solution/public/flyout/right/components/analyzer_preview_container.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx index ed575481fabd9..ac8e21d3fde06 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/analyzer_preview_container.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx @@ -10,16 +10,16 @@ import { useDispatch } from 'react-redux'; import { TimelineTabs } from '@kbn/securitysolution-data-table'; import { EuiLink, EuiMark } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { useStartTransaction } from '../../../common/lib/apm/use_start_transaction'; -import { useInvestigateInTimeline } from '../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; -import { ALERTS_ACTIONS } from '../../../common/lib/apm/user_actions'; -import { getScopedActions } from '../../../helpers'; -import { setActiveTabTimeline } from '../../../timelines/store/timeline/actions'; +import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction'; +import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; +import { ALERTS_ACTIONS } from '../../../../common/lib/apm/user_actions'; +import { getScopedActions } from '../../../../helpers'; +import { setActiveTabTimeline } from '../../../../timelines/store/timeline/actions'; import { useRightPanelContext } from '../context'; -import { isInvestigateInResolverActionEnabled } from '../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'; +import { isInvestigateInResolverActionEnabled } from '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'; import { AnalyzerPreview } from './analyzer_preview'; import { ANALYZER_PREVIEW_TEST_ID } from './test_ids'; -import { ExpandablePanel } from '../../shared/components/expandable_panel'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; const timelineId = 'timeline-1'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.test.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.test.tsx index 9d1a73e5bd616..38a80490ea22f 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; import { RightPanelContext } from '../context'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { CorrelationsOverview } from './correlations_overview'; import { CORRELATIONS_TAB_ID } from '../../left/components/correlations_details'; import { LeftPanelInsightsTab, LeftPanelKey } from '../../left'; @@ -36,7 +36,7 @@ import { EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../shared/components/test_ids'; +} from '../../../shared/components/test_ids'; jest.mock('../../shared/hooks/use_show_related_alerts_by_ancestry'); jest.mock('../../shared/hooks/use_show_related_alerts_by_same_source_event'); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.tsx index 84349b2b8e523..a273257ba0fc7 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/correlations_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/correlations_overview.tsx @@ -9,7 +9,7 @@ import React, { useCallback } from 'react'; import { EuiFlexGroup } from '@elastic/eui'; import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { FormattedMessage } from '@kbn/i18n-react'; -import { ExpandablePanel } from '../../shared/components/expandable_panel'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; import { useShowRelatedAlertsBySession } from '../../shared/hooks/use_show_related_alerts_by_session'; import { RelatedAlertsBySession } from './related_alerts_by_session'; import { useShowRelatedAlertsBySameSourceEvent } from '../../shared/hooks/use_show_related_alerts_by_same_source_event'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/description.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/description.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/description.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/description.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/description.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/description.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/right/components/description.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/description.tsx index d180d58db2a22..442af04712742 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/description.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/description.tsx @@ -13,7 +13,7 @@ import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { useRightPanelContext } from '../context'; -import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; +import { useBasicDataFromDetailsData } from '../../../../timelines/components/side_panel/event_details/helpers'; import { DESCRIPTION_DETAILS_TEST_ID, DESCRIPTION_TITLE_TEST_ID, diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/entities_overview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.test.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/right/components/entities_overview.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.test.tsx index 877d4053622bb..bfee7825748b6 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/entities_overview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.test.tsx @@ -14,14 +14,14 @@ import { INSIGHTS_ENTITIES_TEST_ID, } from './test_ids'; import { EntitiesOverview } from './entities_overview'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { mockGetFieldsData } from '../../shared/mocks/mock_get_fields_data'; import { EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../shared/components/test_ids'; +} from '../../../shared/components/test_ids'; const TOGGLE_ICON_TEST_ID = EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(INSIGHTS_ENTITIES_TEST_ID); const TITLE_LINK_TEST_ID = EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(INSIGHTS_ENTITIES_TEST_ID); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/entities_overview.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/right/components/entities_overview.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.tsx index 38d9a25437e81..f1904d8b7324d 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/entities_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/entities_overview.tsx @@ -10,7 +10,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { FormattedMessage } from '@kbn/i18n-react'; import { INSIGHTS_ENTITIES_TEST_ID } from './test_ids'; -import { ExpandablePanel } from '../../shared/components/expandable_panel'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; import { useRightPanelContext } from '../context'; import { getField } from '../../shared/utils'; import { HostEntityOverview } from './host_entity_overview'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/expand_detail_button.stories.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/expand_detail_button.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/expand_detail_button.stories.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/expand_detail_button.stories.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/expand_detail_button.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/expand_detail_button.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/expand_detail_button.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/expand_detail_button.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/expand_detail_button.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/expand_detail_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/expand_detail_button.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/expand_detail_button.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/expandable_section.stories.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/expandable_section.stories.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.stories.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/expandable_section.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/expandable_section.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/expandable_section.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/expandable_section.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/expandable_section.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/header_title.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/header_title.test.tsx similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/right/components/header_title.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/header_title.test.tsx index 0907bb44af16d..ca30009c7cbf7 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/header_title.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/header_title.test.tsx @@ -19,18 +19,18 @@ import { } from './test_ids'; import { HeaderTitle } from './header_title'; import moment from 'moment-timezone'; -import { useDateFormat, useTimeZone } from '../../../common/lib/kibana'; +import { useDateFormat, useTimeZone } from '../../../../common/lib/kibana'; import { mockGetFieldsData } from '../../shared/mocks/mock_get_fields_data'; import { mockDataFormattedForFieldBrowser } from '../../shared/mocks/mock_data_formatted_for_field_browser'; import { useAssistant } from '../hooks/use_assistant'; -import { TestProvidersComponent } from '../../../common/mock'; -import { useGetAlertDetailsFlyoutLink } from '../../../timelines/components/side_panel/event_details/use_get_alert_details_flyout_link'; +import { TestProvidersComponent } from '../../../../common/mock'; +import { useGetAlertDetailsFlyoutLink } from '../../../../timelines/components/side_panel/event_details/use_get_alert_details_flyout_link'; import { FLYOUT_URL_PARAM } from '../../shared/hooks/url/use_sync_flyout_state_with_url'; -jest.mock('../../../common/lib/kibana'); +jest.mock('../../../../common/lib/kibana'); jest.mock('../hooks/use_assistant'); jest.mock( - '../../../timelines/components/side_panel/event_details/use_get_alert_details_flyout_link' + '../../../../timelines/components/side_panel/event_details/use_get_alert_details_flyout_link' ); moment.suppressDeprecationWarnings = true; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/header_title.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/header_title.tsx similarity index 89% rename from x-pack/plugins/security_solution/public/flyout/right/components/header_title.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/header_title.tsx index 518c5cfd984f1..9f8373c2b3991 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/header_title.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/header_title.tsx @@ -14,19 +14,19 @@ import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { FLYOUT_URL_PARAM } from '../../shared/hooks/url/use_sync_flyout_state_with_url'; -import { CopyToClipboard } from '../../shared/components/copy_to_clipboard'; -import { useGetAlertDetailsFlyoutLink } from '../../../timelines/components/side_panel/event_details/use_get_alert_details_flyout_link'; +import { CopyToClipboard } from '../../../shared/components/copy_to_clipboard'; +import { useGetAlertDetailsFlyoutLink } from '../../../../timelines/components/side_panel/event_details/use_get_alert_details_flyout_link'; import { DocumentStatus } from './status'; import { useAssistant } from '../hooks/use_assistant'; import { ALERT_SUMMARY_CONVERSATION_ID, EVENT_SUMMARY_CONVERSATION_ID, -} from '../../../common/components/event_details/translations'; +} from '../../../../common/components/event_details/translations'; import { DocumentSeverity } from './severity'; import { RiskScore } from './risk_score'; -import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; +import { useBasicDataFromDetailsData } from '../../../../timelines/components/side_panel/event_details/helpers'; import { useRightPanelContext } from '../context'; -import { PreferenceFormattedDate } from '../../../common/components/formatted_date'; +import { PreferenceFormattedDate } from '../../../../common/components/formatted_date'; import { FLYOUT_HEADER_TITLE_TEST_ID, SHARE_BUTTON_TEST_ID } from './test_ids'; export interface HeaderTitleProps { @@ -83,7 +83,7 @@ export const HeaderTitle: VFC = memo(({ flyoutIsExpandable }) { + modifier={(value: string) => { const query = new URLSearchParams(window.location.search); return `${value}&${FLYOUT_URL_PARAM}=${query.get(FLYOUT_URL_PARAM)}`; }} diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.test.tsx similarity index 89% rename from x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.test.tsx index 47754818704dd..cf5db0460b88a 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.test.tsx @@ -12,11 +12,11 @@ import { HIGHLIGHTED_FIELDS_DETAILS_TEST_ID, HIGHLIGHTED_FIELDS_TITLE_TEST_ID } import { HighlightedFields } from './highlighted_fields'; import { mockDataFormattedForFieldBrowser } from '../../shared/mocks/mock_data_formatted_for_field_browser'; import { useHighlightedFields } from '../../shared/hooks/use_highlighted_fields'; -import { TestProviders } from '../../../common/mock'; -import { useRuleWithFallback } from '../../../detection_engine/rule_management/logic/use_rule_with_fallback'; +import { TestProviders } from '../../../../common/mock'; +import { useRuleWithFallback } from '../../../../detection_engine/rule_management/logic/use_rule_with_fallback'; jest.mock('../../shared/hooks/use_highlighted_fields'); -jest.mock('../../../detection_engine/rule_management/logic/use_rule_with_fallback'); +jest.mock('../../../../detection_engine/rule_management/logic/use_rule_with_fallback'); const renderHighlightedFields = (contextValue: RightPanelContext) => render( diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.tsx similarity index 93% rename from x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.tsx index 5119412824bf3..41f1afbceaa7e 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields.tsx @@ -10,16 +10,16 @@ import React, { useMemo } from 'react'; import type { EuiBasicTableColumn } from '@elastic/eui'; import { EuiFlexGroup, EuiFlexItem, EuiInMemoryTable, EuiPanel, EuiTitle } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { getSourcererScopeId } from '../../../helpers'; +import { getSourcererScopeId } from '../../../../helpers'; import { convertHighlightedFieldsToTableRow } from '../../shared/utils/highlighted_fields_helpers'; -import { useRuleWithFallback } from '../../../detection_engine/rule_management/logic/use_rule_with_fallback'; -import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; +import { useRuleWithFallback } from '../../../../detection_engine/rule_management/logic/use_rule_with_fallback'; +import { useBasicDataFromDetailsData } from '../../../../timelines/components/side_panel/event_details/helpers'; import { HighlightedFieldsCell } from './highlighted_fields_cell'; import { CellActionsMode, SecurityCellActions, SecurityCellActionsTrigger, -} from '../../../common/components/cell_actions'; +} from '../../../../common/components/cell_actions'; import { HIGHLIGHTED_FIELDS_DETAILS_TEST_ID, HIGHLIGHTED_FIELDS_TITLE_TEST_ID } from './test_ids'; import { useRightPanelContext } from '../context'; import { useHighlightedFields } from '../../shared/hooks/use_highlighted_fields'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields_cell.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.test.tsx similarity index 95% rename from x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields_cell.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.test.tsx index 2ed33df412a64..6f4711651ffc2 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields_cell.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.test.tsx @@ -16,11 +16,11 @@ import { HighlightedFieldsCell } from './highlighted_fields_cell'; import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; import { RightPanelContext } from '../context'; import { LeftPanelInsightsTab, LeftPanelKey } from '../../left'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { ENTITIES_TAB_ID } from '../../left/components/entities_details'; -import { useGetEndpointDetails } from '../../../management/hooks'; +import { useGetEndpointDetails } from '../../../../management/hooks'; -jest.mock('../../../management/hooks'); +jest.mock('../../../../management/hooks'); const flyoutContextValue = { openLeftPanel: jest.fn(), diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields_cell.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.tsx similarity index 94% rename from x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields_cell.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.tsx index a603d0528c119..60c561116c38a 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/highlighted_fields_cell.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/highlighted_fields_cell.tsx @@ -9,13 +9,13 @@ import type { VFC } from 'react'; import React, { useCallback } from 'react'; import { EuiFlexItem, EuiLink } from '@elastic/eui'; import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; -import { EndpointAgentStatusById } from '../../../common/components/endpoint/endpoint_agent_status'; +import { EndpointAgentStatusById } from '../../../../common/components/endpoint/endpoint_agent_status'; import { useRightPanelContext } from '../context'; import { AGENT_STATUS_FIELD_NAME, HOST_NAME_FIELD_NAME, USER_NAME_FIELD_NAME, -} from '../../../timelines/components/timeline/body/renderers/constants'; +} from '../../../../timelines/components/timeline/body/renderers/constants'; import { LeftPanelInsightsTab, LeftPanelKey } from '../../left'; import { ENTITIES_TAB_ID } from '../../left/components/entities_details'; import { diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/host_entity_overview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.test.tsx similarity index 91% rename from x-pack/plugins/security_solution/public/flyout/right/components/host_entity_overview.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.test.tsx index c690e8a700119..25c25b87aa38d 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/host_entity_overview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.test.tsx @@ -6,11 +6,11 @@ */ import React from 'react'; import { render } from '@testing-library/react'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { HostEntityOverview } from './host_entity_overview'; -import { useRiskScore } from '../../../explore/containers/risk_score'; -import { useHostDetails } from '../../../explore/hosts/containers/hosts/details'; -import { useFirstLastSeen } from '../../../common/containers/use_first_last_seen'; +import { useRiskScore } from '../../../../explore/containers/risk_score'; +import { useHostDetails } from '../../../../explore/hosts/containers/hosts/details'; +import { useFirstLastSeen } from '../../../../common/containers/use_first_last_seen'; import { ENTITIES_HOST_OVERVIEW_OS_FAMILY_TEST_ID, ENTITIES_HOST_OVERVIEW_LAST_SEEN_TEST_ID, @@ -45,27 +45,27 @@ const flyoutContextValue = { } as unknown as ExpandableFlyoutContext; const mockUseGlobalTime = jest.fn().mockReturnValue({ from, to }); -jest.mock('../../../common/containers/use_global_time', () => { +jest.mock('../../../../common/containers/use_global_time', () => { return { useGlobalTime: (...props: unknown[]) => mockUseGlobalTime(...props), }; }); const mockUseSourcererDataView = jest.fn().mockReturnValue({ selectedPatterns }); -jest.mock('../../../common/containers/sourcerer', () => { +jest.mock('../../../../common/containers/sourcerer', () => { return { useSourcererDataView: (...props: unknown[]) => mockUseSourcererDataView(...props), }; }); const mockUseHostDetails = useHostDetails as jest.Mock; -jest.mock('../../../explore/hosts/containers/hosts/details'); +jest.mock('../../../../explore/hosts/containers/hosts/details'); const mockUseRiskScore = useRiskScore as jest.Mock; -jest.mock('../../../explore/containers/risk_score'); +jest.mock('../../../../explore/containers/risk_score'); const mockUseFirstLastSeen = useFirstLastSeen as jest.Mock; -jest.mock('../../../common/containers/use_first_last_seen'); +jest.mock('../../../../common/containers/use_first_last_seen'); const renderHostEntityContent = () => render( diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/host_entity_overview.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.tsx similarity index 85% rename from x-pack/plugins/security_solution/public/flyout/right/components/host_entity_overview.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.tsx index 30ccab532234e..fdc3edf96e9b8 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/host_entity_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/host_entity_overview.tsx @@ -20,26 +20,26 @@ import { getOr } from 'lodash/fp'; import { i18n } from '@kbn/i18n'; import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { useRightPanelContext } from '../context'; -import type { DescriptionList } from '../../../../common/utility_types'; +import type { DescriptionList } from '../../../../../common/utility_types'; import { FirstLastSeen, FirstLastSeenType, -} from '../../../common/components/first_last_seen/first_last_seen'; -import { buildHostNamesFilter, RiskScoreEntity } from '../../../../common/search_strategy'; -import { getEmptyTagValue } from '../../../common/components/empty_value'; -import { DefaultFieldRenderer } from '../../../timelines/components/field_renderers/field_renderers'; -import { DescriptionListStyled } from '../../../common/components/page'; -import { OverviewDescriptionList } from '../../../common/components/overview_description_list'; -import { RiskScoreLevel } from '../../../explore/components/risk_score/severity/common'; -import { useSourcererDataView } from '../../../common/containers/sourcerer'; -import { useGlobalTime } from '../../../common/containers/use_global_time'; -import { useRiskScore } from '../../../explore/containers/risk_score'; -import { useHostDetails } from '../../../explore/hosts/containers/hosts/details'; +} from '../../../../common/components/first_last_seen/first_last_seen'; +import { buildHostNamesFilter, RiskScoreEntity } from '../../../../../common/search_strategy'; +import { getEmptyTagValue } from '../../../../common/components/empty_value'; +import { DefaultFieldRenderer } from '../../../../timelines/components/field_renderers/field_renderers'; +import { DescriptionListStyled } from '../../../../common/components/page'; +import { OverviewDescriptionList } from '../../../../common/components/overview_description_list'; +import { RiskScoreLevel } from '../../../../explore/components/risk_score/severity/common'; +import { useSourcererDataView } from '../../../../common/containers/sourcerer'; +import { useGlobalTime } from '../../../../common/containers/use_global_time'; +import { useRiskScore } from '../../../../explore/containers/risk_score'; +import { useHostDetails } from '../../../../explore/hosts/containers/hosts/details'; import { FAMILY, LAST_SEEN, HOST_RISK_LEVEL, -} from '../../../overview/components/host_overview/translations'; +} from '../../../../overview/components/host_overview/translations'; import { ENTITIES_TAB_ID } from '../../left/components/entities_details'; import { ENTITIES_HOST_OVERVIEW_TEST_ID, @@ -50,7 +50,7 @@ import { ENTITIES_HOST_OVERVIEW_LOADING_TEST_ID, } from './test_ids'; import { LeftPanelInsightsTab, LeftPanelKey } from '../../left'; -import { RiskScoreDocTooltip } from '../../../overview/components/common'; +import { RiskScoreDocTooltip } from '../../../../overview/components/common'; const HOST_ICON = 'storage'; const CONTEXT_ID = `flyout-host-entity-overview`; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/insights_section.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.test.tsx similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/right/components/insights_section.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.test.tsx index 95bf7598a8197..a7edc0927fb12 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/insights_section.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.test.tsx @@ -9,13 +9,13 @@ import React from 'react'; import { render } from '@testing-library/react'; import { RightPanelContext } from '../context'; import { INSIGHTS_HEADER_TEST_ID } from './test_ids'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { mockGetFieldsData } from '../../shared/mocks/mock_get_fields_data'; import { mockDataFormattedForFieldBrowser } from '../../shared/mocks/mock_data_formatted_for_field_browser'; import { InsightsSection } from './insights_section'; -import { useAlertPrevalence } from '../../../common/containers/alerts/use_alert_prevalence'; +import { useAlertPrevalence } from '../../../../common/containers/alerts/use_alert_prevalence'; -jest.mock('../../../common/containers/alerts/use_alert_prevalence'); +jest.mock('../../../../common/containers/alerts/use_alert_prevalence'); const mockDispatch = jest.fn(); jest.mock('react-redux', () => { diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/insights_section.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/insights_section.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_section.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/insights_summary_row.stories.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/insights_summary_row.stories.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.stories.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/insights_summary_row.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/insights_summary_row.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/insights_summary_row.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/right/components/insights_summary_row.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.tsx index 5aacae978c721..ed6d858ed3064 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/insights_summary_row.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/insights_summary_row.tsx @@ -17,7 +17,7 @@ import { EuiSkeletonText, useEuiTheme, } from '@elastic/eui'; -import { FormattedCount } from '../../../common/components/formatted_number'; +import { FormattedCount } from '../../../../common/components/formatted_number'; export interface InsightsSummaryRowProps { /** diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/investigation_guide.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/investigation_guide.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/investigation_guide.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/investigation_guide.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_guide.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/investigation_section.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.test.tsx similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/right/components/investigation_section.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.test.tsx index 3a0b0ad4a3b3c..0d53dcd97a120 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/investigation_section.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.test.tsx @@ -15,10 +15,10 @@ import { import { RightPanelContext } from '../context'; import { InvestigationSection } from './investigation_section'; import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; -import { useRuleWithFallback } from '../../../detection_engine/rule_management/logic/use_rule_with_fallback'; +import { useRuleWithFallback } from '../../../../detection_engine/rule_management/logic/use_rule_with_fallback'; import { mockDataFormattedForFieldBrowser } from '../../shared/mocks/mock_data_formatted_for_field_browser'; -jest.mock('../../../detection_engine/rule_management/logic/use_rule_with_fallback'); +jest.mock('../../../../detection_engine/rule_management/logic/use_rule_with_fallback'); const flyoutContextValue = {} as unknown as ExpandableFlyoutContext; const panelContextValue = { diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/investigation_section.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/investigation_section.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/investigation_section.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/mitre_attack.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/mitre_attack.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/mitre_attack.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.tsx similarity index 93% rename from x-pack/plugins/security_solution/public/flyout/right/components/mitre_attack.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.tsx index 7eaf175cc0e5c..2e56e2013d444 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/mitre_attack.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/mitre_attack.tsx @@ -9,7 +9,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiTitle } from '@elastic/eui'; import type { FC } from 'react'; import React, { useMemo } from 'react'; import { MITRE_ATTACK_DETAILS_TEST_ID, MITRE_ATTACK_TITLE_TEST_ID } from './test_ids'; -import { getMitreComponentParts } from '../../../detections/mitre/get_mitre_threat_component'; +import { getMitreComponentParts } from '../../../../detections/mitre/get_mitre_threat_component'; import { useRightPanelContext } from '../context'; export const MitreAttack: FC = () => { diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.test.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.test.tsx index c9d3943ee936f..79fcf89977291 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.test.tsx @@ -7,7 +7,7 @@ import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; import { render } from '@testing-library/react'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { RightPanelContext } from '../context'; import { PREVALENCE_TEST_ID } from './test_ids'; import { LeftPanelInsightsTab, LeftPanelKey } from '../../left'; @@ -20,7 +20,7 @@ import { EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, EXPANDABLE_PANEL_LOADING_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../shared/components/test_ids'; +} from '../../../shared/components/test_ids'; import { usePrevalence } from '../../shared/hooks/use_prevalence'; import { mockContextValue } from '../mocks/mock_context'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.tsx index 5aad186b24c0c..674b9d662f460 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/prevalence_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/prevalence_overview.tsx @@ -10,7 +10,7 @@ import React, { useCallback, useMemo } from 'react'; import { EuiFlexGroup } from '@elastic/eui'; import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { FormattedMessage } from '@kbn/i18n-react'; -import { ExpandablePanel } from '../../shared/components/expandable_panel'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; import { usePrevalence } from '../../shared/hooks/use_prevalence'; import { PREVALENCE_TEST_ID } from './test_ids'; import { useRightPanelContext } from '../context'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/reason.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/reason.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/reason.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/reason.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/reason.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/reason.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/right/components/reason.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/reason.tsx index 0d022f3a0735e..ca0de7118a065 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/reason.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/reason.tsx @@ -19,7 +19,7 @@ import { REASON_DETAILS_TEST_ID, REASON_TITLE_TEST_ID, } from './test_ids'; -import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; +import { useBasicDataFromDetailsData } from '../../../../timelines/components/side_panel/event_details/helpers'; import { useRightPanelContext } from '../context'; /** diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/related_alerts_by_ancestry.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/related_alerts_by_ancestry.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/related_alerts_by_ancestry.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/related_alerts_by_ancestry.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_ancestry.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/related_alerts_by_same_source_event.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/related_alerts_by_same_source_event.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/related_alerts_by_same_source_event.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/related_alerts_by_same_source_event.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_same_source_event.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/related_alerts_by_session.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/related_alerts_by_session.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/related_alerts_by_session.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/related_alerts_by_session.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_alerts_by_session.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/related_cases.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_cases.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/related_cases.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_cases.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/related_cases.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_cases.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/related_cases.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/related_cases.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/response_button.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_button.test.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/flyout/right/components/response_button.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_button.test.tsx index e18d815e93cf0..afab956e4d33c 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/response_button.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_button.test.tsx @@ -14,7 +14,7 @@ import { mockContextValue } from '../mocks/mock_context'; import { mockFlyoutContextValue } from '../../shared/mocks/mock_flyout_context'; import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; import { ResponseButton } from './response_button'; -import type { SearchHit } from '../../../../common/search_strategy'; +import type { SearchHit } from '../../../../../common/search_strategy'; const mockValidSearchHit = { fields: { diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/response_button.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_button.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/response_button.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_button.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/response_section.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_section.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/response_section.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_section.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/response_section.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/response_section.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/response_section.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/risk_score.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/risk_score.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/risk_score.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/risk_score.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/risk_score.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/risk_score.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/risk_score.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/risk_score.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/session_preview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview.test.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/flyout/right/components/session_preview.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview.test.tsx index 3f93b24e4b018..775e195e764fd 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/session_preview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview.test.tsx @@ -8,7 +8,7 @@ import { render, screen } from '@testing-library/react'; import { useProcessData } from '../hooks/use_process_data'; import { SessionPreview } from './session_preview'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import React from 'react'; import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; import { RightPanelContext } from '../context'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/session_preview.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview.tsx similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/right/components/session_preview.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview.tsx index 889d0c2f62c04..63f07cb7ab1f3 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/session_preview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview.tsx @@ -12,10 +12,10 @@ import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; import { SESSION_PREVIEW_TEST_ID } from './test_ids'; import { useRightPanelContext } from '../context'; -import { SIGNAL_RULE_NAME_FIELD_NAME } from '../../../timelines/components/timeline/body/renderers/constants'; -import { PreferenceFormattedDate } from '../../../common/components/formatted_date'; +import { SIGNAL_RULE_NAME_FIELD_NAME } from '../../../../timelines/components/timeline/body/renderers/constants'; +import { PreferenceFormattedDate } from '../../../../common/components/formatted_date'; import { useProcessData } from '../hooks/use_process_data'; -import { RenderRuleName } from '../../../timelines/components/timeline/body/renderers/formatted_field_helpers'; +import { RenderRuleName } from '../../../../timelines/components/timeline/body/renderers/formatted_field_helpers'; /** * One-off helper to make sure that inline values are rendered consistently diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/session_preview_container.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.test.tsx similarity index 95% rename from x-pack/plugins/security_solution/public/flyout/right/components/session_preview_container.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.test.tsx index e47673721e5b7..cfd5bcc525700 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/session_preview_container.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.test.tsx @@ -6,12 +6,12 @@ */ import { render, screen } from '@testing-library/react'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import React from 'react'; import { RightPanelContext } from '../context'; import { SessionPreviewContainer } from './session_preview_container'; import { useSessionPreview } from '../hooks/use_session_preview'; -import { useLicense } from '../../../common/hooks/use_license'; +import { useLicense } from '../../../../common/hooks/use_license'; import { SESSION_PREVIEW_TEST_ID } from './test_ids'; import { EXPANDABLE_PANEL_CONTENT_TEST_ID, @@ -19,11 +19,11 @@ import { EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../shared/components/test_ids'; +} from '../../../shared/components/test_ids'; import { mockGetFieldsData } from '../../shared/mocks/mock_get_fields_data'; jest.mock('../hooks/use_session_preview'); -jest.mock('../../../common/hooks/use_license'); +jest.mock('../../../../common/hooks/use_license'); const NO_DATA_MESSAGE = 'You can only view Linux session details if you’ve enabled the Include session data setting in your Elastic Defend integration policy. Refer to Enable Session View dataExternal link(opens in a new tab or window) for more information.'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/session_preview_container.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx similarity index 89% rename from x-pack/plugins/security_solution/public/flyout/right/components/session_preview_container.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx index f88d9d3f31a2c..101c067ad661d 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/session_preview_container.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx @@ -11,17 +11,17 @@ import { useDispatch } from 'react-redux'; import { EuiLink, useEuiTheme } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { css } from '@emotion/css/dist/emotion-css.cjs'; -import { useLicense } from '../../../common/hooks/use_license'; +import { useLicense } from '../../../../common/hooks/use_license'; import { SessionPreview } from './session_preview'; import { useSessionPreview } from '../hooks/use_session_preview'; -import { useInvestigateInTimeline } from '../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; +import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; import { useRightPanelContext } from '../context'; -import { ALERTS_ACTIONS } from '../../../common/lib/apm/user_actions'; -import { ExpandablePanel } from '../../shared/components/expandable_panel'; +import { ALERTS_ACTIONS } from '../../../../common/lib/apm/user_actions'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; import { SESSION_PREVIEW_TEST_ID } from './test_ids'; -import { useStartTransaction } from '../../../common/lib/apm/use_start_transaction'; -import { setActiveTabTimeline } from '../../../timelines/store/timeline/actions'; -import { getScopedActions } from '../../../helpers'; +import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction'; +import { setActiveTabTimeline } from '../../../../timelines/store/timeline/actions'; +import { getScopedActions } from '../../../../helpers'; const timelineId = 'timeline-1'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/severity.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/severity.test.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/right/components/severity.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/severity.test.tsx index 685bcc8cc4e0e..968dbfa39a0eb 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/severity.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/severity.test.tsx @@ -11,7 +11,7 @@ import { RightPanelContext } from '../context'; import { SEVERITY_TITLE_TEST_ID, SEVERITY_VALUE_TEST_ID } from './test_ids'; import { DocumentSeverity } from './severity'; import { mockGetFieldsData } from '../../shared/mocks/mock_get_fields_data'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; const renderDocumentSeverity = (contextValue: RightPanelContext) => render( diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/severity.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/severity.tsx similarity index 88% rename from x-pack/plugins/security_solution/public/flyout/right/components/severity.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/severity.tsx index 7ba94ab3d6a80..e7ebca5622725 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/severity.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/severity.tsx @@ -12,11 +12,11 @@ import { ALERT_SEVERITY } from '@kbn/rule-data-utils'; import type { Severity } from '@kbn/securitysolution-io-ts-alerting-types'; import { CellActionsMode } from '@kbn/cell-actions'; import { FormattedMessage } from '@kbn/i18n-react'; -import { getSourcererScopeId } from '../../../helpers'; -import { SecurityCellActions } from '../../../common/components/cell_actions'; -import { SecurityCellActionsTrigger } from '../../../actions/constants'; +import { getSourcererScopeId } from '../../../../helpers'; +import { SecurityCellActions } from '../../../../common/components/cell_actions'; +import { SecurityCellActionsTrigger } from '../../../../actions/constants'; import { useRightPanelContext } from '../context'; -import { SeverityBadge } from '../../../detections/components/rules/severity_badge'; +import { SeverityBadge } from '../../../../detections/components/rules/severity_badge'; import { SEVERITY_TITLE_TEST_ID } from './test_ids'; const isSeverity = (x: unknown): x is Severity => diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/status.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/status.test.tsx similarity index 89% rename from x-pack/plugins/security_solution/public/flyout/right/components/status.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/status.test.tsx index 9cb2f871015e6..0b52e0ef67665 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/status.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/status.test.tsx @@ -11,11 +11,11 @@ import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; import { RightPanelContext } from '../context'; import { DocumentStatus } from './status'; import { mockDataFormattedForFieldBrowser } from '../../shared/mocks/mock_data_formatted_for_field_browser'; -import { TestProviders } from '../../../common/mock'; -import { useAlertsActions } from '../../../detections/components/alerts_table/timeline_actions/use_alerts_actions'; +import { TestProviders } from '../../../../common/mock'; +import { useAlertsActions } from '../../../../detections/components/alerts_table/timeline_actions/use_alerts_actions'; import { STATUS_BUTTON_TEST_ID } from './test_ids'; -jest.mock('../../../detections/components/alerts_table/timeline_actions/use_alerts_actions'); +jest.mock('../../../../detections/components/alerts_table/timeline_actions/use_alerts_actions'); const flyoutContextValue = { closeFlyout: jest.fn(), diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/status.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/status.tsx similarity index 79% rename from x-pack/plugins/security_solution/public/flyout/right/components/status.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/status.tsx index 0c7ba8de0c4d7..325962d689228 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/status.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/status.tsx @@ -10,17 +10,17 @@ import React, { useMemo } from 'react'; import { find } from 'lodash/fp'; import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { CellActionsMode } from '@kbn/cell-actions'; -import { getSourcererScopeId } from '../../../helpers'; -import { SecurityCellActions } from '../../../common/components/cell_actions'; +import { getSourcererScopeId } from '../../../../helpers'; +import { SecurityCellActions } from '../../../../common/components/cell_actions'; import type { EnrichedFieldInfo, EnrichedFieldInfoWithValues, -} from '../../../common/components/event_details/types'; -import { SIGNAL_STATUS_FIELD_NAME } from '../../../timelines/components/timeline/body/renderers/constants'; -import { StatusPopoverButton } from '../../../common/components/event_details/overview/status_popover_button'; +} from '../../../../common/components/event_details/types'; +import { SIGNAL_STATUS_FIELD_NAME } from '../../../../timelines/components/timeline/body/renderers/constants'; +import { StatusPopoverButton } from '../../../../common/components/event_details/overview/status_popover_button'; import { useRightPanelContext } from '../context'; -import { getEnrichedFieldInfo } from '../../../common/components/event_details/helpers'; -import { SecurityCellActionsTrigger } from '../../../actions/constants'; +import { getEnrichedFieldInfo } from '../../../../common/components/event_details/helpers'; +import { SecurityCellActionsTrigger } from '../../../../actions/constants'; /** * Checks if the field info has data to convert EnrichedFieldInfo into EnrichedFieldInfoWithValues diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/suppressed_alerts.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/suppressed_alerts.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/suppressed_alerts.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/right/components/suppressed_alerts.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.tsx index 11c67e60d0fab..ce466a66a499d 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/suppressed_alerts.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/suppressed_alerts.tsx @@ -13,7 +13,7 @@ import { CORRELATIONS_SUPPRESSED_ALERTS_TECHNICAL_PREVIEW_TEST_ID, } from './test_ids'; import { InsightsSummaryRow } from './insights_summary_row'; -import { SUPPRESSED_ALERTS_COUNT_TECHNICAL_PREVIEW } from '../../../common/components/event_details/insights/translations'; +import { SUPPRESSED_ALERTS_COUNT_TECHNICAL_PREVIEW } from '../../../../common/components/event_details/insights/translations'; export interface SuppressedAlertsProps { /** diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/test_ids.ts similarity index 99% rename from x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/test_ids.ts index acff67542b0f4..21f92d76c96cb 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/test_ids.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { PREFIX } from '../../shared/test_ids'; +import { PREFIX } from '../../../shared/test_ids'; import { CONTENT_TEST_ID, HEADER_TEST_ID } from './expandable_section'; /* Header */ diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/threat_intelligence_overview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.test.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/flyout/right/components/threat_intelligence_overview.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.test.tsx index 4b0b5816f3014..1b8a646f1d356 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/threat_intelligence_overview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; import { RightPanelContext } from '../context'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { ThreatIntelligenceOverview } from './threat_intelligence_overview'; import { LeftPanelInsightsTab, LeftPanelKey } from '../../left'; import { useFetchThreatIntelligence } from '../hooks/use_fetch_threat_intelligence'; @@ -22,7 +22,7 @@ import { EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, EXPANDABLE_PANEL_LOADING_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, -} from '../../shared/components/test_ids'; +} from '../../../shared/components/test_ids'; jest.mock('../hooks/use_fetch_threat_intelligence'); diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/threat_intelligence_overview.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.tsx similarity index 98% rename from x-pack/plugins/security_solution/public/flyout/right/components/threat_intelligence_overview.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.tsx index 9b5ad192ec371..ebaea597219ac 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/threat_intelligence_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/threat_intelligence_overview.tsx @@ -10,7 +10,7 @@ import React, { useCallback } from 'react'; import { EuiFlexGroup } from '@elastic/eui'; import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { FormattedMessage } from '@kbn/i18n-react'; -import { ExpandablePanel } from '../../shared/components/expandable_panel'; +import { ExpandablePanel } from '../../../shared/components/expandable_panel'; import { useFetchThreatIntelligence } from '../hooks/use_fetch_threat_intelligence'; import { InsightsSummaryRow } from './insights_summary_row'; import { useRightPanelContext } from '../context'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/user_entity_overview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.test.tsx similarity index 91% rename from x-pack/plugins/security_solution/public/flyout/right/components/user_entity_overview.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.test.tsx index 798e7136253bb..37b4666611efe 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/user_entity_overview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.test.tsx @@ -6,10 +6,10 @@ */ import React from 'react'; import { render } from '@testing-library/react'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { UserEntityOverview } from './user_entity_overview'; -import { useRiskScore } from '../../../explore/containers/risk_score'; -import { useFirstLastSeen } from '../../../common/containers/use_first_last_seen'; +import { useRiskScore } from '../../../../explore/containers/risk_score'; +import { useFirstLastSeen } from '../../../../common/containers/use_first_last_seen'; import { ENTITIES_USER_OVERVIEW_DOMAIN_TEST_ID, ENTITIES_USER_OVERVIEW_LAST_SEEN_TEST_ID, @@ -17,7 +17,7 @@ import { ENTITIES_USER_OVERVIEW_RISK_LEVEL_TEST_ID, ENTITIES_USER_OVERVIEW_LOADING_TEST_ID, } from './test_ids'; -import { useObservedUserDetails } from '../../../explore/users/containers/users/observed_details'; +import { useObservedUserDetails } from '../../../../explore/users/containers/users/observed_details'; import { mockContextValue } from '../mocks/mock_context'; import { mockDataFormattedForFieldBrowser } from '../../shared/mocks/mock_data_formatted_for_field_browser'; import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; @@ -45,27 +45,27 @@ const flyoutContextValue = { } as unknown as ExpandableFlyoutContext; const mockUseGlobalTime = jest.fn().mockReturnValue({ from, to }); -jest.mock('../../../common/containers/use_global_time', () => { +jest.mock('../../../../common/containers/use_global_time', () => { return { useGlobalTime: (...props: unknown[]) => mockUseGlobalTime(...props), }; }); const mockUseSourcererDataView = jest.fn().mockReturnValue({ selectedPatterns }); -jest.mock('../../../common/containers/sourcerer', () => { +jest.mock('../../../../common/containers/sourcerer', () => { return { useSourcererDataView: (...props: unknown[]) => mockUseSourcererDataView(...props), }; }); const mockUseUserDetails = useObservedUserDetails as jest.Mock; -jest.mock('../../../explore/users/containers/users/observed_details'); +jest.mock('../../../../explore/users/containers/users/observed_details'); const mockUseRiskScore = useRiskScore as jest.Mock; -jest.mock('../../../explore/containers/risk_score'); +jest.mock('../../../../explore/containers/risk_score'); const mockUseFirstLastSeen = useFirstLastSeen as jest.Mock; -jest.mock('../../../common/containers/use_first_last_seen'); +jest.mock('../../../../common/containers/use_first_last_seen'); const renderUserEntityOverview = () => render( diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/user_entity_overview.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.tsx similarity index 84% rename from x-pack/plugins/security_solution/public/flyout/right/components/user_entity_overview.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.tsx index 9f28753a5c1cc..cd1a057b6fbc0 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/user_entity_overview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/user_entity_overview.tsx @@ -22,25 +22,25 @@ import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { LeftPanelInsightsTab, LeftPanelKey } from '../../left'; import { ENTITIES_TAB_ID } from '../../left/components/entities_details'; import { useRightPanelContext } from '../context'; -import type { DescriptionList } from '../../../../common/utility_types'; +import type { DescriptionList } from '../../../../../common/utility_types'; import { FirstLastSeen, FirstLastSeenType, -} from '../../../common/components/first_last_seen/first_last_seen'; -import { buildUserNamesFilter, RiskScoreEntity } from '../../../../common/search_strategy'; -import { getEmptyTagValue } from '../../../common/components/empty_value'; -import { DefaultFieldRenderer } from '../../../timelines/components/field_renderers/field_renderers'; -import { DescriptionListStyled } from '../../../common/components/page'; -import { OverviewDescriptionList } from '../../../common/components/overview_description_list'; -import { RiskScoreLevel } from '../../../explore/components/risk_score/severity/common'; -import { useSourcererDataView } from '../../../common/containers/sourcerer'; -import { useGlobalTime } from '../../../common/containers/use_global_time'; -import { useRiskScore } from '../../../explore/containers/risk_score'; +} from '../../../../common/components/first_last_seen/first_last_seen'; +import { buildUserNamesFilter, RiskScoreEntity } from '../../../../../common/search_strategy'; +import { getEmptyTagValue } from '../../../../common/components/empty_value'; +import { DefaultFieldRenderer } from '../../../../timelines/components/field_renderers/field_renderers'; +import { DescriptionListStyled } from '../../../../common/components/page'; +import { OverviewDescriptionList } from '../../../../common/components/overview_description_list'; +import { RiskScoreLevel } from '../../../../explore/components/risk_score/severity/common'; +import { useSourcererDataView } from '../../../../common/containers/sourcerer'; +import { useGlobalTime } from '../../../../common/containers/use_global_time'; +import { useRiskScore } from '../../../../explore/containers/risk_score'; import { USER_DOMAIN, LAST_SEEN, USER_RISK_LEVEL, -} from '../../../overview/components/user_overview/translations'; +} from '../../../../overview/components/user_overview/translations'; import { ENTITIES_USER_OVERVIEW_TEST_ID, ENTITIES_USER_OVERVIEW_DOMAIN_TEST_ID, @@ -49,8 +49,8 @@ import { ENTITIES_USER_OVERVIEW_LINK_TEST_ID, ENTITIES_USER_OVERVIEW_LOADING_TEST_ID, } from './test_ids'; -import { useObservedUserDetails } from '../../../explore/users/containers/users/observed_details'; -import { RiskScoreDocTooltip } from '../../../overview/components/common'; +import { useObservedUserDetails } from '../../../../explore/users/containers/users/observed_details'; +import { RiskScoreDocTooltip } from '../../../../overview/components/common'; const USER_ICON = 'user'; const CONTEXT_ID = `flyout-user-entity-overview`; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx similarity index 90% rename from x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx index 3d34a7e02aff3..14a0136c73ed9 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx @@ -9,15 +9,15 @@ import React from 'react'; import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; import { render } from '@testing-library/react'; import { VISUALIZATIONS_SECTION_HEADER_TEST_ID } from './test_ids'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; import { VisualizationsSection } from './visualizations_section'; import { mockContextValue } from '../mocks/mock_context'; import { mockDataFormattedForFieldBrowser } from '../../shared/mocks/mock_data_formatted_for_field_browser'; import { RightPanelContext } from '../context'; -import { useAlertPrevalenceFromProcessTree } from '../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; +import { useAlertPrevalenceFromProcessTree } from '../../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; -jest.mock('../../../common/containers/alerts/use_alert_prevalence_from_process_tree', () => ({ +jest.mock('../../../../common/containers/alerts/use_alert_prevalence_from_process_tree', () => ({ useAlertPrevalenceFromProcessTree: jest.fn(), })); const mockUseAlertPrevalenceFromProcessTree = useAlertPrevalenceFromProcessTree as jest.Mock; diff --git a/x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/components/visualizations_section.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/content.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/content.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/content.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/content.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/context.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/context.tsx similarity index 87% rename from x-pack/plugins/security_solution/public/flyout/right/context.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/context.tsx index 66a5ed3096f03..b46645aaf883c 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/context.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/context.tsx @@ -10,13 +10,13 @@ import React, { createContext, memo, useContext, useMemo } from 'react'; import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; import { useEventDetails } from '../shared/hooks/use_event_details'; -import { FlyoutError } from '../shared/components/flyout_error'; -import { FlyoutLoading } from '../shared/components/flyout_loading'; -import type { SearchHit } from '../../../common/search_strategy'; -import { useBasicDataFromDetailsData } from '../../timelines/components/side_panel/event_details/helpers'; +import { FlyoutError } from '../../shared/components/flyout_error'; +import { FlyoutLoading } from '../../shared/components/flyout_loading'; +import type { SearchHit } from '../../../../common/search_strategy'; +import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; import type { RightPanelProps } from '.'; -import type { GetFieldsData } from '../../common/hooks/use_get_fields_data'; -import { useRuleWithFallback } from '../../detection_engine/rule_management/logic/use_rule_with_fallback'; +import type { GetFieldsData } from '../../../common/hooks/use_get_fields_data'; +import { useRuleWithFallback } from '../../../detection_engine/rule_management/logic/use_rule_with_fallback'; export interface RightPanelContext { /** diff --git a/x-pack/plugins/security_solution/public/flyout/right/footer.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/footer.tsx similarity index 88% rename from x-pack/plugins/security_solution/public/flyout/right/footer.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/footer.tsx index b11f1ad1f0013..029c1fea91dae 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/footer.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/footer.tsx @@ -8,9 +8,9 @@ import type { FC } from 'react'; import React, { useCallback } from 'react'; import { useExpandableFlyoutContext } from '@kbn/expandable-flyout'; -import { FlyoutFooter } from '../../timelines/components/side_panel/event_details/flyout'; +import { FlyoutFooter } from '../../../timelines/components/side_panel/event_details/flyout'; import { useRightPanelContext } from './context'; -import { useHostIsolationTools } from '../../timelines/components/side_panel/event_details/use_host_isolation_tools'; +import { useHostIsolationTools } from '../../../timelines/components/side_panel/event_details/use_host_isolation_tools'; /** * diff --git a/x-pack/plugins/security_solution/public/flyout/right/header.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/header.test.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/right/header.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/header.test.tsx index b226ddc8289b9..96a4d2c524ec0 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/header.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/header.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import { ExpandableFlyoutContext } from '@kbn/expandable-flyout/src/context'; -import { TestProviders } from '../../common/mock'; +import { TestProviders } from '../../../common/mock'; import { RightPanelContext } from './context'; import { mockContextValue } from './mocks/mock_context'; import { PanelHeader } from './header'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/header.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/header.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/header.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_accordion_state.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_accordion_state.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_accordion_state.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_accordion_state.ts diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_assistant.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.test.tsx similarity index 95% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_assistant.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.test.tsx index 68b07b45b30ff..4cfba25576515 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_assistant.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.test.tsx @@ -11,9 +11,9 @@ import type { UseAssistantParams, UseAssistantResult } from './use_assistant'; import { useAssistant } from './use_assistant'; import { mockDataFormattedForFieldBrowser } from '../../shared/mocks/mock_data_formatted_for_field_browser'; import { useAssistantOverlay } from '@kbn/elastic-assistant'; -import { useAssistantAvailability } from '../../../assistant/use_assistant_availability'; +import { useAssistantAvailability } from '../../../../assistant/use_assistant_availability'; -jest.mock('../../../assistant/use_assistant_availability'); +jest.mock('../../../../assistant/use_assistant_availability'); jest.mock('@kbn/elastic-assistant'); const dataFormattedForFieldBrowser = mockDataFormattedForFieldBrowser; diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_assistant.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.ts similarity index 90% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_assistant.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.ts index a53d2e97015ab..185591ff43a2d 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_assistant.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_assistant.ts @@ -8,8 +8,8 @@ import type { TimelineEventsDetailsItem } from '@kbn/timelines-plugin/common'; import { useAssistantOverlay } from '@kbn/elastic-assistant'; import { useCallback } from 'react'; -import { useAssistantAvailability } from '../../../assistant/use_assistant_availability'; -import { getRawData } from '../../../assistant/helpers'; +import { useAssistantAvailability } from '../../../../assistant/use_assistant_availability'; +import { getRawData } from '../../../../assistant/helpers'; import { ALERT_SUMMARY_CONTEXT_DESCRIPTION, ALERT_SUMMARY_CONVERSATION_ID, @@ -18,12 +18,12 @@ import { EVENT_SUMMARY_CONVERSATION_ID, EVENT_SUMMARY_VIEW_CONTEXT_TOOLTIP, SUMMARY_VIEW, -} from '../../../common/components/event_details/translations'; +} from '../../../../common/components/event_details/translations'; import { PROMPT_CONTEXT_ALERT_CATEGORY, PROMPT_CONTEXT_EVENT_CATEGORY, PROMPT_CONTEXTS, -} from '../../../assistant/content/prompt_contexts'; +} from '../../../../assistant/content/prompt_contexts'; const useAssistantNoop = () => ({ promptContextId: undefined }); diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_threat_intelligence.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.test.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_threat_intelligence.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.test.tsx index 075935ad37fd4..8c7dac4829d1a 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_threat_intelligence.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.test.tsx @@ -12,9 +12,9 @@ import type { UseThreatIntelligenceResult, } from './use_fetch_threat_intelligence'; import { useFetchThreatIntelligence } from './use_fetch_threat_intelligence'; -import { useInvestigationTimeEnrichment } from '../../../common/containers/cti/event_enrichment'; +import { useInvestigationTimeEnrichment } from '../../../../common/containers/cti/event_enrichment'; -jest.mock('../../../common/containers/cti/event_enrichment'); +jest.mock('../../../../common/containers/cti/event_enrichment'); const dataFormattedForFieldBrowser = [ { diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_threat_intelligence.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.ts similarity index 88% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_threat_intelligence.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.ts index 3b495ad52bc60..133fd43392c8a 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_fetch_threat_intelligence.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_threat_intelligence.ts @@ -8,16 +8,16 @@ import { useMemo } from 'react'; import { groupBy } from 'lodash'; import type { TimelineEventsDetailsItem } from '@kbn/timelines-plugin/common'; -import type { CtiEnrichment } from '../../../../common/search_strategy'; -import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; +import type { CtiEnrichment } from '../../../../../common/search_strategy'; +import { useBasicDataFromDetailsData } from '../../../../timelines/components/side_panel/event_details/helpers'; import { filterDuplicateEnrichments, getEnrichmentFields, parseExistingEnrichments, timelineDataToEnrichment, -} from '../../../common/components/event_details/cti_details/helpers'; -import { useInvestigationTimeEnrichment } from '../../../common/containers/cti/event_enrichment'; -import { ENRICHMENT_TYPES } from '../../../../common/cti/constants'; +} from '../../../../common/components/event_details/cti_details/helpers'; +import { useInvestigationTimeEnrichment } from '../../../../common/containers/cti/event_enrichment'; +import { ENRICHMENT_TYPES } from '../../../../../common/cti/constants'; export interface UseThreatIntelligenceParams { /** diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.ts similarity index 95% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.ts index ac98ddd1df2b2..8d3edf833e0db 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_process_data.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_process_data.ts @@ -7,7 +7,7 @@ import { useMemo } from 'react'; import { ALERT_RULE_NAME, ALERT_RULE_UUID } from '@kbn/rule-data-utils'; -import type { GetFieldsData } from '../../../common/hooks/use_get_fields_data'; +import type { GetFieldsData } from '../../../../common/hooks/use_get_fields_data'; import { getField } from '../../shared/utils'; import { useRightPanelContext } from '../context'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_session_preview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.test.tsx similarity index 95% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_session_preview.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.test.tsx index 17b3e7a6a0616..4f2e5b8769eab 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_session_preview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.test.tsx @@ -10,7 +10,7 @@ import { renderHook } from '@testing-library/react-hooks'; import type { UseSessionPreviewParams } from './use_session_preview'; import { useSessionPreview } from './use_session_preview'; import type { SessionViewConfig } from '@kbn/securitysolution-data-table/common/types'; -import type { GetFieldsData } from '../../../common/hooks/use_get_fields_data'; +import type { GetFieldsData } from '../../../../common/hooks/use_get_fields_data'; describe('useSessionPreview', () => { let hookResult: RenderHookResult; diff --git a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_session_preview.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.ts similarity index 95% rename from x-pack/plugins/security_solution/public/flyout/right/hooks/use_session_preview.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.ts index f0a3c75dbb8cf..a64b417ad39c1 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/hooks/use_session_preview.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_session_preview.ts @@ -6,7 +6,7 @@ */ import type { SessionViewConfig } from '@kbn/securitysolution-data-table/common/types'; -import type { GetFieldsData } from '../../../common/hooks/use_get_fields_data'; +import type { GetFieldsData } from '../../../../common/hooks/use_get_fields_data'; import { getField } from '../../shared/utils'; export interface UseSessionPreviewParams { diff --git a/x-pack/plugins/security_solution/public/flyout/right/index.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/index.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/index.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/index.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/mocks/mock_analyzer_data.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/mocks/mock_analyzer_data.ts similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/right/mocks/mock_analyzer_data.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/right/mocks/mock_analyzer_data.ts index 142496a332a6a..fbd7dea83f79d 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/mocks/mock_analyzer_data.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/mocks/mock_analyzer_data.ts @@ -7,7 +7,7 @@ import React from 'react'; import { EuiToken } from '@elastic/eui'; import type { Node } from '@elastic/eui/src/components/tree_view/tree_view'; -import type { StatsNode } from '../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; +import type { StatsNode } from '../../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; export const mockStatsNode: StatsNode = { id: '70e19mhyda', diff --git a/x-pack/plugins/security_solution/public/flyout/right/mocks/mock_context.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/mocks/mock_context.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/mocks/mock_context.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/right/mocks/mock_context.ts diff --git a/x-pack/plugins/security_solution/public/flyout/right/tabs.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/tabs.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/tabs.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/tabs/json_tab.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/tabs/json_tab.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/tabs/json_tab.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/right/tabs/json_tab.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.tsx index a00267b0132d9..f29a1486819cb 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/tabs/json_tab.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/json_tab.tsx @@ -11,7 +11,7 @@ import { JsonCodeEditor } from '@kbn/unified-doc-viewer-plugin/public'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { CopyToClipboard } from '../../shared/components/copy_to_clipboard'; +import { CopyToClipboard } from '../../../shared/components/copy_to_clipboard'; import { JSON_TAB_CONTENT_TEST_ID, JSON_TAB_COPY_TO_CLIPBOARD_BUTTON_TEST_ID } from './test_ids'; import { useRightPanelContext } from '../context'; diff --git a/x-pack/plugins/security_solution/public/flyout/right/tabs/overview_tab.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/overview_tab.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/tabs/overview_tab.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/overview_tab.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/tabs/table_tab.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.test.tsx similarity index 95% rename from x-pack/plugins/security_solution/public/flyout/right/tabs/table_tab.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.test.tsx index d93cf67abc620..08a63c2cd9cc0 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/tabs/table_tab.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.test.tsx @@ -10,7 +10,7 @@ import { render } from '@testing-library/react'; import { RightPanelContext } from '../context'; import { TABLE_TAB_CONTENT_TEST_ID } from './test_ids'; import { TableTab } from './table_tab'; -import { TestProviders } from '../../../common/mock'; +import { TestProviders } from '../../../../common/mock'; const mockDispatch = jest.fn(); jest.mock('react-redux', () => { diff --git a/x-pack/plugins/security_solution/public/flyout/right/tabs/table_tab.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx similarity index 77% rename from x-pack/plugins/security_solution/public/flyout/right/tabs/table_tab.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx index 013b928ac09ff..8351d70216be7 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/tabs/table_tab.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx @@ -10,21 +10,21 @@ import React, { memo } from 'react'; import { EuiText } from '@elastic/eui'; import { get } from 'lodash'; import memoizeOne from 'memoize-one'; -import type { EventFieldsData } from '../../../common/components/event_details/types'; -import { FieldValueCell } from '../../../common/components/event_details/table/field_value_cell'; -import type { BrowserField, BrowserFields } from '../../../../common/search_strategy'; -import { FieldNameCell } from '../../../common/components/event_details/table/field_name_cell'; +import type { EventFieldsData } from '../../../../common/components/event_details/types'; +import { FieldValueCell } from '../../../../common/components/event_details/table/field_value_cell'; +import type { BrowserField, BrowserFields } from '../../../../../common/search_strategy'; +import { FieldNameCell } from '../../../../common/components/event_details/table/field_name_cell'; import { CellActionsMode, SecurityCellActions, SecurityCellActionsTrigger, -} from '../../../common/components/cell_actions'; -import { getSourcererScopeId } from '../../../helpers'; -import * as i18n from '../../../common/components/event_details/translations'; +} from '../../../../common/components/cell_actions'; +import { getSourcererScopeId } from '../../../../helpers'; +import * as i18n from '../../../../common/components/event_details/translations'; import { useRightPanelContext } from '../context'; -import type { ColumnsProvider } from '../../../common/components/event_details/event_fields_browser'; -import { EventFieldsBrowser } from '../../../common/components/event_details/event_fields_browser'; -import { TimelineTabs } from '../../../../common/types'; +import type { ColumnsProvider } from '../../../../common/components/event_details/event_fields_browser'; +import { EventFieldsBrowser } from '../../../../common/components/event_details/event_fields_browser'; +import { TimelineTabs } from '../../../../../common/types'; export const getFieldFromBrowserField = memoizeOne( (keys: string[], browserFields: BrowserFields): BrowserField | undefined => diff --git a/x-pack/plugins/security_solution/public/flyout/right/tabs/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/test_ids.ts similarity index 90% rename from x-pack/plugins/security_solution/public/flyout/right/tabs/test_ids.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/test_ids.ts index 10a4d073c84f0..6fa34f66265a9 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/tabs/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/test_ids.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { PREFIX } from '../../shared/test_ids'; +import { PREFIX } from '../../../shared/test_ids'; export const TABLE_TAB_CONTENT_TEST_ID = 'event-fields-browser' as const; export const JSON_TAB_CONTENT_TEST_ID = 'jsonView' as const; diff --git a/x-pack/plugins/security_solution/public/flyout/right/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/test_ids.ts similarity index 91% rename from x-pack/plugins/security_solution/public/flyout/right/test_ids.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/right/test_ids.ts index ed5d57cf1796a..82af702c61568 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/test_ids.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { PREFIX } from '../shared/test_ids'; +import { PREFIX } from '../../shared/test_ids'; export const FLYOUT_BODY_TEST_ID = `${PREFIX}Body` as const; export const OVERVIEW_TAB_TEST_ID = `${PREFIX}OverviewTab` as const; diff --git a/x-pack/plugins/security_solution/public/flyout/right/utils/analyzer_helpers.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/right/utils/analyzer_helpers.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/right/utils/analyzer_helpers.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.ts similarity index 97% rename from x-pack/plugins/security_solution/public/flyout/right/utils/analyzer_helpers.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.ts index 92003f2761e85..15492f7e41377 100644 --- a/x-pack/plugins/security_solution/public/flyout/right/utils/analyzer_helpers.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/utils/analyzer_helpers.ts @@ -7,7 +7,7 @@ import React from 'react'; import type { Node } from '@elastic/eui/src/components/tree_view/tree_view'; import { EuiToken } from '@elastic/eui'; -import type { StatsNode } from '../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; +import type { StatsNode } from '../../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; /** * Helper function to recursively create ancestor tree nodes diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/cell_tooltip_wrapper.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/cell_tooltip_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/cell_tooltip_wrapper.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/components/cell_tooltip_wrapper.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/cell_tooltip_wrapper.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/components/cell_tooltip_wrapper.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/components/cell_tooltip_wrapper.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/components/cell_tooltip_wrapper.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/constants/event_kinds.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/constants/event_kinds.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/constants/event_kinds.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/constants/event_kinds.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/constants/field_names.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/constants/field_names.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/constants/field_names.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/constants/field_names.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/context/url_sync.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/context/url_sync.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/context/url_sync.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/context/url_sync.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/url/expandable_flyout_state_from_event_meta.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/url/expandable_flyout_state_from_event_meta.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/url/expandable_flyout_state_from_event_meta.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/url/expandable_flyout_state_from_event_meta.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/url/use_sync_flyout_state_with_url.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/url/use_sync_flyout_state_with_url.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/url/use_sync_flyout_state_with_url.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/url/use_sync_flyout_state_with_url.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/url/use_sync_flyout_state_with_url.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/url/use_sync_flyout_state_with_url.tsx similarity index 95% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/url/use_sync_flyout_state_with_url.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/url/use_sync_flyout_state_with_url.tsx index c78aecf44d84e..97e2500f3f948 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/url/use_sync_flyout_state_with_url.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/url/use_sync_flyout_state_with_url.tsx @@ -9,7 +9,7 @@ import { useCallback, useRef } from 'react'; import type { ExpandableFlyoutApi, ExpandableFlyoutContext } from '@kbn/expandable-flyout'; import { useSyncToUrl } from '@kbn/url-state'; import last from 'lodash/last'; -import { URL_PARAM_KEY } from '../../../../common/hooks/use_url_state'; +import { URL_PARAM_KEY } from '../../../../../common/hooks/use_url_state'; export const FLYOUT_URL_PARAM = URL_PARAM_KEY.eventFlyout; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_event_details.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_event_details.test.tsx similarity index 73% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_event_details.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_event_details.test.tsx index 0a092271e1ddd..159f0ee6a3a0b 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_event_details.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_event_details.test.tsx @@ -9,17 +9,17 @@ import type { RenderHookResult } from '@testing-library/react-hooks'; import { renderHook } from '@testing-library/react-hooks'; import type { UseEventDetailsParams, UseEventDetailsResult } from './use_event_details'; import { useEventDetails } from './use_event_details'; -import { useSpaceId } from '../../../common/hooks/use_space_id'; -import { useRouteSpy } from '../../../common/utils/route/use_route_spy'; -import { useSourcererDataView } from '../../../common/containers/sourcerer'; -import { useTimelineEventsDetails } from '../../../timelines/containers/details'; -import { useGetFieldsData } from '../../../common/hooks/use_get_fields_data'; +import { useSpaceId } from '../../../../common/hooks/use_space_id'; +import { useRouteSpy } from '../../../../common/utils/route/use_route_spy'; +import { useSourcererDataView } from '../../../../common/containers/sourcerer'; +import { useTimelineEventsDetails } from '../../../../timelines/containers/details'; +import { useGetFieldsData } from '../../../../common/hooks/use_get_fields_data'; -jest.mock('../../../common/hooks/use_space_id'); -jest.mock('../../../common/utils/route/use_route_spy'); -jest.mock('../../../common/containers/sourcerer'); -jest.mock('../../../timelines/containers/details'); -jest.mock('../../../common/hooks/use_get_fields_data'); +jest.mock('../../../../common/hooks/use_space_id'); +jest.mock('../../../../common/utils/route/use_route_spy'); +jest.mock('../../../../common/containers/sourcerer'); +jest.mock('../../../../timelines/containers/details'); +jest.mock('../../../../common/hooks/use_get_fields_data'); const eventId = 'eventId'; const indexName = 'indexName'; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_event_details.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_event_details.ts similarity index 77% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_event_details.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_event_details.ts index 0f43743bcab28..8739308d2c3e5 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_event_details.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_event_details.ts @@ -9,16 +9,16 @@ import type { BrowserFields, TimelineEventsDetailsItem } from '@kbn/timelines-pl import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; import { SecurityPageName } from '@kbn/security-solution-navigation'; import type { DataViewBase } from '@kbn/es-query'; -import type { RunTimeMappings } from '../../../../common/api/search_strategy'; -import { useSpaceId } from '../../../common/hooks/use_space_id'; -import { getAlertIndexAlias } from '../../../timelines/components/side_panel/event_details/helpers'; -import { useRouteSpy } from '../../../common/utils/route/use_route_spy'; -import { SourcererScopeName } from '../../../common/store/sourcerer/model'; -import { useSourcererDataView } from '../../../common/containers/sourcerer'; -import { useTimelineEventsDetails } from '../../../timelines/containers/details'; -import { useGetFieldsData } from '../../../common/hooks/use_get_fields_data'; -import type { SearchHit } from '../../../../common/search_strategy'; -import type { GetFieldsData } from '../../../common/hooks/use_get_fields_data'; +import type { RunTimeMappings } from '../../../../../common/api/search_strategy'; +import { useSpaceId } from '../../../../common/hooks/use_space_id'; +import { getAlertIndexAlias } from '../../../../timelines/components/side_panel/event_details/helpers'; +import { useRouteSpy } from '../../../../common/utils/route/use_route_spy'; +import { SourcererScopeName } from '../../../../common/store/sourcerer/model'; +import { useSourcererDataView } from '../../../../common/containers/sourcerer'; +import { useTimelineEventsDetails } from '../../../../timelines/containers/details'; +import { useGetFieldsData } from '../../../../common/hooks/use_get_fields_data'; +import type { SearchHit } from '../../../../../common/search_strategy'; +import type { GetFieldsData } from '../../../../common/hooks/use_get_fields_data'; export interface UseEventDetailsParams { /** diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_prevalence.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_prevalence.ts similarity index 95% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_prevalence.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_prevalence.ts index 3a0f5f824f4b2..206defb990233 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_prevalence.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_prevalence.ts @@ -10,10 +10,10 @@ import type { IEsSearchRequest } from '@kbn/data-plugin/public'; import { useQuery } from '@tanstack/react-query'; import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import { createFetchData } from '../utils/fetch_data'; -import { useKibana } from '../../../common/lib/kibana'; -import { useTimelineDataFilters } from '../../../timelines/containers/use_timeline_data_filters'; -import { isActiveTimeline } from '../../../helpers'; -import { SourcererScopeName } from '../../../common/store/sourcerer/model'; +import { useKibana } from '../../../../common/lib/kibana'; +import { useTimelineDataFilters } from '../../../../timelines/containers/use_timeline_data_filters'; +import { isActiveTimeline } from '../../../../helpers'; +import { SourcererScopeName } from '../../../../common/store/sourcerer/model'; const QUERY_KEY = 'useFetchFieldValuePairWithAggregation'; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_ancestry.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_ancestry.test.tsx similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_ancestry.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_ancestry.test.tsx index 27d0e83b34b1a..9291b5e9a0c1a 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_ancestry.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_ancestry.test.tsx @@ -12,9 +12,9 @@ import type { UseFetchRelatedAlertsByAncestryResult, } from './use_fetch_related_alerts_by_ancestry'; import { useFetchRelatedAlertsByAncestry } from './use_fetch_related_alerts_by_ancestry'; -import { useAlertPrevalenceFromProcessTree } from '../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; +import { useAlertPrevalenceFromProcessTree } from '../../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; -jest.mock('../../../common/containers/alerts/use_alert_prevalence_from_process_tree'); +jest.mock('../../../../common/containers/alerts/use_alert_prevalence_from_process_tree'); const documentId = 'documentId'; const indices = ['index1']; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_ancestry.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_ancestry.ts similarity index 90% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_ancestry.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_ancestry.ts index 5dd4a2da67e70..73415c880a3c1 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_ancestry.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_ancestry.ts @@ -6,8 +6,8 @@ */ import { useMemo } from 'react'; -import { useAlertPrevalenceFromProcessTree } from '../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; -import { isActiveTimeline } from '../../../helpers'; +import { useAlertPrevalenceFromProcessTree } from '../../../../common/containers/alerts/use_alert_prevalence_from_process_tree'; +import { isActiveTimeline } from '../../../../helpers'; export interface UseFetchRelatedAlertsByAncestryParams { /** diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_same_source_event.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_same_source_event.test.tsx similarity index 94% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_same_source_event.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_same_source_event.test.tsx index f4f6bb894eba0..4aaab73af1296 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_same_source_event.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_same_source_event.test.tsx @@ -12,9 +12,9 @@ import type { UseFetchRelatedAlertsBySameSourceEventResult, } from './use_fetch_related_alerts_by_same_source_event'; import { useFetchRelatedAlertsBySameSourceEvent } from './use_fetch_related_alerts_by_same_source_event'; -import { useAlertPrevalence } from '../../../common/containers/alerts/use_alert_prevalence'; +import { useAlertPrevalence } from '../../../../common/containers/alerts/use_alert_prevalence'; -jest.mock('../../../common/containers/alerts/use_alert_prevalence'); +jest.mock('../../../../common/containers/alerts/use_alert_prevalence'); const originalEventId = 'originalEventId'; const scopeId = 'scopeId'; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_same_source_event.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_same_source_event.ts similarity index 91% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_same_source_event.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_same_source_event.ts index 990c25fed9f26..1946cef3e7de4 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_same_source_event.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_same_source_event.ts @@ -7,8 +7,8 @@ import { useMemo } from 'react'; import { ANCESTOR_ID } from '../constants/field_names'; -import { useAlertPrevalence } from '../../../common/containers/alerts/use_alert_prevalence'; -import { isActiveTimeline } from '../../../helpers'; +import { useAlertPrevalence } from '../../../../common/containers/alerts/use_alert_prevalence'; +import { isActiveTimeline } from '../../../../helpers'; export interface UseFetchRelatedAlertsBySameSourceEventParams { /** diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_session.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_session.test.tsx similarity index 93% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_session.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_session.test.tsx index dfbe47a258277..6f6f2ea73158f 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_session.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_session.test.tsx @@ -13,9 +13,9 @@ import type { UseFetchRelatedAlertsBySessionResult, } from './use_fetch_related_alerts_by_session'; import { useFetchRelatedAlertsBySession } from './use_fetch_related_alerts_by_session'; -import { useAlertPrevalence } from '../../../common/containers/alerts/use_alert_prevalence'; +import { useAlertPrevalence } from '../../../../common/containers/alerts/use_alert_prevalence'; -jest.mock('../../../common/containers/alerts/use_alert_prevalence'); +jest.mock('../../../../common/containers/alerts/use_alert_prevalence'); const entityId = 'entityId'; const scopeId = 'scopeId'; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_session.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_session.ts similarity index 91% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_session.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_session.ts index 1eca3d8d51368..2c70714d07d5b 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_alerts_by_session.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_alerts_by_session.ts @@ -6,8 +6,8 @@ */ import { useMemo } from 'react'; -import { useAlertPrevalence } from '../../../common/containers/alerts/use_alert_prevalence'; -import { isActiveTimeline } from '../../../helpers'; +import { useAlertPrevalence } from '../../../../common/containers/alerts/use_alert_prevalence'; +import { isActiveTimeline } from '../../../../helpers'; import { ENTRY_LEADER_ENTITY_ID } from '../constants/field_names'; export interface UseFetchRelatedAlertsBySessionParams { diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_cases.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_cases.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_cases.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_cases.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_cases.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_cases.ts similarity index 93% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_cases.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_cases.ts index 7100f20cf2218..3753152da52ca 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_fetch_related_cases.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_fetch_related_cases.ts @@ -8,8 +8,8 @@ import { useQuery } from '@tanstack/react-query'; import type { GetRelatedCasesByAlertResponse } from '@kbn/cases-plugin/common'; import { useMemo } from 'react'; -import { useKibana } from '../../../common/lib/kibana'; -import { APP_ID } from '../../../../common/constants'; +import { useKibana } from '../../../../common/lib/kibana'; +import { APP_ID } from '../../../../../common/constants'; const QUERY_KEY = 'useFetchRelatedCases'; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_highlighted_fields.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_highlighted_fields.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_highlighted_fields.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.ts similarity index 94% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_highlighted_fields.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.ts index f9fa147c8395a..72526c904bbb2 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_highlighted_fields.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_highlighted_fields.ts @@ -8,11 +8,11 @@ import type { TimelineEventsDetailsItem } from '@kbn/timelines-plugin/common'; import { find, isEmpty } from 'lodash/fp'; import { ALERT_RULE_TYPE } from '@kbn/rule-data-utils'; -import { isAlertFromEndpointEvent } from '../../../common/utils/endpoint_alert_check'; +import { isAlertFromEndpointEvent } from '../../../../common/utils/endpoint_alert_check'; import { getEventCategoriesFromData, getEventFieldsToDisplay, -} from '../../../common/components/event_details/get_alert_summary_rows'; +} from '../../../../common/components/event_details/get_alert_summary_rows'; export interface UseHighlightedFieldsParams { /** diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_investigation_guide.test.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.test.ts similarity index 85% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_investigation_guide.test.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.test.ts index 198129192cdb4..aef75b40f1990 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_investigation_guide.test.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.test.ts @@ -11,13 +11,13 @@ import type { UseInvestigationGuideParams, UseInvestigationGuideResult, } from './use_investigation_guide'; -import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; -import { useRuleWithFallback } from '../../../detection_engine/rule_management/logic/use_rule_with_fallback'; +import { useBasicDataFromDetailsData } from '../../../../timelines/components/side_panel/event_details/helpers'; +import { useRuleWithFallback } from '../../../../detection_engine/rule_management/logic/use_rule_with_fallback'; import { mockDataFormattedForFieldBrowser } from '../mocks/mock_data_formatted_for_field_browser'; import { useInvestigationGuide } from './use_investigation_guide'; -jest.mock('../../../timelines/components/side_panel/event_details/helpers'); -jest.mock('../../../detection_engine/rule_management/logic/use_rule_with_fallback'); +jest.mock('../../../../timelines/components/side_panel/event_details/helpers'); +jest.mock('../../../../detection_engine/rule_management/logic/use_rule_with_fallback'); const dataFormattedForFieldBrowser = mockDataFormattedForFieldBrowser; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_investigation_guide.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.ts similarity index 79% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_investigation_guide.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.ts index cc546a43241d2..306cdbbb5d63d 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_investigation_guide.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_investigation_guide.ts @@ -6,9 +6,9 @@ */ import type { TimelineEventsDetailsItem } from '@kbn/timelines-plugin/common'; -import type { GetBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; -import { useBasicDataFromDetailsData } from '../../../timelines/components/side_panel/event_details/helpers'; -import { useRuleWithFallback } from '../../../detection_engine/rule_management/logic/use_rule_with_fallback'; +import type { GetBasicDataFromDetailsData } from '../../../../timelines/components/side_panel/event_details/helpers'; +import { useBasicDataFromDetailsData } from '../../../../timelines/components/side_panel/event_details/helpers'; +import { useRuleWithFallback } from '../../../../detection_engine/rule_management/logic/use_rule_with_fallback'; export interface UseInvestigationGuideParams { /** diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_prevalence.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_prevalence.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_prevalence.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_prevalence.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_prevalence.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_prevalence.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_prevalence.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_prevalence.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx index 32c2cdaf72675..a452e0e3a1686 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.test.tsx @@ -12,13 +12,13 @@ import type { UseShowRelatedAlertsByAncestryResult, } from './use_show_related_alerts_by_ancestry'; import { useShowRelatedAlertsByAncestry } from './use_show_related_alerts_by_ancestry'; -import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; -import { licenseService } from '../../../common/hooks/use_license'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +import { licenseService } from '../../../../common/hooks/use_license'; import { mockDataFormattedForFieldBrowser } from '../mocks/mock_data_formatted_for_field_browser'; import { mockDataAsNestedObject } from '../mocks/mock_data_as_nested_object'; -jest.mock('../../../common/hooks/use_experimental_features'); -jest.mock('../../../common/hooks/use_license', () => { +jest.mock('../../../../common/hooks/use_experimental_features'); +jest.mock('../../../../common/hooks/use_license', () => { const licenseServiceInstance = { isPlatinumPlus: jest.fn(), }; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_ancestry.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.ts similarity index 87% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_ancestry.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.ts index c87c93c833f14..9d4434d943e12 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_ancestry.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_ancestry.ts @@ -9,10 +9,10 @@ import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; import { useMemo } from 'react'; import { find } from 'lodash/fp'; import type { TimelineEventsDetailsItem } from '@kbn/timelines-plugin/common'; -import type { GetFieldsData } from '../../../common/hooks/use_get_fields_data'; -import { isInvestigateInResolverActionEnabled } from '../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'; -import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; -import { useLicense } from '../../../common/hooks/use_license'; +import type { GetFieldsData } from '../../../../common/hooks/use_get_fields_data'; +import { isInvestigateInResolverActionEnabled } from '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +import { useLicense } from '../../../../common/hooks/use_license'; import { getField } from '../utils'; import { ANCESTOR_ID, RULE_PARAMETERS_INDEX } from '../constants/field_names'; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_same_source_event.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_same_source_event.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_same_source_event.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.ts similarity index 93% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_same_source_event.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.ts index 7d24fd483482f..0d510400d5efe 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_same_source_event.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_same_source_event.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { GetFieldsData } from '../../../common/hooks/use_get_fields_data'; +import type { GetFieldsData } from '../../../../common/hooks/use_get_fields_data'; import { ANCESTOR_ID } from '../constants/field_names'; import { getField } from '../utils'; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_session.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_session.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_session.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.ts similarity index 93% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_session.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.ts index 04831584a64a7..81ce4bdb0475c 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_alerts_by_session.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_alerts_by_session.ts @@ -6,7 +6,7 @@ */ import { ENTRY_LEADER_ENTITY_ID } from '../constants/field_names'; -import type { GetFieldsData } from '../../../common/hooks/use_get_fields_data'; +import type { GetFieldsData } from '../../../../common/hooks/use_get_fields_data'; import { getField } from '../utils'; export interface UseShowRelatedAlertsBySessionParams { diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_cases.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.test.tsx similarity index 90% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_cases.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.test.tsx index 4d31777bdd45f..00a25ed1885aa 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_cases.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.test.tsx @@ -7,9 +7,9 @@ import { renderHook } from '@testing-library/react-hooks'; -import { useGetUserCasesPermissions } from '../../../common/lib/kibana'; +import { useGetUserCasesPermissions } from '../../../../common/lib/kibana'; import { useShowRelatedCases } from './use_show_related_cases'; -jest.mock('../../../common/lib/kibana'); +jest.mock('../../../../common/lib/kibana'); describe('useShowRelatedCases', () => { it(`should return false if user doesn't have cases read privilege`, () => { diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_cases.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.ts similarity index 86% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_cases.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.ts index 5e7f5dca29c8e..e469cc2ef155c 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_related_cases.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_related_cases.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { useGetUserCasesPermissions } from '../../../common/lib/kibana'; +import { useGetUserCasesPermissions } from '../../../../common/lib/kibana'; /** * Returns true if the user has read privileges for cases, false otherwise diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_suppressed_alerts.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_suppressed_alerts.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_suppressed_alerts.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.ts similarity index 93% rename from x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_suppressed_alerts.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.ts index 22ed0a0af84a7..f459d83e5f3d4 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_show_suppressed_alerts.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_show_suppressed_alerts.ts @@ -6,7 +6,7 @@ */ import { ALERT_SUPPRESSION_DOCS_COUNT } from '@kbn/rule-data-utils'; -import type { GetFieldsData } from '../../../common/hooks/use_get_fields_data'; +import type { GetFieldsData } from '../../../../common/hooks/use_get_fields_data'; export interface ShowSuppressedAlertsParams { /** diff --git a/x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_browser_fields.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_browser_fields.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_browser_fields.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_browser_fields.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_data_as_nested_object.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_data_as_nested_object.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_data_as_nested_object.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_data_as_nested_object.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_data_formatted_for_field_browser.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_data_formatted_for_field_browser.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_data_formatted_for_field_browser.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_data_formatted_for_field_browser.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_flyout_context.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_flyout_context.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_flyout_context.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_flyout_context.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_get_fields_data.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_get_fields_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_get_fields_data.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_get_fields_data.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_search_hit.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_search_hit.ts similarity index 92% rename from x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_search_hit.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_search_hit.ts index f140629dabc80..78f6891304b16 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_search_hit.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_search_hit.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { SearchHit } from '../../../../common/search_strategy'; +import type { SearchHit } from '../../../../../common/search_strategy'; /** * Mock the document result of the search for an alert diff --git a/x-pack/plugins/security_solution/public/flyout/shared/utils.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils.test.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/utils.test.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/utils.test.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/utils.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/utils.tsx rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/utils.tsx diff --git a/x-pack/plugins/security_solution/public/flyout/shared/utils/build_requests.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/build_requests.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/utils/build_requests.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/build_requests.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/utils/fetch_data.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/fetch_data.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/utils/fetch_data.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/fetch_data.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/utils/highlighted_fields_helpers.test.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/highlighted_fields_helpers.test.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/utils/highlighted_fields_helpers.test.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/highlighted_fields_helpers.test.ts diff --git a/x-pack/plugins/security_solution/public/flyout/shared/utils/highlighted_fields_helpers.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/highlighted_fields_helpers.ts similarity index 100% rename from x-pack/plugins/security_solution/public/flyout/shared/utils/highlighted_fields_helpers.ts rename to x-pack/plugins/security_solution/public/flyout/document_details/shared/utils/highlighted_fields_helpers.ts diff --git a/x-pack/plugins/security_solution/public/flyout/index.tsx b/x-pack/plugins/security_solution/public/flyout/index.tsx index c5da39105d929..01034488be659 100644 --- a/x-pack/plugins/security_solution/public/flyout/index.tsx +++ b/x-pack/plugins/security_solution/public/flyout/index.tsx @@ -11,22 +11,22 @@ import { type ExpandableFlyoutProps, ExpandableFlyoutProvider, } from '@kbn/expandable-flyout'; -import type { IsolateHostPanelProps } from './isolate_host'; -import { IsolateHostPanel, IsolateHostPanelKey } from './isolate_host'; -import { IsolateHostPanelProvider } from './isolate_host/context'; -import type { RightPanelProps } from './right'; -import { RightPanel, RightPanelKey } from './right'; -import { RightPanelProvider } from './right/context'; -import type { LeftPanelProps } from './left'; -import { LeftPanel, LeftPanelKey } from './left'; -import { LeftPanelProvider } from './left/context'; +import type { IsolateHostPanelProps } from './document_details/isolate_host'; +import { IsolateHostPanel, IsolateHostPanelKey } from './document_details/isolate_host'; +import { IsolateHostPanelProvider } from './document_details/isolate_host/context'; +import type { RightPanelProps } from './document_details/right'; +import { RightPanel, RightPanelKey } from './document_details/right'; +import { RightPanelProvider } from './document_details/right/context'; +import type { LeftPanelProps } from './document_details/left'; +import { LeftPanel, LeftPanelKey } from './document_details/left'; +import { LeftPanelProvider } from './document_details/left/context'; import { SecuritySolutionFlyoutUrlSyncProvider, useSecurityFlyoutUrlSync, -} from './shared/context/url_sync'; -import type { PreviewPanelProps } from './preview'; -import { PreviewPanel, PreviewPanelKey } from './preview'; -import { PreviewPanelProvider } from './preview/context'; +} from './document_details/shared/context/url_sync'; +import type { PreviewPanelProps } from './document_details/preview'; +import { PreviewPanel, PreviewPanelKey } from './document_details/preview'; +import { PreviewPanelProvider } from './document_details/preview/context'; /** * List of all panels that will be used within the document details expandable flyout. diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/copy_to_clipboard.stories.tsx b/x-pack/plugins/security_solution/public/flyout/shared/components/copy_to_clipboard.stories.tsx new file mode 100644 index 0000000000000..cb6eef6651acc --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/shared/components/copy_to_clipboard.stories.tsx @@ -0,0 +1,80 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import type { Story } from '@storybook/react'; +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { CopyToClipboard } from './copy_to_clipboard'; + +export default { + component: CopyToClipboard, + title: 'Flyout/CopyToClipboard', +}; + +const json = JSON.stringify({ + foo: 'bar', +}); + +export const Default: Story = () => { + return ( + {'Copy'}

} + iconType={'copyClipboard'} + ariaLabel={'Copy'} + /> + ); +}; + +export const WithModifier: Story = () => { + return ( + { + window.alert('modifier'); + return value; + }} + text={

{'Copy'}

} + iconType={'copyClipboard'} + ariaLabel={'Copy'} + /> + ); +}; + +export const MultipleSizes: Story = () => { + return ( + + + {'xs size'}

} + iconType={'copyClipboard'} + size={'xs'} + ariaLabel={'Copy'} + /> +
+ + {'s size'}

} + iconType={'copyClipboard'} + size={'s'} + ariaLabel={'Copy'} + /> +
+ + {'m size'}

} + iconType={'copyClipboard'} + size={'m'} + ariaLabel={'Copy'} + /> +
+
+ ); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.stories.tsx b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.stories.tsx new file mode 100644 index 0000000000000..abb5388d6ff97 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.stories.tsx @@ -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 React from 'react'; +import type { Story } from '@storybook/react'; +import { FlyoutError } from './flyout_error'; + +export default { + component: FlyoutError, + title: 'Flyout/FlyoutError', +}; + +export const Default: Story = () => { + return ; +}; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.test.tsx b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.test.tsx index f0565fe1df43f..e58d586a063b5 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; import { render } from '@testing-library/react'; import { FlyoutError } from './flyout_error'; -import { FLYOUT_ERROR_TEST_ID } from '../test_ids'; +import { FLYOUT_ERROR_TEST_ID } from './test_ids'; describe('', () => { it('should render error title and body', () => { diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.tsx b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.tsx index bda4e581e164b..9ebef345540fe 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.tsx +++ b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_error.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { EuiEmptyPrompt, EuiFlexItem } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { FLYOUT_ERROR_TEST_ID } from '../test_ids'; +import { FLYOUT_ERROR_TEST_ID } from './test_ids'; /** * Use this when you need to show an error state in the flyout diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.stories.tsx b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.stories.tsx new file mode 100644 index 0000000000000..1328fcfa92dd1 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.stories.tsx @@ -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 React from 'react'; +import type { Story } from '@storybook/react'; +import { FlyoutLoading } from './flyout_loading'; + +export default { + component: FlyoutLoading, + title: 'Flyout/FlyoutLoading', +}; + +export const Default: Story = () => { + return ; +}; diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.test.tsx b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.test.tsx index d55e85b3e978b..a164db8a6ce01 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { FLYOUT_LOADING_TEST_ID } from '../test_ids'; +import { FLYOUT_LOADING_TEST_ID } from './test_ids'; import { FlyoutLoading } from './flyout_loading'; describe('', () => { diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.tsx b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.tsx index 03ecb298c3d18..0c98957dd929b 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.tsx +++ b/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_loading.tsx @@ -8,9 +8,9 @@ import React from 'react'; import { EuiFlexItem, EuiLoadingSpinner } from '@elastic/eui'; import { css } from '@emotion/react'; -import { FLYOUT_LOADING_TEST_ID } from '../test_ids'; +import { FLYOUT_LOADING_TEST_ID } from './test_ids'; -interface FlyoutLoadingProps { +export interface FlyoutLoadingProps { /** Data test subject string for testing */ diff --git a/x-pack/plugins/security_solution/public/flyout/shared/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/shared/components/test_ids.ts index 1e5ed99958b04..3a8ba1cc1759a 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/components/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/shared/components/test_ids.ts @@ -5,8 +5,10 @@ * 2.0. */ -/* Insights section*/ +import { PREFIX } from '../test_ids'; +export const FLYOUT_ERROR_TEST_ID = `${PREFIX}Error` as const; +export const FLYOUT_LOADING_TEST_ID = `${PREFIX}Loading` as const; export const EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID = (dataTestSubj: string) => `${dataTestSubj}ToggleIcon`; export const EXPANDABLE_PANEL_HEADER_LEFT_SECTION_TEST_ID = (dataTestSubj: string) => diff --git a/x-pack/plugins/security_solution/public/flyout/shared/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/shared/test_ids.ts index 4c0d747afd588..f6e455cff070f 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/shared/test_ids.ts @@ -6,6 +6,3 @@ */ export const PREFIX = 'securitySolutionFlyout' as const; - -export const FLYOUT_ERROR_TEST_ID = `${PREFIX}Error` as const; -export const FLYOUT_LOADING_TEST_ID = `${PREFIX}Loading` as const; diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel.ts index 4a00d44cee981..678ed9484fb00 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel.ts @@ -8,11 +8,11 @@ import { INSIGHTS_TAB_BUTTON_GROUP_TEST_ID, VISUALIZE_TAB_BUTTON_GROUP_TEST_ID, -} from '@kbn/security-solution-plugin/public/flyout/left/tabs/test_ids'; +} from '@kbn/security-solution-plugin/public/flyout/document_details/left/tabs/test_ids'; import { INSIGHTS_TAB_TEST_ID, VISUALIZE_TAB_TEST_ID, -} from '@kbn/security-solution-plugin/public/flyout/left/test_ids'; +} from '@kbn/security-solution-plugin/public/flyout/document_details/left/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; export const DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB = diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_analyzer_graph_tab.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_analyzer_graph_tab.ts index c9b16f3ada2cd..dc0b384aed40f 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_analyzer_graph_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_analyzer_graph_tab.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/left/tabs/test_ids'; -import { ANALYZER_GRAPH_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/left/components/test_ids'; +import { VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/left/tabs/test_ids'; +import { ANALYZER_GRAPH_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/left/components/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; export const DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON = diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_correlations_tab.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_correlations_tab.ts index e63d6f0b72a83..c2a76ed9fe37c 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_correlations_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_correlations_tab.ts @@ -5,14 +5,14 @@ * 2.0. */ -import { INSIGHTS_TAB_CORRELATIONS_BUTTON_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/left/tabs/test_ids'; +import { INSIGHTS_TAB_CORRELATIONS_BUTTON_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/left/tabs/test_ids'; import { CORRELATIONS_DETAILS_BY_ANCESTRY_SECTION_TEST_ID, CORRELATIONS_DETAILS_BY_SESSION_SECTION_TEST_ID, CORRELATIONS_DETAILS_BY_SOURCE_SECTION_TEST_ID, CORRELATIONS_DETAILS_CASES_SECTION_TEST_ID, CORRELATIONS_DETAILS_SUPPRESSED_ALERTS_SECTION_TEST_ID, -} from '@kbn/security-solution-plugin/public/flyout/left/components/test_ids'; +} from '@kbn/security-solution-plugin/public/flyout/document_details/left/components/test_ids'; import { EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/shared/components/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_entities_tab.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_entities_tab.ts index 5374943cce29c..0cda5fb1c87ee 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_entities_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_entities_tab.ts @@ -9,8 +9,8 @@ import { ENTITIES_DETAILS_TEST_ID, HOST_DETAILS_TEST_ID, USER_DETAILS_TEST_ID, -} from '@kbn/security-solution-plugin/public/flyout/left/components/test_ids'; -import { INSIGHTS_TAB_ENTITIES_BUTTON_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/left/tabs/test_ids'; +} from '@kbn/security-solution-plugin/public/flyout/document_details/left/components/test_ids'; +import { INSIGHTS_TAB_ENTITIES_BUTTON_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/left/tabs/test_ids'; import { EXPANDABLE_PANEL_CONTENT_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/shared/components/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_investigation_tab.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_investigation_tab.ts index e981af1cdb895..e644c29bccea9 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_investigation_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_investigation_tab.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { INVESTIGATION_TAB_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/left/test_ids'; -import { INVESTIGATION_TAB_CONTENT_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/left/tabs/test_ids'; +import { INVESTIGATION_TAB_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/left/test_ids'; +import { INVESTIGATION_TAB_CONTENT_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/left/tabs/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; export const DOCUMENT_DETAILS_FLYOUT_INVESTIGATION_TAB = diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_prevalence_tab.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_prevalence_tab.ts index 5ba9a8fafed98..0efc48511c9be 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_prevalence_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_prevalence_tab.ts @@ -14,8 +14,8 @@ import { PREVALENCE_DETAILS_TABLE_FIELD_CELL_TEST_ID, PREVALENCE_DETAILS_TABLE_USER_PREVALENCE_CELL_TEST_ID, PREVALENCE_DETAILS_DATE_PICKER_TEST_ID, -} from '@kbn/security-solution-plugin/public/flyout/left/components/test_ids'; -import { INSIGHTS_TAB_PREVALENCE_BUTTON_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/left/tabs/test_ids'; +} from '@kbn/security-solution-plugin/public/flyout/document_details/left/components/test_ids'; +import { INSIGHTS_TAB_PREVALENCE_BUTTON_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/left/tabs/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; export const DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_PREVALENCE_BUTTON = getDataTestSubjectSelector( diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_response_tab.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_response_tab.ts index a2aad15ff504b..74a109266773a 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_response_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_response_tab.ts @@ -5,11 +5,11 @@ * 2.0. */ -import { RESPONSE_TAB_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/left/test_ids'; +import { RESPONSE_TAB_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/left/test_ids'; import { RESPONSE_DETAILS_TEST_ID, RESPONSE_NO_DATA_TEST_ID, -} from '@kbn/security-solution-plugin/public/flyout/left/components/test_ids'; +} from '@kbn/security-solution-plugin/public/flyout/document_details/left/components/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; export const DOCUMENT_DETAILS_FLYOUT_RESPONSE_TAB = diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_session_view_tab.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_session_view_tab.ts index d50f645cf9359..e05b79f83ddc1 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_session_view_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_session_view_tab.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { VISUALIZE_TAB_SESSION_VIEW_BUTTON_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/left/tabs/test_ids'; +import { VISUALIZE_TAB_SESSION_VIEW_BUTTON_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/left/tabs/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; export const DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_SESSION_VIEW_BUTTON = getDataTestSubjectSelector( diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_threat_intelligence_tab.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_threat_intelligence_tab.ts index a60a7d7a40105..83716fb9bc450 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_threat_intelligence_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_left_panel_threat_intelligence_tab.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { INSIGHTS_TAB_THREAT_INTELLIGENCE_BUTTON_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/left/tabs/test_ids'; +import { INSIGHTS_TAB_THREAT_INTELLIGENCE_BUTTON_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/left/tabs/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; export const DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_THREAT_INTELLIGENCE_BUTTON = diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_preview_panel_alert_reason_preview.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_preview_panel_alert_reason_preview.ts index 37db919da75ab..868083d5c25ba 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_preview_panel_alert_reason_preview.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_preview_panel_alert_reason_preview.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ALERT_REASON_PREVIEW_BODY_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/preview/components/test_ids'; +import { ALERT_REASON_PREVIEW_BODY_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/preview/components/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; export const DOCUMENT_DETAILS_FLYOUT_ALERT_REASON_PREVIEW_CONTAINER = getDataTestSubjectSelector( diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_preview_panel_rule_preview.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_preview_panel_rule_preview.ts index 23a3985a36d9a..90d051aec1b57 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_preview_panel_rule_preview.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_preview_panel_rule_preview.ts @@ -17,7 +17,7 @@ import { RULE_PREVIEW_SCHEDULE_HEADER_TEST_ID, RULE_PREVIEW_SCHEDULE_CONTENT_TEST_ID, RULE_PREVIEW_FOOTER_TEST_ID, -} from '@kbn/security-solution-plugin/public/flyout/preview/components/test_ids'; +} from '@kbn/security-solution-plugin/public/flyout/document_details/preview/components/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; export const DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SECTION = diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel.ts index 27916cd32163b..edebbe8d5a526 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel.ts @@ -10,7 +10,7 @@ import { JSON_TAB_TEST_ID, OVERVIEW_TAB_TEST_ID, TABLE_TAB_TEST_ID, -} from '@kbn/security-solution-plugin/public/flyout/right/test_ids'; +} from '@kbn/security-solution-plugin/public/flyout/document_details/right/test_ids'; import { COLLAPSE_DETAILS_BUTTON_TEST_ID, EXPAND_DETAILS_BUTTON_TEST_ID, @@ -21,7 +21,7 @@ import { SEVERITY_VALUE_TEST_ID, STATUS_BUTTON_TEST_ID, FLYOUT_HEADER_TITLE_TEST_ID, -} from '@kbn/security-solution-plugin/public/flyout/right/components/test_ids'; +} from '@kbn/security-solution-plugin/public/flyout/document_details/right/components/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; export const DOCUMENT_DETAILS_FLYOUT_BODY = getDataTestSubjectSelector(FLYOUT_BODY_TEST_ID); diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_json_tab.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_json_tab.ts index 62fb75d4b82e0..e53d1af68d455 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_json_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_json_tab.ts @@ -5,11 +5,11 @@ * 2.0. */ -import { JSON_TAB_CONTENT_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/right/tabs/test_ids'; -import { RIGHT_SECTION } from '@kbn/expandable-flyout/src/components/test_ids'; +import { JSON_TAB_CONTENT_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/right/tabs/test_ids'; +import { RIGHT_SECTION_TEST_ID } from '@kbn/expandable-flyout/src/components/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; export const DOCUMENT_DETAILS_FLYOUT_RIGHT_PANEL_CONTENT = - getDataTestSubjectSelector(RIGHT_SECTION); + getDataTestSubjectSelector(RIGHT_SECTION_TEST_ID); export const DOCUMENT_DETAILS_FLYOUT_JSON_TAB_CONTENT = getDataTestSubjectSelector(JSON_TAB_CONTENT_TEST_ID); diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts index 952f78fe4c9c7..d288f259f9e2d 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_overview_tab.ts @@ -43,7 +43,7 @@ import { ANALYZER_PREVIEW_TEST_ID, SESSION_PREVIEW_TEST_ID, RESPONSE_BUTTON_TEST_ID, -} from '@kbn/security-solution-plugin/public/flyout/right/components/test_ids'; +} from '@kbn/security-solution-plugin/public/flyout/document_details/right/components/test_ids'; import { getDataTestSubjectSelector } from '../../helpers/common'; /* About section */ diff --git a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_table_tab.ts b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_table_tab.ts index f853fbd58865f..771180e1be13f 100644 --- a/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_table_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout/alert_details_right_panel_table_tab.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { TABLE_TAB_CONTENT_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/right/tabs/test_ids'; +import { TABLE_TAB_CONTENT_TEST_ID } from '@kbn/security-solution-plugin/public/flyout/document_details/right/tabs/test_ids'; import { getClassSelector, getDataTestSubjectSelector } from '../../helpers/common'; export const DOCUMENT_DETAILS_FLYOUT_TABLE_TAB_CONTENT = diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts index c1fd4cd3ef250..85b5b9f586e79 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts @@ -11,7 +11,7 @@ import { INSIGHTS_ENTITIES_TEST_ID, PREVALENCE_TEST_ID, INSIGHTS_THREAT_INTELLIGENCE_TEST_ID, -} from '@kbn/security-solution-plugin/public/flyout/right/components/test_ids'; +} from '@kbn/security-solution-plugin/public/flyout/document_details/right/components/test_ids'; import { DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ABOUT_SECTION_HEADER, DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_VISUALIZATIONS_SECTION_HEADER, From 5e07ed7250b5e0648e0e9572f38272b2fe5dfe5f Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 16 Oct 2023 01:11:00 -0400 Subject: [PATCH 54/80] [api-docs] 2023-10-16 Daily api_docs build (#168913) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/492 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.devdocs.json | 24 ++++++------- 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 | 36 +++++++++---------- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 4 +-- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mocks.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- .../kbn_core_test_helpers_model_versions.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- ...kbn_core_user_settings_server_internal.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_generate_csv_types.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- .../kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_kibana_theme.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_project_switcher.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- ...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_subscription_tracking.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_text_based_editor.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_url_state.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/log_explorer.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_log_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/text_based_languages.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.devdocs.json | 24 ++++++------- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 600 files changed, 640 insertions(+), 640 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 8f58ca2eaff97..02a173fc12ed9 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-10-15 +date: 2023-10-16 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 adbbd3e9da87d..120774eb8af0e 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-10-15 +date: 2023-10-16 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 e0f6b6db40179..0dc4119e36902 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 514ff791b1715..d0b7f097d8490 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 07ad66ffc915e..a4162a8b9474c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index f38868e671cc4..ea1c59df4e5cd 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index cc900e9f0a12b..08106abfb2a0b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 5df32560c5aa5..0771bd378592e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index 733c86a4f15f5..3255c0f66ae68 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 8dd30f57ba7e2..460f5fe590832 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 1b582aa054f72..3cd9a27751c4b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index f15a05b51355d..fafbfa25cef9e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 31154d14923a9..cc3d2d8103019 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 4ebb5321c9304..b21f4f6b3e761 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index 3303da3887947..3d8628300a460 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index 31127e9c4390d..5ba408c46f260 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index bd0d4b428ca44..a2e8dbf230742 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 781dc1a047386..cc00d1a3822d1 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index f15dc523e6a26..dafd936416ad2 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-10-15 +date: 2023-10-16 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 9086b65554229..601040eeba457 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 3ee0bb3d464a1..a742cf4a9b9e0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 546d6fc95a868..b466360ca1ab9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index ba3f2178335f2..976dc794e74b0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index e03aad192c7d2..3bfacc6037264 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -13233,16 +13233,16 @@ "path": "x-pack/plugins/lists/public/exceptions/components/builder/helpers.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/left/hooks/use_threat_intelligence_details.test.ts" + "plugin": "threatIntelligence", + "path": "x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/preview/mocks/mock_context.ts" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.test.ts" }, { - "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/flyout/document_details/preview/mocks/mock_context.ts" }, { "plugin": "securitySolution", @@ -13682,7 +13682,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview.tsx" }, { "plugin": "transform", @@ -21022,16 +21022,16 @@ "path": "x-pack/plugins/lists/public/exceptions/components/builder/helpers.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/left/hooks/use_threat_intelligence_details.test.ts" + "plugin": "threatIntelligence", + "path": "x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/preview/mocks/mock_context.ts" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.test.ts" }, { - "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/flyout/document_details/preview/mocks/mock_context.ts" }, { "plugin": "securitySolution", @@ -21471,7 +21471,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview.tsx" }, { "plugin": "transform", diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 9a44e619751b4..36f38886235f1 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 1ca00b2faa83d..8fa593404cf86 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 4b08d2efdf7bd..b3d92f1f8bdb8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 17b15773d4b39..c61754c59a02a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 98d06734e5f46..7278635456972 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index a7c1c039e11eb..cd0ece04e34d9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.devdocs.json b/api_docs/data_views.devdocs.json index d26df0275f478..872458d9a15e3 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -180,16 +180,16 @@ "path": "x-pack/plugins/lists/public/exceptions/components/builder/helpers.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/left/hooks/use_threat_intelligence_details.test.ts" + "plugin": "threatIntelligence", + "path": "x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/preview/mocks/mock_context.ts" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.test.ts" }, { - "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/flyout/document_details/preview/mocks/mock_context.ts" }, { "plugin": "securitySolution", @@ -625,7 +625,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview.tsx" }, { "plugin": "transform", @@ -8219,16 +8219,16 @@ "path": "x-pack/plugins/lists/public/exceptions/components/builder/helpers.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/left/hooks/use_threat_intelligence_details.test.ts" + "plugin": "threatIntelligence", + "path": "x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/preview/mocks/mock_context.ts" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.test.ts" }, { - "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/flyout/document_details/preview/mocks/mock_context.ts" }, { "plugin": "securitySolution", @@ -8664,7 +8664,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview.tsx" }, { "plugin": "transform", @@ -15317,16 +15317,16 @@ "path": "x-pack/plugins/lists/public/exceptions/components/builder/helpers.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/left/hooks/use_threat_intelligence_details.test.ts" + "plugin": "threatIntelligence", + "path": "x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/preview/mocks/mock_context.ts" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/left/hooks/use_threat_intelligence_details.test.ts" }, { - "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/flyout/document_details/preview/mocks/mock_context.ts" }, { "plugin": "securitySolution", @@ -15762,7 +15762,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/preview/components/rule_preview.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/preview/components/rule_preview.tsx" }, { "plugin": "transform", diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 56087f89db602..60c227f73d38f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 4db4dfa1e5f75..2617bfe9dcc8e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index ed4efb5ff9915..685b039a4a767 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index d5d471b2ab5bb..76b5879735994 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -1472,7 +1472,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx#:~:text=DeprecatedCellValueElementProps), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx#:~:text=DeprecatedCellValueElementProps) | - | | | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx#:~:text=DeprecatedRowRenderer), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx#:~:text=DeprecatedRowRenderer) | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=BeatFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=BeatFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=BeatFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=BeatFields) | - | -| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=BrowserField), [helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts#:~:text=BrowserField), [helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts#:~:text=BrowserField), [helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts#:~:text=BrowserField), [helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts#:~:text=BrowserField), [columns.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/event_details/columns.tsx#:~:text=BrowserField), [columns.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/event_details/columns.tsx#:~:text=BrowserField), [enrichment_summary.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/enrichment_summary.tsx#:~:text=BrowserField), [enrichment_summary.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/enrichment_summary.tsx#:~:text=BrowserField), [table_tab.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/right/tabs/table_tab.tsx#:~:text=BrowserField)+ 31 more | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=BrowserField), [helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts#:~:text=BrowserField), [helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts#:~:text=BrowserField), [helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts#:~:text=BrowserField), [helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/drag_and_drop/helpers.ts#:~:text=BrowserField), [columns.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/event_details/columns.tsx#:~:text=BrowserField), [columns.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/event_details/columns.tsx#:~:text=BrowserField), [enrichment_summary.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/enrichment_summary.tsx#:~:text=BrowserField), [enrichment_summary.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/enrichment_summary.tsx#:~:text=BrowserField), [table_tab.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx#:~:text=BrowserField)+ 31 more | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/timeline/cells/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/timeline/cells/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields)+ 108 more | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyRequest), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyRequest) | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyResponse), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyResponse) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 8638596374c2d..88c85793f503b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index f6938415c024b..7a264a5af132e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 12cb87b28d81e..39d5d32e4e648 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 7951906ff43aa..c38060e7d1d05 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 6a3714147e4f7..6dd92fa085843 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 695235acb23a6..4dcf948b32183 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 1d43df1ea1717..cfb99c994084b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index d2434a326d95c..8fe3ea014673f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index bdda74ff6362b..f81e66ec955ad 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-10-15 +date: 2023-10-16 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 1f5562abd7ac5..9b332c975c363 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 000fe48fd8652..b8ffe348d9ba6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 4f6a44313a26b..82cb16d5842d2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index b4032f76edf42..17287d9316e8a 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 26f6d3e81b898..cd35f2b641e1a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 8b749ede6d728..51ee00757e282 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index c0a167d55b053..0a151648b62e3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 04a846f7a22bd..c59e2ab78ed8f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index df095bca9dab0..3a36768794390 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 7ef04c7e9e711..61708668f245e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 87dec6336d87b..3bb76659b5d28 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index a50281dacfe17..75ffff92d9061 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 9905c1e47f07c..776f7071f6165 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 4c273bf454239..dd7e434ce1d1a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 834665c1c9dd0..9c52d0df22115 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 6732c45ba3c73..eb1464eaa4a9c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index e6eac6580b71b..fb171d78b6329 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index a0f1fa7fac314..a3b0c82f024da 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 6ace70c9e7976..d61407753deb4 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 8bc1808dac812..c6a74b5d7d534 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index ffa9af195dc11..619e97c4d6390 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 645668408d65e..0226d1d60ac98 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 2b54b0ccc8f65..f8f823203cb47 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-10-15 +date: 2023-10-16 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 836b749b58035..bd6927e3c1dee 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 8268961e7ce3e..0b1c090034ba8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 1c54dabe8a236..02ed3c1694265 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index fba33028dd4bb..a04076c6a281b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index a2b227b134e29..05cf43c1e714b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index c5b84c39b2d1e..e92f5b3d1ab9f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index a1bf52320b7e2..20979791622d5 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index d6e3521bc05f8..d393024f11bd8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 8f9ecb4b809a9..8b364acc2fdf4 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 4042955e26572..e92b8e63be537 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index c4b2ad7e4ea2b..3d6b2868bf4e6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 0a247ae895b5b..5f68c8ba978c7 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 0168c2caaae48..ec551aa93720c 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-10-15 +date: 2023-10-16 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 682335b267e73..2ee6f9b796310 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 1ca173ed26faf..e7f86e6ac1b76 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index acb9b2479f6f5..c780f49b43613 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 829e3473a28d8..aa7af34168576 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index b535f3fefc14c..937ef4eb0b34b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 1cbefb93c6efd..07f9af265aa08 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 1619f5bdcd0f9..235261cafecec 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 14b7adc1ae774..c689d9e90a584 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index c9e5533e31bd2..8947f4f2d79db 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index c0350b33ae21c..6e46476771688 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 1fffce9912692..609e7048fd7d4 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 0e038ac7ee4d1..1105dcffcf960 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index 5ed1e16913ab3..eb6033495b6bf 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight'] --- import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 45f47a64f81e5..33a1fa60ffab6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 23cce59a83cb1..fc04c18ad6df0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 640c1d1e40c19..321996700884f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index b276c70ff4c2d..9014bb355f5ce 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 074cdcb21f368..fe4aa453204a2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 8418b04d36f67..cda82805b6629 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 2afb9721a7cc4..957da597bbe22 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index db302b1263914..29d0075d5b5d8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index a23e1cf346837..1225e4f2ee8d9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index d05c8343061c5..b0d4d982f3e2b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index a5059ea4174aa..d48aab93d9e61 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index eccdbfd30d9c9..72e8321ad6125 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 53f0eed489a53..50df06c013c77 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 55c67bb210354..8f524597cf0a4 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mocks.mdx b/api_docs/kbn_code_editor_mocks.mdx index 26a52a9d509a1..9d9c29db5ac95 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mocks'] --- import kbnCodeEditorMocksObj from './kbn_code_editor_mocks.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index c5f62d903c33a..aac4ad27d45c8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 5c51381b03f7e..7077a1a025516 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index e3ffc8f5a01dd..7351b9c05fcb8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 9be8ef87ef68d..4ac0ff8f19a6a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index 23e6f72823ba2..25e88da08a90c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 05e355c3d5bd6..fd3c483e75ccf 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index 906a3536759a1..5b69279df6367 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 3a48ee38d34ba..063df01ba4edc 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index d1e9ec48b5f29..3a8e5cb87cfeb 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 83dbe6c85f725..3cd3125ab493e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index 746dbd8b758e0..82a125e513553 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 9902bb5ea0869..c6920f72a3134 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index fa6d3f7184b5c..00bc996e29325 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 7a0c281a9d5c3..fe9063f64cf2a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index 700e41fb581c2..5485e3700f843 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index da4922b4cf3b2..4e121a0202be9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index c1025ba936469..315da2cd036dc 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index 2e3035d8fc75e..a2b3e15379011 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index ad69263170e50..3eb12df2a9676 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 3fb94bc904504..05e7bf7754fb0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 8df0356ebb009..57d137fb0fec4 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index f2b2c351cafa9..f2d28f856a98f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 42111734a71db..b0eec5a4af374 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 3bccf4077696f..1bad44ae2cdc5 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index f521c96a823b9..2f360400c5f86 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index ee20a3edb9661..7aafeb1e05033 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index cf010320e5a98..3e5281a82d196 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 3946007fa6982..5a2e9033536df 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index 15c602b1fcb24..aaa18d2fdc686 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index d74ea7f671a5b..3cac10066ef68 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 483a712f85b6e..f036d6d208253 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index d176f70a3ce4e..c42f7676c913e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 1fcac920a99d7..2497797159de6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index a483f899efa9b..02e53c58ce374 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index 0e46a12fe80b6..e1c21c2d4478e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 3b31492ac11b4..48da918642a63 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 10fe6f67bf47b..ed1d65f37c8e0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index ad77790ded3fb..814301bc1531e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index 3e2f97c9e0dd1..ecf12445c2a89 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index c8481d20bcbed..e003df0b6cd24 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 7e19025105606..23b723b1c5575 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index 2567850a5d072..dadb6931dd14b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 188a6e4a270d0..63d783e0a8967 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 729a7a255a6aa..fccfb2f6fcac0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 365a208e168f7..562568dfbf56b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index 90f62a4903319..37f1cfdf744ea 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index cc159e078c849..ca98c79bbb050 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 4fcd9ab750b54..0eed7981fe2a9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index a6b8e70f40f56..091dedaf8f183 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 888bd8444c0e0..cb179a925865f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 64dbc7942a15c..275377e6e46f1 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index ac9571f1f2d66..60eed9dbe4ba7 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index adce5fba8a596..f81fab3b16a49 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index d31fd1e259817..ecbbc111882ef 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index fb4d076d8777a..1d4d67d43d931 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index 6b7fb074cf15f..64826635697a8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index ef8a840563e6d..54fd698da013c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index 8f2ed181c1084..ff2214ac484c1 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index b7dc6f30dd223..4c4183cbc6af9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 3ec1b02774352..f32ef3ceeea7c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index 3a959560f0270..5976d20798c8a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index f7524197ee9c6..7cdac601fb0b2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index bc39f744d2e1a..3be65c0d8ccba 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index 90d02b73ec50a..c57df615c38a6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index dad0dd47d1804..6cc14ca40d8ae 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index 53e3215f8f6f1..356ea2ec84019 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 5e16f1a4c2d71..d94d8d35f146f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index a88ddb2f5f1ab..e74373b828bd0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index cf5967e2e1001..d43205bc6bab8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 3ae6825a97da6..c8184fde36da5 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 53bc8e83e9f3c..8f3ecc0e07cce 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 41921751a6bd2..cb39bb3805fd7 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index c52174763060e..c32feb28d39d6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index 554a5ffefeebf..350bdb076b4ec 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index 7529b28565afa..a714f73163fa9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index 54d1d81b1d16e..4831b14a96f0a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index ddf525cf8681e..197367fe2e91d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index b45180eabb1ba..1f3f5eac95556 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 9ddedee8adfd5..ca3dcfb8872e1 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 89197e816bd11..c0e253ff28ecc 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index 6f881c2cb14cb..cbf313cb07906 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 2fdbed216161f..3193d20175b6a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 0bf99905a732a..4650f03c18279 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index da95cfe5b63fe..532002fba3e11 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index 10dadf0b095e7..6799f662bb0dd 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index e963d6c6ca6e7..304d1082a1fb3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 3c7bbafb56c3e..a98020173db1c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index c527988e79961..493b2c4bb3feb 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index fde3030aac83b..01fd1a84853c2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index e8aa5d544c407..c5edc9234b348 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index ae258623d8932..5f3ff98bd39aa 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 2c0780495db4b..29bd12e94523c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 09941582fc6ed..101068313b1f5 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index 766e6745c4b50..36896a3ef5d3e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index 6ff23e0afff54..ad3e3de4b948f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 3dec583787f70..e873472203192 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index e102c5a24efff..1f97e30bda487 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 89eb0ac28b2d6..2d585ad885b0f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index eba716536a175..e6e46973bd6a8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index 2d258ee4e4320..d315f7a17c390 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 0eb9f83dc9f6c..abf17ce0da48d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index 0c86d679523db..5569420888d4e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index 9a2ed56800deb..73f2d545a7b15 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 12587dc234f3b..db8b8b7c15948 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 450d984c0ebdd..8c312aea79285 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index d68c6ba90df9a..e0dc9e7a50bce 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index f06d29c9bb52f..1052a2c97ea57 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index e0b48922d5bfe..b578688efe7db 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index 1892f2d5f1c88..d440777cf50c0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 70e3e8fa81f31..c344bada51e29 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index 2968ebcb66dbc..14a2dc3293235 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index a91df954399fc..f289ed664b3c6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 15a48de0397cf..23c911546e8e6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index ddd21e9a43aef..5464caa2ac347 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 4d926bfa3c7e9..5c633b6242ed7 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index ce24ef87cf823..6148030a9ed49 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 5368fd66dd200..a7991bc66cd60 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 698bebd92016a..f606f93c6b1a0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 59f0c2f3ed2e4..ed6117020c0fc 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 63236c540d5d6..cf3be58a5185d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index fa30749806797..7f32ad19cb229 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index 72730bfb40427..13c3cbb2ebe1f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index d80555ca23256..1f2da43b5e026 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 603d5350f1213..29f3be2031a1b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 7ea33f6e0b85d..6020cabc1b8ec 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 74b2a3bf3153c..33eefae0e038f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 265a6e888a4fa..402fb39f80577 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 7cfcdca9c618b..2249c29b5ab84 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index f522499af8803..4be8337f36804 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 7afe58df85410..a5d8205ade38a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index fd1bb55d11e87..67971673ea0f0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 9ad702f481de6..9ef9823515cb9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index 7053e8614cb90..22d97abdd20f6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index f21e7bd234367..d1a97d5dab626 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index 9112c4f9188ce..2ab99c2f92c34 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index 490cfe63b4f08..4e64806e388c9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 80bb245ec4692..10c99eb797109 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 2ce9d88492532..fe0a8c100dd9b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index 184b38b621600..319e699c4ea98 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 12b5e8e2c6c3c..6f4aad8004728 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 20cc636acce97..b14e63761844b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index 08664bdee2e23..3ba07fe2813e6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index 58c41568514c9..1e25708e4fe56 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index 23a865b2ef73c..8b7e1bfa5c81d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index f8461f8bc8992..753e7e48dd127 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index 85f8fe26707fb..1c63557bfa824 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 0b2aba732ab26..bf0093070e494 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index b021474ec66c7..adc8e8eef25fc 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 551824b726036..85533c5d6181c 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 7fad5f5c27d57..c0412ac840a82 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index 7efc2c2532e84..8bc49543e34d3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 694df1485d5c0..e65cac93ea077 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 2984756dda7c8..f09c587333a06 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index 62cc3ae2882f6..6ff5edbf3a58e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index e90870c150c76..ced93ecc2fefc 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index f996ab1e5d99a..4420a4598f97e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index b4696bf2b9114..e6d637da6ac7a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index f11edb4f8d37e..9cd54f6f60053 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index d12dc68038f4e..0a9fcf8f4ae1c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index 5437b6eefecbd..b505df20fdce0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 27a148658f662..f7da18c6ddbff 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index 2932152b718bc..697c81e5085e9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 760617dc3db32..77f45a60d4a0f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index b72e44d790549..077727b2f9222 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx index 5537fe256d253..25be6c576897b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal'] --- import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 46d540046118f..6492cc8e8ffcb 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 8de14f7f87af0..8ba8a187b414d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 2fc57508f1493..2a66c46ec9639 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 0b4a7066a322e..9dcda0273936a 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 331cd910f9892..a4484f1cef7fd 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-10-15 +date: 2023-10-16 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 3122adf6c2f38..57a3c95464d88 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-10-15 +date: 2023-10-16 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 c6208830b7b76..4f3c04a720eb8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index 9c9efd41da16a..80cd90fb516ad 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 184222a0edc7b..9eff7dfdd4ea2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 644fe977dac0a..9824c4194ebc7 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index 4ce637b12e867..98da60e812f4c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index e50ca2e968d2f..ddfb2445d51fb 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index 17cd6afb44067..e6a38eda98e74 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index ca057256a541d..c825f742c6161 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index e76034d59c3fe..a0dca38a23f1a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index cb2a5e1538e1f..f51d792f0dadc 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index 9d1033dfeb500..87679fe0aef81 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 77b167c30e4aa..d23ab5a5b1629 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 0121755452098..f0b8ca10bd6f7 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index 1325eae8cd4c2..8365756902783 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 2c160a2e35e15..a1bc9ae340896 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index c619cd28032ea..ef16b507146ed 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 38a70c2936525..ad30c71e18cad 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index af055867ff747..66e5b5ab04638 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index a06291012b92b..c1243158ec503 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index a9e3cfc4b9e1b..6b086f32b908f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx index 713f0eeb95ddd..68cf71de5abce 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs'] --- import kbnEcsObj from './kbn_ecs.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index e1a15edfeefaa..4ae2207818e40 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index ecc4416c95cf4..a37a1935ff08f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 8cd993088127d..f9371046745b6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index ebb43cad1754e..1c2850e560cf5 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index b7288ea277ffb..e5efeb8c15c70 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 5b749b921880d..fb48376da0b66 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index 3bba402480819..ddadfe3d86efc 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 28496cfc9c989..426bf89609162 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 24ac95fc97200..ea0d58d6cc446 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index ffa326eeb0dc7..f234d4a0f2eac 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index df0cbe6fb054f..b3a8b5265956f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 78989dc733247..22c95b5d45bd7 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 5cb22fee13278..cd03b222a1bd4 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index b4be7708ebaec..f799a209c8477 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index 32981202fe6a2..4b3606d88e274 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index bc2cc735d58b1..55707e5ea8049 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-10-15 +date: 2023-10-16 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 56f7a44d279e0..bb88307a5038f 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-10-15 +date: 2023-10-16 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 a62035a12e8f8..c791a996a6c1b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx index 5aa6a6770e897..44e5fc2f1696d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types'] --- import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 4471b57b2022c..7d3ccbee88f21 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 692e15fded743..d46faa6058672 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index b1db5340a0c28..766c43d3f508f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 06cddfcdb5bad..c531cd5cf3e94 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 0a2c9e24cc10b..276ed63a9b705 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index 0ea7a2cb3b464..ffa9af9744542 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 39402797b7375..9751305dff623 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index 6cdc7be433b11..3033ea9f09e6c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 6e09620c6adc9..a70b07ccede1b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 602d69cb3b3d5..792f3c7149e94 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index fcd00e824e52d..1846ac148f7a3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 2fbc02900de5b..83c209acf919c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index d672357606a3c..f6e8428fb8cc0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index ee27ee75c9523..4ba9d02340107 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index e0b140ec722b8..5153baafc9ed3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index d2981aeab7aa9..b5a6dccb8a749 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index 999e0d442bff5..d703c9b0e953a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 0bbbe2e365e8c..2b6c35c07ea88 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 766c925524629..42645ded452a9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index fbea7cddb8e5a..d3b4d089690b8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index a660e5c8291bc..da1edd6557aad 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index 941aa4f41455d..788d3c511f82d 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 87bf106be5969..3634915dcf97e 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index 94986e218a235..0f8fa389c07d4 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 21684706b8bb1..9e27e65b8f807 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 05cfd744aaefe..0a1240291a10d 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 89781d2d11bd3..896089ef528b5 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 728df23902cd6..5207dd4a02335 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index 7ff9ce0084d7e..050b6408326a9 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index ea7fa826750ce..a2bdfca15da79 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index b311f8bf2af7e..4e5bcdab89821 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 38a837e4eae0e..477c0d0f680d8 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index d56ab874b1d57..b00a63ff992e9 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 02b4473b0bf39..64f2c7d7df366 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index 0d206461fb0c7..18ca1cfcc109f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 7f32a809143ff..7ed7490128132 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index b1dd92d48f0ee..18c8bdf30ce5b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 24a59fa95a518..38a8925ab4eff 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index 2feafbe2a5cb6..d5fb6904b1dba 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 12363e1bab751..2ee6627c4cdd0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index 1b5d0a19a2f40..2192b4fe34cf4 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index 49f7612c2b67b..e0147872426e3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index 071bc63c0122c..572cadef73929 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index 71c78ae59c6dc..45782862469b8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index b90235666a1ed..bfcdeb05b7ed9 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index b63127d2e9d6b..d765ae037a24c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index d8c0be4fc33ad..9adeafc1b3df8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index e431c5af5970c..383662d55ee1b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme'] --- import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 039a7d1e1b6f5..38e0a194e0dd2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index 0736973e299e7..65cb08e371ae0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index d40060af21ef4..72b398912435f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index 693414ff4195b..bc587b109e7b4 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index 9a406bcf73082..925720699807f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index 0e2f38337ac17..c94d6e4eb594d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index 1998bad8988a1..141bf74361b65 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index cda1656c0cbb6..56b8cd19d8d7b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index 6b1e02c0d76d1..cf7f286ec0de3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 2143f148be0a9..b5f4b8e13a15a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 4635a4ed1c324..83015c42eda2f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index dfc48de1fef07..f811ba6dc4cf9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index 14332da8fe1fc..71580bb416f3d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 185aea7b2b2e3..af4684ea2aba9 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 82062e6a59529..3150479d50f88 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index e2ece86f81572..5546bd4f437c3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index 5df9365db1eaa..e3537851375aa 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 914fdf2ef226f..17266efbd3e0c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 46b3ba48d8939..8f579953f5b53 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index da69c157cfa57..b9401a58144db 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 3c05744650a8a..0fa343fd0a65a 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 653cb4ed4d898..8c87dcf832715 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index d143e5e679d9f..8832f38d83bbf 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index 7098d24f62c8e..9b0128ce234c7 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index ed23e9d7e897c..2b1f6689d6709 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 10ea15d81496b..150f1025d8763 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index 6bec86754b5a5..d22f5e8549c56 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index 02bd8f40d7602..b374838bc3904 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 5c76fc386781e..80485e49b36ab 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 34ed025409fc3..8ea326bc9670e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index bf8bcfaf11334..4c9ce0b27c3dd 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 7b20f28a904f3..44d0b7936edb7 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index ae7817df14ae9..0dd06b97f2bee 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index c13194f4d5100..ef80718eb7871 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index a81be06994b10..b8441bd2c4194 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index ed029cb1a9897..0e6606ec9e729 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index c5da61c133cd4..45adea99a728d 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index ef98a0ed37f19..b76ebbc599505 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index 976d37bb6128a..ce5fa17716c8a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 800ec16c7f6bd..c9deefd5d50d0 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index ac745e4b9107c..c29e668a03e59 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index c46b049ba1168..c83de04173b53 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index c35f2ef0eb71f..b317970f87c48 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 7c91fe293a83e..27f3fc9ff5baf 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index b14d90690df2d..dd24c3c7a09b3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index 0e5a5e40492ef..c2ab04c62040b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 1aed9ef485e3a..b707d92fd1708 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index b9ce192fa6255..38cf816615b2f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index c7c2e14fd4126..013739f3d9494 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 0352248603738..e4793e91256de 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index fbebcdb9021a2..c080a8833a74c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index 38d79173742d3..84c5b47985927 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index a0a3f165e6bd5..903b28c9e2852 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 1c2a914fb4b5e..82afa8f741638 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 5ecaad5dfc2f9..a614bbe812052 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 87ff4ad860d81..800df376102df 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-10-15 +date: 2023-10-16 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 65d0370501b00..f3ef52dcde56a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 55b0bb85f315c..e8f419ff4e520 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index e4a493f36623a..3679b2ca915a3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 83ae83697df7d..4235a819e1ead 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index cfa747286c59a..32cdf149ff10f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index 5407d598da1ae..ad2dbb9c32a10 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 39f29fe801197..6a1f1c78ef1a4 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 737cd1aa5a029..5ae786dab9d93 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index 416a907f87f05..80efe6a0b8dcb 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 34bcdd8092417..e9e3da4b0a2a7 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 84d301e761309..6ff2c6b8e70dc 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index df848241c216e..dba5546cd143a 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index dccf04f7554ec..150400daa080f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 635bc8a7f44e0..7b5454756ffac 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 79163a3bbdf95..1674057e6f59c 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 00322a5e5327e..8b9b9890a1932 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 73d6ecfe06c95..d1300665f7451 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index aa1fe4020b77d..00a8e186be153 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index b1500ef36915f..8eba286136149 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-user-profile-components'] --- import kbnSharedUxAvatarUserProfileComponentsObj from './kbn_shared_ux_avatar_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 85872198f6e8c..0e170b965b7fd 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index 2e8ad0f157631..2121eee66e97a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index d0a7e0ba1793c..dfb6e2e88dd85 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 83a612583eb39..979a2cd8146f4 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index 746ba4cbc86b8..2af0319da959d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index e2a256ac04b04..cd009b6f6eca2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index e4b4cdf4f02be..26ecb85858f24 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index ad360496c88d2..fcd5f95f0e9a5 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index b3604c1c2fb17..e047f0799ed08 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 5379dfe3634d3..7a2e1eae8a40b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index 9303b656c8d88..f9e2608025996 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index e39bfa0fadb26..a52870876556b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index b6a120e9ad661..ad2daa13431d3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index 63c5e6faf44f4..224150b0a5119 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index 496e3d735b3e5..0938f59fee4f5 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index ba5d40cd6467a..03b1c582a6e64 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index 0ec1dc3cf48b6..9aa91943236f6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 0c88e11c00d39..8937ad127cd47 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index 32cff6f88981c..d41a4d0fc784d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 8942e13d1cf8f..360b75d1d8606 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index 0addc0bc21644..08e0ca879e7f6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index 7140c27bc8d9d..8d73687c2ed3c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index ca86085c1f779..a1e1311c3e500 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 935a480de20bc..3f1e9f778c09d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index c3240a965e3e3..c2d546e8230a7 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 26dfe8784a514..4e1e05ee791c5 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 1518c85556558..8ee06145f1d04 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index 40f0c12ebd713..5a45bc096d830 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 7d5f0e121b142..c2182f953ee40 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index a849662e843fc..3d871b66d786d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 2d921ad311040..4cfb2459eae97 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index dacd9435ac5d7..8e678811ddc6b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index c274dbb1ac8f7..db5d96c35d812 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index ca48894ded99e..aca92e2d3fc5e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index ee743c6aad660..1bdba74a6d099 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index fc87540229c6c..60b62b0882530 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index fb1df1259f13b..8c6ceeca637ac 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 258c917cf6a09..7c55b3b00cff5 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-10-15 +date: 2023-10-16 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 2a61149df0bba..8afa04770e852 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 9f219fdb4c67a..16b9ace49d06a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 8686f2d3e9e69..abf6976ec1fb4 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index e148589d79251..e4820e28b7f81 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_subscription_tracking.mdx b/api_docs/kbn_subscription_tracking.mdx index 114448356e0f2..7caeb5d887b6b 100644 --- a/api_docs/kbn_subscription_tracking.mdx +++ b/api_docs/kbn_subscription_tracking.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-subscription-tracking title: "@kbn/subscription-tracking" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/subscription-tracking plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/subscription-tracking'] --- import kbnSubscriptionTrackingObj from './kbn_subscription_tracking.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index ae4aa3929b621..0bebffeee5898 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index da2a1a3342c3d..2dcc16b166adb 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 83ee884a01f2d..2765cc3eb5876 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index 45ae84cf12400..f16e5f0b127b5 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index 5981dffbbddd0..017269ec0c400 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 79bc51cba4f1a..6db1b043000a6 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index e1d5797a811df..f1d03e539483a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 884b0cc4402f5..48205c9dfaa3d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index 433e55eb0f23f..7137e70b6686d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index ed1f37e3fea3c..b2f2efb61d86c 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-10-15 +date: 2023-10-16 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 c26a0ad99d20e..59860a71c14aa 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index fe64949cd9b01..832ddeaf2a6fa 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index b37f3d12f5a32..2f2581c5cea4e 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 187abf6fad77b..410850819f55d 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-10-15 +date: 2023-10-16 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 b9c0f840f66d2..378d32050c3b8 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index b390d9ebd5ac7..6580390847c6a 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index d63f93b41f21e..c8b595f919cf5 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 4807c3994ea60..492bd4a1bbff4 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index b48233de8925e..b70692732b0b7 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 2d6db7a607cac..588836952d9b0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index b119318249c72..c3f62b8273685 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index 601f72198a59c..913cc5dc344bf 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index ba041ced4d3ee..ebab782f21763 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index e27925236789b..42e9599208fb3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 9056043fb1c5f..2c299a0123cee 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 85e25dd8e6981..34a08132e55db 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 362dbdad0f503..afc9df50adc61 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index e96762b22d4ad..3fe3758921613 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 3391559a912a9..8a8fde05d9447 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 6ec7b5767608d..cd653dd2b06ce 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 7d4de65852d8a..ce999af1257e3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 0ab4177f98649..ef09c70daf91f 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index b8c392b12aca9..6881a7ae955b9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/log_explorer.mdx b/api_docs/log_explorer.mdx index e67224cb1582e..7b9e288b9ff4e 100644 --- a/api_docs/log_explorer.mdx +++ b/api_docs/log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logExplorer title: "logExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logExplorer plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logExplorer'] --- import logExplorerObj from './log_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 24a5e1f3ada0b..aa966cd9646a2 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 17129e6361fe0..5f754be8c6ed2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 23ed347358a53..7d7a6a32daf8b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index f8084dc7e071d..1ba3cddb08725 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index de64a89c2456d..89d00c51a1885 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 41f2904be89c9..19cf9911f5529 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 527c07eba5b8d..aa7e341e2dd65 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index 3daf28fcc8f8f..dc1006154e1cd 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 79b573fb0b5cf..975a31aa6bf57 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 1a5954557e937..f49a4e303c9b0 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 711e0a0724874..8cab97fae2de9 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 81c476cbc3fc6..389082dbe11f2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 55329e836f6aa..f5f24e8c029d1 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 25655d031cd67..3926ac4e46d74 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_log_explorer.mdx b/api_docs/observability_log_explorer.mdx index c898d17d8b8ef..3d917e80882cf 100644 --- a/api_docs/observability_log_explorer.mdx +++ b/api_docs/observability_log_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogExplorer title: "observabilityLogExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogExplorer plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogExplorer'] --- import observabilityLogExplorerObj from './observability_log_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index fcc338bc07170..e997751f0599c 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index cd1d3f0f86ed4..eb419ba5e0955 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 196f23a273ba6..2ca20438e709f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index 3d7085c56f789..b164e6242aebf 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 74c0ef45c1b7d..1613387955af9 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index cc0483902bfec..64b61e650320b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 283215d5ff11f..49ef172f1f527 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 3ddce8482cc0c..b55451cf67c0d 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index c0091583e262b..47ce0a2808b34 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 0b37855f67321..14df5b204a927 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 89333e46141ae..d664aca798714 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 858194933be7c..3ab31e7ef3ea2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index e46ac90841586..2101eda6d9480 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 2be2adb4c0ab0..c14ffe2f7c17f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index ed16de59ddf3b..f8abfca5e955f 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-10-15 +date: 2023-10-16 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 4893333ffcf19..d792d02267680 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 576c260ebab06..ccfc01ac2e9ee 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 2648336fd7c9f..ca6f71777c8f3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 47dd8486bef84..db48333d091c2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index bdf5a009324b6..1625a84df3879 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 6be7bab550ee7..48d931e6d11ad 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index d6d9350ce3cb4..2af9c231e2c08 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index c2c6e86b9dd47..e7b6d6df1f915 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 5114efb37f49d..126c8ef55ffc4 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index 255ed63bfef31..f4066d17158ff 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index 223abd9be444a..3f09a79c9faf2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index ea91ebbc7ad84..bd5ff97e3c05a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index c1214558beeaa..297b3e7f5b66b 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 5dabcfd775677..c80f4051d63dc 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 751a96c3022f0..3c574f9e5cc8d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index a3a5e014e7ce9..f1814cd3db16e 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 926cbb8fdd6d5..6d49c3dc8cf26 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index b7b4e9961bb38..aa52f3adb9251 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index 8b45d134a8937..e6e012bc303c3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 099e560595a6f..583dc1f3bbafa 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index f606f57f9a6eb..68f30ab93bd14 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-10-15 +date: 2023-10-16 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 ade9fdc9a00f8..44a7c1a7b546a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index cbb401c693e6a..e047837c56f30 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index d8c24380cbb00..62aa098305918 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index 3ade5507ec23e..1959477135473 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 0ee59ee1200d0..f8ba2f16d4472 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.devdocs.json b/api_docs/timelines.devdocs.json index 2b8a0e5378458..3542fc09ae8a1 100644 --- a/api_docs/timelines.devdocs.json +++ b/api_docs/timelines.devdocs.json @@ -1415,11 +1415,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/right/tabs/table_tab.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/right/tabs/table_tab.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx" }, { "plugin": "@kbn/securitysolution-data-table", @@ -3977,11 +3977,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/right/tabs/table_tab.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/right/tabs/table_tab.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/right/tabs/table_tab.tsx" }, { "plugin": "securitySolution", @@ -4329,27 +4329,27 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/shared/hooks/use_event_details.ts" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_event_details.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/shared/hooks/use_event_details.ts" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_event_details.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/right/context.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/right/context.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/right/context.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/right/context.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/left/context.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/left/context.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/left/context.tsx" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/left/context.tsx" }, { "plugin": "securitySolution", @@ -4361,11 +4361,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_browser_fields.ts" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_browser_fields.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/flyout/shared/mocks/mock_browser_fields.ts" + "path": "x-pack/plugins/security_solution/public/flyout/document_details/shared/mocks/mock_browser_fields.ts" }, { "plugin": "@kbn/securitysolution-data-table", diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 3738823bf6b96..1dc96a8076c3d 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index ee716385b5dcf..19d4cb756be16 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index ce113fece9ace..032e3fd4c5526 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-10-15 +date: 2023-10-16 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 62b13d45b5239..bf64581633565 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 5032796bffdbe..772f905e905ba 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 1c902e985ec4a..09fe37b3923ac 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index ce6fe41d44e18..6a4073cad1f83 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index b792ccedd5b6c..401f3cbb670c1 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index dc6f633d2ba67..418502b01cad2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index a1093cf720cbe..b4352f5c02b49 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2023-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index be22db35b554b..50a8d55139205 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-10-15 +date: 2023-10-16 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 924eeeff2536c..1862d1ca287a2 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 410ecf0d648df..0acd5ee1523ac 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 8f7ad27670e4d..b5d7d3d185133 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 7240bd5671ebc..db83a50f144b5 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 91c7d29035416..b0894842171da 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 8d6c59ff29a5d..28f2417335144 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 8e90655ee0479..d749bacb5e20a 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index d1d4d95cc8713..e7f127d356736 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index d3e355e1dc35c..f15f3821e55ef 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index 9f011c7d764c0..9c96f9228f57f 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index ea6fb4ea82c2e..439b9d9bb4cd3 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 9600bf3dcc150..7b2003557f751 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 9ca8fed0569f5..a5283e3b76411 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-10-15 +date: 2023-10-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From de217942879d5a97b29f6d5a3941b865392fcd6e Mon Sep 17 00:00:00 2001 From: "Eyo O. Eyo" <7893459+eokoneyo@users.noreply.github.com> Date: Mon, 16 Oct 2023 08:32:41 +0200 Subject: [PATCH 55/80] make changes to menu items for es serverless left nav (#168565) ## Summary This PR makes the following changes to the nav for serverless elasticsearch left nav; - Change _Visualize Library_ to _Visualizations_ - Move _Get started_ to footer #### Visual Change Screenshot 2023-10-11 at 17 07 24 --- .../serverless_search/public/layout/nav.tsx | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/x-pack/plugins/serverless_search/public/layout/nav.tsx b/x-pack/plugins/serverless_search/public/layout/nav.tsx index d35b8c4c2983c..7e050fe4fdc1e 100644 --- a/x-pack/plugins/serverless_search/public/layout/nav.tsx +++ b/x-pack/plugins/serverless_search/public/layout/nav.tsx @@ -30,13 +30,6 @@ const navigationTree: NavigationTreeDefinition = { }, breadcrumbStatus: 'hidden', children: [ - { - id: 'search_getting_started', - title: i18n.translate('xpack.serverlessSearch.nav.gettingStarted', { - defaultMessage: 'Getting started', - }), - link: 'serverlessElasticsearch', - }, { id: 'dev_tools', title: i18n.translate('xpack.serverlessSearch.nav.devTools', { @@ -65,6 +58,9 @@ const navigationTree: NavigationTreeDefinition = { }, { link: 'visualize', + title: i18n.translate('xpack.serverlessSearch.nav.visualize', { + defaultMessage: 'Visualizations', + }), getIsActive: ({ pathNameSerialized, prepend }) => { return ( pathNameSerialized.startsWith(prepend('/app/visualize')) || @@ -117,6 +113,15 @@ const navigationTree: NavigationTreeDefinition = { }, ], footer: [ + { + type: 'navGroup', + id: 'search_getting_started', + title: i18n.translate('xpack.serverlessSearch.nav.gettingStarted', { + defaultMessage: 'Getting started', + }), + icon: 'launch', + link: 'serverlessElasticsearch', + }, { type: 'navGroup', id: 'project_settings_project_nav', From 0ede530ae36bdc0d87462b0028139fa187942b16 Mon Sep 17 00:00:00 2001 From: Justin Kambic Date: Mon, 16 Oct 2023 03:27:11 -0400 Subject: [PATCH 56/80] [Synthetics] Add test id attributes to synthetics retest elements (#168888) ## Summary Adds test IDs to some newly-added elements. This is useful to us for E2E testing purposes. We can select other attributes/text for these features, but it is beneficial to have the added assurance and simplicity of using a test ID to find these elements. --- .../monitor_details/monitor_summary/test_runs_table.tsx | 6 +++++- .../monitor_summary/test_runs_table_header.tsx | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx index cf4e5532519ed..5fe46b6c52697 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx @@ -182,7 +182,11 @@ export const TestRunsTable = ({
- + ); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table_header.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table_header.tsx index 3e43f23956180..c703c3b253c85 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table_header.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table_header.tsx @@ -61,6 +61,7 @@ export const TestRunsTableHeader = ({ dispatch(showOnlyFinalAttemptsAction(e.target.checked))} From dcc3f86c41bb5a22d0011112ae38aa5e4639dac4 Mon Sep 17 00:00:00 2001 From: Jean-Louis Leysens Date: Mon, 16 Oct 2023 10:02:05 +0200 Subject: [PATCH 57/80] Add heap snapshot flag to serverless `Dockerfile` (#168099) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Adds the `--heapsnapshot-signal` to the `node.options` file in Kibana serverless docker builds so that we can capture heapsnapshots. So our `node.options` for serverless builds will look like: ``` kibana@docker-desktop:~$ cat config/node.options ## Node command line options ## See `node --help` and `node --v8-options` for available options ## Please note you should specify one option per line ## max size of old space in megabytes #--max-old-space-size=4096 ## do not terminate process on unhandled promise rejection --unhandled-rejections=warn ## restore < Node 16 default DNS lookup behavior --dns-result-order=ipv4first ## enable OpenSSL 3 legacy provider #--openssl-legacy-provider 👉🏻--heapsnapshot-signal=SIGUSR2👈🏻 ``` --- .../os_packages/docker_generator/templates/base/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile b/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile index dca3b04faba82..8db4b419a184a 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile +++ b/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile @@ -126,6 +126,8 @@ COPY --chown=1000:0 config/serverless.yml /usr/share/kibana/config/serverless.ym COPY --chown=1000:0 config/serverless.es.yml /usr/share/kibana/config/serverless.es.yml COPY --chown=1000:0 config/serverless.oblt.yml /usr/share/kibana/config/serverless.oblt.yml COPY --chown=1000:0 config/serverless.security.yml /usr/share/kibana/config/serverless.security.yml +# Supportability enhancement: enable capturing heap snapshots. See https://nodejs.org/api/cli.html#--heapsnapshot-signalsignal +RUN echo '\n--heapsnapshot-signal=SIGUSR2' >> config/node.options {{/serverless}} {{^opensslLegacyProvider}} RUN sed 's/\(--openssl-legacy-provider\)/#\1/' -i config/node.options From 743a3d5d05332c90fd489a5429370355d455d1ab Mon Sep 17 00:00:00 2001 From: Vitalii Dmyterko <92328789+vitaliidm@users.noreply.github.com> Date: Mon, 16 Oct 2023 09:24:35 +0100 Subject: [PATCH 58/80] Update translations.ts --- .../public/detection_engine/rule_creation/logic/translations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/logic/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_creation/logic/translations.ts index f58e84a0c5d91..002330533867a 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/logic/translations.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_creation/logic/translations.ts @@ -23,6 +23,6 @@ export const esqlValidationErrorMessage = (message: string) => export const ESQL_VALIDATION_MISSING_ID_IN_QUERY_ERROR = i18n.translate( 'xpack.securitySolution.detectionEngine.esqlValidation.missingIdInQueryError', { - defaultMessage: `For non-aggregating queries(that don't use STATS..BY function), use [metadata _id, _version, _index] operator after source index and ensure resulted fields contain _id`, + defaultMessage: `For non-aggregating queries(that don't use STATS..BY function), use [metadata _id, _version, _index] operator after source index and ensure _id property is returned in response`, } ); From 506df03ab587c47288b99bde9beb8f9614130951 Mon Sep 17 00:00:00 2001 From: Vitalii Dmyterko <92328789+vitaliidm@users.noreply.github.com> Date: Mon, 16 Oct 2023 09:25:15 +0100 Subject: [PATCH 59/80] Update esql_rule_ess.cy.ts --- .../e2e/detection_response/rule_creation/esql_rule_ess.cy.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/esql_rule_ess.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/esql_rule_ess.cy.ts index 6be37f923102d..7ce695fba51f3 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/esql_rule_ess.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/rule_creation/esql_rule_ess.cy.ts @@ -125,7 +125,7 @@ describe('Detection ES|QL rules, creation', { tags: ['@ess'] }, () => { getDefineContinueButton().click(); cy.get(ESQL_QUERY_BAR).contains( - 'use [metadata _id, _version, _index] operator after source index and ensure resulted fields contain _id' + 'use [metadata _id, _version, _index] operator after source index and ensure _id property is returned in response' ); }); @@ -139,7 +139,7 @@ describe('Detection ES|QL rules, creation', { tags: ['@ess'] }, () => { getDefineContinueButton().click(); cy.get(ESQL_QUERY_BAR).contains( - 'use [metadata _id, _version, _index] operator after source index and ensure resulted fields contain _id' + 'use [metadata _id, _version, _index] operator after source index and ensure _id property is returned in response' ); }); From 167605e3469509a587607d4fbc7c96c3b4a4a580 Mon Sep 17 00:00:00 2001 From: Konrad Szwarc Date: Mon, 16 Oct 2023 10:35:24 +0200 Subject: [PATCH 60/80] [EDR Workflows] Execute action RBAC copy updated (#168830) Closes https://github.com/elastic/kibana/issues/168061 Copy updated per request, tests aligned. ![Screenshot 2023-10-13 at 12 22 58](https://github.com/elastic/kibana/assets/29123534/fbb4556f-7f42-431d-9963-a0c6cd4b91f4) --- .../features/src/security/kibana_sub_features.ts | 3 +-- .../public/management/cypress/e2e/endpoint_role_rbac.cy.ts | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/x-pack/packages/security-solution/features/src/security/kibana_sub_features.ts b/x-pack/packages/security-solution/features/src/security/kibana_sub_features.ts index d9a090f1313f0..a9cba155b1bde 100644 --- a/x-pack/packages/security-solution/features/src/security/kibana_sub_features.ts +++ b/x-pack/packages/security-solution/features/src/security/kibana_sub_features.ts @@ -528,8 +528,7 @@ const executeActionSubFeature: SubFeatureConfig = { description: i18n.translate( 'securitySolutionPackages.features.featureRegistry.subFeatures.executeOperations.description', { - // TODO: Update this description before 8.8 FF - defaultMessage: 'Perform script execution on the endpoint.', + defaultMessage: 'Perform script execution response actions in the response console.', } ), privilegeGroups: [ diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_role_rbac.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_role_rbac.cy.ts index d0f9da6280c8d..6a3e7d16040c4 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_role_rbac.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_role_rbac.cy.ts @@ -47,7 +47,7 @@ describe('When defining a kibana role for Endpoint security access', { tags: '@e 'Host Isolation Perform the "isolate" and "release" response actions.Host Isolation sub-feature privilegeAllNone', 'Process Operations Perform process-related response actions in the response console.Process Operations sub-feature privilegeAllNone', 'File Operations Perform file-related response actions in the response console.File Operations sub-feature privilegeAllNone', - 'Execute Operations Perform script execution on the endpoint.Execute Operations sub-feature privilegeAllNone', + 'Execute Operations Perform script execution response actions in the response console.Execute Operations sub-feature privilegeAllNone', ]); }); From de13e236d6df289ac8a6a912f6b9c5aeb8289ef6 Mon Sep 17 00:00:00 2001 From: Jedr Blaszyk Date: Mon, 16 Oct 2023 10:08:29 +0100 Subject: [PATCH 61/80] [Enterprise Search][Connectors] Add missing RCFs for Google Drive (#168832) --- .../types/native_connectors.ts | 110 +++++++++++++++++- 1 file changed, 106 insertions(+), 4 deletions(-) diff --git a/packages/kbn-search-connectors/types/native_connectors.ts b/packages/kbn-search-connectors/types/native_connectors.ts index a69036fc7c0e8..69a2d64184465 100644 --- a/packages/kbn-search-connectors/types/native_connectors.ts +++ b/packages/kbn-search-connectors/types/native_connectors.ts @@ -776,13 +776,111 @@ export const NATIVE_CONNECTOR_DEFINITIONS: Record Date: Mon, 16 Oct 2023 11:29:49 +0200 Subject: [PATCH 62/80] [RAM] default value when have deleted slack connector attached to a rule (#168695) Solves: https://github.com/elastic/kibana/issues/168563 and https://github.com/elastic/kibana/issues/168027 ## Summary Should work like this: https://github.com/elastic/kibana/assets/26089545/10544c51-428a-4d31-af6c-bf1ae7df06d6 But worked like this: https://github.com/elastic/kibana/assets/26089545/9a171bcf-74ce-45be-af68-571a83615165 And warning message under the dropdown was replaced: From: Screenshot 2023-10-09 at 22 04 58 To: Screenshot 2023-10-12 at 14 29 38 - [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 --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../public/connector_types/slack/slack.tsx | 2 +- .../public/connector_types/slack_api/translations.ts | 2 +- .../action_connector_form/connectors_selection.tsx | 8 ++------ .../apps/triggers_actions_ui/details.ts | 3 +-- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/x-pack/plugins/stack_connectors/public/connector_types/slack/slack.tsx b/x-pack/plugins/stack_connectors/public/connector_types/slack/slack.tsx index 8fe351407ab92..95c35565e27b5 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/slack/slack.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/slack/slack.tsx @@ -39,7 +39,7 @@ export function getConnectorType(): ConnectorTypeModel> => { - let selectedConnector = connectors.find((connector) => connector.id === actionItemId); - if (allowGroupConnector.length > 0 && !selectedConnector) { - selectedConnector = connectors.find((connector) => - allowGroupConnector.includes(connector.actionTypeId) - ); - } + const selectedConnector = connectors.find((connector) => connector.id === actionItemId); + if (!selectedConnector) { return []; } diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts index b2732c064721b..2d5c8a1815214 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts @@ -420,8 +420,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/168027 - describe.skip('Edit rule with deleted connector', function () { + describe('Edit rule with deleted connector', function () { const testRunUuid = uuidv4(); afterEach(async () => { From 3488c83dc5abef2741cabfce277202a7f24ff951 Mon Sep 17 00:00:00 2001 From: Ignacio Rivas Date: Mon, 16 Oct 2023 11:51:50 +0200 Subject: [PATCH 63/80] [Index Management] Fix small edit lifecycle bugs (#168560) --- .../helpers/test_subjects.ts | 1 + .../home/data_streams_tab.helpers.ts | 1 + .../home/data_streams_tab.test.ts | 49 +++++++++++++++++++ .../common/types/data_streams.ts | 4 +- .../application/lib/data_streams.test.tsx | 38 ++++++++++++++ .../public/application/lib/data_streams.tsx | 38 ++++++++++++++ .../data_stream_detail_panel.tsx | 26 +++++----- .../data_stream_table/data_stream_table.tsx | 5 +- .../edit_data_retention_modal.tsx | 47 ++++++------------ .../index_management/data_streams.ts | 7 ++- .../data_streams_tab/data_streams_tab.ts | 38 ++++++++++---- 11 files changed, 194 insertions(+), 60 deletions(-) create mode 100644 x-pack/plugins/index_management/public/application/lib/data_streams.test.tsx diff --git a/x-pack/plugins/index_management/__jest__/client_integration/helpers/test_subjects.ts b/x-pack/plugins/index_management/__jest__/client_integration/helpers/test_subjects.ts index b6656c0dae354..10e94bb2f718c 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/helpers/test_subjects.ts +++ b/x-pack/plugins/index_management/__jest__/client_integration/helpers/test_subjects.ts @@ -102,4 +102,5 @@ export type TestSubjects = | 'filter-option-h' | 'infiniteRetentionPeriod.input' | 'saveButton' + | 'dataRetentionDetail' | 'createIndexSaveButton'; diff --git a/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.helpers.ts b/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.helpers.ts index 6629502498c74..3a6add88c2840 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.helpers.ts +++ b/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.helpers.ts @@ -278,6 +278,7 @@ export const createDataStreamPayload = (dataStream: Partial): DataSt }, hidden: false, lifecycle: { + enabled: true, data_retention: '7d', }, ...dataStream, diff --git a/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts b/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts index c40823509d640..bbb8d924fcd02 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts +++ b/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts @@ -338,6 +338,55 @@ describe('Data Streams tab', () => { }); describe('update data retention', () => { + test('Should show disabled or infinite retention period accordingly in table and flyout', async () => { + const { setLoadDataStreamsResponse, setLoadDataStreamResponse } = httpRequestsMockHelpers; + + const ds1 = createDataStreamPayload({ + name: 'dataStream1', + lifecycle: { + enabled: false, + }, + }); + const ds2 = createDataStreamPayload({ + name: 'dataStream2', + lifecycle: { + enabled: true, + }, + }); + + setLoadDataStreamsResponse([ds1, ds2]); + setLoadDataStreamResponse(ds1.name, ds1); + + testBed = await setup(httpSetup, { + history: createMemoryHistory(), + url: urlServiceMock, + }); + await act(async () => { + testBed.actions.goToDataStreamsList(); + }); + testBed.component.update(); + + const { actions, find, table } = testBed; + const { tableCellsValues } = table.getMetaData('dataStreamTable'); + + expect(tableCellsValues).toEqual([ + ['', 'dataStream1', 'green', '1', 'Disabled', 'Delete'], + ['', 'dataStream2', 'green', '1', '', 'Delete'], + ]); + + await actions.clickNameAt(0); + expect(find('dataRetentionDetail').text()).toBe('Disabled'); + + await act(async () => { + testBed.find('closeDetailsButton').simulate('click'); + }); + testBed.component.update(); + + setLoadDataStreamResponse(ds2.name, ds2); + await actions.clickNameAt(1); + expect(find('dataRetentionDetail').text()).toBe('Keep data indefinitely'); + }); + test('can set data retention period', async () => { const { actions: { clickNameAt, clickEditDataRetentionButton }, diff --git a/x-pack/plugins/index_management/common/types/data_streams.ts b/x-pack/plugins/index_management/common/types/data_streams.ts index 8e2e5c3368ac3..f0bd12d96fde5 100644 --- a/x-pack/plugins/index_management/common/types/data_streams.ts +++ b/x-pack/plugins/index_management/common/types/data_streams.ts @@ -59,7 +59,9 @@ export interface DataStream { _meta?: Metadata; privileges: Privileges; hidden: boolean; - lifecycle?: IndicesDataLifecycleWithRollover; + lifecycle?: IndicesDataLifecycleWithRollover & { + enabled?: boolean; + }; } export interface DataStreamIndex { diff --git a/x-pack/plugins/index_management/public/application/lib/data_streams.test.tsx b/x-pack/plugins/index_management/public/application/lib/data_streams.test.tsx new file mode 100644 index 0000000000000..a15cbaefbd0fa --- /dev/null +++ b/x-pack/plugins/index_management/public/application/lib/data_streams.test.tsx @@ -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 { getLifecycleValue } from './data_streams'; + +describe('Data stream helpers', () => { + describe('getLifecycleValue', () => { + it('Knows when it should be marked as disabled', () => { + expect( + getLifecycleValue({ + enabled: false, + }) + ).toBe('Disabled'); + + expect(getLifecycleValue()).toBe('Disabled'); + }); + + it('knows when it should be marked as infinite', () => { + expect( + getLifecycleValue({ + enabled: true, + }) + ).toBe('Keep data indefinitely'); + }); + + it('knows when it has a defined data retention period', () => { + expect( + getLifecycleValue({ + enabled: true, + data_retention: '2d', + }) + ).toBe('2d'); + }); + }); +}); diff --git a/x-pack/plugins/index_management/public/application/lib/data_streams.tsx b/x-pack/plugins/index_management/public/application/lib/data_streams.tsx index 8cf45050855b0..ad068dde91a22 100644 --- a/x-pack/plugins/index_management/public/application/lib/data_streams.tsx +++ b/x-pack/plugins/index_management/public/application/lib/data_streams.tsx @@ -5,6 +5,10 @@ * 2.0. */ +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiIcon, EuiToolTip } from '@elastic/eui'; + import { DataStream } from '../../../common'; export const isFleetManaged = (dataStream: DataStream): boolean => { @@ -38,3 +42,37 @@ export const isSelectedDataStreamHidden = ( ?.hidden ); }; + +export const getLifecycleValue = ( + lifecycle?: DataStream['lifecycle'], + inifniteAsIcon?: boolean +) => { + if (!lifecycle?.enabled) { + return i18n.translate('xpack.idxMgmt.dataStreamList.dataRetentionDisabled', { + defaultMessage: 'Disabled', + }); + } else if (!lifecycle?.data_retention) { + const infiniteDataRetention = i18n.translate( + 'xpack.idxMgmt.dataStreamList.dataRetentionInfinite', + { + defaultMessage: 'Keep data indefinitely', + } + ); + + if (inifniteAsIcon) { + return ( + + + + ); + } + + return infiniteDataRetention; + } + + return lifecycle?.data_retention; +}; diff --git a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_detail_panel/data_stream_detail_panel.tsx b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_detail_panel/data_stream_detail_panel.tsx index d04976d157406..96449e6de5238 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_detail_panel/data_stream_detail_panel.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_detail_panel/data_stream_detail_panel.tsx @@ -30,6 +30,7 @@ import { } from '@elastic/eui'; import { DiscoverLink } from '../../../../lib/discover_link'; +import { getLifecycleValue } from '../../../../lib/data_streams'; import { SectionLoading, reactRouterNavigate } from '../../../../../shared_imports'; import { SectionError, Error, DataHealth } from '../../../../components'; import { useLoadDataStream } from '../../../../services/api'; @@ -147,19 +148,6 @@ export const DataStreamDetailPanel: React.FunctionComponent = ({ const getManagementDetails = () => { const managementDetails = []; - if (lifecycle?.data_retention) { - managementDetails.push({ - name: i18n.translate('xpack.idxMgmt.dataStreamDetailPanel.dataRetentionTitle', { - defaultMessage: 'Data retention', - }), - toolTip: i18n.translate('xpack.idxMgmt.dataStreamDetailPanel.dataRetentionToolTip', { - defaultMessage: 'The amount of time to retain the data in the data stream.', - }), - content: lifecycle.data_retention, - dataTestSubj: 'dataRetentionDetail', - }); - } - if (ilmPolicyName) { managementDetails.push({ name: i18n.translate('xpack.idxMgmt.dataStreamDetailPanel.ilmPolicyTitle', { @@ -278,6 +266,16 @@ export const DataStreamDetailPanel: React.FunctionComponent = ({ ), dataTestSubj: 'indexTemplateDetail', }, + { + name: i18n.translate('xpack.idxMgmt.dataStreamDetailPanel.dataRetentionTitle', { + defaultMessage: 'Data retention', + }), + toolTip: i18n.translate('xpack.idxMgmt.dataStreamDetailPanel.dataRetentionToolTip', { + defaultMessage: 'The amount of time to retain the data in the data stream.', + }), + content: getLifecycleValue(lifecycle), + dataTestSubj: 'dataRetentionDetail', + }, ]; const managementDetails = getManagementDetails(); @@ -376,7 +374,7 @@ export const DataStreamDetailPanel: React.FunctionComponent = ({ } }} dataStreamName={dataStreamName} - dataRetention={dataStream?.lifecycle?.data_retention as string} + lifecycle={dataStream?.lifecycle} /> )} diff --git a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_table/data_stream_table.tsx b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_table/data_stream_table.tsx index 485f1db9c06c9..0bf6aa68347de 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_table/data_stream_table.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_table/data_stream_table.tsx @@ -19,6 +19,7 @@ import { import { ScopedHistory } from '@kbn/core/public'; import { DataStream } from '../../../../../../common/types'; +import { getLifecycleValue } from '../../../../lib/data_streams'; import { UseRequestResponse, reactRouterNavigate } from '../../../../../shared_imports'; import { getDataStreamDetailsLink, getIndexListUri } from '../../../../services/routing'; import { DataHealth } from '../../../../components'; @@ -34,6 +35,8 @@ interface Props { filters?: string; } +const INFINITE_AS_ICON = true; + export const DataStreamTable: React.FunctionComponent = ({ dataStreams, reload, @@ -144,7 +147,7 @@ export const DataStreamTable: React.FunctionComponent = ({ ), truncateText: true, sortable: true, - render: (lifecycle: DataStream['lifecycle']) => lifecycle?.data_retention, + render: (lifecycle: DataStream['lifecycle']) => getLifecycleValue(lifecycle, INFINITE_AS_ICON), }); columns.push({ diff --git a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/edit_data_retention_modal/edit_data_retention_modal.tsx b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/edit_data_retention_modal/edit_data_retention_modal.tsx index e33aaae7a9073..11e51a83b8e99 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/edit_data_retention_modal/edit_data_retention_modal.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/edit_data_retention_modal/edit_data_retention_modal.tsx @@ -35,13 +35,13 @@ import { } from '../../../../../shared_imports'; import { documentationService } from '../../../../services/documentation'; -import { splitSizeAndUnits } from '../../../../../../common'; +import { splitSizeAndUnits, DataStream } from '../../../../../../common'; import { useAppContext } from '../../../../app_context'; import { UnitField } from './unit_field'; import { updateDataRetention } from '../../../../services/api'; interface Props { - dataRetention: string; + lifecycle: DataStream['lifecycle']; dataStreamName: string; onClose: (data?: { hasUpdatedDataRetention: boolean }) => void; } @@ -83,33 +83,6 @@ export const timeUnits = [ } ), }, - { - value: 'ms', - text: i18n.translate( - 'xpack.idxMgmt.dataStreamsDetailsPanel.editDataRetentionModal.timeUnits.millisecondsLabel', - { - defaultMessage: 'milliseconds', - } - ), - }, - { - value: 'micros', - text: i18n.translate( - 'xpack.idxMgmt.dataStreamsDetailsPanel.editDataRetentionModal.timeUnits.microsecondsLabel', - { - defaultMessage: 'microseconds', - } - ), - }, - { - value: 'nanos', - text: i18n.translate( - 'xpack.idxMgmt.dataStreamsDetailsPanel.editDataRetentionModal.timeUnits.nanosecondsLabel', - { - defaultMessage: 'nanoseconds', - } - ), - }, ]; const configurationFormSchema: FormSchema = { @@ -124,7 +97,12 @@ const configurationFormSchema: FormSchema = { formatters: [fieldFormatters.toInt], validations: [ { - validator: ({ value }) => { + validator: ({ value, formData }) => { + // If infiniteRetentionPeriod is set, we dont need to validate the data retention field + if (formData.infiniteRetentionPeriod) { + return undefined; + } + if (!value) { return { message: i18n.translate( @@ -171,11 +149,11 @@ const configurationFormSchema: FormSchema = { }; export const EditDataRetentionModal: React.FunctionComponent = ({ - dataRetention, + lifecycle, dataStreamName, onClose, }) => { - const { size, unit } = splitSizeAndUnits(dataRetention); + const { size, unit } = splitSizeAndUnits(lifecycle?.data_retention as string); const { services: { notificationService }, } = useAppContext(); @@ -184,7 +162,10 @@ export const EditDataRetentionModal: React.FunctionComponent = ({ defaultValue: { dataRetention: size, timeUnit: unit || 'd', - infiniteRetentionPeriod: !dataRetention, + // When data retention is not set and lifecycle is enabled, is the only scenario in + // which data retention will be infinite. If lifecycle isnt set or is not enabled, we + // dont have inifinite data retention. + infiniteRetentionPeriod: lifecycle?.enabled && !lifecycle?.data_retention, }, schema: configurationFormSchema, id: 'editDataRetentionForm', diff --git a/x-pack/test/api_integration/apis/management/index_management/data_streams.ts b/x-pack/test/api_integration/apis/management/index_management/data_streams.ts index a76df2127a1fb..e0373a405cde7 100644 --- a/x-pack/test/api_integration/apis/management/index_management/data_streams.ts +++ b/x-pack/test/api_integration/apis/management/index_management/data_streams.ts @@ -31,6 +31,10 @@ export default function ({ getService }: FtrProviderContext) { }, }, }, + lifecycle: { + // @ts-expect-error @elastic/elasticsearch enabled prop is not typed yet + enabled: true, + }, }, data_stream: {}, }, @@ -85,8 +89,7 @@ export default function ({ getService }: FtrProviderContext) { expect(typeof storageSizeBytes).to.be('number'); }; - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/168021 - describe.skip('Data streams', function () { + describe('Data streams', function () { describe('Get', () => { const testDataStreamName = 'test-data-stream'; diff --git a/x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts b/x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts index c801c40c7e067..eea731575f8f3 100644 --- a/x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts +++ b/x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts @@ -12,8 +12,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const pageObjects = getPageObjects(['common', 'indexManagement', 'header']); const toasts = getService('toasts'); const log = getService('log'); - const dataStreams = getService('dataStreams'); const browser = getService('browser'); + const es = getService('es'); const security = getService('security'); const testSubjects = getService('testSubjects'); @@ -23,15 +23,32 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { before(async () => { await log.debug('Creating required data stream'); try { - await dataStreams.createDataStream( - TEST_DS_NAME, - { - '@timestamp': { - type: 'date', + await es.indices.putIndexTemplate({ + name: `${TEST_DS_NAME}_index_template`, + index_patterns: [TEST_DS_NAME], + data_stream: {}, + _meta: { + description: `Template for ${TEST_DS_NAME} testing index`, + }, + template: { + settings: { mode: undefined }, + mappings: { + properties: { + '@timestamp': { + type: 'date', + }, + }, + }, + lifecycle: { + // @ts-expect-error @elastic/elasticsearch enabled prop is not typed yet + enabled: true, }, }, - false - ); + }); + + await es.indices.createDataStream({ + name: TEST_DS_NAME, + }); } catch (e) { log.debug('[Setup error] Error creating test data stream'); throw e; @@ -49,7 +66,10 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await log.debug('Cleaning up created data stream'); try { - await dataStreams.deleteDataStream(TEST_DS_NAME); + await es.indices.deleteDataStream({ name: TEST_DS_NAME }); + await es.indices.deleteIndexTemplate({ + name: `${TEST_DS_NAME}_index_template`, + }); } catch (e) { log.debug('[Teardown error] Error deleting test data stream'); throw e; From a0e2bcaf59f00635332256d757cfbd0bc84d8dbf Mon Sep 17 00:00:00 2001 From: Marta Bondyra <4283304+mbondyra@users.noreply.github.com> Date: Mon, 16 Oct 2023 12:48:46 +0200 Subject: [PATCH 64/80] [Lens] Move tagcloud visualization in Lens out of experimental status (#168824) ## Summary Moves Lens tagcloud visualization out of experimental status and releases it for GA. Fixes https://github.com/elastic/kibana/issues/168675 Co-authored-by: Stratoula Kalafateli --- .../plugins/lens/public/visualizations/tagcloud/suggestions.ts | 3 +-- .../public/visualizations/tagcloud/tagcloud_visualization.tsx | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/x-pack/plugins/lens/public/visualizations/tagcloud/suggestions.ts b/x-pack/plugins/lens/public/visualizations/tagcloud/suggestions.ts index 1ad4282ed6523..0ce9624305692 100644 --- a/x-pack/plugins/lens/public/visualizations/tagcloud/suggestions.ts +++ b/x-pack/plugins/lens/public/visualizations/tagcloud/suggestions.ts @@ -42,8 +42,7 @@ export function getSuggestions({ return { previewIcon: IconChartTagcloud, title: TAGCLOUD_LABEL, - hide: true, // hide suggestions while in tech preview - score: 0.1, + score: bucket.operation.dataType === 'string' ? 0.4 : 0.2, state: { layerId: table.layerId, tagAccessor: bucket.columnId, diff --git a/x-pack/plugins/lens/public/visualizations/tagcloud/tagcloud_visualization.tsx b/x-pack/plugins/lens/public/visualizations/tagcloud/tagcloud_visualization.tsx index 3c12e3d28ed54..bb69dfda2b0a0 100644 --- a/x-pack/plugins/lens/public/visualizations/tagcloud/tagcloud_visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/tagcloud/tagcloud_visualization.tsx @@ -48,7 +48,6 @@ export const getTagcloudVisualization = ({ groupLabel: i18n.translate('xpack.lens.pie.groupLabel', { defaultMessage: 'Proportion', }), - showExperimentalBadge: true, }, ], From 0a002edb45f1afce527dfea66303499153f946d7 Mon Sep 17 00:00:00 2001 From: Maryam Saeidi Date: Mon, 16 Oct 2023 13:03:22 +0200 Subject: [PATCH 65/80] Change default aggregation in the custom threshold rule (#168819) Closes #166470 ## Summary This PR changes the default aggregation in the custom threshold rule. --- .../custom_equation_editor.tsx | 5 ++++- .../custom_equation/metric_row_with_agg.tsx | 4 ++-- .../custom_threshold_rule_expression.test.tsx | 22 ++++++++++++++++++- .../custom_threshold_rule_expression.tsx | 10 +++++++-- 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx index d41f5d5b0b85b..c835f636eaa2d 100644 --- a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx +++ b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx @@ -43,7 +43,10 @@ export interface CustomEquationEditorProps { dataView: DataViewBase; } -const NEW_METRIC = { name: 'A', aggType: Aggregators.AVERAGE as CustomMetricAggTypes }; +const NEW_METRIC = { + name: 'A', + aggType: Aggregators.COUNT as CustomMetricAggTypes, +}; const MAX_VARIABLES = 26; const CHAR_CODE_FOR_A = 65; const CHAR_CODE_FOR_Z = CHAR_CODE_FOR_A + MAX_VARIABLES; diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx index ebfdf0e979fc3..80a379134806c 100644 --- a/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx +++ b/x-pack/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx @@ -40,7 +40,7 @@ interface MetricRowWithAggProps extends MetricRowBaseProps { export function MetricRowWithAgg({ name, - aggType = Aggregators.AVERAGE, + aggType = Aggregators.COUNT, field, onDelete, dataView, @@ -128,7 +128,7 @@ export function MetricRowWithAgg({ description={aggregationTypes[aggType].text} value={aggType === Aggregators.COUNT ? filter : field} isActive={aggTypePopoverOpen} - display={'columns'} + display="columns" onClick={() => { setAggTypePopoverOpen(true); }} diff --git a/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx b/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx index accd48ca969a0..f11fc9db40b22 100644 --- a/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx +++ b/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx @@ -12,7 +12,7 @@ import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks'; import { queryClient } from '@kbn/osquery-plugin/public/query_client'; import { mountWithIntl, nextTick } from '@kbn/test-jest-helpers'; -import { Comparator } from '../../../common/custom_threshold_rule/types'; +import { Aggregators, Comparator } from '../../../common/custom_threshold_rule/types'; import { MetricsExplorerMetric } from '../../../common/custom_threshold_rule/metrics_explorer'; import { useKibana } from '../../utils/kibana_react'; import { kibanaStartMock } from '../../utils/kibana_react.mock'; @@ -116,6 +116,26 @@ describe('Expression', () => { ]); }); + it('should use default metrics', async () => { + const currentOptions = {}; + const { ruleParams } = await setup(currentOptions); + expect(ruleParams.criteria).toEqual([ + { + metrics: [ + { + name: 'A', + aggType: Aggregators.COUNT, + }, + ], + comparator: Comparator.GT, + threshold: [1000], + timeSize: 1, + timeUnit: 'm', + aggType: 'custom', + }, + ]); + }); + it('should show an error message when searchSource throws an error', async () => { const currentOptions = { groupBy: 'host.hostname', diff --git a/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx b/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx index 761cff54bc961..26de96e3bd835 100644 --- a/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx +++ b/x-pack/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx @@ -54,7 +54,13 @@ type Props = Omit< export const defaultExpression = { aggType: Aggregators.CUSTOM, comparator: Comparator.GT, - threshold: [], + metrics: [ + { + name: 'A', + aggType: Aggregators.COUNT, + }, + ], + threshold: [1000], timeSize: 1, timeUnit: 'm', } as MetricExpression; @@ -171,7 +177,7 @@ export default function Expressions(props: Props) { } else { return { metrics: [], - aggregation: 'avg', + aggregation: 'count', }; } }, [metadata]); From caa4028cecd237fe30df5871c8ce20e6c8e1b81c Mon Sep 17 00:00:00 2001 From: Shahzad Date: Mon, 16 Oct 2023 13:36:43 +0200 Subject: [PATCH 66/80] [Synthetics] Update package to 1.5.0 (#168941) --- package.json | 4 +- yarn.lock | 216 +++++++++++++++++++-------------------------------- 2 files changed, 84 insertions(+), 136 deletions(-) diff --git a/package.json b/package.json index b73a9eb4c779c..6a5a28d327f73 100644 --- a/package.json +++ b/package.json @@ -1101,7 +1101,7 @@ "@cypress/webpack-preprocessor": "^5.12.2", "@elastic/eslint-plugin-eui": "0.0.2", "@elastic/makelogs": "^6.1.1", - "@elastic/synthetics": "^1.4.0", + "@elastic/synthetics": "^1.5.0", "@emotion/babel-preset-css-prop": "^11.11.0", "@emotion/jest": "^11.11.0", "@frsource/cypress-plugin-visual-regression-diff": "^3.3.10", @@ -1562,7 +1562,7 @@ "pirates": "^4.0.1", "piscina": "^3.2.0", "pixelmatch": "^5.3.0", - "playwright": "=1.37.0", + "playwright": "=1.38.0", "pngjs": "^3.4.0", "postcss": "^8.4.31", "postcss-loader": "^4.2.0", diff --git a/yarn.lock b/yarn.lock index 9fb4f5f8d852b..9fff41175cc36 100644 --- a/yarn.lock +++ b/yarn.lock @@ -114,6 +114,14 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": version "7.20.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec" @@ -387,6 +395,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" @@ -420,6 +433,15 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.10.3", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" @@ -1729,28 +1751,30 @@ history "^4.9.0" qs "^6.7.0" -"@elastic/synthetics@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@elastic/synthetics/-/synthetics-1.4.0.tgz#522b8a27a858dc15ba573b3b015e897dc22e45d2" - integrity sha512-9tRJl+6/uIvWsVWHFj4aMiTUU3OvRPkJeRtIKOKTxxj1utSqr79wkmwugowSKffcwASckDIG5iK25CNHT6k24w== +"@elastic/synthetics@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@elastic/synthetics/-/synthetics-1.5.0.tgz#5c1d4e831cdf8c902ae47f943a21b15a571c37b6" + integrity sha512-DSQNy8JmPZjVr4NtLcFIZbQfjWlNHivdOehT1nJcQiNehRQARELOj+85mvN6wyJHnpoBfsG5IbNuw7I/oxkavg== dependencies: + "@babel/code-frame" "^7.22.13" archiver "^5.3.1" commander "^10.0.1" deepmerge "^4.3.1" enquirer "^2.3.6" esbuild "^0.18.11" - expect "^28.1.3" http-proxy "^1.18.1" kleur "^4.1.5" micromatch "^4.0.5" pirates "^4.0.5" - playwright-chromium "=1.37.0" - playwright-core "=1.37.0" + playwright "=1.38.0" + playwright-chromium "=1.38.1" + playwright-core "=1.38.1" semver "^7.5.2" - sharp "^0.32.0" + sharp "^0.32.6" snakecase-keys "^4.0.1" sonic-boom "^3.3.0" source-map-support "^0.5.21" + stack-utils "^2.0.6" undici "^5.21.2" yaml "^2.2.2" @@ -2673,13 +2697,6 @@ "@types/node" "*" jest-mock "^29.6.1" -"@jest/expect-utils@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" - integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== - dependencies: - jest-get-type "^28.0.2" - "@jest/expect-utils@^29.6.1": version "29.6.1" resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.6.1.tgz#ab83b27a15cdd203fe5f68230ea22767d5c3acc5" @@ -2747,13 +2764,6 @@ strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" -"@jest/schemas@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" - integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== - dependencies: - "@sinclair/typebox" "^0.24.1" - "@jest/schemas@^29.6.0": version "29.6.0" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.0.tgz#0f4cb2c8e3dca80c135507ba5635a4fd755b0040" @@ -2843,18 +2853,6 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== - dependencies: - "@jest/schemas" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jest/types@^29.6.1": version "29.6.1" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.1.tgz#ae79080278acff0a6af5eb49d063385aaa897bf2" @@ -7275,11 +7273,6 @@ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== -"@sinclair/typebox@^0.24.1": - version "0.24.46" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.46.tgz#57501b58023776dbbae9e25619146286440be34c" - integrity sha512-ng4ut1z2MCBhK/NwDVwIQp3pAUOCs/KNaW3cBxdFB2xTDrOuo1xuNmpr/9HHFhxqIvHrs1NTH3KJg6q+JSy1Kw== - "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -14707,6 +14700,11 @@ detect-libc@^2.0.0, detect-libc@^2.0.1: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== +detect-libc@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + detect-newline@2.X: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -14862,11 +14860,6 @@ diff-sequences@^27.5.1: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== -diff-sequences@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" - integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== - diff-sequences@^29.4.3: version "29.4.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" @@ -16360,17 +16353,6 @@ expect@^26.6.2: jest-message-util "^26.6.2" jest-regex-util "^26.0.0" -expect@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" - integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== - dependencies: - "@jest/expect-utils" "^28.1.3" - jest-get-type "^28.0.2" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - expect@^29.0.0, expect@^29.6.1: version "29.6.1" resolved "https://registry.yarnpkg.com/expect/-/expect-29.6.1.tgz#64dd1c8f75e2c0b209418f2b8d36a07921adfdf1" @@ -17290,7 +17272,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@2.3.2, fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -19890,16 +19872,6 @@ jest-diff@^27.0.2: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-diff@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" - integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== - dependencies: - chalk "^4.0.0" - diff-sequences "^28.1.1" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - jest-diff@^29.6.1: version "29.6.1" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.1.tgz#13df6db0a89ee6ad93c747c75c85c70ba941e545" @@ -19964,11 +19936,6 @@ jest-get-type@^27.0.1, jest-get-type@^27.5.1: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== -jest-get-type@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" - integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== - jest-get-type@^29.4.3: version "29.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" @@ -20042,16 +20009,6 @@ jest-matcher-utils@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-matcher-utils@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" - integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== - dependencies: - chalk "^4.0.0" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - jest-matcher-utils@^29.6.1: version "29.6.1" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz#6c60075d84655d6300c5d5128f46531848160b53" @@ -20077,21 +20034,6 @@ jest-message-util@^26.6.2: slash "^3.0.0" stack-utils "^2.0.2" -jest-message-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" - integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" - jest-message-util@^29.6.1: version "29.6.1" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.6.1.tgz#d0b21d87f117e1b9e165e24f245befd2ff34ff8d" @@ -20313,18 +20255,6 @@ jest-util@^26.6.2: is-ci "^2.0.0" micromatch "^4.0.2" -jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - jest-util@^29.6.1: version "29.6.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.1.tgz#c9e29a87a6edbf1e39e6dee2b4689b8a146679cb" @@ -24340,24 +24270,31 @@ platform@^1.3.0: resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.5.tgz#fb6958c696e07e2918d2eeda0f0bc9448d733444" integrity sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q== -playwright-chromium@=1.37.0: - version "1.37.0" - resolved "https://registry.yarnpkg.com/playwright-chromium/-/playwright-chromium-1.37.0.tgz#6763b738b8c48efa0b83d605f186c8b3e237124e" - integrity sha512-56DOca+pGZombnX34ZwO1fI7HLgv3IgzqzNT1kmYAJ82JytqmXFz/umA7WkkONn9cN3WRPswqrqvD+3pq46rdg== +playwright-chromium@=1.38.1: + version "1.38.1" + resolved "https://registry.yarnpkg.com/playwright-chromium/-/playwright-chromium-1.38.1.tgz#ea2356afd73580e6f3a2e41e97582e9e77f92f6c" + integrity sha512-97Y6+lN3yOETy/yPQK+LqSCBdldLu5Rkm+Tnj2oGQfcbC5P8R3eWund7GxWqiYFnq0GLwZZ8EnhiBShKnCiVjg== dependencies: - playwright-core "1.37.0" + playwright-core "1.38.1" -playwright-core@1.37.0, playwright-core@=1.37.0: - version "1.37.0" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.37.0.tgz#a0a009b840076706452e29aab0efe0ebf5d45ab1" - integrity sha512-1c46jhTH/myQw6sesrcuHVtLoSNfJv8Pfy9t3rs6subY7kARv0HRw5PpyfPYPpPtQvBOmgbE6K+qgYUpj81LAA== +playwright-core@1.38.0: + version "1.38.0" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.38.0.tgz#cb8e135da1c0b1918b070642372040ed9aa7009a" + integrity sha512-f8z1y8J9zvmHoEhKgspmCvOExF2XdcxMW8jNRuX4vkQFrzV4MlZ55iwb5QeyiFQgOFCUolXiRHgpjSEnqvO48g== -playwright@=1.37.0: - version "1.37.0" - resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.37.0.tgz#19dc9bd43d9c1d7e165626e2aa12d56864650e13" - integrity sha512-CrAEFfVioamMwDKmygc/HAkzEAxYAwjD+zod2poTxM7ObivkoDsKHu1ned16fnQV/Tf1kDB8KtsyH8Qd3VzJIg== +playwright-core@1.38.1, playwright-core@=1.38.1: + version "1.38.1" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.38.1.tgz#75a3c470aa9576b7d7c4e274de3d79977448ba08" + integrity sha512-tQqNFUKa3OfMf4b2jQ7aGLB8o9bS3bOY0yMEtldtC2+spf8QXG9zvXLTXUeRsoNuxEYMgLYR+NXfAa1rjKRcrg== + +playwright@=1.38.0: + version "1.38.0" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.38.0.tgz#0ee19d38512b7b1f961c0eb44008a6fed373d206" + integrity sha512-fJGw+HO0YY+fU/F1N57DMO+TmXHTrmr905J05zwAQE9xkuwP/QLDk63rVhmyxh03dYnEhnRbsdbH9B0UVVRB3A== dependencies: - playwright-core "1.37.0" + playwright-core "1.38.0" + optionalDependencies: + fsevents "2.3.2" plugin-error@^1.0.1: version "1.0.1" @@ -24874,16 +24811,6 @@ pretty-format@^27.0.2, pretty-format@^27.5.1: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" - integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== - dependencies: - "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^18.0.0" - pretty-format@^29.0.0, pretty-format@^29.6.1: version "29.6.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.1.tgz#ec838c288850b7c4f9090b867c2d4f4edbfb0f3e" @@ -27383,7 +27310,7 @@ shallowequal@^1.1.0: resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== -sharp@0.32.1, sharp@^0.32.0: +sharp@0.32.1: version "0.32.1" resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.1.tgz#41aa0d0b2048b2e0ee453d9fcb14ec1f408390fe" integrity sha512-kQTFtj7ldpUqSe8kDxoGLZc1rnMFU0AO2pqbX6pLy3b7Oj8ivJIdoKNwxHVQG2HN6XpHPJqCSM2nsma2gOXvOg== @@ -27397,6 +27324,20 @@ sharp@0.32.1, sharp@^0.32.0: tar-fs "^2.1.1" tunnel-agent "^0.6.0" +sharp@^0.32.6: + version "0.32.6" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.6.tgz#6ad30c0b7cd910df65d5f355f774aa4fce45732a" + integrity sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w== + dependencies: + color "^4.2.3" + detect-libc "^2.0.2" + node-addon-api "^6.1.0" + prebuild-install "^7.1.1" + semver "^7.5.4" + simple-get "^4.0.1" + tar-fs "^3.0.4" + tunnel-agent "^0.6.0" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -28038,6 +27979,13 @@ stack-utils@^2.0.2, stack-utils@^2.0.3: escape-string-regexp "^2.0.0" source-map-support "^0.5.20" +stack-utils@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + stackblur-canvas@^2.0.0: version "2.5.0" resolved "https://registry.yarnpkg.com/stackblur-canvas/-/stackblur-canvas-2.5.0.tgz#aa87bbed1560fdcd3138fff344fc6a1c413ebac4" @@ -28750,7 +28698,7 @@ tape@^5.0.1: string.prototype.trim "^1.2.1" through "^2.3.8" -tar-fs@3.0.4: +tar-fs@3.0.4, tar-fs@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.4.tgz#a21dc60a2d5d9f55e0089ccd78124f1d3771dbbf" integrity sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w== From 70d1b261e8009c1e98ad25d36a57e96e7f384def Mon Sep 17 00:00:00 2001 From: Miriam <31922082+MiriamAparicio@users.noreply.github.com> Date: Mon, 16 Oct 2023 12:55:48 +0100 Subject: [PATCH 67/80] [ObsUX] Fix layout in KeyValueFilterList component (#168814) Closes https://github.com/elastic/kibana/issues/168129 ### What was done There was a change in `EuiDescriptionList` this component was updated to use CSS grid, and was the cause of the misalignment, it's been fixed with the new prop `columnWidths` Also, the grid was creating a gap between the borders of the title and description of the list item. After checking with @boriskirov, we decided to get rid of the border. BEFORE ![image](https://github.com/elastic/kibana/assets/31922082/fa2fbf54-08b8-4425-b834-504f2c0d7753) AFTER ![image](https://github.com/elastic/kibana/assets/31922082/03356522-08aa-474e-a3dd-b39eaf19ec25) --- .../components/shared/key_value_filter_list/index.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/apm/public/components/shared/key_value_filter_list/index.tsx b/x-pack/plugins/apm/public/components/shared/key_value_filter_list/index.tsx index 20ab03e42025b..14911f7e3b7a8 100644 --- a/x-pack/plugins/apm/public/components/shared/key_value_filter_list/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/key_value_filter_list/index.tsx @@ -39,7 +39,6 @@ const StyledEuiDescriptionList = styled(EuiDescriptionList)` `${theme.eui.euiSizeS} ${theme.eui.euiSizeS} 0 ${theme.eui.euiSizeS}`}; .descriptionList__title, .descriptionList__description { - border-bottom: ${({ theme }) => theme.eui.euiBorderThin}; margin-top: 0; align-items: center; display: flex; @@ -74,13 +73,13 @@ export function KeyValueFilterList({ buttonContent={} buttonClassName="buttonContentContainer" > - + {nonEmptyKeyValueList.map(({ key, value, isFilterable }) => { return ( {key} @@ -88,7 +87,7 @@ export function KeyValueFilterList({ Date: Mon, 16 Oct 2023 15:15:34 +0200 Subject: [PATCH 68/80] [Ops] Trigger Security Solution quality gate job instead of running it (#168921) ## Summary Now that the security solution tests are moved to their own pipeline, we can trigger it. It's also required because the job relies on the Kibana-buildkite environment. See: https://elastic.slack.com/archives/C05NJL80DB8/p1697233389455979 --- .../pipelines/quality-gates/pipeline.tests-qa.yaml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml index c4545b6ecfaed..e0a892326eb18 100644 --- a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml @@ -13,12 +13,13 @@ steps: EC_REGION: aws-eu-west-1 message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-qa.yaml)" - - group: ":female-detective: Security Solution Tests" - key: "security" - steps: - - label: ":pipeline::female-detective::seedling: Trigger Security Solution quality gate script" - command: .buildkite/scripts/pipelines/security_solution_quality_gate/pipeline.sh - soft_fail: true # Remove this when tests are fixed + - label: ":pipeline::female-detective::seedling: Trigger Security Solution quality gate script" + trigger: security-serverless-quality-gate # https://buildkite.com/elastic/security-serverless-quality-gate + soft_fail: true # Remove this when tests are fixed + build: + env: + ENVIRONMENT: ${ENVIRONMENT} + message: "${BUILDKITE_MESSAGE} (triggered by pipeline.tests-qa.yaml)" - label: ":pipeline::ship::seedling: Trigger Fleet serverless smoke tests for ${ENVIRONMENT}" trigger: fleet-smoke-tests # https://buildkite.com/elastic/fleet-smoke-tests From d0a3aa786380a441c2435e52c5e6805ee9d2ddc6 Mon Sep 17 00:00:00 2001 From: Saarika Bhasi <55930906+saarikabhasi@users.noreply.github.com> Date: Mon, 16 Oct 2023 09:29:13 -0400 Subject: [PATCH 69/80] [Serverless search] Replace getting started JS sample dataset to use books (#168894) ## Summary This PR changes Javascript sample dataset in getting started page, to use `books` instead of `flights` datasets, to align with other language datasets. Tested in cloud ## Screen Recording https://github.com/elastic/kibana/assets/55930906/71cc0e69-ec9b-4b27-994f-5f1d0fd7244b --- .../components/languages/javascript.ts | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/x-pack/plugins/serverless_search/public/application/components/languages/javascript.ts b/x-pack/plugins/serverless_search/public/application/components/languages/javascript.ts index 418416e6d5394..1302bebff7137 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 @@ -15,7 +15,7 @@ export const javascriptDefinition: LanguageDefinition = { buildSearchQuery: `// Let's search! const searchResult = await client.search({ index: 'my-index-name', - q: '9HY9SWR' + q: 'snow' }); console.log(searchResult.hits.hits) @@ -36,12 +36,15 @@ auth: { }, iconType: 'javascript.svg', id: Languages.JAVASCRIPT, - ingestData: `// Sample flight data + ingestData: `// Sample books data const dataset = [ -{'flight': '9HY9SWR', 'price': 841.2656419677076, 'delayed': false}, -{'flight': 'X98CCZO', 'price': 882.9826615595518, 'delayed': false}, -{'flight': 'UFK2WIZ', 'price': 190.6369038508356, 'delayed': true}, -]; + {"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470}, + {"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585}, + {"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328}, + {"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227}, + {"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268}, + {"name": "The Handmaid's Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311} + ]; // Index with the bulk helper const result = await client.helpers.bulk({ @@ -54,13 +57,13 @@ onDocument (doc) { console.log(result); /** { -total: 3, +total: 6, failed: 0, retry: 0, -successful: 3, +successful: 6, noop: 0, -time: 421, -bytes: 293, +time: 191, +bytes: 787, aborted: false } */`, From f6a18581e8bbd692abe55f3dd24ec34f9bb347eb Mon Sep 17 00:00:00 2001 From: Rodney Norris Date: Mon, 16 Oct 2023 08:47:56 -0500 Subject: [PATCH 70/80] [Enterprise Search] fix: show/hide ent-search cards based on access (#168890) ## Summary When refactoring the Enterprise Search overview page we inadvertently removed the access and admin checks for app search and workplace search product cards. This fix re-adds those checks. --- .../enterprise_search_product_card.test.tsx | 59 ++++++++++++++++++ .../enterprise_search_product_card.tsx | 62 +++++++++++++------ .../product_selector.test.tsx | 41 ++++++++++-- .../product_selector/product_selector.tsx | 26 ++++++-- .../workplace_search_product_card.test.tsx | 34 ++++++++++ .../workplace_search_product_card.tsx | 6 +- .../enterprise_search_overview/index.tsx | 6 +- 7 files changed, 203 insertions(+), 31 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/enterprise_search_product_card.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/workplace_search_product_card.test.tsx diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/enterprise_search_product_card.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/enterprise_search_product_card.test.tsx new file mode 100644 index 0000000000000..74be43ab32253 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/enterprise_search_product_card.test.tsx @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { setMockValues } from '../../../__mocks__/kea_logic'; + +import React from 'react'; + +import { mount } from 'enzyme'; + +import { AppSearchProductCard } from './app_search_product_card'; +import { EnterpriseSearchProductCard } from './enterprise_search_product_card'; +import { WorkplaceSearchProductCard } from './workplace_search_product_card'; + +describe('EnterpriseSearchProductCard', () => { + beforeEach(() => { + setMockValues({ config: { canDeployEntSearch: true, host: 'localhost' } }); + }); + + it('renders both services with access', () => { + const wrapper = mount( + + ); + + expect(wrapper.find(AppSearchProductCard)).toHaveLength(1); + expect(wrapper.find(WorkplaceSearchProductCard)).toHaveLength(1); + }); + it('can render just app search', () => { + const wrapper = mount( + + ); + + expect(wrapper.find(AppSearchProductCard)).toHaveLength(1); + expect(wrapper.find(WorkplaceSearchProductCard)).toHaveLength(0); + }); + it('can render just workplace search', () => { + const wrapper = mount( + + ); + + expect(wrapper.find(AppSearchProductCard)).toHaveLength(0); + expect(wrapper.find(WorkplaceSearchProductCard)).toHaveLength(1); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/enterprise_search_product_card.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/enterprise_search_product_card.tsx index e332d4fad9401..d76940d1721b3 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/enterprise_search_product_card.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/enterprise_search_product_card.tsx @@ -19,23 +19,45 @@ import { ProductCard } from '../product_card'; import { AppSearchProductCard } from './app_search_product_card'; import { WorkplaceSearchProductCard } from './workplace_search_product_card'; -export const EnterpriseSearchProductCard = () => ( - , - , - ]} - /> -); +export interface EnterpriseSearchProductCardProps { + hasAppSearchAccess: boolean; + hasWorkplaceSearchAccess: boolean; + isWorkplaceSearchAdmin: boolean; +} + +export const EnterpriseSearchProductCard = ({ + hasAppSearchAccess, + hasWorkplaceSearchAccess, + isWorkplaceSearchAdmin, +}: EnterpriseSearchProductCardProps) => { + const rightPanelItems: React.ReactNode[] = []; + if (hasAppSearchAccess) { + rightPanelItems.push(); + } + if (hasWorkplaceSearchAccess) { + rightPanelItems.push( + + ); + } + return ( + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.test.tsx index 8a37008c2d695..6d90c13f2b55d 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.test.tsx @@ -21,10 +21,15 @@ import { EnterpriseSearchProductCard } from './enterprise_search_product_card'; import { ProductSelector } from '.'; +const props = { + access: { hasAppSearchAccess: true, hasWorkplaceSearchAccess: true }, + isWorkplaceSearchAdmin: true, +}; + describe('ProductSelector', () => { it('renders the overview page, product cards, & setup guide CTAs with no host set', () => { setMockValues({ config: { canDeployEntSearch: true, host: '' } }); - const wrapper = shallow(); + const wrapper = shallow(); expect(wrapper.find(ElasticsearchProductCard)).toHaveLength(1); expect(wrapper.find(EnterpriseSearchProductCard)).toHaveLength(1); @@ -33,14 +38,14 @@ describe('ProductSelector', () => { it('renders the trial callout', () => { setMockValues({ config: { canDeployEntSearch: true, host: 'localhost' } }); - const wrapper = shallow(); + const wrapper = shallow(); expect(wrapper.find(TrialCallout)).toHaveLength(1); }); it('does not render connection error callout without an error', () => { setMockValues({ config: { canDeployEntSearch: true, host: 'localhost' } }); - const wrapper = shallow(); + const wrapper = shallow(); expect(wrapper.find(ErrorStateCallout)).toHaveLength(0); }); @@ -50,7 +55,7 @@ describe('ProductSelector', () => { config: { canDeployEntSearch: true, host: 'localhost' }, errorConnectingMessage: '502 Bad Gateway', }); - const wrapper = shallow(); + const wrapper = shallow(); expect(wrapper.find(ErrorStateCallout)).toHaveLength(1); }); @@ -61,11 +66,37 @@ describe('ProductSelector', () => { }); it('does not render the Setup CTA when there is a host', () => { - const wrapper = shallow(); + const wrapper = shallow(); expect(wrapper.find(ElasticsearchProductCard)).toHaveLength(1); expect(wrapper.find(EnterpriseSearchProductCard)).toHaveLength(1); expect(wrapper.find(SetupGuideCta)).toHaveLength(0); }); + + it('does not render EnterpriseSearch card without access', () => { + const wrapper = shallow(); + + expect(wrapper.find(ElasticsearchProductCard)).toHaveLength(1); + expect(wrapper.find(EnterpriseSearchProductCard)).toHaveLength(0); + expect(wrapper.find(SetupGuideCta)).toHaveLength(0); + }); + + it('does render EnterpriseSearch card with access to either service', () => { + const appSearchWrapper = shallow( + + ); + const workplaceSearchWrapper = shallow( + + ); + + expect(appSearchWrapper.find(EnterpriseSearchProductCard)).toHaveLength(1); + expect(workplaceSearchWrapper.find(EnterpriseSearchProductCard)).toHaveLength(1); + }); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.tsx index ccda6f5af54ab..13b84c9c6e40b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/product_selector.tsx @@ -40,7 +40,19 @@ import { IngestionSelector } from './ingestion_selector'; import './product_selector.scss'; -export const ProductSelector: React.FC = () => { +interface ProductSelectorProps { + access: { + hasAppSearchAccess?: boolean; + hasWorkplaceSearchAccess?: boolean; + }; + isWorkplaceSearchAdmin: boolean; +} + +export const ProductSelector: React.FC = ({ + access, + isWorkplaceSearchAdmin, +}) => { + const { hasAppSearchAccess, hasWorkplaceSearchAccess } = access; const { config } = useValues(KibanaLogic); const { errorConnectingMessage } = useValues(HttpLogic); const { security } = useValues(KibanaLogic); @@ -138,9 +150,15 @@ export const ProductSelector: React.FC = () => { - - - + {(hasAppSearchAccess || hasWorkplaceSearchAccess) && ( + + + + )} {!config.host && config.canDeployEntSearch && ( diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/workplace_search_product_card.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/workplace_search_product_card.test.tsx new file mode 100644 index 0000000000000..f3e5ab549dd9f --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/workplace_search_product_card.test.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { WORKPLACE_SEARCH_PLUGIN } from '../../../../../common/constants'; +import { ProductCard } from '../product_card'; + +import { WorkplaceSearchProductCard } from './workplace_search_product_card'; + +describe('WorkplaceSearchProductCard', () => { + it('renders with url when admin', () => { + const wrapper = shallow( + + ); + + expect(wrapper.find(ProductCard)).toHaveLength(1); + expect(wrapper.find(ProductCard).prop('url')).toEqual(WORKPLACE_SEARCH_PLUGIN.URL); + }); + it('renders with non-admin url when not admin', () => { + const wrapper = shallow( + + ); + + expect(wrapper.find(ProductCard)).toHaveLength(1); + expect(wrapper.find(ProductCard).prop('url')).toEqual(WORKPLACE_SEARCH_PLUGIN.NON_ADMIN_URL); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/workplace_search_product_card.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/workplace_search_product_card.tsx index 6139d7a2f2b2c..94d3c9bd96bfc 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/workplace_search_product_card.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/components/product_selector/workplace_search_product_card.tsx @@ -15,11 +15,13 @@ import { ProductCard } from '../product_card'; export interface WorkplaceSearchProductCardProps { hasBorder: boolean; hasShadow: boolean; + isWorkplaceSearchAdmin: boolean; } export const WorkplaceSearchProductCard: React.FC = ({ hasBorder = true, hasShadow = true, + isWorkplaceSearchAdmin, }) => ( ); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/index.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/index.tsx index 438b903bd8399..5b8e595d6e88e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/index.tsx @@ -21,6 +21,8 @@ import { SetupGuide } from './components/setup_guide'; import { ROOT_PATH, SETUP_GUIDE_PATH } from './routes'; export const EnterpriseSearchOverview: React.FC = ({ + access = {}, + workplaceSearch, enterpriseSearchVersion, kibanaVersion, }) => { @@ -29,6 +31,8 @@ export const EnterpriseSearchOverview: React.FC = ({ const incompatibleVersions = !!( config.host && isVersionMismatch(enterpriseSearchVersion, kibanaVersion) ); + const isWorkplaceSearchAdmin = !!workplaceSearch?.account?.isAdmin; + const showView = () => { if (incompatibleVersions) { return ( @@ -39,7 +43,7 @@ export const EnterpriseSearchOverview: React.FC = ({ ); } - return ; + return ; }; return ( From 217929a636afe0c6c6ee8990e42dc4bb8d771123 Mon Sep 17 00:00:00 2001 From: Thomas Watson Date: Mon, 16 Oct 2023 15:50:15 +0200 Subject: [PATCH 71/80] Bump Node.js from 18.17.1 to 18.18.2 (#168914) --- .ci/Dockerfile | 2 +- .node-version | 2 +- .nvmrc | 2 +- WORKSPACE.bazel | 12 ++++++------ docs/developer/advanced/upgrading-nodejs.asciidoc | 2 +- package.json | 6 +++--- packages/kbn-es-archiver/src/lib/progress.ts | 2 +- .../server/kibana_monitoring/bulk_uploader.ts | 2 +- .../components/test_now_mode/hooks/use_tick_tick.ts | 2 +- yarn.lock | 8 ++++---- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.ci/Dockerfile b/.ci/Dockerfile index bf84d0a78d581..109b9ffab3cc5 100644 --- a/.ci/Dockerfile +++ b/.ci/Dockerfile @@ -1,7 +1,7 @@ # NOTE: This Dockerfile is ONLY used to run certain tasks in CI. It is not used to run Kibana or as a distributable. # If you're looking for the Kibana Docker image distributable, please see: src/dev/build/tasks/os_packages/docker_generator/templates/dockerfile.template.ts -ARG NODE_VERSION=18.17.1 +ARG NODE_VERSION=18.18.2 FROM node:${NODE_VERSION} AS base diff --git a/.node-version b/.node-version index 4a1f488b6c3b6..87ec8842b158d 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -18.17.1 +18.18.2 diff --git a/.nvmrc b/.nvmrc index 4a1f488b6c3b6..87ec8842b158d 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.17.1 +18.18.2 diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index 3415256bedbfd..e614bdff172f9 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -22,13 +22,13 @@ load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install # Setup the Node.js toolchain for the architectures we want to support node_repositories( node_repositories = { - "18.17.1-darwin_amd64": ("node-v18.17.1-darwin-x64.tar.gz", "node-v18.17.1-darwin-x64", "b3e083d2715f07ec3f00438401fb58faa1e0bdf3c7bde9f38b75ed17809d92fa"), - "18.17.1-darwin_arm64": ("node-v18.17.1-darwin-arm64.tar.gz", "node-v18.17.1-darwin-arm64", "18ca716ea57522b90473777cb9f878467f77fdf826d37beb15a0889fdd74533e"), - "18.17.1-linux_arm64": ("node-v18.17.1-linux-arm64.tar.xz", "node-v18.17.1-linux-arm64", "2743722f164df953b11663a6c25f9cf35769bf500e712e21a6c20e896177da30"), - "18.17.1-linux_amd64": ("node-v18.17.1-linux-x64.tar.xz", "node-v18.17.1-linux-x64", "4612954fef461bb05ba952112636bd11e51c0a59db94e6c4b26328fee4d4d9ab"), - "18.17.1-windows_amd64": ("node-v18.17.1-win-x64.zip", "node-v18.17.1-win-x64", "afc83f5cf6e8b45a4d3fb842904f604dcd271fefada31ad6654f8302f8da28c9"), + "18.18.2-darwin_amd64": ("node-v18.18.2-darwin-x64.tar.gz", "node-v18.18.2-darwin-x64", "5bb8da908ed590e256a69bf2862238c8a67bc4600119f2f7721ca18a7c810c0f"), + "18.18.2-darwin_arm64": ("node-v18.18.2-darwin-arm64.tar.gz", "node-v18.18.2-darwin-arm64", "9f982cc91b28778dd8638e4f94563b0c2a1da7aba62beb72bd427721035ab553"), + "18.18.2-linux_arm64": ("node-v18.18.2-linux-arm64.tar.xz", "node-v18.18.2-linux-arm64", "8a5a03f6a742159c9aa0ae3a99b368cd938cf62f3a5522a2e5acbe6313710efe"), + "18.18.2-linux_amd64": ("node-v18.18.2-linux-x64.tar.xz", "node-v18.18.2-linux-x64", "f7cf590bc7153f3beaa9e1138d00e50d74df223f0bec61f63e7df65f7315b76a"), + "18.18.2-windows_amd64": ("node-v18.18.2-win-x64.zip", "node-v18.18.2-win-x64", "3bb0e51e579a41a22b3bf6cb2f3e79c03801aa17acbe0ca00fc555d1282e7acd"), }, - node_version = "18.17.1", + node_version = "18.18.2", node_urls = [ "https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/dist/v{version}/{filename}", ], diff --git a/docs/developer/advanced/upgrading-nodejs.asciidoc b/docs/developer/advanced/upgrading-nodejs.asciidoc index 9587dfbfd14a0..547ef0080cee8 100644 --- a/docs/developer/advanced/upgrading-nodejs.asciidoc +++ b/docs/developer/advanced/upgrading-nodejs.asciidoc @@ -17,7 +17,7 @@ These files must be updated when upgrading Node.js: - {kib-repo}blob/{branch}/WORKSPACE.bazel[`WORKSPACE.bazel`] - The version is specified in the `node_version` property. Besides this property, the list of files under `node_repositories` must be updated along with their respective SHA256 hashes. These can be found on the https://nodejs.org[nodejs.org] website. - Example for Node.js v18.17.1: https://nodejs.org/dist/v18.17.1/SHASUMS256.txt.asc + Example for Node.js v18.18.2: https://nodejs.org/dist/v18.18.2/SHASUMS256.txt.asc See PR {kib-repo}pull/128123[#128123] for an example of how the Node.js version has been upgraded previously. diff --git a/package.json b/package.json index 6a5a28d327f73..fb0d2494e9842 100644 --- a/package.json +++ b/package.json @@ -74,12 +74,12 @@ "url": "https://github.com/elastic/kibana.git" }, "engines": { - "node": "18.17.1", + "node": "18.18.2", "yarn": "^1.22.19" }, "resolutions": { "**/@hello-pangea/dnd": "16.2.0", - "**/@types/node": "18.17.5", + "**/@types/node": "18.18.5", "**/@typescript-eslint/utils": "5.62.0", "**/chokidar": "^3.5.3", "**/globule/minimatch": "^3.1.2", @@ -1361,7 +1361,7 @@ "@types/multistream": "^4.1.0", "@types/mustache": "^0.8.31", "@types/nock": "^10.0.3", - "@types/node": "18.17.5", + "@types/node": "18.18.5", "@types/node-fetch": "2.6.4", "@types/node-forge": "^1.3.1", "@types/nodemailer": "^6.4.0", diff --git a/packages/kbn-es-archiver/src/lib/progress.ts b/packages/kbn-es-archiver/src/lib/progress.ts index 59be205eb1283..c7f556b4b5250 100644 --- a/packages/kbn-es-archiver/src/lib/progress.ts +++ b/packages/kbn-es-archiver/src/lib/progress.ts @@ -13,7 +13,7 @@ const SECOND = 1000; export class Progress { private total?: number; private complete?: number; - private loggingInterval?: NodeJS.Timer; + private loggingInterval?: NodeJS.Timeout; getTotal() { return this.total; diff --git a/x-pack/plugins/monitoring/server/kibana_monitoring/bulk_uploader.ts b/x-pack/plugins/monitoring/server/kibana_monitoring/bulk_uploader.ts index aca7c23f00efc..5228eb488b1f7 100644 --- a/x-pack/plugins/monitoring/server/kibana_monitoring/bulk_uploader.ts +++ b/x-pack/plugins/monitoring/server/kibana_monitoring/bulk_uploader.ts @@ -67,7 +67,7 @@ export class BulkUploader implements IBulkUploader { private kibanaStatusSubscription?: Subscription; private readonly opsMetrics$: Observable; private kibanaStatus: ServiceStatusLevel | null; - private _timer: NodeJS.Timer | null; + private _timer: NodeJS.Timeout | null; private readonly _interval: number; private readonly config: MonitoringConfig; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_tick_tick.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_tick_tick.ts index 14b3aba461c52..0a11b572ea9c3 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_tick_tick.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_tick_tick.ts @@ -10,7 +10,7 @@ import { useEffect, useState, useCallback } from 'react'; export function useTickTick(interval?: number) { const [nextTick, setNextTick] = useState(Date.now()); - const [tickTick] = useState(() => + const [tickTick] = useState(() => setInterval(() => { setNextTick(Date.now()); }, interval ?? 5 * 1000) diff --git a/yarn.lock b/yarn.lock index 9fff41175cc36..d0fcadff0f1b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9458,10 +9458,10 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@18.17.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=8.9.0", "@types/node@^10.1.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.11.18", "@types/node@^18.17.5": - version "18.17.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.5.tgz#c58b12bca8c2a437b38c15270615627e96dd0bc5" - integrity sha512-xNbS75FxH6P4UXTPUJp/zNPq6/xsfdJKussCWNOnz4aULWIRwMgP1LgaB5RiBnMX1DPCYenuqGZfnIAx5mbFLA== +"@types/node@*", "@types/node@18.18.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=8.9.0", "@types/node@^10.1.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.11.18", "@types/node@^18.17.5": + version "18.18.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.5.tgz#afc0fd975df946d6e1add5bbf98264225b212244" + integrity sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A== "@types/nodemailer@^6.4.0": version "6.4.0" From 3c4a5977a17acbe4303b74339f6a7c16d5ebc2f4 Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Mon, 16 Oct 2023 16:06:02 +0200 Subject: [PATCH 72/80] [Security Solution] Unskipping `x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/` working tests on serverless (#167916) --- .../enable_risk_score_redirect.cy.ts | 44 +++++++++---------- .../explore/dashboards/entity_analytics.cy.ts | 30 ++----------- ...y_analytics_serverless_splash_screen.cy.ts | 2 +- .../dashboards/upgrade_risk_score.cy.ts | 10 ++--- .../cypress/tasks/date_picker.ts | 6 +-- .../es_archives/risk_hosts/mappings.json | 8 ---- .../risk_hosts_no_data/mappings.json | 8 ---- .../es_archives/risk_users/mappings.json | 8 ---- .../risk_users_no_data/mappings.json | 8 ---- 9 files changed, 30 insertions(+), 94 deletions(-) diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/enable_risk_score_redirect.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/enable_risk_score_redirect.cy.ts index a684968bf8b33..43fc7c399593c 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/enable_risk_score_redirect.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/enable_risk_score_redirect.cy.ts @@ -20,34 +20,30 @@ import { ENTITY_ANALYTICS_URL } from '../../../urls/navigation'; import { PAGE_TITLE } from '../../../screens/entity_analytics_management'; // FLAKY: https://github.com/elastic/kibana/issues/165644 -describe( - 'Enable risk scores from dashboard', - { tags: ['@ess', '@serverless', '@brokenInServerless'] }, - () => { - before(() => { - cleanKibana(); - login(); - }); +describe('Enable risk scores from dashboard', { tags: ['@ess', '@serverless'] }, () => { + before(() => { + cleanKibana(); + login(); + }); - beforeEach(() => { - login(); - visit(ENTITY_ANALYTICS_URL); - }); + beforeEach(() => { + login(); + visit(ENTITY_ANALYTICS_URL); + }); - it('host risk enable button should redirect to entity management page', () => { - cy.get(ENABLE_HOST_RISK_SCORE_BUTTON).should('exist'); + it('host risk enable button should redirect to entity management page', () => { + cy.get(ENABLE_HOST_RISK_SCORE_BUTTON).should('exist'); - clickEnableRiskScore(RiskScoreEntity.host); + clickEnableRiskScore(RiskScoreEntity.host); - cy.get(PAGE_TITLE).should('have.text', 'Entity Risk Score'); - }); + cy.get(PAGE_TITLE).should('have.text', 'Entity Risk Score'); + }); - it('user risk enable button should redirect to entity management page', () => { - cy.get(ENABLE_USER_RISK_SCORE_BUTTON).should('exist'); + it('user risk enable button should redirect to entity management page', () => { + cy.get(ENABLE_USER_RISK_SCORE_BUTTON).should('exist'); - clickEnableRiskScore(RiskScoreEntity.user); + clickEnableRiskScore(RiskScoreEntity.user); - cy.get(PAGE_TITLE).should('have.text', 'Entity Risk Score'); - }); - } -); + cy.get(PAGE_TITLE).should('have.text', 'Entity Risk Score'); + }); +}); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts index 92fad4effbd4a..3ec2943223a81 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics.cy.ts @@ -46,8 +46,8 @@ import { getNewRule } from '../../../objects/rule'; import { clickOnFirstHostsAlerts, clickOnFirstUsersAlerts } from '../../../tasks/risk_scores'; import { OPTION_LIST_LABELS, OPTION_LIST_VALUES } from '../../../screens/common/filter_group'; import { setRowsPerPageTo } from '../../../tasks/table_pagination'; -import { clearSearchBar, kqlSearch } from '../../../tasks/security_header'; -import { setEndDate, setEndDateNow, updateDates } from '../../../tasks/date_picker'; +import { kqlSearch } from '../../../tasks/security_header'; +import { setEndDate, updateDates } from '../../../tasks/date_picker'; import { enableJob, navigateToNextPage, @@ -62,7 +62,7 @@ const SIEM_KIBANA_HOST_ALERTS = 2; const SIEM_KIBANA_HOST_NAME = 'siem-kibana'; const END_DATE = 'Jan 19, 2019 @ 20:33:29.186'; -describe('Entity Analytics Dashboard', { tags: ['@ess', '@brokenInServerless'] }, () => { +describe('Entity Analytics Dashboard', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); login(); @@ -177,8 +177,6 @@ describe('Entity Analytics Dashboard', { tags: ['@ess', '@brokenInServerless'] } cy.get(HOSTS_DONUT_CHART).should('include.text', '1Total'); cy.get(HOSTS_TABLE_ROWS).should('have.length', 1); - - clearSearchBar(); }); describe('With alerts data', () => { @@ -206,10 +204,6 @@ describe('Entity Analytics Dashboard', { tags: ['@ess', '@brokenInServerless'] } updateDates(); cy.get(HOSTS_TABLE_ALERT_CELL).first().should('include.text', 0); - - // CLEAR DATES - setEndDateNow(); - updateDates(); }); it('opens alerts page when alerts count is clicked', () => { @@ -265,8 +259,6 @@ describe('Entity Analytics Dashboard', { tags: ['@ess', '@brokenInServerless'] } cy.get(USERS_DONUT_CHART).should('include.text', '1Total'); cy.get(USERS_TABLE_ROWS).should('have.length', 1); - - clearSearchBar(); }); describe('With alerts data', () => { @@ -294,10 +286,6 @@ describe('Entity Analytics Dashboard', { tags: ['@ess', '@brokenInServerless'] } updateDates(); cy.get(USERS_TABLE_ALERT_CELL).first().should('include.text', 0); - - // CLEAR DATES - setEndDateNow(); - updateDates(); }); it('opens alerts page when alerts count is clicked', () => { @@ -398,8 +386,6 @@ describe('Entity Analytics Dashboard', { tags: ['@ess', '@brokenInServerless'] } cy.get(HOSTS_DONUT_CHART).should('include.text', '1Total'); cy.get(HOSTS_TABLE_ROWS).should('have.length', 1); - - clearSearchBar(); }); describe('With alerts data', () => { @@ -427,10 +413,6 @@ describe('Entity Analytics Dashboard', { tags: ['@ess', '@brokenInServerless'] } updateDates(); cy.get(HOSTS_TABLE_ALERT_CELL).first().should('include.text', 0); - - // CLEAR DATES - setEndDateNow(); - updateDates(); }); it('opens alerts page when alerts count is clicked', () => { @@ -491,8 +473,6 @@ describe('Entity Analytics Dashboard', { tags: ['@ess', '@brokenInServerless'] } cy.get(USERS_DONUT_CHART).should('include.text', '1Total'); cy.get(USERS_TABLE_ROWS).should('have.length', 1); - - clearSearchBar(); }); describe('With alerts data', () => { @@ -520,10 +500,6 @@ describe('Entity Analytics Dashboard', { tags: ['@ess', '@brokenInServerless'] } updateDates(); cy.get(USERS_TABLE_ALERT_CELL).first().should('include.text', 0); - - // CLEAR DATES - setEndDateNow(); - updateDates(); }); it('opens alerts page when alerts count is clicked', () => { diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics_serverless_splash_screen.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics_serverless_splash_screen.cy.ts index 94d77b45b157b..fcf869f3b0f63 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics_serverless_splash_screen.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/entity_analytics_serverless_splash_screen.cy.ts @@ -16,7 +16,7 @@ import { PAYWALL_DESCRIPTION } from '../../../screens/entity_analytics_serverles describe( 'Entity Analytics Dashboard in Serverless', { - tags: ['@serverless', '@brokenInServerless'], + tags: ['@serverless'], env: { ftrConfig: { productTypes: [ diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/upgrade_risk_score.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/upgrade_risk_score.cy.ts index e815e9eaa6cb4..55376429f8edc 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/upgrade_risk_score.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/explore/dashboards/upgrade_risk_score.cy.ts @@ -36,8 +36,7 @@ import { deleteRiskEngineConfiguration } from '../../../tasks/api_calls/risk_eng const spaceId = 'default'; -// Flaky on serverless -describe('Upgrade risk scores', { tags: ['@ess', '@serverless', '@brokenInServerless'] }, () => { +describe('Upgrade risk scores', { tags: ['@ess', '@serverless'] }, () => { before(() => { cleanKibana(); login(); @@ -72,18 +71,15 @@ describe('Upgrade risk scores', { tags: ['@ess', '@serverless', '@brokenInServer }); describe('upgrade risk engine', () => { - before(() => { + beforeEach(() => { cy.task('esArchiverLoad', { archiveName: 'risk_hosts' }); cy.task('esArchiverLoad', { archiveName: 'risk_users' }); - }); - - beforeEach(() => { login(); installRiskScoreModule(); visitWithTimeRange(ENTITY_ANALYTICS_URL); }); - after(() => { + afterEach(() => { cy.task('esArchiverUnload', 'risk_hosts'); cy.task('esArchiverUnload', 'risk_users'); deleteRiskScore({ riskScoreEntity: RiskScoreEntity.host, spaceId }); diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/date_picker.ts b/x-pack/test/security_solution_cypress/cypress/tasks/date_picker.ts index 1ea45dcd0b91b..7ae1fa8c30b73 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/date_picker.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/date_picker.ts @@ -31,9 +31,9 @@ export const setEndDateNow = (container: string = GLOBAL_FILTERS_CONTAINER) => { export const setEndDate = (date: string, container: string = GLOBAL_FILTERS_CONTAINER) => { cy.get(GET_LOCAL_DATE_PICKER_END_DATE_POPOVER_BUTTON(container)).first().click(); - cy.get(DATE_PICKER_ABSOLUTE_TAB).first().click(); + cy.get(DATE_PICKER_ABSOLUTE_TAB).first().click({ force: true }); - cy.get(DATE_PICKER_ABSOLUTE_INPUT).click(); + cy.get(DATE_PICKER_ABSOLUTE_INPUT).click({ force: true }); cy.get(DATE_PICKER_ABSOLUTE_INPUT).then(($el) => { if (Cypress.dom.isAttached($el)) { cy.wrap($el).click({ force: true }); @@ -57,7 +57,7 @@ export const setStartDate = (date: string, container: string = GLOBAL_FILTERS_CO }; export const updateDates = (container: string = GLOBAL_FILTERS_CONTAINER) => { - cy.get(GET_DATE_PICKER_APPLY_BUTTON(container)).click(); + cy.get(GET_DATE_PICKER_APPLY_BUTTON(container)).click({ force: true }); cy.get(GET_DATE_PICKER_APPLY_BUTTON(container)).should('not.have.text', 'Updating'); }; diff --git a/x-pack/test/security_solution_cypress/es_archives/risk_hosts/mappings.json b/x-pack/test/security_solution_cypress/es_archives/risk_hosts/mappings.json index 3e1b52cb22f5e..e250700644c15 100644 --- a/x-pack/test/security_solution_cypress/es_archives/risk_hosts/mappings.json +++ b/x-pack/test/security_solution_cypress/es_archives/risk_hosts/mappings.json @@ -31,10 +31,6 @@ }, "settings": { "index": { - "lifecycle": { - "name": "ml_host_risk_score_latest_default", - "rollover_alias": "ml_host_risk_score_latest_default" - }, "mapping": { "total_fields": { "limit": "10000" @@ -83,10 +79,6 @@ }, "settings": { "index": { - "lifecycle": { - "name": "ml_host_risk_score_default", - "rollover_alias": "ml_host_risk_score_default" - }, "mapping": { "total_fields": { "limit": "10000" diff --git a/x-pack/test/security_solution_cypress/es_archives/risk_hosts_no_data/mappings.json b/x-pack/test/security_solution_cypress/es_archives/risk_hosts_no_data/mappings.json index 3e1b52cb22f5e..e250700644c15 100644 --- a/x-pack/test/security_solution_cypress/es_archives/risk_hosts_no_data/mappings.json +++ b/x-pack/test/security_solution_cypress/es_archives/risk_hosts_no_data/mappings.json @@ -31,10 +31,6 @@ }, "settings": { "index": { - "lifecycle": { - "name": "ml_host_risk_score_latest_default", - "rollover_alias": "ml_host_risk_score_latest_default" - }, "mapping": { "total_fields": { "limit": "10000" @@ -83,10 +79,6 @@ }, "settings": { "index": { - "lifecycle": { - "name": "ml_host_risk_score_default", - "rollover_alias": "ml_host_risk_score_default" - }, "mapping": { "total_fields": { "limit": "10000" diff --git a/x-pack/test/security_solution_cypress/es_archives/risk_users/mappings.json b/x-pack/test/security_solution_cypress/es_archives/risk_users/mappings.json index 77eade9df7994..2591f2d216575 100644 --- a/x-pack/test/security_solution_cypress/es_archives/risk_users/mappings.json +++ b/x-pack/test/security_solution_cypress/es_archives/risk_users/mappings.json @@ -31,10 +31,6 @@ }, "settings": { "index": { - "lifecycle": { - "name": "ml_user_risk_score_latest_default", - "rollover_alias": "ml_user_risk_score_latest_default" - }, "mapping": { "total_fields": { "limit": "10000" @@ -83,10 +79,6 @@ }, "settings": { "index": { - "lifecycle": { - "name": "ml_user_risk_score_default", - "rollover_alias": "ml_user_risk_score_default" - }, "mapping": { "total_fields": { "limit": "10000" diff --git a/x-pack/test/security_solution_cypress/es_archives/risk_users_no_data/mappings.json b/x-pack/test/security_solution_cypress/es_archives/risk_users_no_data/mappings.json index 77eade9df7994..2591f2d216575 100644 --- a/x-pack/test/security_solution_cypress/es_archives/risk_users_no_data/mappings.json +++ b/x-pack/test/security_solution_cypress/es_archives/risk_users_no_data/mappings.json @@ -31,10 +31,6 @@ }, "settings": { "index": { - "lifecycle": { - "name": "ml_user_risk_score_latest_default", - "rollover_alias": "ml_user_risk_score_latest_default" - }, "mapping": { "total_fields": { "limit": "10000" @@ -83,10 +79,6 @@ }, "settings": { "index": { - "lifecycle": { - "name": "ml_user_risk_score_default", - "rollover_alias": "ml_user_risk_score_default" - }, "mapping": { "total_fields": { "limit": "10000" From 5c42b9f389ac3839047368d3addb4042dfe0ecdf Mon Sep 17 00:00:00 2001 From: Cristina Amico Date: Mon, 16 Oct 2023 16:19:39 +0200 Subject: [PATCH 73/80] [Fleet] Fix missing item in output openapi specs (#168938) Fixes https://github.com/elastic/kibana/issues/167181 ## Summary Fix of Fleet openapi specs: `item` was mistakenly removed in the responses of these two endpoints: - GET /outputs/{outputId} - PUT /outputs/{outputId} Adding back the missing fields to align the actual behavior with the docs. ### Checklist - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials --- x-pack/plugins/fleet/common/openapi/bundled.json | 14 ++++++++++++-- x-pack/plugins/fleet/common/openapi/bundled.yaml | 10 ++++++++-- .../common/openapi/paths/outputs@{output_id}.yaml | 10 ++++++++-- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/x-pack/plugins/fleet/common/openapi/bundled.json b/x-pack/plugins/fleet/common/openapi/bundled.json index f87ab5a3edacc..509a598a62ad4 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.json +++ b/x-pack/plugins/fleet/common/openapi/bundled.json @@ -4573,7 +4573,12 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/output_create_request" + "type": "object", + "properties": { + "item": { + "$ref": "#/components/schemas/output_create_request" + } + } } } } @@ -4650,7 +4655,12 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/output_update_request" + "type": "object", + "properties": { + "item": { + "$ref": "#/components/schemas/output_update_request" + } + } } } } diff --git a/x-pack/plugins/fleet/common/openapi/bundled.yaml b/x-pack/plugins/fleet/common/openapi/bundled.yaml index 4629a95af27e8..7f43bb2e3b710 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.yaml +++ b/x-pack/plugins/fleet/common/openapi/bundled.yaml @@ -2853,7 +2853,10 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/output_create_request' + type: object + properties: + item: + $ref: '#/components/schemas/output_create_request' '400': $ref: '#/components/responses/error' operationId: get-output @@ -2900,7 +2903,10 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/output_update_request' + type: object + properties: + item: + $ref: '#/components/schemas/output_update_request' '400': $ref: '#/components/responses/error' parameters: diff --git a/x-pack/plugins/fleet/common/openapi/paths/outputs@{output_id}.yaml b/x-pack/plugins/fleet/common/openapi/paths/outputs@{output_id}.yaml index 6049f98ca5062..ec2ce9dc0be71 100644 --- a/x-pack/plugins/fleet/common/openapi/paths/outputs@{output_id}.yaml +++ b/x-pack/plugins/fleet/common/openapi/paths/outputs@{output_id}.yaml @@ -8,7 +8,10 @@ get: content: application/json: schema: - $ref: ../components/schemas/output_create_request.yaml + type: object + properties: + item: + $ref: ../components/schemas/output_create_request.yaml '400': $ref: ../components/responses/error.yaml operationId: get-output @@ -55,7 +58,10 @@ put: content: application/json: schema: - $ref: ../components/schemas/output_update_request.yaml + type: object + properties: + item: + $ref: ../components/schemas/output_update_request.yaml '400': $ref: ../components/responses/error.yaml parameters: From aece2f8ec4c3b8cae2b4087bb380c756966f496b Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Mon, 16 Oct 2023 07:19:57 -0700 Subject: [PATCH 74/80] [DOCS] Make Cases in the Stack Management GA (#168764) --- docs/management/cases/add-connectors.asciidoc | 9 ++++++--- docs/management/cases/cases.asciidoc | 6 ++++-- .../cases/images/cases-connectors.png | Bin 167727 -> 76767 bytes docs/management/cases/images/cases-files.png | Bin 117140 -> 39734 bytes .../cases/images/cases-visualization.png | Bin 325964 -> 114278 bytes docs/management/cases/images/cases.png | Bin 155318 -> 56573 bytes docs/management/cases/manage-cases.asciidoc | 2 -- docs/management/cases/setup-cases.asciidoc | 5 ++++- .../plugins/cases/docs/openapi/bundled.json | 4 ++-- .../plugins/cases/docs/openapi/bundled.yaml | 4 ++-- .../openapi/components/parameters/from.yaml | 4 +--- .../openapi/components/parameters/to.yaml | 4 +--- 12 files changed, 20 insertions(+), 18 deletions(-) diff --git a/docs/management/cases/add-connectors.asciidoc b/docs/management/cases/add-connectors.asciidoc index c193a42b8fb29..e5fc4e3791082 100644 --- a/docs/management/cases/add-connectors.asciidoc +++ b/docs/management/cases/add-connectors.asciidoc @@ -1,7 +1,10 @@ [[add-case-connectors]] == Add connectors -preview::[] +:frontmatter-description: Configure connectors to push case details to external incident management systems. +:frontmatter-tags-products: [kibana] +:frontmatter-tags-content-type: [how-to] +:frontmatter-tags-user-goals: [configure] You can add connectors to cases to push information to these external incident management systems: @@ -24,7 +27,7 @@ You can create connectors in *{stack-manage-app} > {connectors-ui}*, as described in <>. Alternatively, you can create them in *{stack-manage-app} > Cases*: -. Click *Edit external connection*. +. Click *Settings*. + -- [role="screenshot"] @@ -50,7 +53,7 @@ configuration details. You can create additional connectors, update existing connectors, change the default connector, and change case closure options. -. Go to *{stack-manage-app} > Cases*, click *Edit external connection*. +. Go to *{stack-manage-app} > Cases* and click *Settings*. . To change whether cases are automatically closed after they are sent to an external system, update the case closure options. diff --git a/docs/management/cases/cases.asciidoc b/docs/management/cases/cases.asciidoc index 7d32ddc527930..02d5b5f859a5f 100644 --- a/docs/management/cases/cases.asciidoc +++ b/docs/management/cases/cases.asciidoc @@ -1,7 +1,9 @@ [[cases]] == Cases - -preview::[] +:frontmatter-description: Open and track issues in {kib} cases. +:frontmatter-tags-products: [kibana] +:frontmatter-tags-content-type: [overview] +:frontmatter-tags-user-goals: [analyze] Cases are used to open and track issues directly in {kib}. You can add assignees and tags to your cases, set their severity and status, and add alerts, diff --git a/docs/management/cases/images/cases-connectors.png b/docs/management/cases/images/cases-connectors.png index deec94f09871a1fb21509d1c44c75b66c645197b..be7cc6aee49948b45e579c71f5da61d6fe631cdb 100644 GIT binary patch literal 76767 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 FCIEw)n`8h0 literal 167727 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 z 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 diff --git a/docs/management/cases/images/cases-files.png b/docs/management/cases/images/cases-files.png index 5b4c613593e661ae4a3645d16161060a37f2f4ff..03636626911ad2790df2f0b40a6202a9779fdc0a 100644 GIT binary patch literal 39734 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 literal 117140 zcmeFZXIN8P+bxWUASf0P5TpqL(xvw%(wl^i9HI$WEAA7plIXc@C5#3MpNgUvP^yC&y zK_qrrP23(W zmc?D=uo!g?#k8(0bG0W2rqaGxI3UM?6(;c=>E8V(m@#UJ!YcSXePa%px7F;=!JH}z z@0_b6xNq5HJW;)!Ak8gwkDiUM=l;!O3M%%V&zs+R-w3nW-!1InV>*9%Emh9?=f_Fd zO~FhZi>r;68mrt_?YdtKsVPeG={_gjKR-U(rr|#)T8hvw_BI__p>U@Ho$N)gu!OIu z-k-ZaA_Pwgx$DM5QQ;!Ia zMGlUH$Hbr;mv021Eic+vQ*bsX3saQOvYsN$t&ZxYAhK(yQqb@j_6 z>aPazt(?7!HTSq$ceYSc{k=JIfrl-qdk?EjHa-R46r%g~5Pq5R0?7?UqCa}Wq$+}1 zYAuZ35fNWzef39gbwnKsbtLA0{)qR48~isZtsDRJ3702{NzNy!oNxZ&kGRogO}JsX zQX&S)_GiE0GV8M|H%_g!KCAp$m~JSt#*^PT1;geZr2cWJUhymL#PfI1{?R}X1`H(2 zsko!Z9Qe&d;QtQBzXt994#xjo8UGVj{r?lDA~2HyBEgN+sjs!Z^*{@rLzCz;0`7N8 z@fW0htKmaI&bxgkk8JE#5p^ zNlckzTx?6aQsYhawho0P=h|jIj}L!*H`ijBtS!97=Wb}EK)T2NXFzM*@`dKksWlmX zm1|*&^KSZy(jXCphek_sMb=mN$%lOE(xva;_b^>M9GI;I-*hVPr3Q^_=$M>VEnoDz zYNK5TdrExw;w6v3Kl`~06gL{!!b59D)9g-%e1kKiF{Hs9*ljn2Ot-aO_xf+3$v{qcID1@Q_Tsa*_>3~8VHI`##!h!uy^uIBy>!R*KS zEQ4I$mErg`@*Yj@8lY^p=JKlqPT!N<;=U)=Lz5Qg11~hu-1w=INYiX>yV0>k6^JPv zqU;Sw>chu5%L$dD` zkCn*D`Pf{X0#YTW>3#H#GHO+sW!O1RuV{=_{aDUu>d~g7Pl6BSd9|si9CbZ zjOFBe9-gWc-&z)&7!%~;=*vg~sx1xlq`q0IIvDiOko2I-ks3y?H99;~{f+w)F7crkXZwVH#&Cw&_~-$xz#Y&9eyxT|bQ} zrh0cs(1Vb0wRYc`fM79yWGbot7yc0L-I+`NnDZ6|ug~Pf40|@_6(Hrc#sn-<1P@+)yx=<W*>#aJ= zk(|iZxLTQu(NUt;Cw!4N_0OZh+nx9NS^W>VJK!^MYb zK9VvU!EHxg?_vOq+n(?NyDd-h(;;A11XI3M7~4 zFz@G=!+N&m1pm=`Z15y0f77e54N{;ctsfZnJ9_l+gLAy>S_908`m>1bn38Fe0QXWX zX{_u>QTbBKcFQhY6}CIZxv5;+ zi_1x3(N@idoX@$~DhDipp~7n^K#qn-i8knBu3_BfeE;;)4v%$DP_TEXm!m#3IZLyJ zRe^7cH$PV8Q96(wM=sCo9Ys&NH z*2K~&Cf@05*$LewH?iFB=G?q;ja<@JqN|+(DuRC4OxZx*4+HpT$<8 zyZ?-}m-B&2W5c>HrLySE+Lf_26Nl;tE=QDH>poM{gHOcQr4H-bR*GI$1@v!y;JyPz zHi_QvawQYAJsw&*zzL8M%T48{vhTo{OZNI0rd0ZKB&az?4q2o)*f|C2!d$((vS)!^ zxvpYh`s_AWexNNGt>uXD=*=VR0XwSIu7x=tBs2ACzROmdbusCA0Tuzjg#~ZN!p#M7 z_$IlK^{mqC3M(@lYTAQ(5&A07Wb&iROj0g6g^=v44dqRvA{{nUv9T^H}4p2i7dp(`HDp@XqRP zMs`|w_U7L9bc}3s>eWnp;#fPEH_3gSJGmZp;ouo`J}g6f4R7URv!7g`SVjNt@Lk(z ziRrBHaO3kg-Xa%NIHIlao@S{1xgZ7WqE%jKp_0|quvbO$3X<`UsmjyDOZH>|r&_ndcGjj<`h=^Q-sre%(^*u#v7Yyb33wF- zGsJ++w9wTou?oD{7?T&RWZT#s5$Jf*72*I)q?x{OZbFcpPt;QDXU*hvZQYDM$CuA; z9)C?fcX}+ueOarT2@1^?O^@149S=lIRQ^#V4C2*eohLhgDnQM8-r8Jw^(>^-#-1pl zK0XPMM~p#llyu**o-i#ke(!0;aGH;7Wu|ZJz4?;LsJLL?;UvVe^y%BxD()pCFrL^7DHAh1^_3~nrX%CN_*M^u6uSLJ+ zE#@V;`<&y+lU3%~PSDL+n|cDnnFyI(y?i>9`^jpHM*}9^p)Xg^@RV;$Fg~bNpTKSR z8!A!~QBzKy0NAIhfPp8bwb+k*^US;i+F)wE^s~P!TlqYZ=3Af{B1?1ij6f~8XuvEm@WT=l!iHFf zG#vn0V^zuS0Wo<{#8g&{xqv_G3*+@+#0EU2hOw-uk#RhPmwox^PybyBQ6?&2-S{{V>GTkzF64aVj4_s6JhuHm_v;^W+&i#_I`(ERMV#Wpa zOgo~0t+ZGKewE?--rDF^9ImcB@hN8GHTktla~}io9;qEQT&QK;y!=*`i*s1$=HXJQ zrRRb^QS_{YmvVB;$t;6ED(V0O|LNX5ZEHTPz>NpG4@m0|*f0ziLMw8Pd{eU8pXpN_ zPg2mdoIaUyU+`p&w<=G6*F$n_F5)88p|CvwezuJr*So{$=cLbZumB;@ANhDoc^$1F zLrQ^_hNA6Kgr7EBYcgYI>+a{7lf{RQ$B;G5AtckXoSYvi_#F98=7eg1BRxfEpcG^= z#o0H{CG$a7x^q%SFa{v#0?FjYhPFL4+KjGk8u1bgl&|}vE<3~Od7LGtR0!Ffvdn$u5>6qJ3U;|y~D_~-0s{X7r_M-ltBqp`eiJ87A z+c5Gr|B+;zrn-91VZKE0L0qTN+m8!WD$C7?X5{JdJ1Y8YR+VVFR4RM~^2?Bcuxp3a zu^k5aDvxO7oUl^OfdY<)?0OtMMqn|uiZd_&*CZsjlD@&Hk?}NS%iwu&^E2tAp*ujW zGffSIz4&H4Smn+&b1w^EPCIB#(0$BsxH9DPY0Wc;PhVnw5puF|&oj3B#gf*vYnZwC zmb???toQ2cENMR_s=kt+&|HWxr@CE#hVuCF@y3TzABYIhszy$A?#Mr%vFVm~{sr}O zA&`0mg;jsT@)my0-#56EX3@iQ$Gzns<|fyGI^xR*&tVe4S*^Uj6=UnvA{5(F&ZXY zXmB8Z;F3N4H0e23yl*GJLgIp$UwiYHBL8TbJ@Au@<{EpS(nMw)RMR1LTZaLyb_s9a z$yjHPT$T2k-`u=igm7lY*`@GVrromnDY;lPlBaTs-d9hAcTl}K)TBml4kyGt($9+( zPsF?M$f%xIbC{6^H}!g)4&|2>0P}CaJUnIKIx87u3Rat*Cr;ER`(xkunS%3C=)^?@ zH&4c9^wZME79kA7N}JA)wo$Y3BYT^n>0c`B+btI5Q$5NslcsvIE@cm*Xr$Js|8&VEY+-@Oag5a@pr-uZd2@9l zp+5d<``&J{@o~c|=SiRlO7I9(G-qe?%i2X26B}W%>B`Rgu*wiRtMc`!MXVF^N@9x zc&L)A6bMi8ILo$b;#z+AzpApT#|zQDr`Cb;a=x*>rnGl`fXS&4vikaFFK-~#@q17G zUC$Yk!O<)HcL~h-sD+uon&!D?#9FN(oK*dp;&VtvUoVKD4P=OArC)FgWzLiRJ=&`3s&{Vp>*~N)mV8cqy{F+5k@sQMuYPuSf)Hjw(QrZ-TR+^MKsSRF{ zzxni}{QWJy1kbm^mL*nnwsL#)z@Q()_~JQ{R;*|J;_ZLc5?Eb`ZSWeIboqZd0iH$+ z(bw=#PE@9?@0Du5dMYl+@INv$#hvSrza9Zm*~WfAwMwas-KvyXUcPJ?e zsQtH-|9UfP5eWryG`3Oj_mOL(xW~!aQ)LUcT`J_Sdj5^nwAnZNJB&-c+D-@Rv7|cu zSt;0YwkaikM->+1vdV&0Oi=QW1P|z9{mwIxr9uT9YuAZQiS>Lcf@zF{rEG*38 zM0kl+2Ax8`VH>weJve|#u+IVe@6iy7MK5VSv@1#)U*IzJ5-sQX~ zGR@vZ_F{Q-UYGjXR9R6F?tsqo8|AD;CmPYLcQQ9K4@GZO$b)m_T;12;G2xpn#&)G? zQdMft#@59=&(E&o_D#oWg7>#L~z{wo$~wUbbmyU`RZ7SA^7@ys2Z)nd-f6|zQiZ&QCfR;I&z({ zIJ{cCy!4GOa?m?EK{IIE&!r_f*H8n9m607pgE|z9ZadQqn4KK4?mc9ZvE6K7kv&=a z&o@x~LYupp_Ah=Kt1-FrT+5iX+WddIEc!P(j&>Eg34>II2gS>=A$u-0#}G2IK&WokJsItt2sx7JV* zYWJt@R+eeIgp$Bc{A3xdXSvd_RTsj%S8iT!g+KC2f;aq{N17=V-fJV955SyyDP`vM z-S{&chxp;gWI+}-8eXGhaTl}hgY0rJ@uee)4gm**`{#f@vvi425G=bU%lJHmFlYTX z##KU2j*aPMm!;A|_%9p|hGPSR&y7kgIJ{8(66oU#Z{NI07#yU~fQ*>cE>8hvqTAcs z;THX5bOII+fH>HRw50pOD@NIuT_+Y15fK`*O+Jsp!TL>BC~03lT~6H$=iojj$s5mg z0Kb-}^N>Zr`>FsCh$GuAy)gJJBU8jahtHyBGC;gFO&(HSVIRLe{Q3FCiamc^hW{~? z?w*j)laRBm>!$4?;hS@BSkEpX_gQr0^PJ z0N_*J5hOp8VWDk$%W_fX2=8nnw008ygv zjb{#F$vMH>DkuTdO6NTCu**LCj)nOW^8qjt;+J-5m1JY(h6buZm`YKn(ZTH(nUus8 zEhkMec-K;RHmMx`eaq3;YJuQ>vg>lPj|+7mi!&U1sQ#o3F`(qh;r1+--Z_eXXaTaE zVb^owz5Kv&xS$f2U<*%$UlDBM%P_s)XjEz<18AU~>dhdVifnL)OvC4O&HAGLJD>|I z)dyKoZ*_0e_?T>mE<85{5>w1(woO>$(Rb)y5Dy$mrRa>J^V#K(yMm8sJX#1;aYO3P zXwzxyVf0IP=D+*}Ry~S@V=lcm7e0pHB($z`;#%z$D(nIT#vJ%?E@00mK89tkhXZQ7 znjaqphka8m2sr*Y(3TL2H)RdQ@4h=$2^@L~vmYbkCqMWZ3efNgpu{wckrgD5VFuu1^d8V7s-m|L}z+xp# zktDP2;=(woC`y(@=Y{xkWN}fHiRr5uk$1%!P9TMVR#N$`8Ar_@vGn|e$vY}g;%N6k zY;53leIfcF_&nsn52A-|6GKsd^N>d6SEo6ROTo`*ev>MQh+T=x%<9}XZt}u4u*|Jc zt%)2A0tGOGnK9gNEJS*XmPFMTrVH$6wNcOrI8!33{VFEDu=Hgtxyaqo_OB#YID284 zIUeY5ZeWJfg~(eA-)i0PFf{=t{opKHpGcPsGWALnmy zGwo;iC_b|q$+0y^pzmkr*%n=2*ZF(O^C91?PZbKab4iJ&_)Bv3`ej_f{wsk!dem)c znJ4>IZm3D8P7%~IUN_E+J`K5$WB(RDK-1$Ik_<20&vzBeGmTzGX|7`I34wQZ(1Er~ zkz=W4se1W;^A^Q98UimzxA~Pa{tj5M#NVQV?_+0zjiU#O5j<@tC+3ZL_ALHCyE~HJ zzm)o>5lt5$b-YY{(RL`TQP>v4BJ8^9aJ-d9{xi$t7ei)Ff6c~rEg+pcu&F;=0qv2W zuNEIo`et$~_PmvcI)riKa?cTr#NWba%<#~$&h-8b;M^6gQQpH#*m6;(G(OXZMr9^! zp#vFq#0nwF6>W?hEG_48x7w0hHMQh?(A)H)MbP@q6|_;IuE;GWLY|lBub-a-gouJ3 znGL%hmabL3Ks+pdlHcSLlHZ-XWF_tNp1c6)P=%i?v+HBP^bgi=Dg$LahHq)8tGlmx zDGY8tYR4Z&Y1Na`Isin;u!lm<;>jZSzUdW6#vntsi8%jS7+yc%1u+!1G?Tdbgy8 zj6BP-g&TE&-dyHYjwhXJsP{q%kVX4!O__G;9U+7siQsBB+_McIYKoYMIS(pkq+=}a z-bFH6Z!)>j*NvB33YynB*G8F46B2k6;|7TIw&SzMo?Bl)7nuR`=O+`{abGxb(v)2z z&MN&%>b%C~b$Wrbb6)ZGHx{$~=Im0gd$&D9&jpV^H4Ae(sy97B=Yo8;Sqs zP?T){@o=8$<9#|pNqDw;b9D)RfRHNu*uC%pp*?ev%$w4nP`BFZFrdkAgKa=oWb(<+ z-fjC#AL5RV4rVa0xUScsL|Z(~Z$5aQq=+LWTMM2gF*`cVaRh5KLV4y?7{X~WUEi)p zr!G{RFGFKQ4=Y_2P9{aDGsd6$0~*M z^AgHWhO4T7YviC74n;&o%Rxw`*>7y}g=pHHy*+A5^}#9$gQ8PzFZ**2?A)H z%76cOxYBmRXl({bN-rK{Q-1xl5`tPQB7NJY4-D-)HE;6W;5I1I(Q~QTEWUHU4GLh?Nk9vfvD?%Ycc+TtIflxLUT)EpR5W!mv-x@ zLt)3CZbrFkn%2gI;^Mme>HDj}sNhNw3#d^OFZ4L8didoX)K<`|&{y?&R5upV4ZE%K z>#s!L;{G|bl><^EbJ&5@l?L>Gji4~!!=13Wakg0j6~3j5*vkrVum4acOS%7K#+r}m z@8z0+yVP|G#?7-Ez4?tGV&Or|@OrOq=*T?Wa# z_M>Z;cbFv?Zm-tu4Qo|&x9yy{wzAdF%osCBxZXe5m;md^ACFS>?%Yl$XYzo>2ljey zP71}#qpnfD2^hE8AHt}6t@ILV{}p&NO-T}^Rlrdq%yyu>?8C%RmC?edlJcZqjJUMj zUdFWmQo(Ids4?Fb%ow~a0|+{fRg?Nez68@~^z0b7M^_KDd$vDXA1mXvY_bsa*%+m5 zMSoG!^N;b^9@IAT(%zY|*z+G6h)M0!6bOv7`#QX-(3c^eNYGUz^{ltr4^}olAiMN| zwLlKYqG|=Dfcdy}bl1oG@$y@e-mAGZ4o5@Re5rzX`U{u)IU2OGP?LpKVQ`+9=|2y8?ZkF`iJ!aUM)ao z&Y3I!)(HP29sGT?5KVoVhv{BMacAS0FzDjJ#+c8x=O*sh-)=?-{&j{Gf&v%-M_lfXuie&{AE_=&XUR6WMz0hAbdW^kx)J+{2~Qb()jOhsjD1@ zs7f|x*TsOAh3{qj+GtLx85q`wE664+{bC6me=J|2jESb#ezLVsNGbRtKDa^)`-J)i z$|6Tw&`>{R0T5W6YG+#yhn>fLQ%y?5{XI=lz9-{45Wgw&xIz!oaW)z6O)w8|i? z-INSP`mn}W^o0!D=*Yjr>~Fw&@L;p$*rN1zWs4%~^((JmCsSi%=pbK9!e!V@fT@H7xu}JtF;c?{iy;B-S@Lz?z9Sq zE{SDBHAal|n_bxvwZM8GUCP>fQ@KjiW*H&r^C9Qo7z{oN5~s*F3ApdWDqK-lg%?UN76~N`y2rZYT}pNW9#a@(Vgd zq*d9Yt<=&|pN#l4*Vh@>*ELmPq-N3S!yd<&yTc!!Urf6T2@)QDlG7_+8H~HOapsKp zl{>C_6(N535p+hd+?6@#7n1@D0{nLIER| zA(Uc&J2;+Rz=<+Hse=Y??EcYGyvCN9nC(X076!_F7dhuNzR!nUl8;>Ky*ap0`6ORH zaT?t)ZTpaN=a*b+1R*_aAUmB5KbRq4r7KGYc1FxWTS37ZcE;Koc#uqBbLpi@OExv+ zZ?wwC$}J6Ms!v*u=8cj2Ya+wFHgwUVAdUGDTs90@+l$gLUmJ#&1v)My&5FKMhmV|X zl*^QQdX^Yfq(1)!CI;>|){L4Ggka8*MEh~pz-xge9Az_FsR!*_0{-jWN*_QE;5xqL z3ivFW>-BX`qeXs#Y4X^MKIr{+T4KGyOBdx|Zsg_X~$pXK>DpBMeA zq|xaisSi2Or8|3CIdtWm2I zbY^*p12DgNeW4>U<;Qe+mk$kTTSL8)+aU47?{_3hQ-`6NrijON=t)OET#d_AL8W#! zrU-6AShI9N)?s{BfoD2tz}f3O?*ZG>?Y;E_{D7t}JoL~DcbKGoF_Lcadv&dCBelY= zrS|So^_Ba!IbR6n)N(6UL389a!-KtV*R3ryo%$Y_mNUOx9TM%!4{w)1`*ZEh0Ru6` zcVF1!Dy8+0<4J#%npI9xn2h9Q1bRgPHKXrI7s9YxW ztFYwHknoDZA~$-3CLK}v*XO}9u4wdX_o|oc`h~0iuT1q{UPo6f@r4T) zFk2D;6ME+$O9-h}42wcP`;J-#i}Zf1O%cK&M5AI$xd@ONc&8Mk((1aoww0_!XoVcU zvfYez9a_jE$Y|)}g)=`{-D&8LXj*=@_VYuqnkjeu6#<`BL5y0kG+X1yzJ1;ou%4^{ zAY`|Az;AFMg0%KmDnT+(GOkTQtF<7wj#r^Yr*JHGKG1xsoxEimBdOg!NI(B9eq#UL7(c&%7;6yeRi@1X?X@P4EUn8z$E@VTH zZooir!Wgk@g2N1nsWesW63z@lPzzQQW%E3W;OnBkE{$^521Ap-4Rv1o8t`jBtEypX5-0qV{ZX_VlJ?0IX~ zsjemC%h#XWBYiJ|f>zixjOQiE+^R)oWu@nW;_IX1V~xHHvEiWWfpTp#aOOMo^c>_x zRHa{TgocJTPouU75*>1ND1Qa<;huni?pGdTab(BCAN{wM_a0sCr3E!KEK$+ZJGL4t zDJgyEkcVnsItfC5|NiK$H$J#MM7K1T`{z;l72qw&XNt1oXR*qdP_ZivJb2yXa(Id zhgQ07ODBfo?HbOF^Yg|%?o&v;JjS`maY!8oRlRb8YYN> z3K7bE(;5!_ROffertgx7A4Q+grHVmj*IvQbs{qz07qDL^pV!R5v@T-d#c+Y0l%o~9 zNkDBW8DB^Zd2+~L+^Yqz7}(gVOc`(g z;o=1nOr+uzUOZVM=dI!IiuB9N1{eBz^Pn&HQxXd=&=y}Zb$AfjCOj3?m=+w5K`L*~ zdb=FZ9i`W9d-K0~H+=8LZ4*NKO|tfgSbwH!L+|)smt-0yozIR< z-P~E?%U4o-&IIhqUZI(*FAh3FnH4|fJSLJw0Y!lG-|>Z0FFq{U`tCEQx7x%LIvT@I zj~@CJ8ws4vTZ5Yy!}_8uh(kqJS365ew2t*JbXz`DAZW1(NPon0yw8+>5B`UUDBtzSICQ=d?7WsRcdek)e}b3sv@!hv3p z{{YI*4^rsnf1(xUIHLayF=p2u42G4l#dCC-D^yeopRa0Ak}`+{mb3(-$C#}}hAT&k zXN>I)tYW@EVjMgPJjEuJu+K7`qg(c$PyS7r&H74FfNrqLvPdtRhW`Kw?1Y4%@f?|T zD$pYvrc7hq-5?{#Xq7oT^E#{F`%;BFb)1*(@lV}O+;kDNx`nvS%o}(OlEBWTtAU`x z>$e7JI6iKyfr+8|0isKB=4T$e_KYaO_Zq&8(baKhXB6q44nIoItasm11)nC@0$LoN z7eAIRzBk#nN?r9rt!8XK-~atB-u07>lbX`*jPF|tYPwm8eK>1dzflizeoJj9M7zXSMT;Jc_-K0Yj9kEUbW7J!;VE@r#;xa7qK?4ZwD)|pjX2vMUeeFj zKEtv|-Ick{oEEOO1a)ep(y!2W4%j69|CCuQbcN|6adrubRgW$M;?^-MmM;2?U?wiHE@&t$BW?lme)Z*0j3UGBHe))d4XWO%#epOT05s+c^|4%k%RfZv@vuQ0r}cj|qIC1Zz9x9$S+dwMkrIkpS89iF+zg}uvv z$2fVhFgc5qp;3bJ5kvd4s1}8g2v~-9X{zNNp&c_vU`%UmOvAmLX4VQlle?k4b1N=R zjkC!;fsLV8xSu8@xmkf$dwmHGNmX{%o!?^9U(C-YMG?DgsR9rsxv_KWeH+ir`slOl z2jH8X6Nl4RW`mhBmX?SwTEOES$LUZD5K7z&BnWHA+1%e6fDcc{Yyc%R`!JyHxV?k# zZw=mJy1M)c+iSKb>}+(vMw?)iLMB=sx?}=}$l3Q-Yz-+|HI_x>&j;I&m4Ay<6IIWLL)={Qq?VA+oBBAEDNZ)Vtf*8jem&YeqRp=zS;YWV3Zwz0A^rvu?U;~?b z*JT{%rg43NQu~QKBvBm$El>OI*0?yCg=K4~lbv`Zjni^XtE$$($ z?~FkZL-aHW_*|0~b=L31~z#>HMgy^^KKEh(yL%!~ZBr-g&>=2cb7_19fv z2R&LJx+g{acLmf2^`DNCA3Jw)`in&nv7wH=&yg&tjU@PFN&!wwv!^M9u2tLdb@xga zQTE}b{FUw*KUZ;RZIYd712REtLGR#`ZGpjvrcq?BN+!GQ5L8i|>8xEytH3SODGpdG z$S#0Buk7U5QLC2langSxdfy?3+^7oP<7kxoc<-2Dv^sAtDN-@+SNBx@>CEqpp#P+a zE@lwZqK0kxROUk5>7;n3u$6Bkf3Q4d-7nPG{WuV3#g@UZnn{X3b?xysyw1HQ8R}Lf z?YRdBms(S*`(x|Hgf~Hl9}urMiQ;)02mbjlfOy;K4~!iO{J<#56DIIW#1Q7GLW_I2 zR=QxINx($G1kjXM=7vUm=*za|C4aN=%c+@W#%Wd+dY&=qH9-}!Gi7bp4yH(F$1RxA z9#RR&-JDp9azMLG=Z4RmG|E--J~hhKFUx8Cb6AWBBA6mWKW2&)>*%Z*u$3&KDp(gM z*5DA)EkD|1C$({e^G~Z7dsV;!S>quz1)88pEda)Ni#lT~QD}dSt@%Fw61xPuffCG(Q=V3oJH7W+z{&lKH0R zME_df%4JSUYe#R+zruw3_q}I-BW{8#h+Qp7c)S3*oF*u-f!zj-e+E<+%T5k(D#v@t z(1xnky;posf5j5Vf}ZUX;=`DPl}-nBd7P$_uM@PfA!-I$OwX%2%!;2@sfU;GHuyVk zN;*uJk*>(Yem|j{V6F={6@G*1HkLkuJ4;DWnwjn3%la+5w}G_ms4px`A14$X!a#FO z&Am;oVDcd8(8UkzuecE1y>GjD4<&Vhxno^X6}t`Fao5CbGlb?o%k?ne1`3r4X#OPL zf}M^GC^{e#|47adP^fo^}GM>@l9{*M8$_DzdVWJ3LnRt(#~wOX<1>c)zq{WGaes79E(C+1$M{#=UJ8)0Su9sq*lD=x>qwYp7JiqX3re1 zJZ+pN$@6wIGhI*rlJfA9;MkxiJ@PD9rK})EX4`%iA}4V7Nmw+U2g`~_O91Y<8lag| z1KGsLl;$g%V?Prr-Rx%$^NnQ1f*BUPG5e-c9@0ZMkMgZ`AvzSq!)GxKeA7u!8T3%a z%x3!g{;jnbTP?}3Q1SF64?@S9*)MVxLe}t$=n=q>{)W1?b~3@IvJ5%$2!r!AV>c7m zMC^K2hpcUmK3|6#6ag*!z5WX||4%K)9ZCM$P=J4tQ@LN2x-`K;QPa$j){-LiqnoA( zGP01P&g#VYPTCh1%ZWwF2|lS{fF=(*Whx_I$Cn99^nSG5Lmp7AN$;U$wj`N7B<6Ud zpWkx52Oa8GyE6KWgFnzNO&&OR|LI9hIj5Z2YYmO_uW`75>0;B4z*h#`EX2VreSW>& z&2i+9H1$RlA>5oIgFnlnY#NWV933A3%v3GnzH{2bhH<@sHa+S0#!mdg;&*HBW~s5l zFJW|c1`yTuDuA}SSFeZwQJgXYcRT6@UnnRja6i3oJ!;>7ujhC#EuRK#ISQqYxI#x8 zj67T^Su|WZe}l*48_zsUSbkCEEn;*F4y3jazsL3>jxn(r&BS`%i!*l`{kR4oTHCYXWpg->M)oV(Pr!~SRqD;3%o#1861k(bOOFWsu^uU0P@^LDQs*k7hHL=$&;+RV$7;go);}EMjhn=xDFh;%hGRdd+#WV!K6f28RBZ07vyi+ z_@YwJn*KF`YFls<%k-XOf9dWJX6)Dmo{P{*(OFb^_2F;IjvHMNV&e&JL9GeK1OV+; zat@~=r^r;V*y6b8Y=&)rP+RF*f1H?Q_I>m`L> z*j*M`fk^roXxXSuTX3DpN+MfGRH z-8rQpZe5E1r!XP>WMRTE%67cd1VJ03ubZ;~FtTTJDS!Xz<=e0NT%`@(F1PQUnI*$% zfG=(mKtVBtrXk;&pI-hsl!mB)KJaS~?Z9CEIwOO2L7DwK9{LPkcDnhA;_@IFpZsI5 zuk^r-o9*SPAzMxj$xRgG-ep%us_Z@|3nHh|62%HoQ@s`jd103dyp}Y_wI-;Z_ZXi& z2#pGoaBQ`9G%(ukOI=`TeIAjJROJUK^+CIk#Yv4Xw0Ysbstl#!buA!y&p;*jPL3SY zzCeo54&3qH6==_5dI7VaeIWyuy3$MqV^9kORn_^IC&0*zJkW57ZGUiiHZwb5)Ae|J zPE=0KC|+;m1?I~_5cTN@)XRPd;CwRmt0DB4=RL8=yhO`qu{@M!0gH^yTwblT)^B=R zyc}6D*&c{xejDFzVgBGp$4Y@+cd;Q{Y)Y&aDEZf3&IByU*Kc6FSVRS{g7q~@7EE-`#_Txm^)0~k;xAxUoVzLMz8`anov^I(SF@Ni73I~benskCHsw7U zpkv0wu8bQ?(1gA#@MjkIi)yJ`vJTp4txdHx^_ta~lZIBShXm&ZuG2vuJVXr^dach$ zjh&uR^n{*>rAf4#zu;FA=?@aJ2Fv<+8Niav#ylw>WVcCMkXoSA$B?~Q2t2$AG-65AsO>mestsamh^D?~3V<&eW7Y?&o>?xS%az>=x8cm9W z79J-ZQa)trP=HS`CFtPdHN$(LmMc=gkWT-l^Frw`7v|0BN0Bq5kBkTc$$^j7^t!;r zT1V&3B%vcr_~&qk&25HI!YUZ*yzJ3WjBI)1(kV8a%sFCIYoSq0l~t)IjcP=wvC0u2 za~`2GfYJqP$8`KXCgjDY)pkW|AsO5s1F_|fO`Xgw!#3QSS{p<8=4O#1;+dB^hg=l=P&A zmh|o`#r`V}uLgFhi;y;79jW)dI!{Z|vH;Y)zhbXXHTdki2&dw1i~(DugBPf9QoxS* zRWuzh59r5P*+Ope%HrSKV7H0GLuUk`Z=K8d5V?;fUiZc=SNqR+-ZMSB&PPnfLROGyXI?-%fK8bAAGQFuW{_m3@k6< zr_toH#SSgJuj}K5Q|)a|&9T&5e9GJuoycINY0lP^6%>rIWE0VGPZsC5tlbAsLqC!W z^hBo)i3Q66-<{&IMnK1=@p%B+Ru0@cKC#nydV3HERWr=kWVp+irlKUp%AE=d?uH5&bl+c(%=H@EG=`P05_MjD9P+;%2&`#GE->MUn2 zKp4b6nbW&nQ&BznULOq8eH$B_lAFs4>6E!XMX+AKGkTOIt_ICb;~!ExC(kWF2p!@9 znZk%RU_~n@!YixGAM}gGY)W|rn{~Bs|36H|5yQRAuHk-cJk%1BY(bT64~)W_!|K(mW7ei10afcx-IKq~O~~ z>A?EJ+X5H-8<)+}uhKSGB}&d_045iVvmgTwMD(wx8(gZ-_n>|fe)@?k!A$ug&{MG| zMvrJ3hZS}*fWn(E_k0@3C_ShFnt(J|uE&F_r?iBHQ5d#dnJ=`Cv{+x4r;%ymucGfF zBO{VHie;sjX9hs|GCT7B30=sz0}&Zfu^y8MR0IWjtS=C!AKqd$YVZlJk9MxL{y7TG z$lt?qTS&jNiV5aeq`aH;Z@qHhT}+fMXFmRisaSdhZ5kcx@nzf%8dw(uX%08M>W7yb&{f*8XZxYy}+7yrq3OJT6#_|?wxAVXx(K+4>n z5PwlH$7&eV#$Q!F-`STWBvaJBSKRvap=QHJ+GX6$TBRpwt|I<6F8w4d)rtP-ZVQdk z^t!%lrrs_5G&cICbs@KJ!@R$^PW$2Jp)uj%4|79_Zo^f4qnB||qZJ;5Q7^S=#=>X&3t@E=#T(a~{nw;@>r>9t{bQDj*M+(DPK2X7exQ3bDBf&1R%5jH zMVq}alNje4H~#3%b>yAnH`(zG5=#1Ch+JSYOi68w%n{eYb=$iOe?k9X&o40OLym#D z%)fW%UsknGrpR*NQ|?EatIAX#r2|Of9^l31bE#RI@oM_e5afA!_to&*$PWXCEs$@f z<-v3i#2!uW=eL5clN*iE zFP0jGNPD9%J~60s);{Crpq<)|<|1syRNteO+gt#;0%~P8M(YUp$bD(>Laqnm9%JmKhu@ z20=E|7jcHaK5o>o0sdn^Q5&yrKni zFSsh>*17&tw3WPl+H2Fz8vPab=Jw&qWd!c&bb2&Jl_6tBQ>bfBEKJdWwSgt&!RZ4J ze^W(T%G<3iLk@vH3;e#%h9~pH3yTSoo`L=QQr`pii5K8Df5QSf$p<4{-z!#{p2YS| z%<7npT4^#fPTpD5Fk8cPWX}eRDil{G>Xv%@>p+x^*>4PD{OXgUvs&~alcrJioGi=8 zh=}y$IpYUsPr8{AfM@2mGZh6Hz>d9Y*1h#BufKnr$j?P7?m-l9&=ui5h;BX1p3IyS zmZtZAnn?cRY}n!l_o8p8NzzdeSQMSnh1!g;oBT`tg~FKS7;W`h>>sb0jw``4m~K3a zJ7qY@@4>SZ^^5y?_MH9F*X^BI2=3%R1}H#9HsjI*sP={_<4~`kGI=*W0nblSpLjSeh~F~jPotw<9ODxJ|JQtOGE6>Qu(y? z!?^ksS7)U%8}XT5eMTs)I&trxNjQVi;nX9DNYF`dA~W$DEHXCRdtnjGzZYq3yhc3# z9$+8xsp~fCr)@ru@LS|6pB~$1)(L7&7M@-Tz>M<5Rcn5pU9Q4JMmE0aD6)X~fe?}r zop%}K8r)-{keEmlG90P0GqMM?K9rn;+W(xQqWhIT`sj zEmCAayy0*+tOP$0ZIF7Xz@!xPlOEonS`QJCZF$ny(yE^KIRu+o?^mZ3HC0=F6N)@XP%(uO~{XmrM}*IBi?c~5wNB+^qWUv2mu zz4qEBj1Wn}V~F^&H<=_uSaPax5b4cj$H>h8`~+ltfq(yU0N79Uu0qGHbt>7v?>ZJ# z;QLU(6-`XFX8QRbp3%GpF|A3rX!o|fVZn)ORPpX7*^zlY)cSOtMmNH9T@FCa008-h zoYb;Oy*KdUS~^6UW6WsUSwAyI#jCtuV63)QP4dE#E573xd;~5<`)HQyNmQ7y-Nzx# zULhpk*Sj1aRLJxdAVf-Yv#njw&s*81mh&Yzu$`*XZs>9?U26HBaPihI(XcaDrA;~T z^y%NUtoR;S@awDmh*5pm?uC0s=_nf1M4(XdIBTz%*vuR5BKU7F;1>UtLYq(D2bc#L z;frF2m6H$;h3Ax~{X;cB$CHBeJ@epl|MLw8f|->@!DD`F>9s1pLor#+L$7Eb8vitX z-$yBs-r9?Rr~jU3Hd%p|K1tyTeD0=BQxCGTa4JBw*GU+bYn^Ci|9l;N2dyM)B+zltu zn!N==tNauexxuHSEtWMi7!mWWEi4>6I9b!?w5Lzn=mBBV#dnxsOy&u(0s`p$Gz`QA zFKB4!Vx@xYmyce6C6AAYnAu_?JHe^9SEWkpTxK(Ub<^2Kvb{mD z4ck0VUK5s;zxRsmlY*Ky{qnnRZ7@!&oR??NJ7|*+`og09mpZ1=~x%A|3arVRDmUTvct3MeIOm}B#{<}naN^I zOxB^;GLI(*uU4B?SFr5%Uu|ctZ+(Bp>pg}!tZ_2$N($Q2wHQ-&Qn8&=*ZMIA6dCR4Jc_57kwEEJ35Mk_svqI*xnFc9M zdfn#e#nHv;O*-d&ut|>h>GaDUI25_w?hH=5%RC2gxsHQvI;zUkmGr$H&W&F67Eh?s zK2PTLkVSoDPNCj^kbFTC9|Ay^r7)C}QP)M+WVpMN5|{FwY>17^^0j&)^%`)n&0h`Z z8$~@WO+U;{PuBi4vC(nI#8eoL?t!G{@Vk$`Zx9^M)}8=^505K#N4betWv2@zRI^oT z0Y_J=4Tp9KDsg1vA71MP@piW(Q*Ff@o>?C^H-Zzgwu5v2&WU2lXKnpEY$wl>jK|w@9aw5oS?D*Cz`m{BONb-74{4BQz6#MmJ@5-mqq0%D3 zG{B@jAk9f$79MxZuyKFUTsNVOWh zX>e#|B4AJJ07S|+TJGkqySpzZC!B|9h=6sN>15IVr{DL2&7ID!v}b{mpu4oou$dw$ z_mdY1o!|~0+YJgzsaPj%9h*~S?Z%~+>zMX1KwsOTXHNgMz3T7Gn! zz?SfRPFl9y=*;*6o`N3EzU$&=IdA=%`9%USz@!yg0;<+=i@N$JCJinjvbF`E9K9_1 z_s)j?oH`oSIyuKd_8rxEcTGovN}R_rgbzhe-Hirrr)y@g(d}{5O;-5R=j-j#-@li= z9DU`3_}|w+bw*T0ZIG6J8bE@L?C8*SEdA6G)zQHp#e9BV6Sca19(A#Oem-#TZ!z+f zW|%5NMz!bRWhTS(LXbb{Ytq96KklS%2=(?&fUhlZwU&4~JDzl3t51-I#eg;SIItZh?JlC$y zY4xZpFwTd9E*pm0urA1OwpmN7UZXZq0eM1Bow>z#2Hm<^r>c}r2prX<+t+bL8y&_& zl6m9q!Gt`OZs#ky6bo9Z1Fn-KIn*jM*Ep5Mr#)_VpmcVV^tK@IT+0ReXWD&=rVrvd zz+m;6irg{Kv_Q`G$m$LGTuO~{{l91iO$wGZ4d3iz*?Tq$-N?R!J(=G}@h$8&AY z-m+VJX0wADe*hm_xqBX@xqf_xbd57~CwP0hYWe2-pRr|)s7v!uCYDRc@oec2n&n@= z)fcJ#q?vWQgUlzgi)8v|)FT|8&lch4fakrGt#Mw`p|z*^nWi*29SU=;evfgFN=)iY zrS-E~sU(Vj3POk%(#58K{PEk2Qe34`9#C0k4wd_=M*@XaDqK7(U8-RycU7yeEnrJV z!GZJ$ekicHu2wJK1v?s7=49ov1fyyu_kR`ympK+~CNl{C&G}+hK}JQQHglT|gb_rq zG}#u*G|#DS%p9~Ty~`Ff;W>M@ZZS(ew??mAX|boI>0~&jU_Gh%6vAH-AykZ941zks zq!-WsEBemsew$dp_etTj^8>9KGiLZjuwO@%*r(eyU*M{JgV76n_tCdz(^Gb{pIu}P z4|{Xnhkd{d#Zdw{8NYx7LJs#{Gs&Mq5=n~xWv>KJ`FEDlr9S%I+e6Qra_d_L^=!j~ zVfpVVRjPjOr67dBpTZD6_j3wv`(*=BJVJ_6d17lkTRM1d+XW4JcudJ&s3+ib%kPV0H}nT|L@-=*x#e7&mB(HTt-b!;>ku(?wyCP2s;sntYrtr<9LZ zs^fg<=Tc1MWO?lkdblZn1G!D9aHxmHkHfTBwDP#lo|U_DBe~3sZ5@LtJR%hlG=Okh zqt`)izH$G{L0KT)Ej`JHZ!fr ze2vCa-h447)|SWd2ZKT~A85Dfm)^HXAe+M-mZ))(K|KZy3%&oqraAfFRsE|16U1U3 zBlp9|KpW!YIgUl77dTw?1MK`apbl27+8o1RcO=C>M9q|@+J+jXg3>EOh;A3~jjAk6 zBPRQ&Nvsg+l^KL@8YspA)p`9(hr&plhJ{FfgV$Ce^-QIA3(H)ID>Az_<|mMd#S4+ro*uCKVp2GN zpwcc!2gXTZu1p!aV%7YPMY~<^Yy2&@+^jdd^8%4hhg%of5{tuQ&#Fewl0b{~qMeNP zI8Mk^rSUe(+hiCTsk|*Ld%0g%J2s!wl8^sLx-O_A6b3IaKH!~nf`{aW=cA~XdHY}li(8m()$g#7KnK!)3)DB5 zAZ92N!ctyJ2vIvE%>2AfQM0Beqa z2*qhJt_e5Y+2%|*>UPRz%R#{PGfwG{zT8IG@1~iV+jd2RqFOkE*1!9UsQwbj`1&A> z8R-gsHv>RY!W|4t&{wi}?6E4o6cr1`;_+#yP^&O*kg26*K5{zse*+SM$~b63Fs;{1 zlEfpI>s@~=*(?f|5z(q&YgT`}VG)WDB3l#=gd5qfFOQG_Y!+!l%$BpD#D?)$GRR!D zs_NJtw>l3~@Yqb3l#t9cJQW??A(!3Uud20O`UdQ4q;S^PXBS*TC{;PouQ!+%`>Vv1 z#N*hnV0K3E&GzG!D)0}@+60WuH2d9P>_7PmLLNhOGF!e6xxS6gniveK?H~-`bbl1O8R1%xvoRkKYby=>BsLaL3GhBkCU=6KgAy^u17n#F~z|UtgEgdHu933b<8=u#&aJHYc&6$iPh1pOWX_mV5NWkw6 zqHonB(~!!d83e8U)9_6s$YUvequaN%MXq3ClH{sXv}QNxlu(|46G8YAg~1zgEkJ&n zrkfm&JxcWJQY3|3dCv8D*Pf5WhVF~3$CnBA!nzIB&TUGmbHvW$EaNUl0 z;d8No<=5E{DyzdupY2p@;^KPY0~`GF(ta})NGZJzCkRxk=B(Z=l9Uq-apH`mX@m<& zN8@nPppdL-g3`#*gSY$HeNpo@IDPu@%54(+Nw{1`v^clXI2be;6xZ9`;(gFnKA4g> z#SrsKv}LpTCF5VgG(IIn&X`8bKeh?%z~}doTomSbqdHjp@%=|_A{*4SlU{c7=)<`pZ;Ob=`FuZH zk+r83(`~ftI`S%K+N9&z6vln$!yl-m#ZhTBztjnE=kmUM!IWKm#G;nPu9KOS)yPOo&Io)Vm};)bkelM=b84qERZv#@4q7SPgfB5L%2*0^4*#K`3E44SQ=yxsT&{ly~ZP1onk2tKMN#JI{Wxo-2 z+3gT|w)B+tIQ?1V)bFsQqa9gPaG_K~Kz}RRMYCdSsZ)Y5lgp8b9F%E*eExtt$s3~l z?E5I)CB|_IUyKuCyw+`71adQP4MNv=_l8yaHAkUHk}xe}fnTl6EQLik!F)1XazGq! zIDjpF{ZDMxVSNQ5x1GYv!`V!=DBL!hs9Mk|c6^wHJxbo^#;wWuka$<4;ZqF%4Ii*< zlayU4E~}uDo;$DC)3!-G{X3DngFV6?SerPQI_SHP%=+!g8Z}%bP#9JgbcB5Mq{@~n zjh2nRFK+9;7gGh$p5ET8w>=(L6yte9d9kEIET+4!ZpygyD&o?G2gQ1AP7xQ^)WwJz z)ksV)93Ge7MiMB0q%ztr*Gtf;WzvLY@!Bf@aZ(ySXhffcP5wN}yHM5vHZ?WCk4kOm zTkm|JkjXK?RsOna-=ho|S8&n*LDg)De97=Q5Z$E;xJ;6LMw14Eezka985ewLmW!XU zp8~KpI)4awh7mx)F#V>BP7HsE_#5>2*)DvIBM~TbFiOHq)!v^(ru48%S(NoA?{49? zThn5clfAjU1wp|gNk4+*vovnp)AzcRH9xZGeUi=oRJRn7rQtP+&7`H2Q=Pq9Ddwn> z1H`=PmC3s$s6a5@N(1s%0&t$~M#Dbfi2~#_bfNB9pAZ9Mbcusr~YftfI8!`)P)jx!gl|+?!>ivGr0<_xx0|a-&tn)4eYq%iF?X-X6v)-axx1kT74dGUykxA{J|;_l z6&R)FMdsAtNg~6X|0>}P@stqQe>Ks_Yaic{*;EQOge@w=iPUvpWl((l406D)XhrOl??RNTD#Xd)E&iz($;G3sMX_Md+FGREL^ zXtPXUJdb)}WNm2YF#D>Q0e8|t^9WX?;%O69)ix$;p@zTwkWi;MSr?Qvz4nM(oomSi$_C#(8Z9gou5>6G@s*e=K0 zZT?Ty`e*dP3w$R|Ci-rH7^IHNZ0w(?yUrKl-sbljmi|SdNP&l6)Bio!sKYiCh)SAy z1$o->H2p}frHEz(`A;{cSbEA877f4Cjk_S;b$ZCf%(6XgKo6su`c&!UyZMwiMaRw6 z$V=f4H#?kDx1Lbuw?%?_t8{V%EJ)KYvaliFet}A*a)MXieV75eVHGBVMQ(r0Ezh&wUb?kM$qk=(qft!yyrVMCaS&g^3b>A*x&AoLF% z(DQ}LbI)`$Wwm~Ts58ZI{XGVy6#SUVt{?7!er@IyJsU0JHe($cBiMBk z{eeGC<#cagA)3%P+CSGtk_XwimF7!q&H` zUR)24&s=(Ml@1}Kd?o!s(>O#|j+w#t+BuZ+C5-G3M3FHnU&V#%O?SodG{U@F!?-z_ zo!&BgXs$CHegJz!%wOwPvoiWKib++@YTVcs2`!QU_*MiUirvsZ`99l!_T9H1rnKK! z6ZIT;lCOXb-5xpSJ}GWLUahfynjxjY4f#}+E9mhr$3fC z!QXC;>#0oLrL(JvS0$eUUF>>)+)VvozH%|8QLn9@@gS8J0WC}M8_YG@>Hhet@lJS? zze<6R>1ZOgJVS!NL8pi1eo(vVXf|K4kCiKo;POC;nr_7opR+j@`2Zw&g#5!IaJGjB zODi6`GS!oqOy&auVGIoo+u#0T2zXv6lY|#}y&msK-Aw+Suk=eV0NxDM6&q^B+-#m3 z7X5owpb>Ab%CLQYPl;abkOz1MWDwxt)X8}M@0@@@1oInKfirMZwnB}b-m@OmPAKTS zU!}hZpr6a*X`FJ11LOj302`ELr$oNoWl=lsGa8La9jQx`p)V#u#}+Q+R76H_glJ3i za>7T^I9$`?cH+pr8ys&2DA>8xXc|9>?ft=#6(G}ZEhM3ARR9L%@D8!fUNJxS!=329 zboL!roGeavkpM=BmK#WHki|GrZj6cV=U+enD<9+!+i@ST1bLO(f(qrnHvz~u9MY9k zjG?Ybndj?s%;(|F0{|wW246Td5#v4*eRf$gYD)JBq)`91QZa8W;o~-2X!os|c*z!@ z8q)6+C4CnODtRvtM#$((%lk0L(&PIkW5ucw{j>Y|Uvi@#nY74g4uq`CV6(W; z)AE~d!B5VmFEBHB$(G$dPuniUsjx+nIkQdHi#&1$4dyY+P0z*`1}B^LR@ZSWi}MGm z47whqK<3G86@Dig)25tmiyik(@4#@<{^TGYyRj1RmsEkFD9JTkdMrx7A5fxs+ED)Y z+)u>_-wu_OUs7rs@)Mmp7OYX~j?t~`MuZ221Rtf;@n5JEyr(UjXpD0Cn^|rbZ;W){ zkXDJY<+S$Q__cB5F3(?x@&cojUU9N$&ThEp_O4@7Pkw8zuFMkl3jq!6DP`2U!z`yLOs_S5#azVN$P8*B)x<6IBKtydLPf5a71HL{eEH}{82`5(`lYRWL~y8Bh1Yf|D*QjND0WV zW`HA_J@07_MR1Kq#41$+49@hblB-paUw>FZjX!dxka3w2Z_g((1=2Ekt(ii-9VB*? zZV(Wl*E)d;s~1lr0Pf?N5}8O+nw6*~aoDy#*Ix-ag z#1vG;Nvav+uG|Zf)ByPmj+{=pl*X^9>WdTT{!H&5>P=$_Vevgb^T}8WATH@ zJYG5Yx_2X7h*&fr;PRs*u-5ms=y$j^dfu4x(JRH0(FQiY=f>A0bjTA}&BP0Tff=hY z=#qs;BT>s7c-yv`ufP~0vO@G65Xt^FLmbJ{Y%>^3tOn4sy32uyu`kg|Dr|J4WH71E zT>&=+U0xV-B{uljL9%Hq%x1y)#xkZN#5;dtl8)=trGSAAv7prke?>_b$l0|#*PDId zYD7#-OojRjgx$_d6iyAw?H39AO zRBd6}F4o}qV{%WG0!%$7g78n7EW6bYTR7TuFs@~%#dMG{zT0qfn@;AG9ieCRPmb5o zg=En4c{a;7mF0)!>~5!8+wL1gS2{9e5VFn`8?C5c)?2@ex%T5Whet3y!#242d~TQgi;Zr%qEQoBg;+2Z0FSBaEO(Z4xqgv}BM{n%s`q_fZuS|M`hTjR7EJUTCc+Y=wej9qBI=Ol zjp)mF!Qt}rA)x7>OXHawO};7-{VWR34|;t;Q#w#M<30fzhbr@S4dW|g328>6pi^WC zEIM_(I$0b>C7@i=`?fd2AU>_OTuk+d5;z^r?6o7pX$?s%r6*8^;ajfIZ+W5QNK8*NsbtIHbQ=^H}vPP@|qj-Q-j+BmR4;9Ak4rzg1oVBzov<=ak%_D^9y zS;`?*t#?ASLti9iJ|=}!e0_2<8y6MYYFqBq#^MYOvPf&)X-T=ta z>}6q;@H<=Q8=0tI#6qD&3>D4auTdz0^Y7_`v?_vtREyqda1x~yY6O=NND&zMlcedr zMgyt}Xq5Ab5a@3XCQG&Iz%+1Xm~uD!<0)1xHp>*DV%L|KN;6P9Ajh3Q+upw9vdMG_ zqnUl6)~^8xjIe=71zi9cNlS|%O<*>Xto&O(@EuI(N8N(Czi3YJ%(_67S$vYeumV1x z6KF#p@4X;P`ofMuV-pdv716Ih!mf$?78oZL5$$Si5aC?y<=2yberIeUYv%E1NbXP9r?Tvit|pDW+Ke@u3N{z4MWtXdvd}G>2}x z-_216FuD=*ka~*xGJ41q^a(p5vCai{zo}s)`VtX~y!-68gA!AnBuVkkOqM7{XQIj*X9IiOX z8<)-nUO>ke8y$*GCp;iq-Ngj&wNEMpJmka8-yk0%$$1El*|lF``>~cyL-C(72SJ z?f}JG(ydlY8D;{gXL{ZoFR$bM#f^D?UZDiC43e1A($%H3xSgHfBpw~q7KtvwoL9V` zBBkOPa&4ON5ysFU$CPt9h#s}%kD$O}kqg!X?=IPm2gR-lqRWH`@oGmSPs zc!~^-I2ZaZ>wkT~oii`Jd6R9!guNYYlx+cabO{`8#%{70S;Rc zV1i@;nS#cUqL$5o@eM_RcyMzJ-fxY-F9~EKK9mDQ&q4WtX)7c`euZ+xNM>Glr!0P# zRGPSGm(J)T9N`i>bLA>B59jkIixdktDD6~kG^V4O5|*SMfbd7G&CO+|PK^I}p($y8 z0y^Z-n%RKcw<5{?=(-)zdLM$!sa*gmDm|(3=#JqbP>c? zexJv(bvpx`{?A=uKZ7_ezD|R`ZgoXX5=w`2TOaA#taRA-fIfa}BZPTH1n^7pm(*G| zLsRDvN@*cv+_8k*=~R=AW?T5X<8{S{7qkob5I>d5o_vT1^h<{8&PC6p^1#UR+(+SD zd;zOg?WbRzt&Te-ODT;DN=am|OzA>D=J>sKk@Af-OV3%`*(KVx`lOr5{m^EIsl> z2jETj_nB7?QT-#PYzq>=MKl-5EXj#9+>BMi_xn4V6#`Bj>0@5hRAv9d4G0C@rmATY zhqXv;Upt7*@&Z0T`(5d>h2yVtZILS3!X9{~F>}7z!Kq_~D5(g=Iijje12E-3IO&Lk zaK+(LUC}=v9+`LJ_i0gz{nm=EGXUF8kXB+9m7rFzVIj;D^7o6ND@NsO`aVsOwM#l0 zZwL*K3IaeE#&tM9B|@ljp;o+e*O&XV@gbpyi%r_jeDUHzHWE59;Cb||zL4KOLUZ`@Bc$=@%Eqd>T9 zb-e#i@0CO_WhJv^3Q9EB7yj2FA;WYq7G8ie;lEcR#27|61fwuJ@>oGuu!ISpK^me|vW7c1nTJBxDt8fGNjtu7Rk& z)}5k=@{{*t{c~Dpb_T1zFI}>W+TJDadg(P97Wh~m=~eGST}#b?7EUNr?<#BOZ;mu; z4N5tRaweoEi_e{vFWp)EAZl)^Libf$*cVz zGYiZezg!X0Pu|*UHohriNz+oxVb89osg^e3xZi_K|EyLbe7L(6az9OFsqVu2t_^9F z^nQyl42>OvI`$G)`e~NMV_TPEmXgaU<+jq|UW#)ib%x-YBP1D@j}hcjw3vUmZ3W$C z_1ZqKM&>UV`WVbZAs$Y~>?UekW{tapEDmgVadg!bQ}YEn zHCgjAC4qfWoPPa5v9`R-hs*?d*PF@=>-#hpw9f#%`{$n*tYVYcE(jH@wP*c2a7RkD zK%LZ2dMsjzn;a-h=&4My$qmkSI9aeA2LnS6uif06Pv1KcytOXttlKpuR<6-tR>N+l zv-O7HxsI6KFS>)(L2THWHbsGN_;|dz19BfH7pWj*q?1ui)*5)fvBmW$kKKXT&L+$C zM7OgwQ6K`g@N~IB##ez_`Ueo8UBK61F$Ib+xl=RQhsLaB_P#x=t7fWn35lDffRqu} zJ$~_Bp(;pEmCmub(G#FIouv;kD;wsAP($Vz6F)0Sz3r{Kmv_-6$eV(M&xF}5#}dJu zHcM<-o5;fL@3%z#jJ7}1*#J~UB1b~yO4#qXm3Fr?D+zGI4TeUwa*-qw92vrvdr)y; zm34U;jB%t{IxF2a46j`7mo`vE(K)WD5`Nt$N3a{?sG0Duz>0XrYCuG2K5x79vp4e4 z#M2%_QcE^=T za4J+vF4i(QN;H!#J~9KjUm>EUsYYTpCptCU#x>nXtbkw*)Z zX6&s-u-~GvJWWjciF3-{gc;IXhw*?;mhUGYt+E;C8c&8K21?nJe@( zq1Lvxl^$;V1VHSmi7MTCmV0`>*ONVq*k&_g&tL0cG0^s3u=i8tC=q7WybC7W9%TLzD|=> zlST{oEE_~2muotMi^@Yj1iS1dY)TJ%dOK={qmX-?OUY9H9`1tlH0ZTB>p36DUFdhuP z_!qb}d7qz?EZTKvBZ@lT?8}2Dd1msta1@i({cEl={vex9Oqr5rJO;m9-c@c=y#Kuz zLZjR5!$gHMwGA0Eomf^8m2cCe43nBEHVXam-rv_MTSl8pj~#gdml+2QzqX2 zsnKK5x1)$Lc?AS^KA!NF-%M9-?C}mb#oD5sKB!bed43*82O~7UK za28Cn3;MA%%DE%AMPs%uCBv|LE8@x0WLfB(oP; z23!330Eo1da(^68>@%;Hf9v%zRyB333{=SclB7{}o5c@kY=Xkx&KF5|nAEWdrPG)n zR2%U*&Fh!6R`kclv${1+HY^{*>x}!-NSD_JOCweM!)`4H2&81`zv9ou14}Vjc#I&0 zyE`x;`69vcMj_T}gAaa-uYV@8`HIpFBjjrhx=MN`b8wYmH6l^!?#7=lzsCE~$miOn zmUMft><9T+J>3x+wJua^TNTGT8#W-Wk;`C%!AVAAB+pk*(K@=lcB^rV`4`PumR&A}SaRLm?Jd z`Z8@z7A~w``fY0)H7dXZRzpY{tL7(*{%1Za$j}*={X&TOc;?Ba;1C4hKB+=lMGu>Q zn(l>O!~W#3QX2ohSrcQ<&J@(?`=apoNp?hYbkOSKV+I06T<&D79(=fzm8BNndIsg3 z-))&yfCrE1&^vmVxD7X(GY=6@I;*25;Fl*?As!1B!TjWYA0i(88_mIj>C>j+m(4l$ zZsM3)`K(mb2q7n81l)+pkX$w;CBI&8eK{HF8dea|WaOo(B%AGYXSvvR+!r_W0O6|j zpN zQKr;eWmSepzDACX5*!?8163Haf&|3HmK>K)^gRKoydhs9L^8$u;HR70gFJs(qu+CW zv7%}suYXdZP>+w++8XBHNaG_2xUIy2?IaqRqN`+Dy+8+GCiy{B=jnRS@iL8XR&&jr z`w8BZq%#l0K!L{x0zj}u@&56snD|3NpDL=qW^f#jlJTYCy6#$7#=8U&{wtFLWbNDt zOrLI*;{CzWXxairssa~Ojo@1N%pGgp`6!h?QH8tXD@F3yk!K$Rjr*geFE;$teH>NT zqAZIB`*>-fCdUu*u%X6dq(}!O+ZE0Cf@VXh-%FqCY8D`ceBs$a2!JWlcm-?&30JaQ zve=j*#OMm>iHI;+ey=~2ueL)a9xJe2)XPdK*A`Q&`I8f2k@qzx*lW4{z|vN0peAv@ zqgnT#WO1a__7|AO8{FLp8GcECu7rMn#Ess}YLN$xf4*6slb-0~%0}G{>u>wK&#pcQ z6~{_cD;*E-h_PIMO)17JoA!bKED43F7SU9L?k&c$8F|tKOP$QRhM9HLEE|p}L=Y1D zKscDb_6xU~ZLM;#j}yxsnwrPc4Lxd`jYkczA}94q0j#nz{rex$i}uH~^XXQ;a}y|r zkTa^Zk`aG#5pPG+Z@(`YNnr#==L`^gHnx@UaT~i0*`l@Qb$W6{yUPjXZ@>9`VAqYb zbE0Ml=IlxnAxLng0_|opi8iL7WPDW?uU5Aw;ZjuV)0n#OIAWMLbl=O+3?@yuBG#X{ zLWP`Hzd<7(`7AKab3zh?HoI28M}~8tD`~XZay|PWx>6g(kn{fl&(Xqwdj5D=h^&bU z*O23m$;zP1O`k5k6Fb^wHm)J~$C$g&N;@e+6D48yPf^70kRS=C#C?pd04CZk#q6n6 zlf{bskeqn)tQMPDhQbUu^KNCJ56!@qgiq(IAJwdB4FR@TewD6tbem&w>*29ok^Z?b z_}NMQn$@6HS|T#t&xa1b;1*^CgUqRI<+2C^iL-gm&ZfzI|8%o`Sf>nHC|%#^*ZZyU zTO9z1L`g^nSZI@mV{H1)!`6w(*X*{Nfw%!$+uLZCVatR0KNY!n=6?sfZsG3r(dKnCq{IHLor73ps1l{a8-R0(44CyU`kYQRxp zW2p-DJD?oJXpxA1r~Fml^Ze}0R%88qy`$LLb*TlAF(my^x)e`mql51KyI7^o`P*Bc z2mCgcHhD{^sepD`^c9kjR~)!5*fRJ(dcPh0lN*Fu!1o~(vp<{)rOG6amkZ zYEekW8k@j8iLb_0pG>Mtouxt2hg+Etx{l{vO71M5UM8WRtispj*N0e5%xCo60{1{Yx%1GFoWQ#2BueI_WiX<_){js4RNIcD6S1QUq zwf`Rw;0eNG1hs*dyv3)6(xcnlM-C^*%Xh7@81CQWmhyPz^tK}uw{$uOm6}{)nQSan z>=t!J_AoHe0Td-UAWaQiCezPJvWamJxKTsz4ywg7skaZpbuFjo%BOQHH7X}f_%d6K zfnF&FL9nC4oShD>EXzQITL#~3JXW0s@*Re;_#0eaL7?6eD>oWKk8XN96hA)f%Y*C% zL}_EPuK_CbI7@JgIuuUi8JN5HG@vQAykUSA0}|NkQ4rS zZ;2zLaK{*dw=iiOR+{|6?#Zf%bBZEPoDW4jzA~4fl;8laJ>i84p6Z`N0&Y3oa5sLe zp&rTu$QbSr6OEQ+-uO<;S#yGE*XlU!5UfN0c zk2M1FU8d0!+eT1}>y4uDQ+yEegjwTUR+KULo_xl!UuoaF*)RD@x$&&%WSQdGG$Y=h z;h;T$os&~1xC_Waf;gxQhZsC>_xQ8 z@mJ>2#B#NED<5O&m7u^=J?<%aZ!Dv#oSCW=4s9{=MZjgsMqzGl?zv9ld%-GS3jf(0 znS}Mt@j~eHo9+V9pRCDl0l;^l&7;qsm*2Nn5mGb_lmC-a_9jShNj<^TK4Du}cD%$s z%k0y~z2}P1@!WJeVJ^0LY=MIFIjha{GqT%PqXhV}D1^qYO6}RWv*n|g&xW!O4WHI3 zEhBry1ue2G<*-!PL@J2(#3-O%BN}E}-nAR;zs6V}zbbi6?#NUS&(}1@>3`3D{1az5 z3z0PZx7@u}2zs2Ju_Xd%ZGE*xr^T_>qf15YtyWWCXhJf4u z5%I`)c&0X#>V!}xeWun<+W&H++f(o@&_16V7ZR?}uG#O=`yu69b3EISqjHCehx zYjW6ITxid)bPJ6fOHI*4ue`tSPZbzqA2bRCWDg=djG6v&&)>$#eA4oDG&84(&ztf$ zbN7YSKA%9W6k*HQ{+#AxU*O{CcdBowa(Q`tG3T3gF{GqSTUx16T_splK}}#|uF7n- zhsGAE>8nfM>hlWoNgZGPVNgtd3QJ-K0s>kF+d=!RY)gh-mTy)eCYtK3Mq zS2^C}@jHp?H;QtQU?TbL8wyp{3#5mMPcPPhG6tFVkR++vnVu295%oD>h$?jpAV=m% zWFm(z^nGe1$vN8-__7(J0*|L=zeb-IxAJ6XWU1?c=Z_4XO~4_b2qU0<7; z-O{ZeVRye0XZDFIMMoB6%DP5=3875n5$T1~D|XmW)K`TPYqz!Dim0lg3UNKv@9`>7 zd_Q&c5(3q`7HSR58i zPP5SjJC~bpy3UZqY75NP)T=JZ5)Xf@ZrE9z)g4C4R~OeOun1ABviSBH`u>jLqvfS< zKKQ+b!CdhH+b4zq0FMFwY~SMtC0OvLfXM;c4D)t4PcVfR#Ysmr#k}o_rZ*F&vjrV@ zgdCVYsXx-A#yXYiywgR@ZI`%Xqg@NFu<@1_ocV$;Z2`nz$Lk}MQYT{NBjl2zd940p zzMEl`cWY735RC}x3a#gxK)ymZnIUwSkaO_-jO7Q0SUM=#XA$;foZl@APsa4;*C^QQ zz7dZcJjG3yNrL%t04D&e3HBhxCzuJ|MECbnK^`Ezc1V^)MWu^0jx{9rC@sh0kCKu% zBc@jy%f=)3TI_K zW9m@X+!fW0OyoW4?^n*cJ;saN({#v^CIVi^L1Ta?kWxfE;&hfn178x|LQ6sDvoYF< zWO7>`%-w?W*nbkRu~F<9OLUsC^a@|lmAdqVgq-q3v5D|x_8;*!g3J%*PVe+tEtV=c@DpLUp)Sae$xp~OIWWYo&b60m z#s)@i^Im1C)iF+n6FnzyAWkBM^~JJKOaz8VEkSM;bF%Mzcp8u})$mZNVD6Qs0^8t>ww=d*~9QC{CRg+0ZW6;e9>oh;O>^m5mT!HwNhyL8f&(hO*)&CjBu<9QA+2( zP|?r*3K#fuzb+4a(B$+5U7wUZB1w6RQ@-<#Xdrh8dq`o$n-9%hpN2q5neIOzp}I)H zEf8@VsE>WVAgO)2+vvV2Q@`dW^}>mqhj92*$%?H&Hj@unhsgmyl#U_sba!h z4B+VUioJtsHZu!&kRc^Wb7+Z(jY+OQ!}Nc<_+WP+jNsYwCe_2f_mmP;WwFugi!q?n za`JnKO(avZvGuSOyj(wP zmK-d9@iPCwTu9yc8F>&7QKh;M@s&eU(F3>JambCztz}!4k zY9~x6>GfAwP2p;HcvyhvFV{;P@Or*5Y~?R)C%a!Irb;5o1f&ai0LiKIX)g0?NA&rnjiT%`*M2P#0F$@~-L!I819c8C}Uqm6B6TOh`@c2=O8 zg;V@9CoQ!kki6RymUFIE>GN5|teWl|5&eF}a^V`H{1PIH%( z-(&eT(WbDtNX$i?VWr9EGU4Lo1zdJl`O&Dw;5f@jFUL zT~%6>jL0g<`(zevI%-)nqs!u>f8FNt&NiNfL{o>06uQM_sabs@u{VPbd($B1>%1Qm zVnZ0ZP!-WV;X8+1jC)H!Y;KSGK%#48BdjM7l(BjB>hP`4+qMXUro?;#_6(7Qc* zdEq+T{V7NQsb%?nqTfbSNiFx0^YsqNU8oagr!I8_DA&8*|Ml2Nf#T zvFHq=*KsJ#T-?r~3A@3Vn)Aw{WVQD&P|PVCNP&>{3#$su`+f>;GWiiz*9b;)6|V20qqHx2 zmsM^}gt{DU<=f|;j#bGrQuvWP&qzkyce@%qq0|nfS;P>GLHU&K(Tpl(_5JAz+=DNn zM1YuHp&fwjzj1hYsHh=^oSCwCbpkqW#sdG452JuCN*_Qb{P?x$>GroQP?`?mL`21T zB7@c+n*EsgM}N|@e6Q=v8!Nn_pOwB5e-!N4Izbj;;W17%WCU+4w)Fwm8?eh&@U>WgHw>JUD8*6eSC(_&nh(=BUwnw z#aiErlQG9)wy|;_Qb`Je)T4}>7;^+z)D$IQSb+9R1xaf!KbCt2BuD2!<7d2*o*FJI zZK#39$Fhf!jKLa4=sdPQ#i`ek)|B2;Y&Olxn|3?G{KVfys;)OlC>r_DOBNOq8heykfDOs!@M+?X#(v zBfXMh7K-*Kr7}!#_%WtYw}4wPR}Bem0KB~a{^i>a8JudqmJh;AF5Y=}9m(9C)`#`5 zC@W*t)iB&|6mZIn6-KemJU_c*K%V`(&5 zyb7Ye<9U;PEx?t{aMR5>#VjrATl}LQBc0x-{-|uj&a-8O3)~&oYbSA75>l|oSddc* zI?{Mv9@|Ab038_GLXP42{mhpN0)1QKg|zQufx$}7xU7h2^X(0<&kuV*Y|ohieI-#? zH95>DnBY;QswPWxKLlWifMWFc^ByeVE0qffyjYR~WfaG10NJj{6oQ3<29Mt@)Y1aN zka!HOyvpk&tGNa#(15kH(4xY0lmK0>VtSMBSeD9ktBa6@ zuiN`+aQT(l^m>q4N?2MPGo|6`#~B~ukm4^oh2II*Pa^IJM}=P-JUZFr3wl7tO{4t9 zwa;lFW!aX9hoIu@<_P$;ru$xfdK6FK}W@{ZmQbVB&307vW<= zw1Obvo8#-t!ELV#jnMHY3bd6+SButvw1`Y62`Kq3U568?Hb-N$QW8+0eM6+gF(&Ld z25dvQ%!BQ3_OmN5n6d*M@$bKjC^hK%=xDAAt)R!IPpfzLKE>3#(WtNx(QP_UcOc3j zaa6b{ZsW{fB0gGEl0-YnA=N)Nd4&wO!jExZ;xxJ3=KYH@@^DUr`e*|$LIj8pUF=(0mcI!;n2Kj*L%Y2r;JrQ!o7!1^RtNkCWUBxl^!1ZL-SG{IbGyD95(zMrY1 zn!vQVZpGx!`#20;7$D21$hh8@C!52|QcHOz?=vu{7ed&$H6`>hFb*iq@9#`i1p{Hf z6unZmO%+4n%5>$PMGO_D)}HlDjV(!p%+CIK5B3Rlx;gn993^8BZhkMAT9)Gu73Bh9 zr8%-r{z7X&7NEY2mS!Qf%N4$VT@`ln@pGYDg9K)XYLU)X!KUx$v{VN8;RuR2loB;7 zn(@FDq>|AnSBdN!bQ8s>OH8G9wF+O7LBj0K5?zK?hSC!N z`&Wh@p_Dp6)vg@#Ij^G^UW(ZZ1l-;f?il2OsNl=f4XNsO_}L~;r1kRyY~Tk+;P%#A zRL{EGMVvgXJRYiG)7X3txA~s#z14kEJ~!eF1P1r>cd;+B68W+G3xGn8fOIaa>oQm^ zxSj7o_&csm$E}HY9pvhJIYO8bL#R)wU%P7=Vv8bwsdF@|Wru|oUK(YS2H&AVeQ9AN zhl(!MPUhOcmL-vMM&`LOa21KeX!M$!yE{U?>}}@l4R#^!z5BhKF14-tp?mhJJdV*i z3Z|~d>sZ(42O`@nVKN7c9h4pkmB!+izQYEa`v&nR!nj?E1YJ;xrhD|Qq*mgWh<0H! z9600qp19HpD8in`_o39l1XLs)WF6IUnczxDi80Ic;{Z1^8a8e}01crLNucH<0l434BYyv31Ro)^B3he+h0Z9%Fv$766^Tt5E!(5r~B*vx=LJ!x?4( zyWWur%kPzC=(%xYLR`W*;QnJ=?4}kVv?!M`GVv~(Ky9@j07~V+UmOt>9Q@3o4;Bq) z4HrWZX*s%(f9Skv(J1i=o2a!%Dp0EbL@**@eeq>CL6~Ve$7ES7oamZH=-_Zgrq1Ca zk%M+ry5O0LL!V;34 zl!@SSE%k7$m+sf=a02=%^k-yv@VX7tH2RR?>%>=INxDpPb;%>}oO^^(XqPs#Vdw`lwLw zI=}TP!V4$yuc&bT(g>yx@hEu$VP)_^*uPbHkwuV2LrH!38*cI5iT8^rQ+i(w{keaC zkKRw`t?^UMFx}R=}bVaC6v**)GMN>Jwc&VNv9cM#uAz>|<4O(+!x1Ms9 z@jCB~tPM3iXiMNOpnYZ#u{AF^3xPF zO7S0bJoL`$icp$$Yu2DK*SW1UXQZ&u{yDlV>SbYGrV2yDQCJN9$S8OrSb75)@X`F9 zJR2)YS#|6l{v~j=*3-vH@8W!RXPOMoAx1VGS~Pc70);Q4PF9Ww+{K2K)t#cu=@F9Jyw4BFQIMRR?Q(D35pNRGL6>+~1b z1_7+E*T(-wB)`kF;XIN3Yt`8?ZMF1P0+J(jMzb)pbBmXS2WXWGV%@apL6%kr`{A%` z(jApQ+hE8DE(LVYYJPAz?|O*b&?~tR9AXp>I`7Sn@_|leM(Z>;9=A8C56Dmm_9SNS zAox-SF_WV^U~Nhp%aJ_8Sw+ok=Jz;%GtmdwkZ6PohqZ@80sv3yl^<}|O*Lu?2#qni z+DVKD1i|1D54U#LfJDsUz05dnv3k9n=f?gEc~Vb`XCx{(tt6N?xi1NfE`n}pQQ8l|3m|V zZz%TRhI)o{#gM<+K+B(fnO<@F{i?y27XAd)zj1(~Sj2 zuMq1X2V+vF0Tz=5lp2nJ=K$hB1yeE(#7 zTy?j&Z3(ai@+7gk^ax*JJpmFazc!u)Z{v52B3_MdE7fhNQN&~dUXS0K0nb44IeD`7waZ3__M;hA^z^-I zsBweWbsg~gvk&CE+fw3MPUEouLvMC70Px10)U0jn*ELyLWoK+6cIQS_yh9&8e|$Yx zfvMcRlDvoG!*^q|a3gUL;M!%c}bhCUZmo>SLl-YFie#wC_#e#2^u{g=VsTN#rwTskEN#%q-cqIb5dK zU=nU#FXbrGRGjDMJE`G0PU1FyKz(wY-5Cxk-*Ug`6=>}`@GYo|W>97*VD;n zZCjT#im=3KFo}-%3m4Mv2_Ll~J1WlKS1&-3)daenKbGmK`GMc=9`X|f5vT!3frpnq zeP08`&pJ=-9TS{UTt-!;7T*i02l9r60t!c)qt4!(!w zTZ?_1f8$`cyd(j|{#lnEnV* z?uhO--nyMJiMQH&tgF*C^p>($ko>AhyLwJ11}=GRDNC0bm1JYMl#yAt32Kxs2=fsh zg&HziT$&gHZ$2GH?)GfMo@gm&-Gi`pccn-^$W4mV4phQL#53RV9m@D9$5qV(xOG*k zlOP!^O8*4m=@*!&f`2S_FJwX7otQnRITh6bDAO5W&r;&gjmpWwjl?m-sB%Qr|Yi`)^X;Z;3H^B1MLEq3e^a z3P?SOi?5QOyBCj+KYI1!JrOX7`hcUd2CA-h(U}HPnU_net44V*xv>ayH6!Qh`obPv zAOY=}pLoP0aX_uh*k5S-5GO_#Gj2ZdFi6;qS$i1t2r-A_~*zky>q(rA)&J=1$`!KGifmmJhq-|$N?rKC@1-@$rqX2Z1Psu>F7}i z1{wL4c^s| z9E1-)*_TiQ4_`a7_;}DJZRH>zD)Fx8`Ki zqrh&P&?r_i?uEDQzz*6 z#{IT$fuTlT5+mF~$DcS20S`V2O7-CLry7z!7RJ|kWPhnc`MHKm{FzEj7LE3r5Da0r zSZuVx!2%voHx({qbQ)c34;E>A_u!+~HPW{eC1d^4GA%>_F?1%KPq+o-3cWQzCzr~7 zRXwdd>H2}A$l-!}$pNI*tuofgD6cF(^kr4Ege$jNgOGzq7@cBS>H{dXboew4X#!=dSu9xRtJR zLxoq^;X$VZg7w$6c4E>@-4r7qB@&RC6x1|o&BFDVDsftcTdxsY^cT8AAC^?&4ppg@>hpZ2kt6nGP~QyMPfFtOjF0v&b=sO%kJ-=Rs{Mh$AO?s#IiCi? z`Kk}@J9XGUS|Wb>HUmxk;juEi*)fsh=8UYf#Oi>qq{}!S#gJf=Y!tbV!s3-Q@Ot{h z=YC2+Q;7$1$7q_9u~~lJd;IXg$~U_mMSrv{w`60Z&w2Ukgvga91pAz10q?hBI`Tc_ z8OX7szbK69r2UzmR_n9qKhv8({Q`bJC4c`Xi~^IUM?md|Xb`Qj@O>Z5rOymP`OzJz zG`FDZ%hXir^~P-8LW%x@O^MzKA`TLkWQm=R%9`RQNg;)3SeHFtYMX}_# zW&xyV^k>x`7iACC^~X0WZvt9vE@;AuHW{!1ft*3-GxE-Nh(bbhJT|{T_1;V-j*gDT zHx^kxeXYj2N)!euA4`L-uxMmUpIIxx3e_AtYC;YRe~KK^<2L2J75+wdg!V5ra`=>( zwDIX5mnenq_)d2uu+Gz|KXmqeiutdyksh3nHIPxIBC)QQBcGfIu>EL9F;MCUKCP|8 zu3>)w!9QWcpCu-+b-eqqkjo3vsAce+QTw4ejj0TQ!s7U2D*(C6Fa+ejF9|2cA~e}f z98sjhr(Drm;Dw#FuqcfRsTF%a_2))o8Yc^*(41hpX(B_m#*2OTMPcwE)VFNDrF4g< z()=N^iI5(swM<%YP|eP__}!D-luEvflF^PLY}*~=n*h17?iLYLYx`OT)QDI&dkCK{ z#`1tAnKE)e&E1Nk?)Q`Mw`=?H7@cOf;2nev9H}LxbDP^NdHsW{%N^R| z!%BM!eUZ+f+JxU;^_*gVaU7|RCe0Oyg^z=b^|li`TeY6W|3Ak8NKZlOEE*DmL;qH| z)$&7k^6@E(TBC&sjHWB3ZfN`oIxL{=rLn*Q z`9p_r?{zrAvwJ{m%{;unMHQP|A)NCKLGdklYzzb?Y|a0n<{NbfENQFGV|t%=^f)K) z-bLH!Zn`fsw-Q%bPl~7F{8&4WU~?M_x?>$k1Pm-+Wr=3L?!gXv!ilwh1v65KX#^h-Me;m92+gSa00j~$V zocHO)LzQc<^^v_}f32pD~fkm&s-V z>{faS>j;o@u=qV(L=2fyL1!wnq~(1cz#n|zdCc{;KPs)t`uoe3zPOPktEnz}MiU~$(mGYyh$9m*aBY`P)#t*F5cmQK+R5?&wNUW>^U8m5vXAU5&@+ch{ z$;O)BrrZfdJX%u#zPZ;*vO&y1&PX_2i2PZhi8!3_qJGqq$90q4^Wv~$<8Tn?CAdTTTRgGkOF+4!YK{aHyr<1~yTQ!`)VAdF2`C|Y{C1WLVp86r zCd2gH4{I&oEOjxucHb&J1~YQs)n%e161#0roi@$2#_0d9C;V~h|En%`ONrTXtL#5R z2xyVgz=L;$?~ZETx3~R?La4Wgunsis9be=-7U}qCJ+Jc`xMF*6e=4qHi${kP=hPnI z4IdMfuLF=-*V`lKQ-tuix{&`yzJCIPa4Hh`sfbZZ+z1&Dg67K;o)7d%x^dNrAs3r* zyLOoaY+f*z3N`=!dXE*dWIp%eV{XTeM?PC$;XL!@c9P%mXHo3j_;S6oF`CPf9)=-? zBKs5E5~j6~=Tph0Of@TG;WP`{5pkQ{|CtclcmmZfCEZiRPh!Cj#V#!tZ|76EkF1hF_~XB}50o)`oEE$;mfV`K&H(&NY+=s2RzZfX*?L}|sV+P>;4%{ndDsz2 zkL5GhbjyS{A}|^#-vnkYbaGE*NYIrE#1l*-%sVZ#8e`o!v&^U+Ay~>DWay*rQLX)+ zYd(KgtN$YIAh5vexlQ~8N$-YPwDO`TAk4;jcVbyfbZzrMLqCo2b4GNuOSK^2(}}%< zSz;th#G8YsP$8)&98{vsTdgo&5QqLAbs4VR-Z?>jhZLJiGGqB}8|VN9ofv>Tyv*q8 zjX(Hw0xp&CUeR!2LYDdc!p3Wr+2vCVW`RQESFPMfJ+ej6w;vG#X_=UF?wSXSaqSmbw+eP9SW`u=}n>8{uOWaOS$uNfwVgZ<3v{@h^Q@!gKRe&{#~_OU1Qz-`T5opT;=`VwCvB_n@kPo?s z;ONK&z7+Ay90!WbAorWs7g_?Cx6WjIZgid#LKAJzptF2w$KT}0=du9t0CN(S%3RSz z=A!i%yY1K0=}(-<6?!KIk|Gw-_h${{zx~NSf1Oa6VB&)--1aH^qrdsteaPwV-TvaT zL9%mJODNg~B0NRTv_I7!UH}Nl&k+!Uz2Tvtm9g4H)n>8pm9wgLX<6}OR42r^g1kZ; zTp_CPn1YuctpD1y+4=*ooQ;2p48k3}+#@HKM8Lb}i4=tx1rB$aKaVNbPqMC1D zg@Z>x#v~W?zVrJRtPyyBB;39!@%U_^)PLfg5fiz4zOP|Lz58z{4*+ zc>b%|&PxF+bY*+szk0!cmh-P`=AY&K%ck)8XF2~9oqt&me?;4#vGJei{L6_h_)m2H z1tR?eHvRw)Kljc*VB;5n`VZLn2W!NA7!71fX z2drn*V56|yV752;WmeVRG`-scBI4@@q@;db+hq0I&$&ij{?EjkGK>Np-lIiB@e4lq%l$7)J-k_cUAGbm ziE!Vot&Tr4%}piTmV+2}rEXs1tIYE|&>B-@U@Y-pTK@?+RD$IS}0G6z$=8#$@GwXb(E=u&c#Lh+ax5Fm&6 zz~0^cTdTkcL33RlPn!Ep0PMJSXu9pbbC%z>aekS@0G)j2JV5%`C5~d zz04*5`SP~f?R$}r+TS^9FR#)QmF+wQOIE8HhQSgeax5%)nDH?N-wWb=O!WMP(>HUQ zS4ASfW^{j*+YEakYB-*+eKXD-BY;Wiu9YjLg{m6&2kE(QkK|dOmGw1~E!}#l>P7Gc zqK5{OHsso*k!HhvSc>H3*sVQl622xd2H#6L$>3jVPWI0nB)po7&M&ULT(jMzrv>lQ z!}7$bfB3wk=!2h17g?z}#d(b9ajJp8I);3Hclc*bb?l9qRsq}vPWrzZ-(OA$c3;85 z2e+^jYiElXhnbp#gCsP8#sLml#{;DKW+tnqmB@p|P}VLf+D2YE{*CrBx!I|ugcBpp z^EbDbgL)&mn#wb`un)FV`*XIt3j@|NB|D8D5o2<#OQcdKdC%slBO1;rM{2DjXHHD3 z`G{GsGufF`jk`YflBCv~AP4^PLH=qK1>fXinN%*MqZ4to4{+YveqddchtxUdqTC*D zO>(j{{80MdFwcZf zi6^(kxp^;8F6>&s#-m;HdwR~@<7uCr`uIVU^BMFeb&@|8;Q#iy1hG*p z<@rt=nAB>%EIR=+X+lOIn;&a@;i%EDzZlA9H}8q&sL7kieH4D)XIb5Kyiw8)B!?e? zT-mmpB5N_j??KpIj41)2_EmwNU_ffl}A6ukLT^>~)>b`cLX_&a4ESUb{Jj z45ielE;LXe-KI3r?RpqlHI#ng!DG@U@pN|zo4s@jRuV@K8FAk(8_49a2&>tvR+>Z*jfdXTb}-nBv$-?D zY+X}s_wA(8w;NCm%d>e%v&&ws@ml>de_>(a5~TTJC%TTEeEgxG05yjCP>g%J=d-kw zrzOK~-5FNs4{kr_sgsd49+tXX#B~JNLj4lvdFnTIRrQ;(8kf4rh)C|bPdw1#<8ai| zf(07u?=}qR)xZQlEb3qh)U4D3D#3#w`$&@+%bvNDYk9HUIqQJjXi>!hXxxZtg4MCgCrGSo<+A(g(EvLFe;J7bDZ7}P2##idJGaX&mArn7_dXwU?SZ|O3x=c+Qa&vEF zW1BfP?=@YSk6YIAC`|uos8-=B7*`YXLo}PP3X+E%9%!_rGb6cqZGL=owS#1Eb2v_& zK-1jBezVgRIY9uUx2iE3xIACArs*Pykyf=~uu_U&qFRrSU$O3wJRrNa>i@uA#MDOU z|Cfj4FI&9=!AFJQ#`SolOS*Fyae7OLv<{Z1-xe|&^SkEQ6G(5%4?`qtG|Tw z;Al*#!BBy6wV{}@^0><0vsoHuNXZVbLpNeDRPdGUMHk;0_4l|U#^MkpQkT5t7ku0+ zu`y=jm9Zh5t0iG5tjtrZlN^VJ==y5upTmxlw$ek`rDV@SI>rbb&E+$5tttCu9CVh`Zs4YLUO)f;mm1aF>|vVkL_r|bJ}zdeHaX1HLhW>IlP|o!JNKhYOVd+ zO4SvEX<~{NWJlSy6{V}Ifpb2ru%xMYqCn6TnO2)(ZL)c~B7BmT|04gH`W_b`pe;g}+z4)_D(M~wP8hjEup zgvd~%CtviyF2-$JdAJtW>3|jOiVKpp|>9^yz-aHM_V< z{ou#1c{)FGd(SLhvo$EVN$FW=HF@foj3X4Pv9rmVsl#0j%SM0 zFUq{P+Iwz(P#`>e6+uiW(6}E|vukg#xLVTmtW(#{WBYlA=0e@wzr#*~85;;1v%LZs zvWW^)Zj3`(4dbeWGg3n(wWpV`6}2xmdM{4KMyVM$UZ!ceGk!T5;;kO0i>dr4_N6pZiDAeKdY8swe zi!C_x3tcbmN^k}SLE}8!~7djqpAcRKNiv~F6V|relhF|TvXS^+r zk@Ilgh8C(yY0L0#d@DB~hOGZ6;#aAT*!gHlPzBSdw=%GbOIr+H9n>UHoj=vLRZi_X zN*Kf09OAK%lscz{ECiT_KECcvz>>PNzO+Y5nj1kFTXOif=Lj-;sbC@M?Q2!l1b@ZD ziTSG=jH5u!>jwI7ms=1PVA^5b9BgrMIKY^boyz09+c4fFYfFJXoGp~hyLTy}SLeRl z$clecd$l{@xY1!Bt?bL=^qHZ8@l1%2N&2q%PxN*FdcQ5QGq~qE=j^psCru$j<#E|s z6zM^@{i*eFmsVw!gL&P%mo-n-Dd=<~=BjmJn@0wV0wtadP-RG!%BQ9}swRg4CAI^9 zzNJ3n-2{ZhstHBDzd_HKsg#diO-&>Z>)WzAHwZ) zUl||JbjM}*a88a6#R-IT-d-2~M23>8bM!36DI;8(UMp*oeqzS7nz`4f&do!r)P)#) zj~X}C7S_&}=9EpA$Ug|4$yGL|N`!9{b&;^!)ZabZ)gZjb>o7FOw!78U**G*1ijnf(Y@hOB*Na+CO68WIv5Un~NA*%^B z&&&1&Yu?Y<#cXm=?^m|x#xo?4NYKeG?&Zmx{ZO%eVMVmK+$M9>F7ZT(ZbEdFTsmp$ zVpiAot39?5qSN&mekk)-Xh{W=yb4nC{-STqW^w*OuenUaLcku%R!%)ot9GUQqMcB|m~Ee{LJ#l)>R$i07hv&1_5M|_wpC`*fuE4wo5HWh5vT$3EezNRwt@Bl=>s6?;R1uMxUP~$Oitl&b z(v`j|zn1DO2YgA3Gesmmu&bAexo+g-|4i1bU)680qd&@NLc?R}SI!=)$Wb*Y5q!NC zUb)}9B#s{DK%M4MyLQ02n1lVUi{Gzqtx$hu^W@-$jF0#Te_Zs;isYk2+2+v5)mh|F z+Kb1esdZ0S>Q656M1LLfm64Tdf*4;$fyNu}8!H zD7LNjk&%><9`4)R7HT-wXD8>_w_&4l0*swBnmUb_n_)E<@dCJ)s~B^hFx!i^nKj_s zD+7QJ#!a7u!C0Q((sGPkSatLDzQ$y=vTY|pZk#`)%EJB9G}lU9x#S4&l*i4^LUnaW zKubXxmE#RU-K)(6nPOo5z^^#33p-4XzJy5;zUH~ib6%GBjFIR!Zw>WYO6Y$!{|`)aVL5Ip3Fz6nlbJV*_=My%BIpPFS6^Urv)zpt*V~qXTiUb zYGdY{J^#+N)NgMvI8z&-r<2CR%u)|S3OHKyGl<}4IGr|ku~iNO`CX5zTeKBfyjLYq zkhUzOXGQWbRGTT(K?mav&ob*fT9C*p3>_N>uc!*oaY~kBoTS&ft#=$30@5S2-A)(? z7|{tWnPK*G?nA*3NO)o^oTIhhEdSU&$W%HFnU6?Ud1Nt=d}6zju1l9@V{V3b)KleC<~W_JTn++&uBZv}06W{&TsPW*iBx3biIARoOVkeuyu3@bXf{$~?4! zen>9=`Ab4}>AMn+anFXh8jH;w4KdG4lum=sh|Ap@#ijiOny+RO*N451s;m+qKYmPE zi|)Cdkky$-)?D;;Emt8Fsv?E|U7CN#rwp|sWPb?YfV==F@rV4Tz^1F{axnzt!X4iX z%#ln%F4XN=?A0C(BjJ#+}fSNDq@p~&)+mv z#DEazWAWElgbh5$!y}c`g;P`t<9ha(v_%`kO~>EawM}ztUR&BWde(Cs>>Oc)k$G%d z+735)hJ3(_0JfhYw_L`}HP?lEVHEWaEMvJysXP_o^IognHRo+eT~R`_(#0$C(BUBo zITEbuo3oKp<6G$bhYJq=za;_tbmE&FO@Brt3Vcw^OFn!)TK$>8%*@PA(|h2 z@yMI=T+OBO+lz~6&8wGXVp9pt$Me*Va)k14z7;sK8TS+Qb`Tz#9kk%^*mmm;X5T5^9-cfn8?=-TOVTBIoo`de`5yq?{=CAJs=q~ugLC-4jpWu-B6N37SkQ)Mw&ejmr6nEJmxBE zxP`UuzP}$50D;!x{vE^~Rz#StibXmg<_-J`Y+9=cVc+=F$Jaw|uWM76#An6C5Z^T{ zc}rH$n{7r9CJh$-^^x)Kk@Sgw{D0Vc@2DoTu5Z|`bSxC9GE!7}M_N!u6p^Ax=v{h~ z-ib(wihzO?X`xAn&^rXF0z&956hoC>Lx6leci!{%QMV(cU0=g-6v?#Jq{FLliyiIiSLej|C-=Bbon_*s$FVK+un5DIXp}p z_MT;%1yZkQZ`E)fcSkbw_IH~0Pi{e-2)X!SbKVgNm#47kod-!l$NbIN|Ks_mBdo7! zY3lc1b5FF#L>25^-Rr+rdxqn$z3%>`WB}ZK?{sX^G5;4W{pM|X(9GuN{|Qkz3!U}v zYfwcR2c)ilY%(2DbOHhI=V+lIx0J1y8C!gij9|Zqj`6XHOT&W!e)#By9J;O&s zl>Q1J%%k_fG8g~X0so+%TrM>=!HNbxDu3adfa@Rczn|T|L;r~~{}SZ?BtiUlc{fv} zFZ#DqORR*1i?tTEj+2~Ds>Odw+$b2o@ORvv#cMPN8{@S8TSeh$AQ3Wu+M+F_v$};i znXS0uGr4W*4U7BR9;#~*-yexTOVK&%5lHhFCvx>7!92XWpx4EJl<4t^vuD0cn@o(7 zd7KM%&Fdfi=1R}(2{6IR$?4)hIl9!>!U2in$rSpx!t;ne$?c~DA#n-gfj<$hKhm$` zDi9cDxtsQ9TKx3KmQH|p;^Y!%`@8)*l1Khq=gtw|we?>6=}>=`SaEtlj#hiS^1VMX zn{4Agi6ipSz_xfET0TQYLU#Rih|>GqDzbER<)DrDY<)Dx$13rNvrGMT^5kC) zXjXL;NiF4{7y7g;Y1KQq?%Ckx2~uN+f2dHFzxvOD&gL1$_}RUPn*~wu+|O8=EHiak z9}*lZkAT4#9uD_>JKO(i6_`twZ_zNb+@ZGR5U@5nGYLT=a<6|)uVqrcyr=R_V{ zISfC!NZJHAmXZ0i)j*tE>n)z^InAI=sym#oD(V@7SnAM^Gdjh<_q&pqiI#EiV{wkj ze<>cx4_LRY=jnS&Zd8z}&Ac`keHg=Q$lM7Ym<8jkPz827OTE|W4zgGD-zWZ|y86%m zQYfZ<$F;q97IZa#>Wywtr3F@{N&~=h9oDG+;A-%nzur^sIq5dxURUXr_(gR>#G2%t zve9IpXp!aISaE1Y3HjqXYrEpX;fyb;3*8#M74CE&VTp5dl~jL>)%9z#JhZ$D#?c46 z-WT<23@`lUjs?X};-zw)MzV{))dDajEsfnkzIu|I^ghIzp}%9~)VW%Yjn?VGqFQs` zkWH;bo-Tx?qU)MxA0mCdx6Tv*au77?zSVO5gGtgsO6ef=bdYX3$DwwbIi@<8B31PJ z1Na{`@65TQKYLC?;L<-iS(9-}h>XYfRxUA5tE#$iQ1c*W=R0k&nABw*Ota|LxCr6a z(zf&7%1b)T3wO1DP1Vbx~}waZ{_7M#**Q zk=(nP^8|@C*f*P$`0Ew@<5?D1Wsqq)$T=P4{WCq7LH=m`=%I52kyZyv(+eX>a!PxX zO2iAYhpo8b1P%JnBw z?I&_><;cD|zHcy&LoK>OnMJYT0w?=ydyRHe+E5mPm|1o};ip!ELZbJUjaPpD_Aggefx zy#{I~w*b|>O_oX*tIjeP4R3s%tkVU0@ZAWLJzxepVsAu~e98XiP<+FUzcYdn^z>M* zn9ax5lmOhy#xW`RHj7EEBH?j`fHialR+iNrB*Y7b8)$yj94zuB_v4-wmLfTsf4zE0 zu*$75_WWkbi~{YL)RjWvb4;Z+6^Upuw>=i~F73EwsbmP2nZ@+3)TCpZzT+we5mx0q zKWOv9Kj2I=7Xg#zxRlK`lv}6p4Fj(*o!Fk#OR9Ox7T~qUBtFacJ{-bDgN8$=0vAl)(@aSQEY-=jqrwla<)I zG~LXD)!On@bN%syPo0jM#X4%$zw|7&0lnMQF4jw_+v&^gSuBgW>U$n6wr_smhsc2Q zv@TnHU5I2Q-YbqkD!Pj1Yq+;DySIuCPrM;J4sv*eE45B;C%!Lg_j1)R0RAJX~9j*EGy2t*#arc6O1UU)0EGICE1?cjeL^l=^WF7 zhLVROxlFHzasdtJmpt5BpT|ntI07(4#=08!R~4%=0=t)sm2Ai9+spO^ozbr(tY^P` z9W67RnfRn4UA&=sXsE(~-~SBp;TuM0rL{E=BfK60Wljt2`lI;`&rcofnhBy)?mEqk zZ!G7Yezrs;)zR++*7ToHmwt^K2eRI>H{$DPiFf`10226pDIJ`E-$?BK$#2E%e;Ip# z4R~|*epT)kHzEBaObJ9N@PhA_l;Q4a9zW=C#V(wX%Ve!_C_d5Sr)x8I4MQa(&dvGY zy#~Gazy`sw!`S;$cL@uAt)9+gKEBhrDM7$1T*CHO;u)&_rCKw`nM3~h1J^ujIvAt3 zWk8#U@qB9KPB2MTRP-w;n9t|Q&7zBxFA&mVG6Vs8r?p2h?0e3GbSf`%cI})O)D3j0 zA-*e7VheBZ^HWy6{*KjwQ=$cHYU+)E4W$*RT@x8A1 z^0^yb66b%Q>zrHUMTXMeSPp}}A??C{L+VClmp z!p@fvL5tnK#u0vmBuIs+&b!nme$sPyYh(6((KT&lF5a`0%N6n`>x+y$AH;1b6gX(K z%~p7xYyyRV2b#qT>Ji;lRE&ZGn#2JmXVT%^NSfyvNc{^}-6wX!zXEv)JfElP?q_(62=CGst-RkKF z`eu6@GSh}2A3vAXu@42Eyw&!YIMLHFqPd#l9VG=i8W*RCoBUVxM>8vDr|vRrCf(It;OV9xOfyWU1PJd}Mfp*f;RqVfR{@~K2CEGY{lyH9D3@ILw9rBF z#B?K;`8=!a_8a;tRK_#pW_!-B`+YU46(imoeEaIKQ}<7;RnBzBO4@l9uTDMNLm~~d zoOnAGtL?NT=ld^mwFOYgCYWV?_66!ovo5|8s+bh3r@oSH(*smLYp$r@p7D^;rnz?= z(IAYhS33t7E*dQl*CnK7_u;HBu7=Ym#^;%~<$Rq&I2cd+-X-T}lKR>G^ZP}V>`7`1 z3hk4I*<@BOyVSrxD1q-(iwQz^#=)fy%bbR8Wn)cr@tI< zhWs8_TIW0*nZP`=Ud=zmo;x)#kQc^k=&0|5je!5Ep#iPIuNw)YmFv+G3*(;KWZ|w2ez;3v zAyfd;newvhvoETGuS|as4BsrZORJ#+6uPsOfz-ZW1BQpV*ZIP|?675N6>sf{qQFHy zO=!!wBWYopC-4qYL1)hQYOd3IE7S4gKC}(#;Ps1plI$`lvpX~m%lfFYzARwSX1MK8 zQOmO9^}Zm)(bZ*bgiT>>l4~-`Hh&Odv5@bYt3f;x+Ux1VCPR%hMbe{Qw&5S^rr*fm z+G5`Z*p%g~-eIsmP%eJnx5VDO)4>=*rk_z)f33jF#-^+wQL-7qBqij|n@B9kw3rPG zStes%b}Y0%Z1tF)yD7LCC2sn0TBA3`7eyZ}-R9RmWa3RV$|0$_Pn&;sMrC5w|19V1 z+Ir$$@yQ(N#S!tTt%WBzxT0X{36w-vl5oWaWna`2g*B(fovFIR1-)=Xm=`>uRB+!f31Rf`v(f?f0r(yR&}I-o zOJdeD0Zy1N=e7a*ngd;u1l`FN!R7$o>2=iLprCDdifeb`8Q471ke(Y{@ESl>aiKG0 zdoz^d@mB|yOMqMAvxl9zJ)W)IHv`+#6A|_{dgtaVrFvQ4416WvZ3qDxl+CY|I4`KQ zbS?WP%uS?6^4y#3N~qdS)kLx=p0kp3`C5o^S6`3sd-I2W^v&M?_nMI7rrChoh3-tR zdmUiLKbh{Limu$3w_i>+_H{LiSkWkHPSl?Xo5(Wz}qlGJx-7~HzDG2y0fp-O3KUa-IE$Ehs^7GCoXcSbWijMwlNJ_ zii>&eWa;fKd_2n%20)NAd*?^T8i4jX*Y%d_I?IXVV^Sns`Wx%4VIm3rz#V=YF&#j| z4Q_?mGiw&dsSys6yw_M3V9pBmcT#-xH!a4nMEhD%0}n@QN7uDVO?c9#|2FdV4of+Y zrarbNR@PUc;J|xo-%AgdJJqJd??4cqKe^7Rd*LzAgI8rdV%(I0@&=z(gZZ%j*)}NX zsS1FQsM&jzKeNN)P&>D)6&D!4#j%QLW2tH3l06_aXZjg`@@%&TP3=$8?6Z-=46F8P zf@WMeGF-UJOUE}*@unTy@q|333WH8)B57!a;~Rhjbn6e%8Hnat3&R&KbD7f-XKG}3 zQ?{Mh@~6GpzESOe*ByR;ur*9Zcaqsc9`Ii9zw8_{%S5U2{AQ^BGQ7$+$jRRdG>AyF`qD6~AbG8uAKu6;rv@+BV~V z-Qkj^l)d>0Zm=z>I|a-5hMbNsYng6^J;rYA+G?MMEORwXaf2|ck~=)ciJ(x$Cdy0q9@xOF1+$|aRo)FrL41*OUx$ILx z-sTyIa)1(lbjE#qAeXKKL2a+wqNSrbaiUdGx(s6ucTt(S&FRi!U{C9@+Ho=S{mt+( zhkk1j(_Q9Eh$=gidPz?9{QYdUerXU;IG8#XVCMOmmZIrkI@{xUkb6v|G& zQ&W@Cj2DlIDIMKnpI}*j%VlvXr^aQK9>`6!sI^;vlAFLDx-$||GUI@)qgSHUpc@;& zCi~WuJI+C1aW;fb$H-qOgg?wRuccLHjejlY2W(V@;+oH4h7@0EsD0!cWYQXOjX4y>z<#(?b)&bX0x4+jQN)a|4_H4 zw7aYcjNa4fV=2)J@uiku*4oQ;CaPVPpL=sV>st6?ahk287Ksc{rdo)|6Wwf)7fy#1 z;w|G<4)Y4@?`=s$=U1UE8#2(=ywUCHBCez`z+k*nJvX2V@$>cBbf$Y}OXu2|?>;-P zDwT=y3B5U8IO6;D%Q#poT$=Di8naVU<>*km&+n*JOse9?n5Spf%OA-Jim7q?%6691 zdHwuqByV;w73$K{`>;(YsIFQ-l}PZN*^s}>fqK45+aD1Xz$v?}w?^oH)~P{+)!~js z=2YX3`B*BwrMz*aF5p_rq-gm_T2TwV_X889*BNoUEzLk*cZJZGoY9xkim(PBC*_Vm zy!7j>$M0@DnyXphb9XZ*<0(8@v+SK@5vvOT*Xuf0);>EB7nUGF&VIQ5``mlA8;=(2 z#>|(y8o%5+l+S&lRZ%^%*VnTE-OXHqRPe1wN*azc>RM(bwHl~%}!8~tVx9!}a=q53P zxs?8)*|8O+-?hUZACe0IP}QYHNi{miK z8y|LhxyHp_H{XxUO(*Dmn*nd`K?&hZ{_S-YyS_S9nJw*^9hATWkL4y8!lveAz6f4; zGeElv{c$?j7iUZDx8IfD-=LDPK9*ue-&be4w>TJ1cj{SmP%$ZuV~ux`H<#?(*do;K zve;^wpMAYyOnHiFJf^X%0`X3_{KiG*$PHy%<#>^f)u9|u#ZS=-v;`lVXB0VL;#|?e zj3(kBNo!o8C!&~YzJj6WI=O_^@Y5w2%cs)?Ngj6hB`i^XHcubdT)0-yuz8o2g@BK- z>HBg&kJ`Dv%RM7}ZK8&=$reL-c(8MiFoh)zWr#YQx&cv0OY&oT%}6w_mI!|7=hUiL z_2t31JI=1+9GxD1SmfBHCc$u7*&8cWIF-fSqT&Zkuei(UKka|K-Uf|`h;Wf5^k=Ff zsSQ;OyynX020b$}nr!C8KE=OiGD`GYdKpE@>o$R~r`%qEB-t~|^ME7|YpSRpO1CC? zuQ2gd;n$7(())%#XTm%MSIUk!aI{G50LoR`+8+A+ywdr zrzWm<^2dPRUY5-(J)zc1S^7N8nWe0zBaTTCRv*+qJQP=2sXMXtzK{9#B9|rJOU!?gzfFFo zg}Sdz_y(1CtLy$pm@N_Lvhm?~k_0U1eX;BEmZ$QXavsB_Tv1@7wiK8<_4_v4n35)I zJcy?tPCT4Hkp7!1|FKf?j_P`DS#~J+j!~0Je&o`nk{c^d234l;`o;r1YV~r8DksBb6?n;450X*mb6YZu5u*E&~X^PnzC~g}PdFt=QPL?Cz4< zMwLnX#o6+J>Ok&Jemz-`uQ^)HARaSO*vC7wVThtwrCsxK@%gYkjA?YAPa$oiw zWO21GM{y3hynRQ>ImG<&g{+Qzk%zgbb;_)xlBPJvDraBSUEXfzkm{JC09ld9O}$#jUrIgN>zxo|keiYAOSHz|(x!FGSwow^sVg_AIyhjX;Qb z7cVm>*IK{b{u|?coJGH5Wj?LqVEjHT3jFd@blbwsZL%2GRjvKA>y9W2Q~@2#T3@%) z!^-{|+`}o&AoiUs*e$i!w7t(P#WC#+H)`NOhf~03uVZYSQGDT~7q1hlJ5H2~S=L(bg4}`8!QFN-vPPigNdMD^ z_GwWMO0CoxMs6TRf&S3WA=R#{5%C6zFZmL0Q1Q3c>xeicEei!l54q;P^mcBjugM&Q zO_wzrw-+2P5c@h`r6hk0I0(wGpg(W&Rq^Wgw)rJdvm4y|XeP_8>|6 z>gyzttK_SLMLM{=HHEa+D9V(J;oAMHP1@T{>9dkssQuxv4p_dx;Ud>|BjY-f{A5je zXTEN2dfuxpFK&|SfC-o02SgFsB_gMEMDhdiXAb2o$2m+k}95>AFpxoB0Q*8K!X0;4FdUd}z<(gtKy(uj>^IZJF-UcH@{kp81j z_IJ&n`ih#be@_3!!S$x-sBZ# z=%jnhEn^QDhAdh`tiM!oriUl{Rr;Wezu(~jyZn|NeFkL1xDq>gwsF#XT|15LJnpqG z6|0y?v+3YGEp+RE(B1|$g!vjX^t_}oqUF=O6eq?@vRrm8ck&_}9qYjSXzl~g{o5`a zokWn!$_U%U+G={W8d#Z=@5QYMKVR>luvHY4mN$;;c#3(u+G|!QYP}lK;ip+{QWtHu zAaR%$u37F`r;W(Kat3_u&$N)3!Ept@7q);3!b7PpPI^hz?hi>Vsu?-PXRCwm1)r+< zB>@xJ@8n-#Yl!@w{r;pGJ>~^G-(_74`HTHkcGnbd^hiCpM^$uy^@!4_!zN6 zzp1quD>{+nQ)c@KUcRausEl*Z*`jt}XG;&4<)PSp?PKL6;TO)P_#v*3RGNA09fj%k zWT`e=u+I%{A3@L4ACq_UJ5Kz%$v&wZe3@~eY-C3sJNZ*%M8I>|Lhmmy4Zm0+cN#fVA3(#DmqyC67boF*FSc6Kt;)Xep5TJy6jaw;E z?FxPco|9Gx^J4p)Aj&QBfPh#pYvW5XZpz_yXt9|x3J9~JN%nXRkSd6t)Os+-Hmklh zlo4ty56$bi9;j)^7=!Y|t(KFYWvx`TmyM4FA@ZD5%WXB1P-VQi_k=kvcdvBz4ed<6 zbGIHYP#&>r%kRINx3SZxWZG!wJ|07kEWh>{M)ahYB6Jnb&6nlA(%82VQ2i5;zhPy$ zWHFM*ha`4(lAV%XeBQPw@oeiN_VL}F_&YVvN8F_qq`}G+6%lW`+Y}o(ZO*O;2qe@Z z3vaOAT{GA3`CBN{DnA{uIgJWg3!CHk`TPY1m3{s-_L;vB%t8f*P z$Y^MelT=)m`iY`3)x6Iaxp$hW)s)LdG{Kn63~ti=j+?EdeBsh!Lee`Mk?1JRwt}a_ zT8mti#Hcd2)%)@xjxP%7PrTwib9)j(46uzPMV43~6`_>4oqp{qSBD4JyjMpKxus^K z7gS$+`uY%7Zm42cdS&QrUujs&9_&Tl$HfAU2nk{;BG9>;=v=uNU2|h1gO69Q-@C+R zu}{EZ(qeHY)c+I^s$kpqYjV30>fW+QT0Es<|SsZW{M+%57PG zvSVHMq7%1ana-$z)|YT{UdALl@P)?*+ll;|=LAC`>-|qhAuuwkFduIGYBXIFf|WPd z`Vk|%{bs)2mly=zQRrQ-7dksrVesCuuRyI9RopAz*7{*Hloc-D35rL}#F!bAiPDNXq>v-VyW8uHyEmqfx_w^jp`bG9Gw>n8jAy7Yr`&Rql0+FJWS+ zh%|IQTZ%0mhVW3|t0bItNhm*8&N%j_bvvOaM%6atMS6a7Wr}5S#lx^l6YWPsD>*iV zi-7ZwMfSi_VI4|yXPfH4A(b0%X)nJG%oF)5$L^^d zezk<6tQ-j53o+O0O+gVexnWy5J4DxXvu(Y$4~_8J&6_;i;#dhEvB(1`79a+9Y~xUh z33>~E7vz41v&pwiAHGN$uHIK^JmM2sP<0F$k~T%Qjb&ufVV94{AI?+UYn7F6qQJiH z#%$IgK<_F22lJh4Ha0(dp4JF8B7@)KXA2TtoPlRN9V*FK2Q~wOcdHoD{OzJlHw{vJ`#8x7Il6y$(cv*1G?Br9fOj^~%#erdVuUMFmU!PDCef@l6l^Ok@LDN2012bQVPD^}zEdh>FH-{^+{hC%C-s?ekD(`blqy&I=8wiNqqnB}@wBQzAQy z6IUO2I#|=onCmedy!35DBg-c;czQ}D+j4nvfYv$cvGGjp(W3~;Wg7X15JIP@@iMPM zpn*)y2SZ{0T4_n??G>deCFXLgE~vJ1V*FplbJVB+t>~4HdIjS+M{P-G!&9uOLm-TJ zxEXckS+|s5TU63Razb;xY=SJ;O8gFU_``m?&$Hpq$Kyw^VTxIql6KH1_j2(|GRW63 zS~q5}PK)sruNSl;vx^+L5cJ9fljP{!5sV#`&R!8V9l{IjPxPT(7y{3nhKAlsW%YGl z-heJE&;x>tKLPPlKZme>hd1i8r9Yi0oN)3HA#s;76dBM)UGmy2=cvf*RMZ$LE z(?eutxGiq4_RviitQC!@m+V)Lj}Bx_aJns-t|^TG{7*q`Fb_%J*>zTE$-x@Q-HenN z{G6++7hu3KiLDd{V5x|N^?a*Am||o^3VGyRvsFf@AFqf_`E;_C8BSZ_2MPO!&ikd4 zr)Q(nXVYeRZ03!gF6DYsu&arsg>vw*5S;l(*ocK-Fzyu}GK`;Wws}AQY=Oroc%`y! z{H`9t=qub}>%eL}>z2e}Ls#Ql9EB1$;oaK9-E~>TH;d50EEADRUFZgM-Is%0>AAw3 z?gF1(V^!t~?ScJ3IX*`t&LQEkV292Or&<4K@fOliA~{D#W0~@P4t)!$+-3r|jlB5e zHT-;YV$)ia*W>cBV#ynT^`@yu$n2?5T^Eoc$vM(Df&wUIf6?>VqyetD*1)_}WCtHy zBR3koHFx;rc(RtVrG6RU$PE&PY$O);hoSNWHu|czgVA?0Ar-ebxTMzU<8IE?v<1?y zy<|(-vOB~`14W3cSr^d>!3d7n0X0`9QB5dur11v*D-6jnc+#JmFmJr)IdBFlm)$WFc) z-O5SQ9B?RC)i_*W<%Y!DA_nWk9f=->euNoyd1U&S>b~>qZO472pUeFb>rV72TKZdX z-VZyertE)aT_v$7&pU>4aJ<&dUTpr*73+`9d4b>Vb+kI2oS}$`n~3~!m#HzwtfY}D zJ9mj6jH_B*tZ0;PzeW4OHAaGA166IId;SmlV^U z1Qng=X|9-3yv^l11k4=ooG89tBH%i9*7yJ_d>beaa2s2o-x$nTz-n^({Zcs)WjRu- zGv(!@-ieSfOS#>9en&Z{4EOpnECW~OFeTPps8Tcrn2eEZ4d%f}kRi3Ci>2m(Da|qi zICBbcNNswQn0KkLINt^$Y7uvr2XCIn{ic^Jy=#E7b}1v>)4HRGn|Bkd>A8M%SgI`p z2%MoU-piu)I+bhny~ewFNO|((c2cPpBc+;cg{#RO(6v`61fYC)9L%*_ea%!x&7;58 z1=E^k!OI??pJILmus~f7vz`3ml&Z2fh4K%Cfu>_3pGpoXQNi0tnHrtM;h|${Wh#^3 zK&k3a0m(^*&*N7v{E+gwtOkt7jBdLjMkV>!&&kJ`Vj{v37I0{}rJMAP}B6Uh2L@Fs&@vjkQV z`34!luSyb`i6n*bYrP{U3UjSm0p1|_ZF7zki_CK4@beS$u(_1vLFv~M=PoG&KeQ~( z9WOf8b0c!p|Mw_jgU)$sf;RVO${&ECdwrzmh(1;hb!1#>!oaFUXSCGo-ccRXcb}ND z&apZCW4>1kr`E-8{Lh6g#q3n$2&Aqs= z!u|s#zqiATFsB*dgo0i6qantw0b*#_5TaoxExPb`)w4u-lDAYT0+zylU+rH!G>id# zwzPHo!sLHA=6?w6-(MvM1Glg>{bTp<=lc8m?;nPupKTz=BHWmMpwG|Tt)e`DrP-8R z{g=*>-~OPm{OA}&m(F~%9Y2}x|9m~m7|8KsI5Wunv;Y0`QvAz+x~e7R>CDi-AlvV+ zD^Ad~AowRC4M z({aYj@$#LTc1cb(9{<+RB|`i#5EZERdGg3oXB7PNUU3-*gH)Y69~wC8Y-o4T_rw? zr>58GH{C-=il=1iUC!~v{>~G>JtThxCW-Gabqwe!W(lNz4JSwsz2wvz?(ND z`ybi#8^If1odSw+y(5I3hYVW|XY9WcEBlG`XkZ{2h~H4{=cH&-SdA+<9}KiA%u13Q z-tCIW0b%Cnt~M`$R#D~m`27g@JI3APLB^v(^3OEZb3cN=q4z9V^Av|UQk!}n$$!}N ze6L2KDcBWZZA}o3`>`TUmi`IMLO-s#?9fZO@l5`*s%XR*=EJn@xp$;4_j7E^YmaI&t#=S_eW#sTC`k%duF%RP@NLg1cT^4(65~h z*&wV08LuteaL+4=|I&a_NY=Qpw>ZX0(#qas>U&wo=Oko)1=-XXq*PBHv&`_#dC0ou zpP|eMb+e0uDqt+LW*KICX?|me->D{d{?wBG9PIP8;7eYvmMpTmJ9lDZe4Y_U8)x}9 zBdB&_*i)|1_zQ6$Pu(DGCIy8?565QL!Y}X!eA?=W)ton z!`=kpB?*b)p#Y@PH6HaxE1f%KUv&PMSDxCH?2Uebeb;Qone<1Nk*#cJAaR^D@}l3I zir)mQje7EAFhr=CUPlX_&K?LJy>N6u0gm+Puipv9WelReW4xbU6-K;dK2;r_d1iXh ze{}JvJpd%Q$i;0dPiOq!vw!I! za5ucDtp4%H{Kz<0{+;yqH|M{U{*L?pWsiT^<9iDH%O2lR;CtfyD?Pp=&cD**U-tN( z0{^ndcNF-ZIR8qI?}+n%kMu}(JdYc~=v>e$x7Cgn@x1@F`eBUPqrNA+%&rrx^NEV; zjqwh37tL#)-vIqq3!p2Gd1!rv%@#2conqA=QTP;{dgMAz(L}DL+zL3eO!zhN_zyPK z5B9>5FGC1GiLSPzTVfQT?h$gIaq5|w{%;Iqs)GQ;UvQ%PIA^J4Z|yVZUcg*@9s++5 z)8)>2JaKW+Gs$nP z0&tOb<@k0R`fT3W8>XlTeyfU5D@1~IDfw5|+lX}0JlYq6$yumXr1mRaMk6?snplZD zG1LK%+E`q*zK&Z3JooMT3xnjhS4*jKb!5bGccLk}yk?ERl1}j4)ZF=_=KCzg#1YO53KQLKhG64 zu2UV4F1k*;X!=B`hI#Q#T%p9eEGf1H10lln?SQiwGVir|b)EgWS~B=K$B`@xnD5OM z%%DDa+?ZLL5za4b?OY?7y}PaR2*Xtlpb3Lh;_aCTID`~<`JF{~T;kd=!Vv!ai|Wv5 zL5(flwERD?i3i;My)F{o16hAMgItq^aMnt901pZ|>5W;TEgv({@<4wOG{(m}Xj~?| zY2F}+);b!Zhe8_y)c1^ATGxq()yc9a}$=7U&QyLXO)TK25N0*?q zf&(Jo%Fv9ZDY$zOTkCY8J{)1d5Had8b3DZ^e&}@D{?{4RMqP)xNIsNT?)ek|mu@_E zmNi&0G9$3uPM52V@eN8giO2=}OkU@Wy$7v|d;1`qm1zFL*JZKRm_8vvH-0GJ38g7^ z9`~ZjtV^-mCXFw#ku#qBKK3#Y*p3C_L3&eBtMLdP%DSOS$C;-)Z_jdJjXZ#EDZ^Wu znl@g5T!3B{mQ_ZA)~KQD4456V#rlaFhj(6W?^mj8+}CvkYIUp8q=c8drUs0#-Kkpb z{+)WN2hZG^#hu>co|MSYqjEK(Zxs1g%~>odcxm)sq3U)Luan!+}u84n2a2hVrK1+7LL zntHEnK19EKi{zzZj7ppWuzfe{!UCwqxyGGPGRB{`)E*8QGl?z7UZo-t{Pl7D9i%hC zLwiqxgmkW=Qq`q$b6%>yp6aIMl!(?lgtA$`)M}xt1YyJ>a425~TwblyNjRKBHSSP> zy6qU{Rfjo-=}}=QyUStH)60u4ZWG?CMM`B&AonTU)5`56Xy4&B@nv@#v#-{pY|Ezv zlm34|NgcMHLU6(ziiBS)?Dd`Mn$hVUP_PrXrjX;@Ao0FDuV7xu=mwirP(r0ro}P2d zQ~}lY)@=oCO$ZK$aQ+CR54+rha0kE+%cd_lDMiIB)@p6H1$@4?F1q9;sn^#D0U2ni z_(fZEZYTD#Sm}ZBJJh<@6$(Q04bbL@jJJz&O-K{$aOQxKTdPH&|4xiSlrBqvs^hgX z%L~}5l@6Pxyiw;8^_-#Y7wGuBhZ|fhPfF178Cdo+P9`>ErR<5}*lY)w!D8{?zQt_T z0x%&D;sJIwN_Ki@fs8h=ljx=IVKbdRxHu;J4``7}IuPFh5~RMsT{n*XVru2FkT;dU zdW10<;mo!^f@SukD`NOWgMCz_k3!JJ4nr)Et@j%+MhDfCazJk?y^l|g-N!LT9%efu zF8wEWC$9Rqh9~x?R8BvynDP|IZ>nl$98U%r?8I!K3=`i|9xva2k%AswFeGt~G%hh` zmk)GZ>5-j)Y)*45QtK{0*g|@*t15AyYI&n%>sVQk*Z8oue5u?+xn`|aUt;IWp_BZZ z7IePJ3$Ah;tCzHojpty31S|JSvuT@Kv#}vrk+o``)+JPKds!>>;}vJSij%vjt1`13 zF+`cy%vf`J=|aQ3ZjvdTwEh<5mUt8-b#8cfO1Sx$%8-GFl}qK$E1Sl4kOX&v_s2PO z_7lrIAZ^P$m)m#JI>h+&M_6TVx0HS4DVMPiDAhwFuaACLVSciS>%*BABNlLdU~el6 zRo7Y28}hrV!;rn+*BfZ4aNpt)j95#9v%EL0Gly6!Xlzo=bLM^VlGtdm3rg?UclTJgXi;WfK%)|BFUq@n6 z&9MBG7qN-8UsP)=cUQ-PBkP@Ayb=YoFuPLfOD&=`=l+%k$%J#j4XR3>-F&Qje<6Wp zS2@Y_D~HYcgSZO>&!&9zYZzWEn?aaOR}by^>5D&2bjxYrJSfGq-Ivi0k-y!Qq%Mgc z^gp{2#mnarhJG($3$`t~pl0jnCx@6^bRqN@q{TqJ#U`E@jXb%x=viCsqdmSir>O)z z#VC=i+IKh2g}8(VSQhsDm}vPd|uakVg7uvOAFW$y9HavkJ|upSxvw& z#)6X%!6jvn(BOL$1(DGgUt*emYE`7nO^5H8>K6HXoy|!9++zoxJXc3^o2Q@4?R21r zkpO_?Jk;K6E^4^xlZC-O?(yb^Zh-Z!;=k^!2LljZ4T<|e%>M>Y2pN!08OKKi;CfEW zT&jK`@w#4xM5q2aE=l*XE6fTu(^8R*ZYcYtg0LpHP}LiU%^Qk&3YVIs(;`zUO&A4j zBdNo;@geYF329AR$Jl%x>C%=L#*4*Eg#H3M)O~Tgq?!z~DoiA2j7G)F!KXKDdd0!4 z9Ti!&HDmQW)sO`8545OI@hKX6#J2x^)ti1@&EWdmk3KN!{(~~5S|KMeIa{h`_KsgO z^by6rdl>CZsCvEkg91`ySH*<-=zMPJ%1pQtbo14%Slifw4oN_j6H$A2T6tQ`aW8Mg ztWt zV?ND2KpH@75xQwkBQThXF#=`&s}OS&C@m7xFS{q8Uw@}qRZy3pW{3n4tw%gF?QSrw z4bJ*3$%kNN$&7quA-6`14k-5xar;X{hAi~^M^?$55L(TV)!_KGd-4j7ch)CmNQWH6 zd?H=^=JReEkMC9VE#i+o6qE65Y#x7ObXDQqntIPeitZ==u_JSK?vpU`n_vdL4oaYi zd+pO1;@W5PWxVs$9Co$<$D+c`9EC`x0>z#0KIqzK3+^mF2Hv;({FhLt|Egm{QF3)8 zMBBQ-7YS%qqKlcwZ0}njzUjGGyuS^if`|KF#p5*>IE|y_bqm=7|TkEHOpCsrPv4PftD7BHJHWS#ki9*smH)Pibfc9n5yp=U9yn z-@7B_UpBJ2RY(6B!`bI1X9qDHu+D3euGtfosS{G5A@@K#!=KY~(gXw_OJU--&(;6dL z!F0cN3fDtSUa;lRzw+EGdVBiri0LqMznVJv*+C2~^x&X(af)I=-{TGgxzqw4v=IEf zlUO|}OhPh8^%6V`NA3UpHe%$HCj%kVt0R6jyz-eUjOk5}>Tr_-JCt*0B_!=C{a&zz zt(H%uDy&ZewolBiJ5C=9l_=FB2$}-TML1H@>Cffl*+tV4E+?IO*-?RR3Vs&^iLe_6 zFArB}N)QuD8b^v8f(7B>WUL&64%P0<7Zk`*?9J#;#jg}{y=4Kbykm7Ni!^@x%p7O& zD&qp?p?#!AT&R2lkOoP@Mma$X-S0p^iiG-aon1-v>9VcA?>qJ*rr-yQuu$w2L#>o+ zYw?=CWL~Ig{-9|yb$6SvED6j{k{d`Rk#$kIeT#xYb*O@v&=c!8OA&Y1$rx9I$X|Z zRMh&Zjq<%n$jXqb%fUxNx{gq#5!gLNc1@pGrbD7V(5#9&bf*XgC;bbQdu-Q(G+`ol!|4Q+G#SLJb^rj?HI15-8 z6?T$nNxyxtw}HMZ>@?h4t6c*0&It$XODH`Hcc#hnzn@*9{Sgc*)H_jf3BM16jylh0 z$ol~KUZpCDHId(-bAI5O|JlL;3;$Nk{SjlfLuAh7|AOyeybll_Tr$4tC=@h|q|k5^d*00mt?*!}}03n;7^O#&eLiW#R} zezMPhjQQKn{>$D!FxtQD{o@V!FMI!Zn*N`Z-bQw0ubD6|m3tALje#T%1*`H>lMJLH z9_~x8%_eGGw3_Uf2y3d+n~(Q!paNz7bYGks8o%95!ok52WiXQ79@zwk_`2CoR6!)9 zfTTqZafhGZ^SRtl_h~eP7m~bl4x3S0= z%3O}@g6F@?Ok%i937XCtN4M7R-nT@RE89>0x=Ooov3Co%{c&dz{q`K%Deg>PR`lk7eBv0jU|Ne*MHKrIjY2rQN2QY-Sf*wC>dW~db;AnMi9Ji*UMwN zJ+sfW#b}PCjaB#QIPeGR0<0ma<$O&xyz`e~%5&HW ztQMR`8 zL?y)zdDxo?7`Z_E%6018g8hKNROjKn<3QO1xr4QL*v6X>2@rm5Wh&1oH%GIDRdyBDUwiQKLCoUWgv%%;k1(PB8D>E;6P ze)oo`Z+~T}N0-f1oAEDBCl-szsY)<+&_iA<f5`_PPy58(Sa-3YR4>NP zx7*aNH4$b9M50QI(Pt2ft|*Il6qh4>((eox?5QNZ){US8^y>Yh-@kyF^JSxnX3q{S zpF-iTP@RKF(8Uhi4G*NWc(3;RO%8zW*i^tq4Q^uJ5jl2CU6~8uIk@_saYo9u8vVgF z!4Xhg5P?(N(50By8=HeoW*^w!O}IDhA0)ho+4Rq~u~}(ay>aaQaw&*_<$8af{aTO@ z&T>1rSsfH|Ekmo~v^eT>)qn~~m~ia&a(8m(yB_W_#s6JX>~k?8lDrBMiXwLx&I25y zj}S~V^?o|<1*SxgiQo-za6b-_tr1tYn$Zvjq{VVgJ{&e^X=rF%jVB|^+E`P=fZVBF z1B+4zPTzwUa`oHS5k` ztE%fewb3<^50*Pt|3mQdY=ZZF5Y%%_ujL8m$idx$Y@vWInf<7R5YB>TzE?~Vs3 zTcs_Y9o$?L2%2Sn8ZX+p1>(0s8JR;hCfvqLuLws=mP?Hj^uUs>)aK=>OBgv}@_ZUX z=vdDTYKH$Sr+&mT^bon!^__Cv|21L8TYW-`NZU;IqtY_H2W9LmPJavI7CzQm#AJl% z9??O~cj7?sm<#^iT{%h1)#1!L%AMd0Abmae>X<&!Q4-cT_wD5l?>my+M!((xY2{Lw zBO(J(*k$cB;veu+OWtvDx+)^$|S}2oMQ$JH`@pHIina8#?P@acDYeBC)3+!^Q8y4pEj$Xm~j~ zO6|0Y*R{eEPzJ_^&>tzAoM5u@%7jOlKc9{u#_g&&#JKh#rSM+Z1uns&;Kj&u^R

p6-*$t%vZLgET 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

(m#2(54k6U*EQ9E@r^fG`t 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

|DdY@q)#TUh9~ripUc2kS}te%ABGla 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

k5>>!?>0PySC3_Ii;S1{D{b5I0uem5 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 z zIK{>Jv1Od_3>rp?!};Z~3<)G+&z#|RN)sk1>#DtIKtJ2!Vr2}y zUMnR9rT#LhJuo~CXxSaBM7!j8ogg{N>Lnw}`ME&{(_APhLpG5C_|7 zuVQ_s#25c0U3VB+T{e4nj~=FOj)R?t}c?I7f}nZ8pfh_^sf= z&d5NMM%5n<&h@o-!%lvV3IOnHB}eOr?KF-#>HQ8wuB)QUihM*3J!r^17YY!rFXevu z$)MAUBqyGdk(wfZ8>viludK+B8daVk;d?MH1;7_$RL-BJminmTJ>tN~axcB979uIL z(#A4j&Q6_FkC>P=R&S7gcz@0+$7pWsyuh{aWb)sHx;SlbEA(T9q@QUejBwz~` zhi|gsb~-MZ`-epJ_|A<8;=fIfV!5#~b`75@^kQ1Lu(sH#8_uQjH9ilnjHQCM%c=YF z~$#JJR*7_)^6*fVY1PHcCG7Jr#KD@}<)ha&(se0xp?E=ZKc{rU#&nY;T9f7N4-0bicp5iquIfP>jy8R|NC zM%LLgVZ%SK+*vz5lOb0cHiEZ|~*I5=qUl`!tAl`5fas_d<8m}SB zk>hE_RoaiBP$pHquC})T*`=V2T%j+%x#3YsPYCtSN-Cb3Lo91%nwO6^Nc&tS_lkjv zJ!i0ixIyQ6ed=^Z0Av`s%t6N=JhwiTfcGFFD!uJFV>UOQ0wu_Ud@Uk&qN2!acw=CZ z+<1-S!B|@DSXt4ch0>Oa)21!HJM)>;qP)LxOa)V9mKN419Aefw^;Il^-?Ys~t~RA4 z2c!8DS)%fOlNfcaZ>n^V*?)9}km+h?+Q4-kvZ||bSujmkA-*sG%@0F+% zFG^_?lnV0mUvb%dls94CuZaNh{AozicW;l(=-_#u-VdLwvw0^MU+UvbcXJ_Vl1f_h zpPWLU=;ufH2Pw7YxQ`h;o|nQh=;G-fgwvMF)9x499>UA@N7>)=dRd#$aB;PxAJ^B{ zS4qW|ewsKrIRSszp(W;UP33ghk~fmucYJb9?=AY3?htRBDOUXW8uME2le zLlEpaFt3Qza$Oj!8j(G{%cdVxOzA1T`qrU+NE7ZEoV{1d?dw5HyzqTzYMh68sbeUL z(xc=>hcnrHLO!pmOgQmy6Qx6Xp<8RGxVvc8PBq?%TU~(qM6TRb6poGJ15Z#}7tM-L zMkb#9$8*}wJUoUsy%2vYUJGxPk~ue<6q(rQV2fK`io zc{_NaaH);Tr;0dbpfQ*PEn=hX8f!R3$!!*7c;#RavGujcIIATb4eBd=N3*G#6I`l5 zAwN$nPyTj53v+F%zf+#Lnkd-`(pYt2J8^hRMKy;MFi2o8Sv^P|*sZv0ii6Uo*ANn| zG;7g9&sdo%F>JKD@~M~H_9Bnr-PVN#zVSgt4r0{E&43bL+pxH~<@U{f_~?URubNK0 zIiJkjg_d%_6lB+wl_r?8rx0G&n_VG=BEPmcE=o>>L1$a>3oMsc6|)%=#FTA3=hq>b z{8Q)xE8o%6n|gD<5#03^@Y3<$$SOjObry(M>1`WWBP`%AYQ zde`eDeB;Gi8RJPe(l@0g=wXww9VVkfq+kebx7jhuN#_MFG9Np?%9!mq?qz*|`hnwk zaZRNFKc<(=>7dm}6+H9)=959*?6;;-_3=@@H%rw~DU2z5Le>!y7(^WV3>9m}B}54G z)$;I?=V?1gR|Dl(auJ#Fic+^m<;RR9?RqY0!K1)Nk8%=NbRHizAG7}aCA1SkP&qM! zOuAKY9*1evzCDwZlFDsIsh%WdF;^phGym*`8AAbwv*;D=Vx9z*@25l{FFgnYTJz?K zF1TiC9=Jx!sv*fULNkFyWJKCsZJ0jQX2UL0y`86Nu_S#5LWv}hr z?6CrgRel<+GM}ctX%MHAR`|M}>CKM%YP2Q<6Ftk5P9mO%f?Jhz`8R>=b&%b``0tdR zarSp=&skI-@reH06m`GxTuQ)!jGRuHwDd&hSlp@aAgliFWT)^Q zgzBkmLruKoF5-E~?V?$TU+xm>Fzq|mSuvC^J!o%>$v__>xMg^!UcPWtfRkaZjw-te z$wt)J<0oA1EX)trmG#8uTD0@c3u|kKD=MJumO3{(KTLZaDbl!-^9p)E2Ct669+!R3 zOqcpozIC{J@|n(UG6Y1cP{$9i>X?#ls|P@DPDAH0jN*4r&MB|7mosyk$>$wEr>Q#a;u|1}HP-tj0ku^43!NNQu z>G^Q@Z;u}G$=DTvuqps=NZNI3Y;8NPRC;pc(rIHC;5)eB-M)?ZPkoYqiOmzYt zLlDNBVbNO>4TXFcZRqER_q!4d+z`w5XwHYLp?4?S?9i8N7T4ySP6yn_z>@QNHiP)g zp%&HmG65O0ZYRCn;`XM3{B4c&tE|yqhjh z3%L*sl1B0UuOgW^(rxFpf?&W{;s^umMD8}psHDg9*E+;vholR7Ebb%8{-^&6WAp-?!j$b;vJZ| zs_d9@o!RJq{f0&yE`+V2c4Q?m=0B-gyJbf~m^@fN z#EJwz`jBUn1hyywrwNADa2Hi5;GvFxM7wrSs)mz2kfjiV)e!o|0V`2tTb7IPeOq6Y_qmLVv^Qz6L&yuu0)I`Rrpq+@<$n2l!SW z#5UFG*3}9_pWy9zqd^B>*ZxWX33kzeV3-j;r&fU@ov+1dnCJe0r*;x#7qK0KUT)^n zMEab^8W@cCkB9ZDZf*p4_{rrhOAc@3H7p5fCG$aWRK9UU|4%9@dU%q>Y!$QWWW8M*8P`3i{O%@KYmQYh$N%au5`#7H8IamZ zKIt#updMSmvx2jj?TkiJ1&S@7m_9phF#o8neU1KMz4~zV|LN?iLBi$e>AWKR&(j^T`!#jHk$frWlzBb4+237gI6B=`<$l(gxd_v8**~o=-2O4|$lJ$Z18B>JkXrQEEB24O4H@(;Z2 z!uqF4y+8C9)HKi7ULj4QA4&GbzznyqBJOfmXK|-2>Yggrm-~EMFLE!vaBS8Rnq54;zC(d>=6bG*3o0>~gDdKhE z{TSc#XZLivhkANKawE=>F~mF18_tp}lC*_Zsg)`7i9ThQl-jeuC2{SrOcg5Dhts1z zeUZ}#*X8cs^N1qL$HeHWvmNCSyP|Jrw|2e8WA3N43lH@5H8A<3qmoR#>vke;gS{bA zR-2FY`NB|~`=zC4)1h)M0t2C_2o-s_+0?VgbU5=o{a$rInu53n4Q&jBg|FVryjs*; z;)%vL!9x}QobdL7`iv$yO@{$3r-S$=jwJB;BUb?=d4!H`IYiT;k|bpOJuNuyWCMp$ zMSA&(x^Mg_nVd{7~fzMILwfwL79saN6*Km2E%y z#4ZkF0KVwnW${OTjYjrM-9kj#49Mt*(Q)7kcYXYg1N`K6(NCaIEnz591GlngsC={S z0QqcM)%`;DIM*8dr$XlO6XXY5I(|=NZwn`(8`H`@ee=z*CTJ;3J0~zGTs*fyCFG`N z>7Kk>IkLm6AZ1EZaLPm@8}bZ_6E0=s6?EUl3`RNhyljO2~tSwT~? zxqGJ8%a^a^x-!-0`WGAqkR-qS0d+BG5}jq`+^cpyO4e6W&2RCnp71KwKhwg;ntt+R z1UE;o-8QiFvt-EF1&dE?`misVP$PiqsfC32wKJ^uVbbM1SrL`hb~PZfE>5B!^`W_M#pyD+kk*s z&r80=&3JM-pETao&oIOgZ=}x}UQX5K8NLeP)VTtwny!=joEN}$ZQ87bhK45mY7V8> z$dGB8VirPPUi;bYumLmRi=nIgCW{rfNPfs3jLt3V2lz)jHUv9=J#b;s%gg4uzH34x4HP0fk9xbVsMA~QvF zeF17h_g6HKl#=`fp!rd^mrQni#JGgTzG?J^#&*5by1;Dc={8#XYe>vxTSN(cRGJQt z_jRZ2Jla_X$q`YQ2Fag%D|&#k?81PlXoB^9jRNPw(4dHtwUvc5}_ktUP)5(}%-ZO_TMp{8au z+b%jLhM@xz%jx)5GS)w6U~GK~R4!L!ENJVU-ZvgK*8W&_39fK(KLg|+m8Is;i=(4N zh60Df3eia)qWQCBUX)XCke>YZW;ndV7-$0iB^R5^3w`;a=!85J9{M2&5$zQ?6(r~g zV@&{l>-#C_PqQ5F++SNzL9?pi+S@EEWEYnz`zo?bmB&aW!g|6!mqr8;sq~GZ_p2Q+ z0^+onBAnZf64N~tx-s)101F`pkt9lU*?(%YDo;U4NhxP#byZJ)q=c3Rpa@ynZ<1nQ z*c-KTJa=+(S~PN0#``Y0-!nJP3T-)mNaF){L-555=~|^y-AJtrZLMDZBFV~M14CQM z@-guLiZ?=H-M|$$HDOhPF7_cj?)+(G0<&n!Y6=j5sSy(D>XVsH?qM*CrsFe7`F`n< z*4uyZmutZMym9LbJAGGR5*e5t4}KafJC1-{2RDKp`fn+{)!9_5FB%nI^Rj z31-K(x@BecdaC@c7B!)IAQIHEw?=a_hQSK;;*Yngpc&jxp!#u4XFMgr&S=Jq{p~!7^JP9D2>W;o&N9*e8Iu5!E6b3la46Zv)K&Z~%j6&+w%U4Ad^nw`G5> z)bx{z14aKG0J4ahj4Tj<9Les&OjBK}cfHk>@GQ1IGl7=?V!@G#x-wQK#>XW#=1|)` zkavU2%Oh`RLMz7b6~e{+FzE%|8!&njA$&X!930B%BJ@gVefkRgOl>3h&P{gHO+6bG z0O!17TKr zR#vOjcTgshyuRk)OTy#_MiSLwe$mIH(20^th0reamWJ|7#0$p6^%o+~RQ9bsh`9^S z;l50WjyH67+rUamT=v5G4kplo=g$D}1Dar}Hc-Erv5U|AG^wT++$|e`(7D5$_V89% zPPB5xjGPguyRcJCUK+<&*b(=|q!V%1g4K7V=!jxDFh#d_ST$O5D;g3QF4udD&O_h@j)h%8 zB7&BEUeVpI#S6~y78ZZ$frS)G0V2up^$dxM&t@O}JPbGloBNo*U^#M1@)j{AYQ@D1 z9%M+;Mgwq3$yk>nX@Cp|oJ-uguMHP@QB9WQf~pO;H2Y?a@EX)O&zo0BaN92gHg03^ zy}aQkNUf^7$mukZ8r51~0xHXa2av5-fT3s0=v9B<;6HIN=|KokC57Y+KkHwY@f_hS z6Uv#+q>utSF^SfMrcA;y0V0-j@-~RZ^K%mh=HjeTM4!8A;}b|2{4tKKQ<@BggVfVQ z^KtW2rDow^#=O@3y~djnhog|yYn;ndpp!nhva<4N6KH04yA#^+Bs-gD*j?;i(+mb_?LSvl%D_KqLiP%UpEZy1Xl!KfurjH z*f`H&OZ@i+4h}?O1Wil`;Q)2Kv7i=LaTi`_OYCa$nyWb)!Igh3PtJLlprr@BpCDH& z+G)(I{vwjqlN!*dlOP_d-O$$u4wlg6>J@7Nw-qYpIP_1rebWbFl|$(*t=HPmzT-#z z0jd-NFbKp84LjN=@HNV8WT%ZARfd4&!{O*d0k%dPt&XO2y&?DFq8ZCX+B3bJ5GK%A zDHd8}Hk1u3jPB7Q5F&qxfk~P5tS~=Ao}?#LOv5aS?nFu7NCWVQH_HiQA-~M}v&jmb z@65?*b1z23VDH0#G%TF@=vzg1>n4pA2YG)=gY6+*naDC3aRq zvK@6|`RScYbCGHqEt@dd?ef9aR?oUBrk7K$TWN&WQx900!#I^-oZJt3vPU~1_81q= z8|vB-C_F+0tS^Cbh@7%M-)(jzopudxeDELFeYu3(9h8En&ST@;`rz?x0ieF7a2-1A zUD?^o$4HYC`RL1qtHbbRlb;R(iFI(V+8HShiH$WkvTb4}cQe*Kb0+^Zym`-iSs*3K z(am4uG|&HAqyhARPUd}cvjXq8nVB_!twt4pEjhKn*jQrkBV{fCAi5(GKn!V)ESCK? z$x#Z>i>u?Kq6qOf+AZYD-}7LCUHpdhU)SKLv6L>nHldgPMBKj^0;yZ{+6M##LM73A zcjVz->wP=Q;NW1VARho|S%{pA0!6W%Cc$fP@Hpd8$@SILE9;G|BVU^Eg1ao|yG^Bc zXRzqqjO7ci2%qYU`|4E?ojHi=@c%m54{i|w5e*lBmL-Eq+Eu!ercUsZj0Z7aKvk|m z-)by81&_kh9~j{_*ofdq^Ucl6OW>*V~GvqyTCM>UagWEl!ql(enbz;4PL=`okA3QC@70b>zbSWax9F zQ}gq*;>w0+^>uaI0EYG?T}y&oM~7hfwf*ZT7Jl9cAGA+YiBwt=RDjS>8GJkQb5!z^ z9+OJrp}+w#`S&Y=u9GL~)38_q!->A=oOfn;QW&uKxo47Iws~$Zf+U^*D_Bys0-~a$#q!Sk(%(hsNj*nO_Z^%HC>NspQw@#FPuy#maCS<~^i!{4urQ_X^! z__wr|h<3D$2-{P23Emr=h+{Dgt{XJ`cIf}48%Im%KsxW$V*pPQM%@sdA7Fe?KN;m_ zCVVBm;vUF9hSmSZf_L&DKvJH2^U?Aj-TkRD9gQci3=gaRA9ERt^I8zH|HEKF;!_V#w_TkjaaP9LxXn-yYUXb~bN&Z)K>$0>WVay2<6rNQ>&hkm(D zvr(aJAH);)CT{{K^4q*e;=eK^)eUKTdz;0%Znt2u)$fc*F=&+KtlY|=T(6r?)U)uf zaT~y7H=Af{QXy%3=@)qkhlI~6#6@lUEU$$t|6FI9N6qci8^ebx!0qH_&c8_fZUZMI zojT(qL8l@hX*q4b0rjHAN)krBw_YWHN`0rh*D0yAAfTx*C^}lhJ(IoIY$yTV`lM05 zi614Z>bP z@+mr%a<+hNBd-l1=f6uCszgf896TJ!E49c1+LHJVO+fD}I^(r10oSM2-)OBa>Nky& z5}T@(t&7-NwR4ZB$<<54(UYFPEK26ghh*rS!VT>3W~vcN#GTk@CQ zRzFivL~|f z>e^ZwxBw0b3CTpy(qfbb!2&C|!fJ~TICJ3S@_6n_rUA;Z1k`F#UCVcjpD*kTFQ=;_n+v$+$I zhvc~W`nF~7{DEqzf18?0M=!Tvdf8uOnk-3RKQ@l(tN#f9WCuY5v5Y^e1|8wef77z} zmDm7=FO670QdO^?7sGHm~5okkHT^2D5ewWq_HzOGQaRk>1e{$M01wH}kN= z**Td^ISe>`x^K@$E&g@8T8tJ5uB(w}e3#AR#%kQtF-1S{fVhb&mLX~Lu)5MQpxwF( z6XBq_DK-3j;H`Ks^;e=Fv;{SS%IdR3#WZfBYZSeD+sivvmhm=AT-A_TypLWrP`0eL zuS-aFT^g$|!AOZ5*O09wd}p6cD*J-(5>(53DD z8(O%KsHczBcUm#?nYy~Vm>#c>8ahuxH^-n}!8!~58=~Bz^#B6@a*w9H9Gi$c0wNO1 zxyv&VNJHJ&G1=R*RS`!|NCn*f{^7koV_RnhwIr{p6P;QS&;ANU!&IA~NFCe2x<9A& zRIM*wwVz=JNdw=vw~^+rhF&g2bm7vg5^8boJkN}w*dcV;BFkNC;ZCNS9<(3XU)e)r ze7r9@+P|cQy}Q7jkSg)wn3_SPAS*6=Cnuu6i2E%m0#sOGywhDAvlAWsu*Q~f3q_}e zPq_~kS{zK%bp@iblE!#?@RgFbv7)GJb+L|3(4N2i+mYck za0R}9UBmrpLC)pc?ozQ-Lr%YS0OKb=c6GViWK`kr4qdb!Ob1-6QYzox*zg!zj2*_| zUgV&d&qz;)LNCB)5pWaexojaT+4CwmhvIjvJYH!Ml6m#MBnxhKfoks9(9CdUk%eDZ z_m>Q%R=c3czXo?T82Q}+J*bj*^1m1y`%a5F0CJ* zXvn|cP|#qp;EVk6=^uXizYZ-RD~Wq4s`bX7*Llk5nF_dQ%}t!}{w&&43I%YnUx#!E zAy4Q3gQ)&uHvA`CIc`Z&Ed&Hw!oShn(=m@fv$m!qmC=t+1WWdQRn4im%}u=DHJD0?|%?aYGTuk@d=ni{8Mvuby|F4D}OVm7g}11L_( z##@q4ZU_5fw)GinQ}rbstv5NVi;8Y!m)pq>KArD;vbc?_J=0cWS>LJFpOyc(xxd6} zY;!E$5TkhB*sx?h$kmrT;98e#bC;U06}DL<<hnfp|zM<0?=h#mJD z!kjj$u_!yg<*i9t&XAFJ1X~4hHom0~$Zz3d=PgZHz!x7;$HBazuFO(h9mGC2QQ>_p)=uW5LPD_urk-rHD_yK1DBfWC`GwjTb?jvOed2HJ9rg1Up<;| zlHu!4x>dlt{VTsva;(Viu4yfbbGFjqOK5^i=SYWvVXO)||;swPpA*l~%V z3-)zh+#bOWvPFm1QSIYuZb=2MQ?@Gk6Jm}_?hdR&(~_!;y3$L=pbanPQ;BKC`bBqC z`T47-`Ntsk`#h#%lH;P1-LoUE116t?rFb!?wJa=E`O9A;*h~}gdy{$Cf8J>Nc=;d9h~fiZq&@L@f4p>B(^tp` z7cxFKSLCe|zKf?8*E;xUX<$$`V0vxD=X7@H9rp}BrT0o zIDn5XQmzG+>E`rIKf#f`zGg@4QJSP5gNgs$WZ+Lqu~W0N{h3}&yd}tvCB$qY)@py0 z-(04@z^vZ_g^G@XH(^2NLe-rfIW1a8>TbNfD+)E*8|K#`)%W#0 z2UW~1wxCb36ApHD<{h+!d0u+zmlJQJXJ;J?yA;#HSz+<6*~dTlu!oiJ!C7Qtd@d&r zqYE!S+7igU+2++tSBEmAupYO@1b5BPpVgZzdQl16xjT@O$>#_g%&e#q~uXuafG*VUswlCI~RtCSOyJD<&6 zk14fx!}LLRg3*4a`nIO(Q0DFqZMN!WF$0wsXL1boQZ~P{z7KI^D1K1k#$bYoqGq9y zf+EA_vukf0pDzR)>FH-5;9o25_4EDS8Ix`zRXeUECp?crM(<@uCw36HNOYTHXMNkL zv%5PZ2*Hm}o zyr9FAPt+JPMIuKInv@YNeD$i~?(a8K_d&FZ>kq4P?f$lI@m)cc#yh15~^PmqbNW8I5I1Lhh)0CsD?G@PEOTMy@|?k1<7m3xijFkHd zy=3}cbiO>=+T01z?n4_amrbL8?=My<-;MhV=3Qbmuw|7OA6GN4BnqywHx(}&+Kofr z^fBFqi4H&{T$66W%AOqVW8_(8C}w##=7eEM@iUVf8>{uEEnfmrO#9SG^*TS(297;+e{U$%X)pBUHN8hlCu_HHa5tO3AQd|D;?f^OC=%Lb&+z=Q5V_U| z^^}lSLVj3puXXECVnV|8$2dESa=dDN zMqb5YUA5KR+ZUf*cHYFh(xc9s`#MCf?{;P8h_-z9Xd&mZF6jeZvcj<#INsS#BZy;u z?_J1L$!Dut8_F1WKMOIx{7B%?C0BR0ef>g)hTSlY+3rep5dn9GMQs<}IF)XXdLi*^ ziiy3iFO9XwJ~bFVlS)g9(sjzKYtTA;JfF4zZ5WI^T-c#&fDF0aHUU2DVmkea55rD{ zF0`0N{a&u;CLWNMBF(jnACR57I73n_Rhh3L+YA(}mJ_qZo4Gz#&PH2OErmj5s^;vX zp9rx79q*&*XnVzb0mP9aRvYbAyB7n7E9d(q4V9$2!({Jom2Qa0iEG-k!b)_s2MwvF zZ<0~nxteHqD9>^t#j;GdV5>5d87GcEL}y!TsNmIHxPE@kU)p-HBF(#biw0aC+T>*I zui=_7uf=)PCyDYWXTLXMW~r=8PjisT)F@{&GB!#uAK{aclN+*AUYyeoDSth1>)4+? zMv{cm*&%vE|#&^Jr9MD_=cK%r)4x-#^|t-tIR_TW5* zEUzyN6sP9MQ>y3-8o$Ah4P|43iYF}uA2F9&$=%y(D9rf}p#mb(VKovOE?eD56bplk z(?BQ3W`)mn&Y_frV0FEXg~qC2Rt$n7aYeOVOJ#k}vUcjeICFs%pf&HYHNt~AN@a$x0)fX6I)MxftYxm_% zra{}{J#=PX*95AoY)mp~d3$?bP<16kWZFTi*;P4?s0C;dMLDx>Vf}u$a6@pHVt7sA zCa<6%1WwQRwso2LFu?#1!uHP{(-L4vEyz!TcCobwlqkpmO zqp_qZNNFIi1dp@LfBuO;Ju1bd&0yPcR`&-}J(pxXG#F?{Rvc$ zQ}BNwBM^M~Iy&~B(v_dW0U}(GHdzYN{wFf1uL2+WDgN$HBOI&UudI(7hi7kQ2B`mu z3?cAkZw~o?WWvd+ZPbCV>n~-UFz4j?ZOmx9eh~`oQ3@tGPoF)U9YFMg`?8PMk0VeQ6b5D*>@j4`#&;;d0+ql diff --git a/docs/management/cases/manage-cases.asciidoc b/docs/management/cases/manage-cases.asciidoc index 1ebe9643d55c2..bccfd315ca445 100644 --- a/docs/management/cases/manage-cases.asciidoc +++ b/docs/management/cases/manage-cases.asciidoc @@ -6,8 +6,6 @@ :frontmatter-tags-content-type: [how-to] :frontmatter-tags-user-goals: [analyze] -preview::[] - [[open-case]] === Open a new case diff --git a/docs/management/cases/setup-cases.asciidoc b/docs/management/cases/setup-cases.asciidoc index cf3dad4318c5f..5e04d3a136605 100644 --- a/docs/management/cases/setup-cases.asciidoc +++ b/docs/management/cases/setup-cases.asciidoc @@ -1,7 +1,10 @@ [[setup-cases]] == Configure access to cases -preview::[] +:frontmatter-description: Learn about the {kib} feature privileges required to access cases. +:frontmatter-tags-products: [kibana] +:frontmatter-tags-content-type: [how-to] +:frontmatter-tags-user-goals: [configure] To access cases in *{stack-manage-app}*, you must have the appropriate {kib} privileges: diff --git a/x-pack/plugins/cases/docs/openapi/bundled.json b/x-pack/plugins/cases/docs/openapi/bundled.json index b36a745179833..9ef79cb9203ed 100644 --- a/x-pack/plugins/cases/docs/openapi/bundled.json +++ b/x-pack/plugins/cases/docs/openapi/bundled.json @@ -3876,7 +3876,7 @@ "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", + "description": "Returns only cases that were created after a specific date. The date must be specified as a KQL data range or date match expression.\n", "schema": { "type": "string", "example": "now-1d" @@ -4052,7 +4052,7 @@ "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", + "description": "Returns only cases that were created before a specific date. The date must be specified as a KQL data range or date match expression.\n", "schema": { "type": "string" }, diff --git a/x-pack/plugins/cases/docs/openapi/bundled.yaml b/x-pack/plugins/cases/docs/openapi/bundled.yaml index ddee756120e01..c24f9f3c67fa3 100644 --- a/x-pack/plugins/cases/docs/openapi/bundled.yaml +++ b/x-pack/plugins/cases/docs/openapi/bundled.yaml @@ -2354,7 +2354,7 @@ components: 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. + Returns only cases that were created after a specific date. The date must be specified as a KQL data range or date match expression. schema: type: string example: now-1d @@ -2480,7 +2480,7 @@ components: 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. + Returns only cases that were created before a specific date. The date must be specified as a KQL data range or date match expression. schema: type: string example: now+1d diff --git a/x-pack/plugins/cases/docs/openapi/components/parameters/from.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/from.yaml index 3b20869c0da6a..6f9a24dae5956 100644 --- a/x-pack/plugins/cases/docs/openapi/components/parameters/from.yaml +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/from.yaml @@ -1,10 +1,8 @@ in: query name: from description: > - [preview] Returns only cases that were created after a specific date. + 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/to.yaml b/x-pack/plugins/cases/docs/openapi/components/parameters/to.yaml index fb41e6b8223b9..c176ce8407803 100644 --- a/x-pack/plugins/cases/docs/openapi/components/parameters/to.yaml +++ b/x-pack/plugins/cases/docs/openapi/components/parameters/to.yaml @@ -1,10 +1,8 @@ in: query name: to description: > - [preview] Returns only cases that were created before a specific date. + 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 From 982ffcc2834f0030456225b3e84f36dddfd979a2 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 16 Oct 2023 15:23:04 +0100 Subject: [PATCH 75/80] skip flaky suite (#168904) --- .../ftr/cloud_security_posture/compliance_dashboard.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/compliance_dashboard.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/compliance_dashboard.ts index 54fa5a725e29a..6a6734b8f3fe3 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/compliance_dashboard.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cloud_security_posture/compliance_dashboard.ts @@ -56,7 +56,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await pageObjects.svlCommonPage.forceLogout(); }); - describe('Kubernetes Dashboard', () => { + // FLAKY: https://github.com/elastic/kibana/issues/168904 + describe.skip('Kubernetes Dashboard', () => { it('displays accurate summary compliance score', async () => { const scoreElement = await dashboard.getKubernetesComplianceScore(); From 24a0c2b0566f1732bd1bb2861547ec68220f9436 Mon Sep 17 00:00:00 2001 From: Liam Thompson <32779855+leemthompo@users.noreply.github.com> Date: Mon, 16 Oct 2023 16:34:29 +0200 Subject: [PATCH 76/80] [Enterprise Search] Remove unused doclink (#168951) I don't this link is used, so we can safely remove it? The only other file that contains a reference is `api_docs/kbn_doc_links.devdocs.json`, but I assume that's a generated file? --- packages/kbn-doc-links/src/get_doc_links.ts | 1 - packages/kbn-doc-links/src/types.ts | 1 - .../public/applications/shared/doc_links/doc_links.ts | 3 --- 3 files changed, 5 deletions(-) diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index 6f2800a8d6348..aeaf3d5c11258 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -167,7 +167,6 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { connectorsSharepointOnline: `${ENTERPRISE_SEARCH_DOCS}connectors-sharepoint-online.html`, connectorsSlack: `${ENTERPRISE_SEARCH_DOCS}connectors-slack.html`, connectorsTeams: `${ENTERPRISE_SEARCH_DOCS}connectors-teams.html`, - connectorsWorkplaceSearch: `${ENTERPRISE_SEARCH_DOCS}workplace-search-connectors.html`, connectorsZoom: `${ENTERPRISE_SEARCH_DOCS}connectors-zoom.html`, crawlerExtractionRules: `${ENTERPRISE_SEARCH_DOCS}crawler-extraction-rules.html`, crawlerManaging: `${ENTERPRISE_SEARCH_DOCS}crawler-managing.html`, diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts index 5f513392588a6..9bf0091798004 100644 --- a/packages/kbn-doc-links/src/types.ts +++ b/packages/kbn-doc-links/src/types.ts @@ -148,7 +148,6 @@ export interface DocLinks { readonly connectorsSharepointOnline: string; readonly connectorsTeams: string; readonly connectorsSlack: string; - readonly connectorsWorkplaceSearch: string; readonly connectorsZoom: string; readonly crawlerExtractionRules: string; readonly crawlerManaging: string; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts b/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts index 6dd47fe869ede..6974f956e2bc9 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts @@ -92,7 +92,6 @@ class DocLinks { public connectorsSlack: string; public connectorsTeams: string; public connectorsZoom: string; - public connectorsWorkplaceSearch: string; public consoleGuide: string; public crawlerExtractionRules: string; public crawlerManaging: string; @@ -260,7 +259,6 @@ class DocLinks { this.connectorsSlack = ''; this.connectorsTeams = ''; this.connectorsZoom = ''; - this.connectorsWorkplaceSearch = ''; this.consoleGuide = ''; this.crawlerExtractionRules = ''; this.crawlerManaging = ''; @@ -430,7 +428,6 @@ class DocLinks { this.connectorsSlack = docLinks.links.enterpriseSearch.connectorsSlack; this.connectorsTeams = docLinks.links.enterpriseSearch.connectorsTeams; this.connectorsZoom = docLinks.links.enterpriseSearch.connectorsZoom; - this.connectorsWorkplaceSearch = docLinks.links.enterpriseSearch.connectorsWorkplaceSearch; this.consoleGuide = docLinks.links.console.guide; this.crawlerExtractionRules = docLinks.links.enterpriseSearch.crawlerExtractionRules; this.crawlerManaging = docLinks.links.enterpriseSearch.crawlerManaging; From 284c430dcbdd857218c62847b44265bcd569ad57 Mon Sep 17 00:00:00 2001 From: Vitalii Dmyterko <92328789+vitaliidm@users.noreply.github.com> Date: Mon, 16 Oct 2023 16:04:20 +0100 Subject: [PATCH 77/80] Update x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_info_icon/index.tsx Co-authored-by: Nastasha Solomon <79124755+nastasha-solomon@users.noreply.github.com> --- .../rule_creation/components/esql_info_icon/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_info_icon/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_info_icon/index.tsx index a15eaec930a5d..d0b4cee6752ad 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_info_icon/index.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_creation/components/esql_info_icon/index.tsx @@ -30,7 +30,7 @@ const EsqlInfoIconComponent = () => { From 40751c02c9117326f4a2fc5a8aab13e71833db1d Mon Sep 17 00:00:00 2001 From: Gloria Hornero Date: Mon, 16 Oct 2023 17:07:12 +0200 Subject: [PATCH 78/80] [Security Solution] Increasing parallelism for Serverless Security specific executions (#168928) --- .../pipelines/es_serverless/verify_es_serverless_image.yml | 2 +- .buildkite/pipelines/on_merge.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml b/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml index 48d0b61d7902a..7538da0cfbd40 100644 --- a/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml +++ b/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml @@ -63,7 +63,7 @@ steps: queue: n2-4-spot depends_on: build timeout_in_minutes: 60 - parallelism: 2 + parallelism: 4 retry: automatic: - exit_status: '*' diff --git a/.buildkite/pipelines/on_merge.yml b/.buildkite/pipelines/on_merge.yml index 25b22ff8e6a95..815e4d9adb5e2 100644 --- a/.buildkite/pipelines/on_merge.yml +++ b/.buildkite/pipelines/on_merge.yml @@ -85,7 +85,7 @@ steps: queue: n2-4-spot depends_on: build timeout_in_minutes: 60 - parallelism: 2 + parallelism: 4 retry: automatic: - exit_status: '*' From 15ac35135190388268a05bdc9f87b0ea4780e786 Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Mon, 16 Oct 2023 08:23:12 -0700 Subject: [PATCH 79/80] [DOCS] Add preconfigured AWS Bedrock connector (#168663) --- docs/action-type-template.asciidoc | 35 +------------------ docs/management/action-types.asciidoc | 4 +-- .../connectors/action-types/bedrock.asciidoc | 24 ++++++------- .../pre-configured-connectors.asciidoc | 32 ++++++++++++++++- docs/settings/alert-action-settings.asciidoc | 14 +++++++- 5 files changed, 59 insertions(+), 50 deletions(-) diff --git a/docs/action-type-template.asciidoc b/docs/action-type-template.asciidoc index 8ff643c883a40..9bd61039712b3 100644 --- a/docs/action-type-template.asciidoc +++ b/docs/action-type-template.asciidoc @@ -28,42 +28,9 @@ List of user-facing connector configurations. This should align with the fields Property1:: A short description of this property. Property2:: A short description of this property with format hints. This can be specified in `this specific format`. -[float] -[[preconfigured--configuration]] -=== Create preconfigured connectors - -If you are running {kib} on-prem, you can define connectors by -adding `xpack.actions.preconfigured` settings to your `kibana.yml` file. -For example: - -//// -Example preconfigured format for this connector type -//// - -[source,text] --- -xpack.actions.preconfigured: - my-: - name: preconfigured--connector-type - actionTypeId: . - config: - property1: value1 - property2: value2 - secrets: - property3: value3 --- - //// -List of properties from the ConfigSchema and SecretsSchema for this action type. +Add preconfigured settings for this connector type in alert-action-settings.asciidoc and an example in pre-configured-connectors.asciidoc. //// -Config defines information for the connector type. - -`property1`:: A short description of this property. -`property2`:: A short descriptionn of this property. - -Secrets defines sensitive information for the connector type. - -`property3`:: A short descriptionn of this property. [float] [[-action-configuration]] diff --git a/docs/management/action-types.asciidoc b/docs/management/action-types.asciidoc index 357d0e5de50ea..a8a6409ec49ba 100644 --- a/docs/management/action-types.asciidoc +++ b/docs/management/action-types.asciidoc @@ -7,9 +7,9 @@ Connectors provide a central place to store connection information for services [cols="2"] |=== -a| <> +a| <> -| Send a request to AWS Bedrock. +| Send a request to {bedrock}. a| <> diff --git a/docs/management/connectors/action-types/bedrock.asciidoc b/docs/management/connectors/action-types/bedrock.asciidoc index afefc5914435f..a01a750ae77aa 100644 --- a/docs/management/connectors/action-types/bedrock.asciidoc +++ b/docs/management/connectors/action-types/bedrock.asciidoc @@ -1,15 +1,15 @@ [[bedrock-action-type]] -== AWS Bedrock connector and action +== {bedrock} connector and action ++++ -AWS Bedrock +{bedrock} ++++ -:frontmatter-description: Add a connector that can send requests to AWS Bedrock. +:frontmatter-description: Add a connector that can send requests to {bedrock}. :frontmatter-tags-products: [kibana] :frontmatter-tags-content-type: [how-to] :frontmatter-tags-user-goals: [configure] -The AWS Bedrock connector uses https://github.com/axios/axios[axios] to send a POST request to AWS Bedrock. The connector uses the <> to send the request. +The {bedrock} connector uses https://github.com/axios/axios[axios] to send a POST request to {bedrock}. The connector uses the <> to send the request. [float] [[define-bedrock-ui]] @@ -19,18 +19,18 @@ You can create connectors in *{stack-manage-app} > {connectors-ui}*. For exampl [role="screenshot"] // TODO: need logo before screenshot -image::management/connectors/images/bedrock-connector.png[AWS Bedrock connector] +image::management/connectors/images/bedrock-connector.png[{bedrock} connector] [float] [[bedrock-connector-configuration]] ==== Connector configuration -AWS Bedrock connectors have the following configuration properties: +{bedrock} connectors have the following configuration properties: Name:: The name of the connector. -API URL:: The AWS Bedrock request URL. -Default model:: The GAI model for AWS Bedrock to use. Current support is for the Anthropic Claude models, defaulting to Claude 2. The model can be set on a per request basis by including a "model" parameter alongside the request body. -Region:: The AWS Bedrock request URL. +API URL:: The {bedrock} request URL. +Default model:: The GAI model for {bedrock} to use. Current support is for the Anthropic Claude models, defaulting to Claude 2. The model can be set on a per request basis by including a "model" parameter alongside the request body. +Region:: The {bedrock} request URL. Access Key:: The AWS access key for authentication. Secret:: The secret for authentication. @@ -43,11 +43,11 @@ as you're creating or editing the connector in {kib}. For example: [role="screenshot"] // TODO: need logo before screenshot -image::management/connectors/images/bedrock-params.png[AWS Bedrock params test] +image::management/connectors/images/bedrock-params.png[{bedrock} params test] -The AWS Bedrock actions have the following configuration properties. +The {bedrock} actions have the following configuration properties. -Body:: A stringified JSON payload sent to the AWS Bedrock Invoke Model API URL. For example: +Body:: A stringified JSON payload sent to the {bedrock} Invoke Model API URL. For example: + [source,text] -- diff --git a/docs/management/connectors/pre-configured-connectors.asciidoc b/docs/management/connectors/pre-configured-connectors.asciidoc index 6e6694e8a839d..3b0a5e3004f83 100644 --- a/docs/management/connectors/pre-configured-connectors.asciidoc +++ b/docs/management/connectors/pre-configured-connectors.asciidoc @@ -1,5 +1,9 @@ [[pre-configured-connectors]] == Preconfigured connectors +:frontmatter-description: Define connectors in the {kib} configuration file. +:frontmatter-tags-products: [kibana] +:frontmatter-tags-content-type: [how-to] +:frontmatter-tags-user-goals: [configure] If you are running {kib} on-prem, you can preconfigure a connector to have all the information it needs prior to startup by adding it to the `kibana.yml` file. @@ -20,6 +24,7 @@ predefined, including the connector name and ID. Add `xpack.actions.preconfigured` settings to your `kibana.yml` file. The settings vary depending on which type of connector you're adding. +Refer to <>. This example shows a valid configuration for a Slack connector and a Webhook connector: @@ -107,6 +112,7 @@ Index names must start with `kibana-alert-history-` to take advantage of the pre [[preconfigured-connector-examples]] === Examples +* <> * <> * <> * <> @@ -128,6 +134,30 @@ Index names must start with `kibana-alert-history-` to take advantage of the pre * <> * <> +[float] +[[preconfigured-bedrock-configuration]] +==== {bedrock} connectors + +The following example creates an <>: + +[source,text] +-- +xpack.actions.preconfigured: + my-bedrock: + name: preconfigured-bedrock-connector-type + actionTypeId: .bedrock + config: + apiUrl: https://bedrock.us-east-1.amazonaws.com <1> + defaultModel: anthropic.claude-v2 <2> + secrets: + accessKey: key-value <3> + secret: secret-value <4> +-- +<1> The {bedrock} request URL. +<2> The default model to use for requests. Current support is for the Anthropic Claude models, defaulting to Claude 2. +<3> The AWS access key for authentication. +<4> The AWS secret for authentication. + [float] [[preconfigured-d3security-configuration]] ==== D3 Security connectors @@ -302,7 +332,7 @@ xpack.actions.preconfigured: secrets: apiKey: superlongapikey <4> -- -<1> The OpenAI request URL +<1> The OpenAI request URL. <2> The OpenAI API provider, either `OpenAI` or `Azure OpenAI`. <3> The default model to use for requests. This setting is optional and applicable only when `apiProvider` is `OpenAI`. <4> The OpenAI or Azure OpenAI API key for authentication. diff --git a/docs/settings/alert-action-settings.asciidoc b/docs/settings/alert-action-settings.asciidoc index 4312d2825a9d4..5130fad9abad4 100644 --- a/docs/settings/alert-action-settings.asciidoc +++ b/docs/settings/alert-action-settings.asciidoc @@ -267,6 +267,7 @@ For a <>, specifies the OpenAI API provider A configuration URL that varies by connector: + -- +* For an <>, specifies the {bedrock} request URL. * For a <>, specifies the OpenAI request URL. * For a <>, specifies the {ibm-r} instance URL. * For a <>, specifies the Jira instance URL. @@ -327,7 +328,12 @@ NOTE: If you are using the `xpack.actions.allowedHosts` setting, make sure the h For a <>, specifies a string from the response body of the create case method that corresponds to the external service identifier. `xpack.actions.preconfigured..config.defaultModel`:: -For a <>, specifies the default model to use for requests. It is optional and applicable only when `xpack.actions.preconfigured..config.apiProvider` is `OpenAI`. +The default model to use for requests, which varies by connector: ++ +-- +* For an <>, current support is for the Anthropic Claude models. Defaults to `anthropic.claude-v2`. +* For a <>, it is optional and applicable only when `xpack.actions.preconfigured..config.apiProvider` is `OpenAI`. +-- `xpack.actions.preconfigured..config.executionTimeField`:: For an <>, a field that indicates when the document was indexed. @@ -463,6 +469,9 @@ Sensitive configuration details, such as username, password, and keys, which are + TIP: Sensitive properties, such as passwords, should be stored in the <>. +`xpack.actions.preconfigured..secrets.accessKey`:: +For an <>, specifies the AWS access key for authentication. + `xpack.actions.preconfigured..secrets.apikey`:: An API key secret that varies by connector: + @@ -517,6 +526,9 @@ For a <>, <.secrets.routingKey`:: For a <>, specifies the 32 character PagerDuty Integration Key for an integration on a service, also referred to as the routing key. +`xpack.actions.preconfigured..secrets.secret`:: +For an <>, specifies the AWS secret for authentication. + `xpack.actions.preconfigured..secrets.secretsUrl`:: For an <> with URL authentication, specifies the request URL for the Elastic Alerts trigger in xMatters with the API key included in the URL. It is used only when `xpack.actions.preconfigured..config.usesBasic` is `false`. From b2e3ce3ec58f53a0e5fe273f3960df483f3feac6 Mon Sep 17 00:00:00 2001 From: Tomasz Ciecierski Date: Mon, 16 Oct 2023 17:34:51 +0200 Subject: [PATCH 80/80] [EDR Workflows] Skip flaky osquery test (#168961) --- .../all/alerts_response_actions_form.cy.ts | 314 +++++++++--------- 1 file changed, 159 insertions(+), 155 deletions(-) diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts index 4a49d85d0ffa9..6b8f314ba8d58 100644 --- a/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts +++ b/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts @@ -41,172 +41,176 @@ interface ITestRuleBody { } ]; } +// flaky +describe.skip( + 'Alert Event Details - Response Actions Form', + { tags: ['@ess', '@serverless'] }, + () => { + let multiQueryPackId: string; + let multiQueryPackName: string; + let ruleId: string; + let ruleName: string; + let packId: string; + let packName: string; + const packData = packFixture(); + const multiQueryPackData = multiQueryPackFixture(); -describe('Alert Event Details - Response Actions Form', { tags: ['@ess', '@serverless'] }, () => { - let multiQueryPackId: string; - let multiQueryPackName: string; - let ruleId: string; - let ruleName: string; - let packId: string; - let packName: string; - const packData = packFixture(); - const multiQueryPackData = multiQueryPackFixture(); - - beforeEach(() => { - loadPack(packData).then((data) => { - packId = data.saved_object_id; - packName = data.name; - }); - loadPack(multiQueryPackData).then((data) => { - multiQueryPackId = data.saved_object_id; - multiQueryPackName = data.name; + beforeEach(() => { + loadPack(packData).then((data) => { + packId = data.saved_object_id; + packName = data.name; + }); + loadPack(multiQueryPackData).then((data) => { + multiQueryPackId = data.saved_object_id; + multiQueryPackName = data.name; + }); + loadRule().then((data) => { + ruleId = data.id; + ruleName = data.name; + }); }); - loadRule().then((data) => { - ruleId = data.id; - ruleName = data.name; + afterEach(() => { + cleanupPack(packId); + cleanupPack(multiQueryPackId); + cleanupRule(ruleId); }); - }); - afterEach(() => { - cleanupPack(packId); - cleanupPack(multiQueryPackId); - cleanupRule(ruleId); - }); - it('adds response actions with osquery with proper validation and form values', () => { - cy.visit('/app/security/rules'); - clickRuleName(ruleName); - cy.getBySel('editRuleSettingsLink').click(); - cy.getBySel('globalLoadingIndicator').should('not.exist'); - closeDateTabIfVisible(); - cy.getBySel('edit-rule-actions-tab').click(); - cy.contains('Response actions are run on each rule execution.'); - cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click(); - cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { - cy.contains('Query is a required field'); - inputQuery('select * from uptime1'); - }); - cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click(); - cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { - cy.contains('Run a set of queries in a pack').click(); - }); - cy.getBySel('response-actions-error') - .within(() => { + it('adds response actions with osquery with proper validation and form values', () => { + cy.visit('/app/security/rules'); + clickRuleName(ruleName); + cy.getBySel('editRuleSettingsLink').click(); + cy.getBySel('globalLoadingIndicator').should('not.exist'); + closeDateTabIfVisible(); + cy.getBySel('edit-rule-actions-tab').click(); + cy.contains('Response actions are run on each rule execution.'); + cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click(); + cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.contains('Query is a required field'); + inputQuery('select * from uptime1'); + }); + cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click(); + cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { + cy.contains('Run a set of queries in a pack').click(); + }); + cy.getBySel('response-actions-error') + .within(() => { + cy.contains('Pack is a required field'); + }) + .should('exist'); + cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { cy.contains('Pack is a required field'); - }) - .should('exist'); - cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { - cy.contains('Pack is a required field'); - cy.getBySel('comboBoxInput').type(`${packName}{downArrow}{enter}`); - }); + cy.getBySel('comboBoxInput').type(`${packName}{downArrow}{enter}`); + }); - cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click(); + cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click(); - cy.getBySel(RESPONSE_ACTIONS_ITEM_2).within(() => { - cy.contains('Query is a required field'); - inputQuery('select * from uptime'); - cy.contains('Advanced').click(); - typeInECSFieldInput('message{downArrow}{enter}'); - cy.getBySel('osqueryColumnValueSelect').type('days{downArrow}{enter}'); - cy.wait(1000); // wait for the validation to trigger - cypress is way faster than users ;) - }); + cy.getBySel(RESPONSE_ACTIONS_ITEM_2).within(() => { + cy.contains('Query is a required field'); + inputQuery('select * from uptime'); + cy.contains('Advanced').click(); + typeInECSFieldInput('message{downArrow}{enter}'); + cy.getBySel('osqueryColumnValueSelect').type('days{downArrow}{enter}'); + cy.wait(1000); // wait for the validation to trigger - cypress is way faster than users ;) + }); - cy.getBySel('ruleEditSubmitButton').click(); - cy.contains(`${ruleName} was saved`).should('exist'); - closeToastIfVisible(); + cy.getBySel('ruleEditSubmitButton').click(); + cy.contains(`${ruleName} was saved`).should('exist'); + closeToastIfVisible(); - cy.getBySel('editRuleSettingsLink').click(); - cy.getBySel('globalLoadingIndicator').should('not.exist'); - cy.getBySel('edit-rule-actions-tab').click(); - cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { - cy.contains('select * from uptime1'); - }); - cy.getBySel(RESPONSE_ACTIONS_ITEM_2).within(() => { - cy.contains('select * from uptime'); - cy.contains('Log message optimized for viewing in a log viewer'); - cy.contains('Days of uptime'); - }); - cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { - cy.contains(packName); - cy.getBySel('comboBoxInput').type('{backspace}{enter}'); - }); - cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { - cy.contains('select * from uptime1'); - cy.getBySel('remove-response-action').click(); - }); - cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { - cy.contains('Search for a pack to run'); - cy.contains('Pack is a required field'); - cy.getBySel('comboBoxInput').type(`${packName}{downArrow}{enter}`); - }); - cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { - cy.contains('select * from uptime'); - cy.contains('Log message optimized for viewing in a log viewer'); - cy.contains('Days of uptime'); - }); - cy.intercept('PUT', '/api/detection_engine/rules').as('saveRuleChangesOne'); - cy.getBySel('ruleEditSubmitButton').click(); + cy.getBySel('editRuleSettingsLink').click(); + cy.getBySel('globalLoadingIndicator').should('not.exist'); + cy.getBySel('edit-rule-actions-tab').click(); + cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.contains('select * from uptime1'); + }); + cy.getBySel(RESPONSE_ACTIONS_ITEM_2).within(() => { + cy.contains('select * from uptime'); + cy.contains('Log message optimized for viewing in a log viewer'); + cy.contains('Days of uptime'); + }); + cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { + cy.contains(packName); + cy.getBySel('comboBoxInput').type('{backspace}{enter}'); + }); + cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.contains('select * from uptime1'); + cy.getBySel('remove-response-action').click(); + }); + cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.contains('Search for a pack to run'); + cy.contains('Pack is a required field'); + cy.getBySel('comboBoxInput').type(`${packName}{downArrow}{enter}`); + }); + cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { + cy.contains('select * from uptime'); + cy.contains('Log message optimized for viewing in a log viewer'); + cy.contains('Days of uptime'); + }); + cy.intercept('PUT', '/api/detection_engine/rules').as('saveRuleChangesOne'); + cy.getBySel('ruleEditSubmitButton').click(); - cy.wait('@saveRuleChangesOne'); - cy.get<{ request: { url: string; body: ITestRuleBody } }>('@saveRuleChangesOne').should( - ({ request }) => { - const oneQuery = [ - { - interval: 3600, - query: 'select * from uptime;', - id: Object.keys(packData.queries)[0], - }, - ]; - expect(request.body.response_actions[0].params.queries).to.deep.equal(oneQuery); - } - ); + cy.wait('@saveRuleChangesOne'); + cy.get<{ request: { url: string; body: ITestRuleBody } }>('@saveRuleChangesOne').should( + ({ request }) => { + const oneQuery = [ + { + interval: 3600, + query: 'select * from uptime;', + id: Object.keys(packData.queries)[0], + }, + ]; + expect(request.body.response_actions[0].params.queries).to.deep.equal(oneQuery); + } + ); - cy.contains(`${ruleName} was saved`).should('exist'); - closeToastIfVisible(); + cy.contains(`${ruleName} was saved`).should('exist'); + closeToastIfVisible(); - cy.getBySel('editRuleSettingsLink').click(); - cy.getBySel('globalLoadingIndicator').should('not.exist'); - cy.getBySel('edit-rule-actions-tab').click(); - cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { - cy.contains(packName); - cy.getBySel('comboBoxInput').type(`${multiQueryPackName}{downArrow}{enter}`); - checkActionItemsInResults({ - cases: false, - lens: false, - discover: false, - timeline: false, + cy.getBySel('editRuleSettingsLink').click(); + cy.getBySel('globalLoadingIndicator').should('not.exist'); + cy.getBySel('edit-rule-actions-tab').click(); + cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.contains(packName); + cy.getBySel('comboBoxInput').type(`${multiQueryPackName}{downArrow}{enter}`); + checkActionItemsInResults({ + cases: false, + lens: false, + discover: false, + timeline: false, + }); }); - }); - cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { - cy.contains('select * from uptime'); - cy.contains('Log message optimized for viewing in a log viewer'); - cy.contains('Days of uptime'); - }); - cy.intercept('PUT', '/api/detection_engine/rules').as('saveRuleChangesTwo'); + cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { + cy.contains('select * from uptime'); + cy.contains('Log message optimized for viewing in a log viewer'); + cy.contains('Days of uptime'); + }); + cy.intercept('PUT', '/api/detection_engine/rules').as('saveRuleChangesTwo'); - cy.contains('Save changes').click(); - cy.wait('@saveRuleChangesTwo'); - cy.get<{ request: { url: string; body: ITestRuleBody } }>('@saveRuleChangesTwo').should( - ({ request }) => { - const threeQueries = [ - { - interval: 3600, - query: 'SELECT * FROM memory_info;', - platform: 'linux', - id: Object.keys(multiQueryPackData.queries)[0], - }, - { - interval: 3600, - query: 'SELECT * FROM system_info;', - id: Object.keys(multiQueryPackData.queries)[1], - }, - { - interval: 10, - query: 'select opera_extensions.* from users join opera_extensions using (uid);', - id: Object.keys(multiQueryPackData.queries)[2], - }, - ]; - expect(request.body.response_actions[0].params.queries).to.deep.equal(threeQueries); - } - ); - }); -}); + cy.contains('Save changes').click(); + cy.wait('@saveRuleChangesTwo'); + cy.get<{ request: { url: string; body: ITestRuleBody } }>('@saveRuleChangesTwo').should( + ({ request }) => { + const threeQueries = [ + { + interval: 3600, + query: 'SELECT * FROM memory_info;', + platform: 'linux', + id: Object.keys(multiQueryPackData.queries)[0], + }, + { + interval: 3600, + query: 'SELECT * FROM system_info;', + id: Object.keys(multiQueryPackData.queries)[1], + }, + { + interval: 10, + query: 'select opera_extensions.* from users join opera_extensions using (uid);', + id: Object.keys(multiQueryPackData.queries)[2], + }, + ]; + expect(request.body.response_actions[0].params.queries).to.deep.equal(threeQueries); + } + ); + }); + } +);

c)3BnXVYoM6t*8%rF`uU0 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°2@65z`j(U2 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 I#>LKgg8Np`8JvNVTUgD8Xmza5)w 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 O{)h@n36y`<@%evqHGBd9 literal 155318 zcmbTe1yo#1+BOOVf(5q_+#Q0uTX1)GclY4#?oQ+G?(XgccL?rq`<$8i{=2@Jf6hI3 zt!h^Frh8ZISD#m^LuI8!;b6YOfPjF&iTx0g2LXZF2LbuS2K5<+)PkV zR!mS3U)J8n*v!%h1cW@+DRxQ%Ob&6VD~uo&QGSL*KN`1uk=h3lN0W*IMhLcitu;*8 zJlctfBW&qCx>#en5Nt}@5C2GZhK2(|V0xj`hGsqw)A+D%i*@|VCFtZ&TA`6bu>CNj zqWHA9jZL|A8(RaAKB(?|EF~nF!bSd6GB;AZRz1snR#UKXOID!Z&Ty^ju~Ea&TM*6H6{Nl8S!b@aF#;Rpi0je1QI;Es?LkGe`H{FibTCx_`PGG|SiD$6+fc^V5%$J3dsIgr-TvHty zSAwH0Ao1CZRK<*?q(CTvb0`qdU^5VK;0zS_`UZS~fPm$I{p$+Ue$JennT%vrLE#)P1ZWJm1s3R<_nQ!Q;3%Sw%!y3M3>H6qHY}Z&ZE>$YJEj zFh5*eTyP*=G=ana;~~|^*rd_=(wgpx+dC=M&0_Ou@@&2JW^L=H+lLSe6bv8aZw_5X zuzgDwWKwGsiH=tApIqa!1|Q|-GgQgN zW)DdYR)9DjFnTa3FkH`d0_>Xgjexh}#*2(J)lzVtUc7~X4SfMC4EmYr#eRKT4G`~? zp3l$4xGTSuvX0u9n0US6n1OspiCvO5MffW&#khdE1YDDHkc96j)I#e_9%kaX|6@mA zQFOVZn$mHe+Ex^vUW77H($l2oShsSVUh7bE=`pydGcm_fit6=%K=So05 zwXP;+g=(-XgxHsZ2O9r{4#*;cy;{6mTpio?Q$PvbLi{QH-z9$DvE^<`?`a3&kUjol z%@Qj>@b2PMOSSE%_n^-K0~aR%^$51V?TKd&bcj-+$mn>Y5KJ)0f;0aM;&+pR=UE%c zMYt0D^Mg6n(2wEu-_Oz%7X5CzB-g%5ciDuITLcH~f`TH-B7NOt3?Owb5kg3at@qql z912qUOCy4X@5mGetQa{M<1h-pKXpBU1dO$RD{Fq7)94_^SxdZ# z?!8^nI0_OH3=Cg4wY%O(#q=eRcq~#}j0U*Io{(PJU#t<$r%5TVoY+|xgy|1lf$x|M zpMhIW)7<%(H^xJ>T6amR)uU+~8y+4UoDUxZ%;oZ3wCf^tv{31|IEWnJm_as<{9o;5 zP6ARh5iaSvIGx9_p!kYewG0Kt0!?)c+Y
sn8%~a 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