diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index 866386232dc7df..94753297ce85f0 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -410,10 +410,12 @@ enabled: - x-pack/test_serverless/api_integration/test_suites/observability/config.ts - x-pack/test_serverless/api_integration/test_suites/observability/config.feature_flags.ts - x-pack/test_serverless/api_integration/test_suites/observability/common_configs/config.group1.ts + - x-pack/test_serverless/api_integration/test_suites/observability/fleet/config.ts - x-pack/test_serverless/api_integration/test_suites/search/config.ts - x-pack/test_serverless/api_integration/test_suites/search/common_configs/config.group1.ts - x-pack/test_serverless/api_integration/test_suites/security/config.ts - x-pack/test_serverless/api_integration/test_suites/security/common_configs/config.group1.ts + - x-pack/test_serverless/api_integration/test_suites/security/fleet/config.ts - x-pack/test_serverless/functional/test_suites/observability/config.ts - x-pack/test_serverless/functional/test_suites/observability/config.examples.ts - x-pack/test_serverless/functional/test_suites/observability/config.saved_objects_management.ts diff --git a/.buildkite/pipelines/emergency_release.yml b/.buildkite/pipelines/emergency_release.yml new file mode 100644 index 00000000000000..12ba39e7ce8c24 --- /dev/null +++ b/.buildkite/pipelines/emergency_release.yml @@ -0,0 +1,3 @@ +steps: + - label: Placeholder + command: echo "Hello!" diff --git a/.buildkite/scripts/steps/code_coverage/reporting/uploadStaticSite.sh b/.buildkite/scripts/steps/code_coverage/reporting/uploadStaticSite.sh index 93f2ca8660e609..20e85a51c3776b 100755 --- a/.buildkite/scripts/steps/code_coverage/reporting/uploadStaticSite.sh +++ b/.buildkite/scripts/steps/code_coverage/reporting/uploadStaticSite.sh @@ -6,24 +6,26 @@ xs=("$@") # TODO: Safe to remove this after 2024-03-01 (https://github.com/elastic/kibana/issues/175904) - also clean up usages uploadPrefix_old="gs://elastic-bekitzur-kibana-coverage-live/" -uploadPrefixWithTimeStamp_old="${uploadPrefix}${TIME_STAMP}/" +uploadPrefixWithTimeStamp_old="${uploadPrefix_old}${TIME_STAMP}/" uploadPrefix="gs://elastic-kibana-coverage-live/" uploadPrefixWithTimeStamp="${uploadPrefix}${TIME_STAMP}/" uploadBase() { for x in 'src/dev/code_coverage/www/index.html' 'src/dev/code_coverage/www/404.html'; do - gsutil -m -q cp -r -a public-read -z js,css,html "${x}" "${uploadPrefix}" + gsutil -m -q cp -r -z js,css,html "${x}" "${uploadPrefix}" gsutil -m -q cp -r -a public-read -z js,css,html "${x}" "${uploadPrefix_old}" done } uploadRest() { for x in "${xs[@]}"; do - gsutil -m -q cp -r -a public-read -z js,css,html "target/kibana-coverage/${x}-combined" "${uploadPrefixWithTimeStamp}" + gsutil -m -q cp -r -z js,css,html "target/kibana-coverage/${x}-combined" "${uploadPrefixWithTimeStamp}" gsutil -m -q cp -r -a public-read -z js,css,html "target/kibana-coverage/${x}-combined" "${uploadPrefixWithTimeStamp_old}" done } +echo "--- Uploading static site" + uploadBase uploadRest diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b07f76b9683f63..02837458e3046c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -844,7 +844,6 @@ x-pack/plugins/upgrade_assistant @elastic/platform-deployment-management x-pack/plugins/uptime @elastic/obs-ux-infra_services-team x-pack/plugins/drilldowns/url_drilldown @elastic/appex-sharedux src/plugins/url_forwarding @elastic/kibana-visualizations -packages/kbn-url-state @elastic/security-threat-hunting-investigations src/plugins/usage_collection @elastic/kibana-core test/plugin_functional/plugins/usage_collection @elastic/kibana-core packages/kbn-use-tracked-promise @elastic/obs-ux-logs-team @@ -1499,6 +1498,7 @@ x-pack/test/security_solution_api_integration/test_suites/entity_analytics @elas x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics @elastic/security-entity-analytics x-pack/plugins/security_solution/public/flyout/entity_details @elastic/security-entity-analytics x-pack/plugins/security_solution/common/api/entity_analytics @elastic/security-entity-analytics +x-pack/plugins/security_solution/server/search_strategy/security_solution/factory/risk_score @elastic/security-entity-analytics # Security Defend Workflows - OSQuery Ownership /x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions @elastic/security-defend-workflows diff --git a/api_docs/actions.devdocs.json b/api_docs/actions.devdocs.json index 0256b3f19732f0..df0491c1c598cc 100644 --- a/api_docs/actions.devdocs.json +++ b/api_docs/actions.devdocs.json @@ -5255,6 +5255,51 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "actions", + "id": "def-common.DEFAULT_MICROSOFT_EXCHANGE_URL", + "type": "string", + "tags": [], + "label": "DEFAULT_MICROSOFT_EXCHANGE_URL", + "description": [], + "signature": [ + "\"https://login.microsoftonline.com\"" + ], + "path": "x-pack/plugins/actions/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.DEFAULT_MICROSOFT_GRAPH_API_SCOPE", + "type": "string", + "tags": [], + "label": "DEFAULT_MICROSOFT_GRAPH_API_SCOPE", + "description": [], + "signature": [ + "\"https://graph.microsoft.com/.default\"" + ], + "path": "x-pack/plugins/actions/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "actions", + "id": "def-common.DEFAULT_MICROSOFT_GRAPH_API_URL", + "type": "string", + "tags": [], + "label": "DEFAULT_MICROSOFT_GRAPH_API_URL", + "description": [], + "signature": [ + "\"https://graph.microsoft.com/v1.0\"" + ], + "path": "x-pack/plugins/actions/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "actions", "id": "def-common.ExecutionLogSortFields", diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index c5ec0b53a8de28..feb1f10df6397d 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 276 | 0 | 270 | 31 | +| 279 | 0 | 273 | 31 | ## Client diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index eb5a1ac8a0b2da..9d0c329071b23c 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_observability.mdx b/api_docs/ai_assistant_management_observability.mdx index f0b3ddce705945..b0fd51fcc3ce3f 100644 --- a/api_docs/ai_assistant_management_observability.mdx +++ b/api_docs/ai_assistant_management_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementObservability title: "aiAssistantManagementObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementObservability plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementObservability'] --- import aiAssistantManagementObservabilityObj from './ai_assistant_management_observability.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index 8648c0e874105f..86dc5b4b3c34d8 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 4a23def0faf08e..1a9acc2f670b8f 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: 2024-01-31 +date: 2024-02-05 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 ed528b091cc6bb..726952a004730a 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: 2024-01-31 +date: 2024-02-05 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 888edf294aef6f..f2d9bf9145ddf7 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: 2024-01-31 +date: 2024-02-05 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 39a80d73eec57a..4d670ed96caa6d 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: 2024-01-31 +date: 2024-02-05 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 0dbf60da5d767d..703017e9387f83 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: 2024-01-31 +date: 2024-02-05 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 3a757a94802d14..3b0181fc03d204 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: 2024-01-31 +date: 2024-02-05 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 d71d9abad6eaee..28840c59af2d3f 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: 2024-01-31 +date: 2024-02-05 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 4da33897d5e475..3c136d3bd8fd07 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: 2024-01-31 +date: 2024-02-05 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 06725ee1b28f1f..003adab6cbc482 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: 2024-01-31 +date: 2024-02-05 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 45d156eb590b69..ee856223b69ebc 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: 2024-01-31 +date: 2024-02-05 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 de52ed6a3fa9db..c9781d96ebe709 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: 2024-01-31 +date: 2024-02-05 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 08b49cb93d7c3f..514bcbb6e036d1 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: 2024-01-31 +date: 2024-02-05 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 e8f1bfbcfac5b2..08780844dc6ca2 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: 2024-01-31 +date: 2024-02-05 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 ed300cb2090fe9..d3e1f0c19dfd10 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: 2024-01-31 +date: 2024-02-05 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 0ee0eefdefa0cb..9d7a4f3aa6a387 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: 2024-01-31 +date: 2024-02-05 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 df17519fb35025..747fe019f7efa8 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: 2024-01-31 +date: 2024-02-05 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 833a3245f2e0f5..e2918f20e49181 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.devdocs.json b/api_docs/controls.devdocs.json index ff88942354ddbf..37eee50c1af40d 100644 --- a/api_docs/controls.devdocs.json +++ b/api_docs/controls.devdocs.json @@ -3577,6 +3577,68 @@ "children": [], "returnComment": [] }, + { + "parentPluginId": "controls", + "id": "def-public.RangeSliderEmbeddableFactory.controlEditorOptionsComponent", + "type": "Function", + "tags": [], + "label": "controlEditorOptionsComponent", + "description": [], + "signature": [ + "({ initialInput, onChange, setControlEditorValid, }: ", + { + "pluginId": "controls", + "scope": "public", + "docId": "kibControlsPluginApi", + "section": "def-public.ControlEditorProps", + "text": "ControlEditorProps" + }, + "<", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.RangeSliderEmbeddableInput", + "text": "RangeSliderEmbeddableInput" + }, + ">) => JSX.Element" + ], + "path": "src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable_factory.tsx", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "controls", + "id": "def-public.RangeSliderEmbeddableFactory.controlEditorOptionsComponent.$1", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + { + "pluginId": "controls", + "scope": "public", + "docId": "kibControlsPluginApi", + "section": "def-public.ControlEditorProps", + "text": "ControlEditorProps" + }, + "<", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.RangeSliderEmbeddableInput", + "text": "RangeSliderEmbeddableInput" + }, + ">" + ], + "path": "src/plugins/controls/public/range_slider/components/range_slider_editor_options.tsx", + "deprecated": false, + "trackAdoption": false + } + ] + }, { "parentPluginId": "controls", "id": "def-public.RangeSliderEmbeddableFactory.create", @@ -4281,6 +4343,38 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "controls", + "id": "def-public.ControlEditorProps.setControlEditorValid", + "type": "Function", + "tags": [], + "label": "setControlEditorValid", + "description": [], + "signature": [ + "(isValid: boolean) => void" + ], + "path": "src/plugins/controls/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "controls", + "id": "def-public.ControlEditorProps.setControlEditorValid.$1", + "type": "boolean", + "tags": [], + "label": "isValid", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/controls/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false @@ -5201,6 +5295,20 @@ "path": "src/plugins/controls/common/range_slider/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "controls", + "id": "def-public.RangeSliderEmbeddableInput.step", + "type": "number", + "tags": [], + "label": "step", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/controls/common/range_slider/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -7023,6 +7131,20 @@ "path": "src/plugins/controls/common/range_slider/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "controls", + "id": "def-common.RangeSliderEmbeddableInput.step", + "type": "number", + "tags": [], + "label": "step", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "src/plugins/controls/common/range_slider/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 27c914898a0e4e..bd579234400af6 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 317 | 0 | 309 | 16 | +| 323 | 0 | 315 | 16 | ## Client diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 59e036ba6ca421..6a5f2ce88ac1a0 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: 2024-01-31 +date: 2024-02-05 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 d2735fed17ed99..ee7f46eef48d4b 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: 2024-01-31 +date: 2024-02-05 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 98f424d0dee73e..d24c174ad1f0d6 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: 2024-01-31 +date: 2024-02-05 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 ee1069ba27f3f7..58d3d9fbf9ceb7 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -20020,7 +20020,7 @@ "section": "def-common.SerializableRecord", "text": "SerializableRecord" }, - "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", + "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; isNull?: boolean | undefined; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", { "pluginId": "dataViews", "scope": "common", @@ -20556,6 +20556,19 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "data", + "id": "def-common.DataViewField.isNull", + "type": "boolean", + "tags": [], + "label": "isNull", + "description": [ + "\nReturns true if field is Empty" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "data", "id": "def-common.DataViewField.isSubtypeNested", @@ -25151,7 +25164,7 @@ "section": "def-common.SerializableRecord", "text": "SerializableRecord" }, - "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", + "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; isNull?: boolean | undefined; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", { "pluginId": "dataViews", "scope": "common", diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 076fdfc33b5cc3..e8d0bcc0b1d1ea 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: 2024-01-31 +date: 2024-02-05 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 | |-------------------|-----------|------------------------|-----------------| -| 3234 | 31 | 2583 | 23 | +| 3235 | 31 | 2583 | 23 | ## Client diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 272c64f44cd7d3..bfa8526571d507 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: 2024-01-31 +date: 2024-02-05 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 | |-------------------|-----------|------------------------|-----------------| -| 3234 | 31 | 2583 | 23 | +| 3235 | 31 | 2583 | 23 | ## Client diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 26a5aa0a3b4bf3..9f09caae8accd9 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: 2024-01-31 +date: 2024-02-05 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 | |-------------------|-----------|------------------------|-----------------| -| 3234 | 31 | 2583 | 23 | +| 3235 | 31 | 2583 | 23 | ## Client diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index a9fac37ba49707..de9990bb83e107 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: 2024-01-31 +date: 2024-02-05 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 45811369e0a878..a665e1bf952117 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: 2024-01-31 +date: 2024-02-05 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 9a58da77375ff2..10d09bb5580bc7 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: 2024-01-31 +date: 2024-02-05 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 08b4ffad98fc3d..4686208acd12e5 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -1035,7 +1035,7 @@ "section": "def-common.SerializableRecord", "text": "SerializableRecord" }, - "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", + "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; isNull?: boolean | undefined; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", { "pluginId": "dataViews", "scope": "common", @@ -1571,6 +1571,19 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "dataViews", + "id": "def-public.DataViewField.isNull", + "type": "boolean", + "tags": [], + "label": "isNull", + "description": [ + "\nReturns true if field is Empty" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "dataViews", "id": "def-public.DataViewField.isSubtypeNested", @@ -6304,7 +6317,7 @@ "section": "def-common.SerializableRecord", "text": "SerializableRecord" }, - "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", + "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; isNull?: boolean | undefined; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", { "pluginId": "dataViews", "scope": "common", @@ -10362,7 +10375,7 @@ "section": "def-common.SerializableRecord", "text": "SerializableRecord" }, - "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", + "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; isNull?: boolean | undefined; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", { "pluginId": "dataViews", "scope": "common", @@ -13046,7 +13059,7 @@ "section": "def-common.SerializableRecord", "text": "SerializableRecord" }, - "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", + "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; isNull?: boolean | undefined; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", { "pluginId": "dataViews", "scope": "common", @@ -13582,6 +13595,19 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "dataViews", + "id": "def-common.DataViewField.isNull", + "type": "boolean", + "tags": [], + "label": "isNull", + "description": [ + "\nReturns true if field is Empty" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "dataViews", "id": "def-common.DataViewField.isSubtypeNested", @@ -20915,7 +20941,7 @@ "section": "def-common.SerializableRecord", "text": "SerializableRecord" }, - "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", + "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; isNull?: boolean | undefined; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", { "pluginId": "dataViews", "scope": "common", diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index f709d47800a129..330a64f0b84497 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: 2024-01-31 +date: 2024-02-05 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 | |-------------------|-----------|------------------------|-----------------| -| 938 | 0 | 273 | 4 | +| 940 | 0 | 273 | 4 | ## Client diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 3e5b927fcfa055..a7e1d0e9543a47 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.devdocs.json b/api_docs/dataset_quality.devdocs.json index d36a1e259b708a..c3d7ca486512c7 100644 --- a/api_docs/dataset_quality.devdocs.json +++ b/api_docs/dataset_quality.devdocs.json @@ -53,11 +53,52 @@ "label": "DatasetQuality", "description": [], "signature": [ - "React.ComponentClass<{}, any> | React.FunctionComponent<{}>" + "React.ComponentClass<", + "DatasetQualityProps", + ", any> | React.FunctionComponent<", + "DatasetQualityProps", + ">" ], "path": "x-pack/plugins/dataset_quality/public/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "datasetQuality", + "id": "def-public.DatasetQualityPluginStart.createDatasetQualityController", + "type": "Function", + "tags": [], + "label": "createDatasetQualityController", + "description": [], + "signature": [ + "({ initialState, }: { initialState?: Partial<", + "DatasetQualityPublicState", + "> | undefined; }) => Promise<", + "DatasetQualityController", + ">" + ], + "path": "x-pack/plugins/dataset_quality/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "datasetQuality", + "id": "def-public.DatasetQualityPluginStart.createDatasetQualityController.$1", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + "{ initialState?: Partial<", + "DatasetQualityPublicState", + "> | undefined; }" + ], + "path": "x-pack/plugins/dataset_quality/public/controller/create_controller.ts", + "deprecated": false, + "trackAdoption": false + } + ] } ], "lifecycle": "start", @@ -108,7 +149,7 @@ "StringC", "; }>; }> | undefined; handler: ({}: ", "DatasetQualityRouteHandlerResources", - " & { params: { path: { dataStream: string; }; }; }) => Promise<{ createdOn: number; }>; } & ", + " & { params: { path: { dataStream: string; }; }; }) => Promise<{ createdOn?: number | undefined; lastActivity?: number | undefined; }>; } & ", "DatasetQualityRouteCreateOptions", "; \"GET /internal/dataset_quality/data_streams/degraded_docs\": { endpoint: \"GET /internal/dataset_quality/data_streams/degraded_docs\"; params?: ", "TypeC", @@ -189,7 +230,7 @@ "StringC", "; }>; }> | undefined; handler: ({}: ", "DatasetQualityRouteHandlerResources", - " & { params: { path: { dataStream: string; }; }; }) => Promise<{ createdOn: number; }>; } & ", + " & { params: { path: { dataStream: string; }; }; }) => Promise<{ createdOn?: number | undefined; lastActivity?: number | undefined; }>; } & ", "DatasetQualityRouteCreateOptions", "; \"GET /internal/dataset_quality/data_streams/degraded_docs\": { endpoint: \"GET /internal/dataset_quality/data_streams/degraded_docs\"; params?: ", "TypeC", diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 32d88c42b5b551..56687b3751bb33 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 8 | 0 | 8 | 2 | +| 10 | 0 | 10 | 5 | ## Client diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 66dcc11c639da2..0ef89319e8460a 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 2abcbc4d4b5250..e50b875690e6ec 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 880f93de880fe1..9b364ca6f838f4 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index bc10cfae66734d..a2353d4af3e14f 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: 2024-01-31 +date: 2024-02-05 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 aaad1b08667f95..ddac1cb2440f3d 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: 2024-01-31 +date: 2024-02-05 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 7d0a32bd7f1376..93a342db836d88 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: 2024-01-31 +date: 2024-02-05 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 8f07e07542e5e8..0b55cc0a6112f7 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: 2024-01-31 +date: 2024-02-05 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 a2ba3feb54116c..bb7e03253016fc 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.devdocs.json b/api_docs/embeddable.devdocs.json index f8c22cbbb6e894..eeecb696c191ec 100644 --- a/api_docs/embeddable.devdocs.json +++ b/api_docs/embeddable.devdocs.json @@ -432,6 +432,84 @@ "trackAdoption": false, "children": [] }, + { + "parentPluginId": "embeddable", + "id": "def-public.Container.lastSavedState", + "type": "Object", + "tags": [], + "label": "lastSavedState", + "description": [], + "signature": [ + "Subject", + "" + ], + "path": "src/plugins/embeddable/public/lib/containers/container.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.Container.getLastSavedStateForChild", + "type": "Function", + "tags": [], + "label": "getLastSavedStateForChild", + "description": [], + "signature": [ + "() => undefined" + ], + "path": "src/plugins/embeddable/public/lib/containers/container.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "embeddable", + "id": "def-public.Container.registerPanelApi", + "type": "Function", + "tags": [], + "label": "registerPanelApi", + "description": [], + "signature": [ + "(id: string, api: ApiType) => void" + ], + "path": "src/plugins/embeddable/public/lib/containers/container.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.Container.registerPanelApi.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/embeddable/public/lib/containers/container.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "embeddable", + "id": "def-public.Container.registerPanelApi.$2", + "type": "Uncategorized", + "tags": [], + "label": "api", + "description": [], + "signature": [ + "ApiType" + ], + "path": "src/plugins/embeddable/public/lib/containers/container.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "embeddable", "id": "def-public.Container.Unnamed", @@ -2463,15 +2541,31 @@ "label": "parentApi", "description": [], "signature": [ - "(", + "(Partial<", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesViewMode", + "text": "PublishesViewMode" + }, + "> & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.PublishesLastSavedState", + "text": "PublishesLastSavedState" + }, + " & { registerPanelApi: (panelId: string, panelApi: ApiType) => void; removePanel: (panelId: string) => void; canRemovePanels?: (() => boolean) | undefined; replacePanel: (idToRemove: string, newPanel: ", { "pluginId": "@kbn/presentation-containers", "scope": "common", "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-common.PresentationContainer", - "text": "PresentationContainer" + "section": "def-common.PanelPackage", + "text": "PanelPackage" }, - " & Partial Promise; } & Partial(component: (ref: React.ForwardedRef) => React.ReactElement> | null) => React.ForwardRefExoticComponent, \"key\" | \"css\"> & React.RefAttributes>" - ], - "path": "src/plugins/embeddable/public/registry/create_embeddable_component.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.CreateEmbeddableComponent.$1", - "type": "Function", - "tags": [], - "label": "component", - "description": [], - "signature": [ - "(ref: React.ForwardedRef) => React.ReactElement> | null" - ], - "path": "src/plugins/embeddable/public/registry/create_embeddable_component.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.defaultEmbeddableFactoryProvider", @@ -7596,6 +7657,112 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.initializeReactEmbeddableTitles", + "type": "Function", + "tags": [], + "label": "initializeReactEmbeddableTitles", + "description": [], + "signature": [ + "(rawState: ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.SerializedReactEmbeddableTitles", + "text": "SerializedReactEmbeddableTitles" + }, + ") => { titlesApi: ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.ReactEmbeddableTitlesApi", + "text": "ReactEmbeddableTitlesApi" + }, + "; titleComparators: ", + "EmbeddableStateComparators", + "<", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.SerializedReactEmbeddableTitles", + "text": "SerializedReactEmbeddableTitles" + }, + ">; serializeTitles: () => ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.SerializedReactEmbeddableTitles", + "text": "SerializedReactEmbeddableTitles" + }, + "; }" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.initializeReactEmbeddableTitles.$1", + "type": "Object", + "tags": [], + "label": "rawState", + "description": [], + "signature": [ + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.SerializedReactEmbeddableTitles", + "text": "SerializedReactEmbeddableTitles" + } + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.initializeReactEmbeddableUuid", + "type": "Function", + "tags": [], + "label": "initializeReactEmbeddableUuid", + "description": [], + "signature": [ + "(maybeId?: string | undefined) => string" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.initializeReactEmbeddableUuid.$1", + "type": "string", + "tags": [], + "label": "maybeId", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "embeddable", "id": "def-public.isContextMenuTriggerContext", @@ -8647,86 +8814,351 @@ }, { "parentPluginId": "embeddable", - "id": "def-public.runEmbeddableFactoryMigrations", + "id": "def-public.reactEmbeddableRegistryHasKey", "type": "Function", "tags": [], - "label": "runEmbeddableFactoryMigrations", + "label": "reactEmbeddableRegistryHasKey", + "description": [], + "signature": [ + "(key: string) => boolean" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.reactEmbeddableRegistryHasKey.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddableRenderer", + "type": "Function", + "tags": [], + "label": "ReactEmbeddableRenderer", "description": [ - "\nA helper function that migrates an Embeddable Input to its latest version. Note that this function\nonly runs the embeddable factory's migrations." + "\nRenders a component from the React Embeddable registry into a Presentation Panel.\n\nTODO: Rename this to simply `Embeddable` when the legacy Embeddable system is removed." ], "signature": [ - "(initialInput: { version?: string | undefined; }, factory: { migrations?: ", - { - "pluginId": "kibanaUtils", - "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.MigrateFunctionsObject", - "text": "MigrateFunctionsObject" - }, - " | ", + "({ uuid, type, state, }: { uuid?: string | undefined; type: string; state: ", { - "pluginId": "kibanaUtils", + "pluginId": "@kbn/presentation-containers", "scope": "common", - "docId": "kibKibanaUtilsPluginApi", - "section": "def-common.GetMigrationFunctionObjectFn", - "text": "GetMigrationFunctionObjectFn" + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.SerializedPanelState", + "text": "SerializedPanelState" }, - " | undefined; latestVersion?: string | undefined; }) => { input: ToType; migrationRun: boolean; }" + "; }) => JSX.Element" ], - "path": "src/plugins/embeddable/public/lib/factory_migrations/run_factory_migrations.ts", + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "embeddable", - "id": "def-public.runEmbeddableFactoryMigrations.$1", + "id": "def-public.ReactEmbeddableRenderer.$1", "type": "Object", "tags": [], - "label": "initialInput", + "label": "{\n uuid,\n type,\n state,\n}", "description": [], - "path": "src/plugins/embeddable/public/lib/factory_migrations/run_factory_migrations.ts", + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "embeddable", - "id": "def-public.runEmbeddableFactoryMigrations.$1.version", + "id": "def-public.ReactEmbeddableRenderer.$1.uuid", "type": "string", "tags": [], - "label": "version", + "label": "uuid", "description": [], "signature": [ "string | undefined" ], - "path": "src/plugins/embeddable/public/lib/factory_migrations/run_factory_migrations.ts", + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx", "deprecated": false, "trackAdoption": false - } - ] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.runEmbeddableFactoryMigrations.$2", - "type": "Object", - "tags": [], - "label": "factory", - "description": [], - "path": "src/plugins/embeddable/public/lib/factory_migrations/run_factory_migrations.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "embeddable", - "id": "def-public.runEmbeddableFactoryMigrations.$2.migrations", - "type": "CompoundType", + "id": "def-public.ReactEmbeddableRenderer.$1.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddableRenderer.$1.state", + "type": "Object", + "tags": [], + "label": "state", + "description": [], + "signature": [ + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.SerializedPanelState", + "text": "SerializedPanelState" + }, + "" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.RegisterReactEmbeddable", + "type": "Function", + "tags": [], + "label": "RegisterReactEmbeddable", + "description": [ + "\nA helper function which transforms a component into an Embeddable component by forwarding a ref which\nshould be used with `useEmbeddableApiHandle` to expose an API for your component." + ], + "signature": [ + "(component: ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.ReactEmbeddableRegistration", + "text": "ReactEmbeddableRegistration" + }, + ") => React.ForwardRefExoticComponent, \"key\" | \"css\"> & React.RefAttributes>" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.RegisterReactEmbeddable.$1", + "type": "Function", + "tags": [], + "label": "component", + "description": [], + "signature": [ + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.ReactEmbeddableRegistration", + "text": "ReactEmbeddableRegistration" + }, + "" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.registerReactEmbeddableFactory", + "type": "Function", + "tags": [], + "label": "registerReactEmbeddableFactory", + "description": [], + "signature": [ + "(key: string, factory: ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.ReactEmbeddableFactory", + "text": "ReactEmbeddableFactory" + }, + ") => void" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.registerReactEmbeddableFactory.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "embeddable", + "id": "def-public.registerReactEmbeddableFactory.$2", + "type": "Object", + "tags": [], + "label": "factory", + "description": [], + "signature": [ + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.ReactEmbeddableFactory", + "text": "ReactEmbeddableFactory" + }, + "" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.runEmbeddableFactoryMigrations", + "type": "Function", + "tags": [], + "label": "runEmbeddableFactoryMigrations", + "description": [ + "\nA helper function that migrates an Embeddable Input to its latest version. Note that this function\nonly runs the embeddable factory's migrations." + ], + "signature": [ + "(initialInput: { version?: string | undefined; }, factory: { migrations?: ", + { + "pluginId": "kibanaUtils", + "scope": "common", + "docId": "kibKibanaUtilsPluginApi", + "section": "def-common.MigrateFunctionsObject", + "text": "MigrateFunctionsObject" + }, + " | ", + { + "pluginId": "kibanaUtils", + "scope": "common", + "docId": "kibKibanaUtilsPluginApi", + "section": "def-common.GetMigrationFunctionObjectFn", + "text": "GetMigrationFunctionObjectFn" + }, + " | undefined; latestVersion?: string | undefined; }) => { input: ToType; migrationRun: boolean; }" + ], + "path": "src/plugins/embeddable/public/lib/factory_migrations/run_factory_migrations.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.runEmbeddableFactoryMigrations.$1", + "type": "Object", + "tags": [], + "label": "initialInput", + "description": [], + "path": "src/plugins/embeddable/public/lib/factory_migrations/run_factory_migrations.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.runEmbeddableFactoryMigrations.$1.version", + "type": "string", + "tags": [], + "label": "version", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/embeddable/public/lib/factory_migrations/run_factory_migrations.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "embeddable", + "id": "def-public.runEmbeddableFactoryMigrations.$2", + "type": "Object", + "tags": [], + "label": "factory", + "description": [], + "path": "src/plugins/embeddable/public/lib/factory_migrations/run_factory_migrations.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.runEmbeddableFactoryMigrations.$2.migrations", + "type": "CompoundType", "tags": [], "label": "migrations", "description": [], @@ -8772,6 +9204,60 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.serializeReactEmbeddableTitles", + "type": "Function", + "tags": [], + "label": "serializeReactEmbeddableTitles", + "description": [], + "signature": [ + "(titlesApi: ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.ReactEmbeddableTitlesApi", + "text": "ReactEmbeddableTitlesApi" + }, + ") => ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.SerializedReactEmbeddableTitles", + "text": "SerializedReactEmbeddableTitles" + } + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.serializeReactEmbeddableTitles.$1", + "type": "CompoundType", + "tags": [], + "label": "titlesApi", + "description": [], + "signature": [ + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.ReactEmbeddableTitlesApi", + "text": "ReactEmbeddableTitlesApi" + } + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "embeddable", "id": "def-public.shouldFetch$", @@ -8786,37 +9272,175 @@ "Observable", "" ], - "path": "src/plugins/embeddable/public/lib/filterable_embeddable/should_fetch.tsx", + "path": "src/plugins/embeddable/public/lib/filterable_embeddable/should_fetch.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.shouldFetch$.$1", + "type": "Object", + "tags": [], + "label": "updated$", + "description": [], + "signature": [ + "Observable", + "" + ], + "path": "src/plugins/embeddable/public/lib/filterable_embeddable/should_fetch.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "embeddable", + "id": "def-public.shouldFetch$.$2", + "type": "Function", + "tags": [], + "label": "getInput", + "description": [], + "signature": [ + "() => TFilterableEmbeddableInput" + ], + "path": "src/plugins/embeddable/public/lib/filterable_embeddable/should_fetch.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.useEmbeddableFactory", + "type": "Function", + "tags": [], + "label": "useEmbeddableFactory", + "description": [], + "signature": [ + "({\n input,\n factory,\n onInputUpdated,\n}: EmbeddableRendererWithFactory) => readonly [", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.ErrorEmbeddable", + "text": "ErrorEmbeddable" + }, + " | ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.IEmbeddable", + "text": "IEmbeddable" + }, + " | undefined, boolean, string | undefined]" + ], + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.useEmbeddableFactory.$1", + "type": "Object", + "tags": [], + "label": "{\n input,\n factory,\n onInputUpdated,\n}", + "description": [], + "signature": [ + "EmbeddableRendererWithFactory" + ], + "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.useReactEmbeddableApiHandle", + "type": "Function", + "tags": [], + "label": "useReactEmbeddableApiHandle", + "description": [ + "\nPushes any API to the passed in ref. Note that any API passed in will not be rebuilt on\nsubsequent renders, so it does not support reactive variables. Instead, pass in setter functions\nand publishing subjects to allow other components to listen to changes." + ], + "signature": [ + "(apiToRegister: Omit, ref: React.ForwardedRef, uuid: string) => ApiType" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "embeddable", - "id": "def-public.shouldFetch$.$1", + "id": "def-public.useReactEmbeddableApiHandle.$1", "type": "Object", "tags": [], - "label": "updated$", + "label": "apiToRegister", "description": [], "signature": [ - "Observable", - "" + "Omit" ], - "path": "src/plugins/embeddable/public/lib/filterable_embeddable/should_fetch.tsx", + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.ts", "deprecated": false, "trackAdoption": false, "isRequired": true }, { "parentPluginId": "embeddable", - "id": "def-public.shouldFetch$.$2", - "type": "Function", + "id": "def-public.useReactEmbeddableApiHandle.$2", + "type": "CompoundType", "tags": [], - "label": "getInput", + "label": "ref", "description": [], "signature": [ - "() => TFilterableEmbeddableInput" + "React.ForwardedRef" ], - "path": "src/plugins/embeddable/public/lib/filterable_embeddable/should_fetch.tsx", + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.useReactEmbeddableApiHandle.$3", + "type": "string", + "tags": [], + "label": "uuid", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8827,53 +9451,112 @@ }, { "parentPluginId": "embeddable", - "id": "def-public.useEmbeddableFactory", + "id": "def-public.useReactEmbeddableParentApi", "type": "Function", "tags": [], - "label": "useEmbeddableFactory", + "label": "useReactEmbeddableParentApi", "description": [], "signature": [ - "({\n input,\n factory,\n onInputUpdated,\n}: EmbeddableRendererWithFactory) => readonly [", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ErrorEmbeddable", - "text": "ErrorEmbeddable" - }, - " | ", + "() => unknown" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.useReactEmbeddableUnsavedChanges", + "type": "Function", + "tags": [], + "label": "useReactEmbeddableUnsavedChanges", + "description": [], + "signature": [ + "(uuid: string, factory: ", { "pluginId": "embeddable", "scope": "public", "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" + "section": "def-public.ReactEmbeddableFactory", + "text": "ReactEmbeddableFactory" }, - " | undefined, boolean, string | undefined]" + ">, comparators: ", + "EmbeddableStateComparators", + ") => { unsavedChanges: ", + "BehaviorSubject", + " | undefined>; resetUnsavedChanges: () => void; }" ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_unsaved_changes.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "embeddable", - "id": "def-public.useEmbeddableFactory.$1", + "id": "def-public.useReactEmbeddableUnsavedChanges.$1", + "type": "string", + "tags": [], + "label": "uuid", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_unsaved_changes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "embeddable", + "id": "def-public.useReactEmbeddableUnsavedChanges.$2", "type": "Object", "tags": [], - "label": "{\n input,\n factory,\n onInputUpdated,\n}", + "label": "factory", "description": [], "signature": [ - "EmbeddableRendererWithFactory" + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.ReactEmbeddableFactory", + "text": "ReactEmbeddableFactory" + }, + "" ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_unsaved_changes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "embeddable", + "id": "def-public.useReactEmbeddableUnsavedChanges.$3", + "type": "Object", + "tags": [], + "label": "comparators", + "description": [], + "signature": [ + "EmbeddableStateComparators", + "" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_unsaved_changes.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9226,96 +9909,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableComponentFactory", - "type": "Interface", - "tags": [], - "label": "EmbeddableComponentFactory", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableComponentFactory", - "text": "EmbeddableComponentFactory" - }, - "" - ], - "path": "src/plugins/embeddable/public/registry/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableComponentFactory.getComponent", - "type": "Function", - "tags": [], - "label": "getComponent", - "description": [], - "signature": [ - "(initialState: StateType) => Promise<", - "EmbeddableComponent", - ">" - ], - "path": "src/plugins/embeddable/public/registry/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableComponentFactory.getComponent.$1", - "type": "Uncategorized", - "tags": [], - "label": "initialState", - "description": [], - "signature": [ - "StateType" - ], - "path": "src/plugins/embeddable/public/registry/types.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableComponentFactory.deserializeState", - "type": "Function", - "tags": [], - "label": "deserializeState", - "description": [], - "signature": [ - "(state: unknown) => StateType" - ], - "path": "src/plugins/embeddable/public/registry/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableComponentFactory.deserializeState.$1", - "type": "Unknown", - "tags": [], - "label": "state", - "description": [], - "signature": [ - "unknown" - ], - "path": "src/plugins/embeddable/public/registry/types.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.EmbeddableContainerSettings", @@ -12471,45 +13064,185 @@ "section": "def-public.RangeSelectContext", "text": "RangeSelectContext" }, - "" - ], - "path": "src/plugins/embeddable/public/lib/triggers/triggers.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + "" + ], + "path": "src/plugins/embeddable/public/lib/triggers/triggers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.RangeSelectContext.embeddable", + "type": "Uncategorized", + "tags": [], + "label": "embeddable", + "description": [], + "signature": [ + "T | undefined" + ], + "path": "src/plugins/embeddable/public/lib/triggers/triggers.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.RangeSelectContext.data", + "type": "Object", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "{ table: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + }, + "; column: number; range: number[]; timeFieldName?: string | undefined; }" + ], + "path": "src/plugins/embeddable/public/lib/triggers/triggers.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddableFactory", + "type": "Interface", + "tags": [], + "label": "ReactEmbeddableFactory", + "description": [], + "signature": [ + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.ReactEmbeddableFactory", + "text": "ReactEmbeddableFactory" + }, + "" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddableFactory.getComponent", + "type": "Function", + "tags": [], + "label": "getComponent", + "description": [], + "signature": [ + "(initialState: StateType, maybeId?: string | undefined) => Promise<", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.ReactEmbeddable", + "text": "ReactEmbeddable" + }, + ">" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddableFactory.getComponent.$1", + "type": "Uncategorized", + "tags": [], + "label": "initialState", + "description": [], + "signature": [ + "StateType" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddableFactory.getComponent.$2", + "type": "string", + "tags": [], + "label": "maybeId", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, { "parentPluginId": "embeddable", - "id": "def-public.RangeSelectContext.embeddable", - "type": "Uncategorized", + "id": "def-public.ReactEmbeddableFactory.deserializeState", + "type": "Function", "tags": [], - "label": "embeddable", + "label": "deserializeState", "description": [], "signature": [ - "T | undefined" + "(state: ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.SerializedPanelState", + "text": "SerializedPanelState" + }, + ") => StateType" ], - "path": "src/plugins/embeddable/public/lib/triggers/triggers.ts", + "path": "src/plugins/embeddable/public/react_embeddable_system/types.ts", "deprecated": false, - "trackAdoption": false + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddableFactory.deserializeState.$1", + "type": "Object", + "tags": [], + "label": "state", + "description": [], + "signature": [ + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.SerializedPanelState", + "text": "SerializedPanelState" + }, + "" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "embeddable", - "id": "def-public.RangeSelectContext.data", - "type": "Object", + "id": "def-public.ReactEmbeddableFactory.latestVersion", + "type": "string", "tags": [], - "label": "data", + "label": "latestVersion", "description": [], "signature": [ - "{ table: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" - }, - "; column: number; range: number[]; timeFieldName?: string | undefined; }" + "string | undefined" ], - "path": "src/plugins/embeddable/public/lib/triggers/triggers.ts", + "path": "src/plugins/embeddable/public/react_embeddable_system/types.ts", "deprecated": false, "trackAdoption": false } @@ -12689,6 +13422,62 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.SerializedReactEmbeddableTitles", + "type": "Interface", + "tags": [], + "label": "SerializedReactEmbeddableTitles", + "description": [], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.SerializedReactEmbeddableTitles.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.SerializedReactEmbeddableTitles.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.SerializedReactEmbeddableTitles.hidePanelTitles", + "type": "CompoundType", + "tags": [], + "label": "hidePanelTitles", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "embeddable", "id": "def-public.ValueClickContext", @@ -12857,6 +13646,135 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.DefaultEmbeddableApi", + "type": "Type", + "tags": [], + "label": "DefaultEmbeddableApi", + "description": [ + "\nThe default embeddable API that all Embeddables must implement.\n\nBefore adding anything to this interface, please be certain that it belongs in *every* embeddable." + ], + "signature": [ + "Partial<", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.HasUniqueId", + "text": "HasUniqueId" + }, + " & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesPanelTitle", + "text": "PublishesPanelTitle" + }, + " & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesDataLoading", + "text": "PublishesDataLoading" + }, + " & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesBlockingError", + "text": "PublishesBlockingError" + }, + " & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesPanelDescription", + "text": "PublishesPanelDescription" + }, + " & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesDisabledActionIds", + "text": "PublishesDisabledActionIds" + }, + " & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.HasParentApi", + "text": "HasParentApi" + }, + " & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.PublishesLastSavedState", + "text": "PublishesLastSavedState" + }, + " & { registerPanelApi: (panelId: string, panelApi: ApiType) => void; removePanel: (panelId: string) => void; canRemovePanels?: (() => boolean) | undefined; replacePanel: (idToRemove: string, newPanel: ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.PanelPackage", + "text": "PanelPackage" + }, + ") => Promise; } & Partial & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesViewMode", + "text": "PublishesViewMode" + }, + ">>> & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesUnsavedChanges", + "text": "PublishesUnsavedChanges" + }, + " & { serializeState: () => Promise<", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.SerializedPanelState", + "text": "SerializedPanelState" + }, + ">; }" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "embeddable", "id": "def-public.EmbeddableFactoryDefinition", @@ -13004,6 +13922,100 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddable", + "type": "Type", + "tags": [], + "label": "ReactEmbeddable", + "description": [], + "signature": [ + "React.ForwardRefExoticComponent>" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddable.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddableRegistration", + "type": "Type", + "tags": [], + "label": "ReactEmbeddableRegistration", + "description": [], + "signature": [ + "(ref: React.ForwardedRef) => React.ReactElement> | null" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddableRegistration.$1", + "type": "CompoundType", + "tags": [], + "label": "ref", + "description": [], + "signature": [ + "((instance: ApiType | null) => void) | React.MutableRefObject | null" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddableTitlesApi", + "type": "Type", + "tags": [], + "label": "ReactEmbeddableTitlesApi", + "description": [], + "signature": [ + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesPanelTitle", + "text": "PublishesPanelTitle" + }, + " & { setPanelTitle: (newTitle: string | undefined) => void; setHidePanelTitle: (hide: boolean | undefined) => void; } & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesPanelDescription", + "text": "PublishesPanelDescription" + }, + " & { setPanelDescription: (newTitle: string | undefined) => void; }" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "embeddable", "id": "def-public.SELECT_RANGE_TRIGGER", @@ -13271,6 +14283,21 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddableParentContext", + "type": "Object", + "tags": [], + "label": "ReactEmbeddableParentContext", + "description": [], + "signature": [ + "React.Context" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "embeddable", "id": "def-public.shouldRefreshFilterCompareOptions", diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index a2bb914ef1085a..fc7e5a981c1393 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 521 | 1 | 421 | 8 | +| 564 | 1 | 459 | 8 | ## Client diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index cac96c3fb2ac67..299081466baf1e 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: 2024-01-31 +date: 2024-02-05 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 d85e67968cdd0a..fbcf6a75bfb138 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: 2024-01-31 +date: 2024-02-05 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 80af58ca60ce47..217e17339ebec9 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: 2024-01-31 +date: 2024-02-05 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 42cb89e4cbb1ea..5d33f3b14500ca 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: 2024-01-31 +date: 2024-02-05 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 16f16e0d0be508..a16f3952d09e0c 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: 2024-01-31 +date: 2024-02-05 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 f7e16018dccab9..c5bd40e00d7263 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: 2024-01-31 +date: 2024-02-05 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 9c07b0b8531516..d7f29e4b164d61 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: 2024-01-31 +date: 2024-02-05 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 758f2de0e90409..61c99e37b20e0a 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: 2024-01-31 +date: 2024-02-05 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 297decde921a40..c6ef2122ec5c11 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: 2024-01-31 +date: 2024-02-05 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 7a013f92a2afce..4e46045ce1520f 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: 2024-01-31 +date: 2024-02-05 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 5c8b5293fd5569..a13d2543b21104 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: 2024-01-31 +date: 2024-02-05 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 46d535b8da7179..b6e8121cf6aeec 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: 2024-01-31 +date: 2024-02-05 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 7960e4daf78c18..642417ae2835c8 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: 2024-01-31 +date: 2024-02-05 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 bf22fbbcc1c770..71df865ec4b8bd 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: 2024-01-31 +date: 2024-02-05 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 8fdbd1df536b55..5ee85b3aa9712a 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: 2024-01-31 +date: 2024-02-05 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 38913e659d9c1f..aab0f469e33541 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: 2024-01-31 +date: 2024-02-05 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 ed30e9db3be5f6..20d11b3de317e2 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: 2024-01-31 +date: 2024-02-05 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 45e30f6e9dafa5..ca8e420fd8f7a2 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: 2024-01-31 +date: 2024-02-05 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 7b056c14a955ce..1ae246b6414e13 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: 2024-01-31 +date: 2024-02-05 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 441683ded598a3..1cf45ec55dc8c1 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: 2024-01-31 +date: 2024-02-05 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 32b971d6a3ada0..12a2ba1ad06c17 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.devdocs.json b/api_docs/expressions.devdocs.json index f4a94a9c84893f..0ea45e489f34c3 100644 --- a/api_docs/expressions.devdocs.json +++ b/api_docs/expressions.devdocs.json @@ -7040,6 +7040,20 @@ "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "expressions", + "id": "def-public.DatatableColumn.isNull", + "type": "CompoundType", + "tags": [], + "label": "isNull", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -18475,6 +18489,20 @@ "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "expressions", + "id": "def-server.DatatableColumn.isNull", + "type": "CompoundType", + "tags": [], + "label": "isNull", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -30262,6 +30290,20 @@ "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "expressions", + "id": "def-common.DatatableColumn.isNull", + "type": "CompoundType", + "tags": [], + "label": "isNull", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/expressions/common/expression_types/specs/datatable.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 799e95053403d6..803cddeac518d2 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.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 | |-------------------|-----------|------------------------|-----------------| -| 2219 | 17 | 1757 | 5 | +| 2222 | 17 | 1760 | 5 | ## Client diff --git a/api_docs/features.mdx b/api_docs/features.mdx index bc76d13bd7d545..7ba98f964ef010 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: 2024-01-31 +date: 2024-02-05 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 2249974068948c..55a5194e37a5b9 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.devdocs.json b/api_docs/file_upload.devdocs.json index 39fc5b715bc88a..ec813208b95dd3 100644 --- a/api_docs/file_upload.devdocs.json +++ b/api_docs/file_upload.devdocs.json @@ -1,7 +1,131 @@ { "id": "fileUpload", "client": { - "classes": [], + "classes": [ + { + "parentPluginId": "fileUpload", + "id": "def-public.MessageImporter", + "type": "Class", + "tags": [], + "label": "MessageImporter", + "description": [], + "signature": [ + { + "pluginId": "fileUpload", + "scope": "public", + "docId": "kibFileUploadPluginApi", + "section": "def-public.MessageImporter", + "text": "MessageImporter" + }, + " extends ", + "Importer" + ], + "path": "x-pack/plugins/file_upload/public/importer/message_importer.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "fileUpload", + "id": "def-public.MessageImporter.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/plugins/file_upload/public/importer/message_importer.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "fileUpload", + "id": "def-public.MessageImporter.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "ImportFactoryOptions" + ], + "path": "x-pack/plugins/file_upload/public/importer/message_importer.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fileUpload", + "id": "def-public.MessageImporter._createDocs", + "type": "Function", + "tags": [], + "label": "_createDocs", + "description": [], + "signature": [ + "(text: string, isLastPart: boolean, lineLimit?: number | undefined) => ", + "CreateDocsResponse", + "<", + "ImportDocMessage", + ">" + ], + "path": "x-pack/plugins/file_upload/public/importer/message_importer.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "fileUpload", + "id": "def-public.MessageImporter._createDocs.$1", + "type": "string", + "tags": [], + "label": "text", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/file_upload/public/importer/message_importer.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "fileUpload", + "id": "def-public.MessageImporter._createDocs.$2", + "type": "boolean", + "tags": [], + "label": "isLastPart", + "description": [], + "signature": [ + "boolean" + ], + "path": "x-pack/plugins/file_upload/public/importer/message_importer.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "fileUpload", + "id": "def-public.MessageImporter._createDocs.$3", + "type": "number", + "tags": [], + "label": "lineLimit", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "x-pack/plugins/file_upload/public/importer/message_importer.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], "functions": [], "interfaces": [ { @@ -1340,6 +1464,20 @@ "path": "x-pack/plugins/file_upload/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "fileUpload", + "id": "def-common.FindFileStructureResponse.ecs_compatibility", + "type": "string", + "tags": [], + "label": "ecs_compatibility", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/file_upload/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index f40f79e8ca4015..9c09f6008b0798 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; @@ -21,13 +21,16 @@ Contact [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 76 | 0 | 76 | 4 | +| 84 | 0 | 84 | 8 | ## Client ### Start +### Classes + + ### Interfaces diff --git a/api_docs/files.mdx b/api_docs/files.mdx index ef78a89ec52e7c..95c6e49f7f66de 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: 2024-01-31 +date: 2024-02-05 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 e6fff8f2967272..9fc51056a71603 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index 024d3ff4814f8f..cd548cf1b73623 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -2341,10 +2341,10 @@ "id": "def-public.UIExtensionsStorage.Unnamed", "type": "IndexSignature", "tags": [], - "label": "[key: string]: Partial>", "description": [], "signature": [ - "[key: string]: Partial Promise<", + { + "pluginId": "fleet", + "scope": "common", + "docId": "kibFleetPluginApi", + "section": "def-common.AgentPolicy", + "text": "AgentPolicy" + }, + ">" + ], + "path": "x-pack/plugins/fleet/server/services/index.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "fleet", + "id": "def-server.AgentPolicyServiceInterface.bumpRevision.$1", + "type": "Object", + "tags": [], + "label": "soClient", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-saved-objects-api-server", + "scope": "common", + "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", + "section": "def-common.SavedObjectsClientContract", + "text": "SavedObjectsClientContract" + } + ], + "path": "x-pack/plugins/fleet/server/services/agent_policy.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.AgentPolicyServiceInterface.bumpRevision.$2", + "type": "Object", + "tags": [], + "label": "esClient", + "description": [], + "signature": [ + "{ create: { (this: That, params: ", + "CreateRequest", + " | ", + "CreateRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "WriteResponseBase", + ">; (this: That, params: ", + "CreateRequest", + " | ", + "CreateRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "WriteResponseBase", + ", unknown>>; (this: That, params: ", + "CreateRequest", + " | ", + "CreateRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "WriteResponseBase", + ">; }; update: { (this: That, params: ", + "UpdateRequest", + " | ", + "UpdateRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "UpdateResponse", + ">; (this: That, params: ", + "UpdateRequest", + " | ", + "UpdateRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "UpdateResponse", + ", unknown>>; (this: That, params: ", + "UpdateRequest", + " | ", + "UpdateRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "UpdateResponse", + ">; }; get: { (this: That, params: ", + "GetRequest", + " | ", + "GetRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetResponse", + ">; (this: That, params: ", + "GetRequest", + " | ", + "GetRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetResponse", + ", unknown>>; (this: That, params: ", + "GetRequest", + " | ", + "GetRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetResponse", + ">; }; delete: { (this: That, params: ", + "DeleteRequest", + " | ", + "DeleteRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "WriteResponseBase", + ">; (this: That, params: ", + "DeleteRequest", + " | ", + "DeleteRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "WriteResponseBase", + ", unknown>>; (this: That, params: ", + "DeleteRequest", + " | ", + "DeleteRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "WriteResponseBase", + ">; }; search: { >(this: That, params?: ", + "SearchRequest", + " | ", + "SearchRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "SearchResponse", + ">; >(this: That, params?: ", + "SearchRequest", + " | ", + "SearchRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "SearchResponse", + ", unknown>>; >(this: That, params?: ", + "SearchRequest", + " | ", + "SearchRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "SearchResponse", + ">; }; helpers: ", + "default", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "default", + "; child: (opts: ", + "ClientOptions", + ") => ", + "default", + "; asyncSearch: ", + "default", + "; autoscaling: ", + "default", + "; bulk: { (this: That, params: ", + "BulkRequest", + " | ", + "BulkRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "BulkResponse", + ">; (this: That, params: ", + "BulkRequest", + " | ", + "BulkRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "BulkResponse", + ", unknown>>; (this: That, params: ", + "BulkRequest", + " | ", + "BulkRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "BulkResponse", + ">; }; cat: ", + "default", + "; ccr: ", + "default", + "; clearScroll: { (this: That, params?: ", + "ClearScrollRequest", + " | ", + "ClearScrollRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ClearScrollResponse", + ">; (this: That, params?: ", + "ClearScrollRequest", + " | ", + "ClearScrollRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ClearScrollResponse", + ", unknown>>; (this: That, params?: ", + "ClearScrollRequest", + " | ", + "ClearScrollRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ClearScrollResponse", + ">; }; closePointInTime: { (this: That, params: ", + "ClosePointInTimeRequest", + " | ", + "ClosePointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ClosePointInTimeResponse", + ">; (this: That, params: ", + "ClosePointInTimeRequest", + " | ", + "ClosePointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ClosePointInTimeResponse", + ", unknown>>; (this: That, params: ", + "ClosePointInTimeRequest", + " | ", + "ClosePointInTimeRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ClosePointInTimeResponse", + ">; }; cluster: ", + "default", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", + "default", + "; deleteByQuery: { (this: That, params: ", + "DeleteByQueryRequest", + " | ", + "DeleteByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "DeleteByQueryResponse", + ">; (this: That, params: ", + "DeleteByQueryRequest", + " | ", + "DeleteByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "DeleteByQueryResponse", + ", unknown>>; (this: That, params: ", + "DeleteByQueryRequest", + " | ", + "DeleteByQueryRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "DeleteByQueryResponse", + ">; }; deleteByQueryRethrottle: { (this: That, params: ", + "DeleteByQueryRethrottleRequest", + " | ", + "DeleteByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "TasksTaskListResponseBase", + ">; (this: That, params: ", + "DeleteByQueryRethrottleRequest", + " | ", + "DeleteByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "TasksTaskListResponseBase", + ", unknown>>; (this: That, params: ", + "DeleteByQueryRethrottleRequest", + " | ", + "DeleteByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "TasksTaskListResponseBase", + ">; }; deleteScript: { (this: That, params: ", + "DeleteScriptRequest", + " | ", + "DeleteScriptRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; (this: That, params: ", + "DeleteScriptRequest", + " | ", + "DeleteScriptRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "AcknowledgedResponseBase", + ", unknown>>; (this: That, params: ", + "DeleteScriptRequest", + " | ", + "DeleteScriptRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; }; enrich: ", + "default", + "; eql: ", + "default", + "; exists: { (this: That, params: ", + "ExistsRequest", + " | ", + "ExistsRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "ExistsRequest", + " | ", + "ExistsRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "ExistsRequest", + " | ", + "ExistsRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; existsSource: { (this: That, params: ", + "ExistsSourceRequest", + " | ", + "ExistsSourceRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "ExistsSourceRequest", + " | ", + "ExistsSourceRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "ExistsSourceRequest", + " | ", + "ExistsSourceRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; explain: { (this: That, params: ", + "ExplainRequest", + " | ", + "ExplainRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ExplainResponse", + ">; (this: That, params: ", + "ExplainRequest", + " | ", + "ExplainRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ExplainResponse", + ", unknown>>; (this: That, params: ", + "ExplainRequest", + " | ", + "ExplainRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ExplainResponse", + ">; }; features: ", + "default", + "; fieldCaps: { (this: That, params?: ", + "FieldCapsRequest", + " | ", + "FieldCapsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "FieldCapsResponse", + ">; (this: That, params?: ", + "FieldCapsRequest", + " | ", + "FieldCapsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "FieldCapsResponse", + ", unknown>>; (this: That, params?: ", + "FieldCapsRequest", + " | ", + "FieldCapsRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "FieldCapsResponse", + ">; }; fleet: ", + "default", + "; getScript: { (this: That, params: ", + "GetScriptRequest", + " | ", + "GetScriptRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetScriptResponse", + ">; (this: That, params: ", + "GetScriptRequest", + " | ", + "GetScriptRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetScriptResponse", + ", unknown>>; (this: That, params: ", + "GetScriptRequest", + " | ", + "GetScriptRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetScriptResponse", + ">; }; getScriptContext: { (this: That, params?: ", + "GetScriptContextRequest", + " | ", + "GetScriptContextRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetScriptContextResponse", + ">; (this: That, params?: ", + "GetScriptContextRequest", + " | ", + "GetScriptContextRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetScriptContextResponse", + ", unknown>>; (this: That, params?: ", + "GetScriptContextRequest", + " | ", + "GetScriptContextRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetScriptContextResponse", + ">; }; getScriptLanguages: { (this: That, params?: ", + "GetScriptLanguagesRequest", + " | ", + "GetScriptLanguagesRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetScriptLanguagesResponse", + ">; (this: That, params?: ", + "GetScriptLanguagesRequest", + " | ", + "GetScriptLanguagesRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetScriptLanguagesResponse", + ", unknown>>; (this: That, params?: ", + "GetScriptLanguagesRequest", + " | ", + "GetScriptLanguagesRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetScriptLanguagesResponse", + ">; }; getSource: { (this: That, params: ", + "GetSourceRequest", + " | ", + "GetSourceRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "GetSourceRequest", + " | ", + "GetSourceRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "GetSourceRequest", + " | ", + "GetSourceRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; graph: ", + "default", + "; healthReport: { (this: That, params?: ", + "HealthReportRequest", + " | ", + "HealthReportRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "HealthReportResponse", + ">; (this: That, params?: ", + "HealthReportRequest", + " | ", + "HealthReportRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "HealthReportResponse", + ", unknown>>; (this: That, params?: ", + "HealthReportRequest", + " | ", + "HealthReportRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "HealthReportResponse", + ">; }; ilm: ", + "default", + "; index: { (this: That, params: ", + "IndexRequest", + " | ", + "IndexRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "WriteResponseBase", + ">; (this: That, params: ", + "IndexRequest", + " | ", + "IndexRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "WriteResponseBase", + ", unknown>>; (this: That, params: ", + "IndexRequest", + " | ", + "IndexRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "WriteResponseBase", + ">; }; indices: ", + "default", + "; info: { (this: That, params?: ", + "InfoRequest", + " | ", + "InfoRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "InfoResponse", + ">; (this: That, params?: ", + "InfoRequest", + " | ", + "InfoRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "InfoResponse", + ", unknown>>; (this: That, params?: ", + "InfoRequest", + " | ", + "InfoRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "InfoResponse", + ">; }; ingest: ", + "default", + "; knnSearch: { (this: That, params: ", + "KnnSearchRequest", + " | ", + "KnnSearchRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "KnnSearchResponse", + ">; (this: That, params: ", + "KnnSearchRequest", + " | ", + "KnnSearchRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "KnnSearchResponse", + ", unknown>>; (this: That, params: ", + "KnnSearchRequest", + " | ", + "KnnSearchRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "KnnSearchResponse", + ">; }; license: ", + "default", + "; logstash: ", + "default", + "; mget: { (this: That, params?: ", + "MgetRequest", + " | ", + "MgetRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MgetResponse", + ">; (this: That, params?: ", + "MgetRequest", + " | ", + "MgetRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MgetResponse", + ", unknown>>; (this: That, params?: ", + "MgetRequest", + " | ", + "MgetRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MgetResponse", + ">; }; migration: ", + "default", + "; ml: ", + "default", + "; monitoring: ", + "default", + "; msearch: { >(this: That, params: ", + "MsearchRequest", + " | ", + "MsearchRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MsearchResponse", + ">; >(this: That, params: ", + "MsearchRequest", + " | ", + "MsearchRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MsearchResponse", + ", unknown>>; >(this: That, params: ", + "MsearchRequest", + " | ", + "MsearchRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MsearchResponse", + ">; }; msearchTemplate: { >(this: That, params: ", + "MsearchTemplateRequest", + " | ", + "MsearchTemplateRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MsearchTemplateResponse", + ">; >(this: That, params: ", + "MsearchTemplateRequest", + " | ", + "MsearchTemplateRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MsearchTemplateResponse", + ", unknown>>; >(this: That, params: ", + "MsearchTemplateRequest", + " | ", + "MsearchTemplateRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MsearchTemplateResponse", + ">; }; mtermvectors: { (this: That, params?: ", + "MtermvectorsRequest", + " | ", + "MtermvectorsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MtermvectorsResponse", + ">; (this: That, params?: ", + "MtermvectorsRequest", + " | ", + "MtermvectorsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MtermvectorsResponse", + ", unknown>>; (this: That, params?: ", + "MtermvectorsRequest", + " | ", + "MtermvectorsRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MtermvectorsResponse", + ">; }; nodes: ", + "default", + "; openPointInTime: { (this: That, params: ", + "OpenPointInTimeRequest", + " | ", + "OpenPointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "OpenPointInTimeResponse", + ">; (this: That, params: ", + "OpenPointInTimeRequest", + " | ", + "OpenPointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "OpenPointInTimeResponse", + ", unknown>>; (this: That, params: ", + "OpenPointInTimeRequest", + " | ", + "OpenPointInTimeRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "OpenPointInTimeResponse", + ">; }; ping: { (this: That, params?: ", + "PingRequest", + " | ", + "PingRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params?: ", + "PingRequest", + " | ", + "PingRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params?: ", + "PingRequest", + " | ", + "PingRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; putScript: { (this: That, params: ", + "PutScriptRequest", + " | ", + "PutScriptRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; (this: That, params: ", + "PutScriptRequest", + " | ", + "PutScriptRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "AcknowledgedResponseBase", + ", unknown>>; (this: That, params: ", + "PutScriptRequest", + " | ", + "PutScriptRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; }; rankEval: { (this: That, params: ", + "RankEvalRequest", + " | ", + "RankEvalRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "RankEvalResponse", + ">; (this: That, params: ", + "RankEvalRequest", + " | ", + "RankEvalRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "RankEvalResponse", + ", unknown>>; (this: That, params: ", + "RankEvalRequest", + " | ", + "RankEvalRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "RankEvalResponse", + ">; }; reindex: { (this: That, params: ", + "ReindexRequest", + " | ", + "ReindexRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ReindexResponse", + ">; (this: That, params: ", + "ReindexRequest", + " | ", + "ReindexRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ReindexResponse", + ", unknown>>; (this: That, params: ", + "ReindexRequest", + " | ", + "ReindexRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ReindexResponse", + ">; }; reindexRethrottle: { (this: That, params: ", + "ReindexRethrottleRequest", + " | ", + "ReindexRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ReindexRethrottleResponse", + ">; (this: That, params: ", + "ReindexRethrottleRequest", + " | ", + "ReindexRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ReindexRethrottleResponse", + ", unknown>>; (this: That, params: ", + "ReindexRethrottleRequest", + " | ", + "ReindexRethrottleRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ReindexRethrottleResponse", + ">; }; renderSearchTemplate: { (this: That, params?: ", + "RenderSearchTemplateRequest", + " | ", + "RenderSearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "RenderSearchTemplateResponse", + ">; (this: That, params?: ", + "RenderSearchTemplateRequest", + " | ", + "RenderSearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "RenderSearchTemplateResponse", + ", unknown>>; (this: That, params?: ", + "RenderSearchTemplateRequest", + " | ", + "RenderSearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "RenderSearchTemplateResponse", + ">; }; rollup: ", + "default", + "; scriptsPainlessExecute: { (this: That, params?: ", + "ScriptsPainlessExecuteRequest", + " | ", + "ScriptsPainlessExecuteRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ScriptsPainlessExecuteResponse", + ">; (this: That, params?: ", + "ScriptsPainlessExecuteRequest", + " | ", + "ScriptsPainlessExecuteRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ScriptsPainlessExecuteResponse", + ", unknown>>; (this: That, params?: ", + "ScriptsPainlessExecuteRequest", + " | ", + "ScriptsPainlessExecuteRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ScriptsPainlessExecuteResponse", + ">; }; scroll: { >(this: That, params: ", + "ScrollRequest", + " | ", + "ScrollRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ScrollResponse", + ">; >(this: That, params: ", + "ScrollRequest", + " | ", + "ScrollRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ScrollResponse", + ", unknown>>; >(this: That, params: ", + "ScrollRequest", + " | ", + "ScrollRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ScrollResponse", + ">; }; searchApplication: ", + "default", + "; searchMvt: { (this: That, params: ", + "SearchMvtRequest", + " | ", + "SearchMvtRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "SearchMvtRequest", + " | ", + "SearchMvtRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "SearchMvtRequest", + " | ", + "SearchMvtRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; searchShards: { (this: That, params?: ", + "SearchShardsRequest", + " | ", + "SearchShardsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "SearchShardsResponse", + ">; (this: That, params?: ", + "SearchShardsRequest", + " | ", + "SearchShardsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "SearchShardsResponse", + ", unknown>>; (this: That, params?: ", + "SearchShardsRequest", + " | ", + "SearchShardsRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "SearchShardsResponse", + ">; }; searchTemplate: { (this: That, params?: ", + "SearchTemplateRequest", + " | ", + "SearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "SearchTemplateResponse", + ">; (this: That, params?: ", + "SearchTemplateRequest", + " | ", + "SearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "SearchTemplateResponse", + ", unknown>>; (this: That, params?: ", + "SearchTemplateRequest", + " | ", + "SearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "SearchTemplateResponse", + ">; }; searchableSnapshots: ", + "default", + "; security: ", + "default", + "; shutdown: ", + "default", + "; slm: ", + "default", + "; snapshot: ", + "default", + "; sql: ", + "default", + "; ssl: ", + "default", + "; synonyms: ", + "default", + "; tasks: ", + "default", + "; termsEnum: { (this: That, params: ", + "TermsEnumRequest", + " | ", + "TermsEnumRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "TermsEnumResponse", + ">; (this: That, params: ", + "TermsEnumRequest", + " | ", + "TermsEnumRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "TermsEnumResponse", + ", unknown>>; (this: That, params: ", + "TermsEnumRequest", + " | ", + "TermsEnumRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "TermsEnumResponse", + ">; }; termvectors: { (this: That, params: ", + "TermvectorsRequest", + " | ", + "TermvectorsRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "TermvectorsResponse", + ">; (this: That, params: ", + "TermvectorsRequest", + " | ", + "TermvectorsRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "TermvectorsResponse", + ", unknown>>; (this: That, params: ", + "TermvectorsRequest", + " | ", + "TermvectorsRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "TermvectorsResponse", + ">; }; textStructure: ", + "default", + "; transform: ", + "default", + "; updateByQuery: { (this: That, params: ", + "UpdateByQueryRequest", + " | ", + "UpdateByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "UpdateByQueryResponse", + ">; (this: That, params: ", + "UpdateByQueryRequest", + " | ", + "UpdateByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "UpdateByQueryResponse", + ", unknown>>; (this: That, params: ", + "UpdateByQueryRequest", + " | ", + "UpdateByQueryRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "UpdateByQueryResponse", + ">; }; updateByQueryRethrottle: { (this: That, params: ", + "UpdateByQueryRethrottleRequest", + " | ", + "UpdateByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "UpdateByQueryRethrottleResponse", + ">; (this: That, params: ", + "UpdateByQueryRethrottleRequest", + " | ", + "UpdateByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "UpdateByQueryRethrottleResponse", + ", unknown>>; (this: That, params: ", + "UpdateByQueryRethrottleRequest", + " | ", + "UpdateByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "UpdateByQueryRethrottleResponse", + ">; }; watcher: ", + "default", + "; xpack: ", + "default", + "; }" + ], + "path": "x-pack/plugins/fleet/server/services/agent_policy.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.AgentPolicyServiceInterface.bumpRevision.$3", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "x-pack/plugins/fleet/server/services/agent_policy.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "fleet", + "id": "def-server.AgentPolicyServiceInterface.bumpRevision.$4", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "{ user?: ", + { + "pluginId": "@kbn/security-plugin-types-common", + "scope": "common", + "docId": "kibKbnSecurityPluginTypesCommonPluginApi", + "section": "def-common.AuthenticatedUser", + "text": "AuthenticatedUser" + }, + " | undefined; removeProtection?: boolean | undefined; } | undefined" + ], + "path": "x-pack/plugins/fleet/server/services/agent_policy.ts", + "deprecated": false, + "trackAdoption": false + } + ] } ], "initialIsOpen": false @@ -5731,98 +7069,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "fleet", - "id": "def-server.ESIndexPatternService", - "type": "Interface", - "tags": [], - "label": "ESIndexPatternService", - "description": [ - "\nService to return the index pattern of EPM packages" - ], - "path": "x-pack/plugins/fleet/server/services/index.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "fleet", - "id": "def-server.ESIndexPatternService.getESIndexPattern", - "type": "Function", - "tags": [], - "label": "getESIndexPattern", - "description": [], - "signature": [ - "(savedObjectsClient: ", - { - "pluginId": "@kbn/core-saved-objects-api-server", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", - "section": "def-common.SavedObjectsClientContract", - "text": "SavedObjectsClientContract" - }, - ", pkgName: string, datasetPath: string) => Promise" - ], - "path": "x-pack/plugins/fleet/server/services/index.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "fleet", - "id": "def-server.ESIndexPatternService.getESIndexPattern.$1", - "type": "Object", - "tags": [], - "label": "savedObjectsClient", - "description": [], - "signature": [ - { - "pluginId": "@kbn/core-saved-objects-api-server", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", - "section": "def-common.SavedObjectsClientContract", - "text": "SavedObjectsClientContract" - } - ], - "path": "x-pack/plugins/fleet/server/services/index.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "fleet", - "id": "def-server.ESIndexPatternService.getESIndexPattern.$2", - "type": "string", - "tags": [], - "label": "pkgName", - "description": [], - "signature": [ - "string" - ], - "path": "x-pack/plugins/fleet/server/services/index.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "fleet", - "id": "def-server.ESIndexPatternService.getESIndexPattern.$3", - "type": "string", - "tags": [], - "label": "datasetPath", - "description": [], - "signature": [ - "string" - ], - "path": "x-pack/plugins/fleet/server/services/index.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "fleet", "id": "def-server.FleetFile", @@ -9411,7 +10657,7 @@ "label": "runExternalCallbacks", "description": [], "signature": [ - "(externalCallbackType: A, packagePolicy: A extends \"packagePolicyDelete\" ? ", + "(externalCallbackType: A, packagePolicy: A extends \"packagePolicyDelete\" ? ", "DeletePackagePoliciesResponse", " : A extends \"packagePolicyPostDelete\" ? ", { @@ -10166,7 +11412,11 @@ " | ", "ExternalCallbackPostDelete", " | ", - "ExternalCallbackUpdate" + "ExternalCallbackUpdate", + " | ", + "ExternalCallbackAgentPolicyCreate", + " | ", + "ExternalCallbackAgentPolicyUpdate" ], "path": "x-pack/plugins/fleet/server/types/extensions.ts", "deprecated": false, @@ -17156,26 +18406,6 @@ "deprecated": false, "trackAdoption": false }, - { - "parentPluginId": "fleet", - "id": "def-server.FleetStartContract.esIndexPatternService", - "type": "Object", - "tags": [], - "label": "esIndexPatternService", - "description": [], - "signature": [ - { - "pluginId": "fleet", - "scope": "server", - "docId": "kibFleetPluginApi", - "section": "def-server.ESIndexPatternService", - "text": "ESIndexPatternService" - } - ], - "path": "x-pack/plugins/fleet/server/plugin.ts", - "deprecated": false, - "trackAdoption": false - }, { "parentPluginId": "fleet", "id": "def-server.FleetStartContract.packageService", diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index efb0b9bc427303..3e24971745fb4e 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1222 | 3 | 1104 | 48 | +| 1221 | 3 | 1104 | 51 | ## Client diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 5ce61b8569d6d1..63b3f7f82a14ba 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: 2024-01-31 +date: 2024-02-05 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 ec230758dc9492..087f4670f228e4 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: 2024-01-31 +date: 2024-02-05 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 311f60bc40853b..ffb69b5f08e87f 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: 2024-01-31 +date: 2024-02-05 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 0fb1126eeb0052..43a1ba9138d7a1 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: 2024-01-31 +date: 2024-02-05 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 5ca80f21633158..c1d559b6f98ebd 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: 2024-01-31 +date: 2024-02-05 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 62e9d3534fc44b..31cc7cab04a6de 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: 2024-01-31 +date: 2024-02-05 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 f9e38284b1c441..72fc5909eeb7fc 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index 8211d4d5a88b6b..71f0fb2b177cdf 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 151182ccbd42e6..d174ae3ddb3895 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: 2024-01-31 +date: 2024-02-05 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 3b2905dd572f58..0a28b1590a062f 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: 2024-01-31 +date: 2024-02-05 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 8bdcec34c0ffdf..d5cca622437af6 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index 457c52017f607f..e8266c0a457751 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 2026e8265f3afa..4ef79e9c9675b8 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: 2024-01-31 +date: 2024-02-05 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 b39c18c5bf0e5c..59145cb86b901b 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: 2024-01-31 +date: 2024-02-05 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 61494b141c4395..1400e923b12279 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: 2024-01-31 +date: 2024-02-05 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 d83c067ec1cf2f..78d689d8819bb3 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index e88444426ab5d4..aa5b0923693eb4 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.devdocs.json b/api_docs/kbn_alerts_as_data_utils.devdocs.json index 71dbddfe339df9..9560601f860d90 100644 --- a/api_docs/kbn_alerts_as_data_utils.devdocs.json +++ b/api_docs/kbn_alerts_as_data_utils.devdocs.json @@ -196,7 +196,7 @@ "label": "AADAlert", "description": [], "signature": [ - "({ '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; }) | ({} & {} & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; }) | ({} & { 'agent.name'?: string | undefined; 'error.grouping_key'?: string | undefined; 'error.grouping_name'?: string | undefined; 'kibana.alert.context'?: unknown; 'kibana.alert.evaluation.threshold'?: string | number | undefined; 'kibana.alert.evaluation.value'?: string | number | undefined; 'kibana.alert.evaluation.values'?: (string | number)[] | undefined; 'kibana.alert.group'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; labels?: unknown; 'processor.event'?: string | undefined; 'service.environment'?: string | undefined; 'service.language.name'?: string | undefined; 'service.name'?: string | undefined; 'transaction.name'?: string | undefined; 'transaction.type'?: string | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }) | ({} & { 'kibana.alert.context'?: unknown; 'kibana.alert.evaluation.threshold'?: string | number | undefined; 'kibana.alert.evaluation.value'?: string | number | undefined; 'kibana.alert.evaluation.values'?: (string | number)[] | undefined; 'kibana.alert.group'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & { '@timestamp': string | number; 'ecs.version': string; } & { 'agent.build.original'?: string | undefined; 'agent.ephemeral_id'?: string | undefined; 'agent.id'?: string | undefined; 'agent.name'?: string | undefined; 'agent.type'?: string | undefined; 'agent.version'?: string | undefined; 'client.address'?: string | undefined; 'client.as.number'?: string | number | undefined; 'client.as.organization.name'?: string | undefined; 'client.bytes'?: string | number | undefined; 'client.domain'?: string | undefined; 'client.geo.city_name'?: string | undefined; 'client.geo.continent_code'?: string | undefined; 'client.geo.continent_name'?: string | undefined; 'client.geo.country_iso_code'?: string | undefined; 'client.geo.country_name'?: string | undefined; 'client.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'client.geo.name'?: string | undefined; 'client.geo.postal_code'?: string | undefined; 'client.geo.region_iso_code'?: string | undefined; 'client.geo.region_name'?: string | undefined; 'client.geo.timezone'?: string | undefined; 'client.ip'?: string | undefined; 'client.mac'?: string | undefined; 'client.nat.ip'?: string | undefined; 'client.nat.port'?: string | number | undefined; 'client.packets'?: string | number | undefined; 'client.port'?: string | number | undefined; 'client.registered_domain'?: string | undefined; 'client.subdomain'?: string | undefined; 'client.top_level_domain'?: string | undefined; 'client.user.domain'?: string | undefined; 'client.user.email'?: string | undefined; 'client.user.full_name'?: string | undefined; 'client.user.group.domain'?: string | undefined; 'client.user.group.id'?: string | undefined; 'client.user.group.name'?: string | undefined; 'client.user.hash'?: string | undefined; 'client.user.id'?: string | undefined; 'client.user.name'?: string | undefined; 'client.user.roles'?: string[] | undefined; 'cloud.account.id'?: string | undefined; 'cloud.account.name'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.instance.id'?: string | undefined; 'cloud.instance.name'?: string | undefined; 'cloud.machine.type'?: string | undefined; 'cloud.origin.account.id'?: string | undefined; 'cloud.origin.account.name'?: string | undefined; 'cloud.origin.availability_zone'?: string | undefined; 'cloud.origin.instance.id'?: string | undefined; 'cloud.origin.instance.name'?: string | undefined; 'cloud.origin.machine.type'?: string | undefined; 'cloud.origin.project.id'?: string | undefined; 'cloud.origin.project.name'?: string | undefined; 'cloud.origin.provider'?: string | undefined; 'cloud.origin.region'?: string | undefined; 'cloud.origin.service.name'?: string | undefined; 'cloud.project.id'?: string | undefined; 'cloud.project.name'?: string | undefined; 'cloud.provider'?: string | undefined; 'cloud.region'?: string | undefined; 'cloud.service.name'?: string | undefined; 'cloud.target.account.id'?: string | undefined; 'cloud.target.account.name'?: string | undefined; 'cloud.target.availability_zone'?: string | undefined; 'cloud.target.instance.id'?: string | undefined; 'cloud.target.instance.name'?: string | undefined; 'cloud.target.machine.type'?: string | undefined; 'cloud.target.project.id'?: string | undefined; 'cloud.target.project.name'?: string | undefined; 'cloud.target.provider'?: string | undefined; 'cloud.target.region'?: string | undefined; 'cloud.target.service.name'?: string | undefined; 'container.cpu.usage'?: string | number | undefined; 'container.disk.read.bytes'?: string | number | undefined; 'container.disk.write.bytes'?: string | number | undefined; 'container.id'?: string | undefined; 'container.image.hash.all'?: string[] | undefined; 'container.image.name'?: string | undefined; 'container.image.tag'?: string[] | undefined; 'container.labels'?: unknown; 'container.memory.usage'?: string | number | undefined; 'container.name'?: string | undefined; 'container.network.egress.bytes'?: string | number | undefined; 'container.network.ingress.bytes'?: string | number | undefined; 'container.runtime'?: string | undefined; 'destination.address'?: string | undefined; 'destination.as.number'?: string | number | undefined; 'destination.as.organization.name'?: string | undefined; 'destination.bytes'?: string | number | undefined; 'destination.domain'?: string | undefined; 'destination.geo.city_name'?: string | undefined; 'destination.geo.continent_code'?: string | undefined; 'destination.geo.continent_name'?: string | undefined; 'destination.geo.country_iso_code'?: string | undefined; 'destination.geo.country_name'?: string | undefined; 'destination.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'destination.geo.name'?: string | undefined; 'destination.geo.postal_code'?: string | undefined; 'destination.geo.region_iso_code'?: string | undefined; 'destination.geo.region_name'?: string | undefined; 'destination.geo.timezone'?: string | undefined; 'destination.ip'?: string | undefined; 'destination.mac'?: string | undefined; 'destination.nat.ip'?: string | undefined; 'destination.nat.port'?: string | number | undefined; 'destination.packets'?: string | number | undefined; 'destination.port'?: string | number | undefined; 'destination.registered_domain'?: string | undefined; 'destination.subdomain'?: string | undefined; 'destination.top_level_domain'?: string | undefined; 'destination.user.domain'?: string | undefined; 'destination.user.email'?: string | undefined; 'destination.user.full_name'?: string | undefined; 'destination.user.group.domain'?: string | undefined; 'destination.user.group.id'?: string | undefined; 'destination.user.group.name'?: string | undefined; 'destination.user.hash'?: string | undefined; 'destination.user.id'?: string | undefined; 'destination.user.name'?: string | undefined; 'destination.user.roles'?: string[] | undefined; 'device.id'?: string | undefined; 'device.manufacturer'?: string | undefined; 'device.model.identifier'?: string | undefined; 'device.model.name'?: string | undefined; 'dll.code_signature.digest_algorithm'?: string | undefined; 'dll.code_signature.exists'?: boolean | undefined; 'dll.code_signature.signing_id'?: string | undefined; 'dll.code_signature.status'?: string | undefined; 'dll.code_signature.subject_name'?: string | undefined; 'dll.code_signature.team_id'?: string | undefined; 'dll.code_signature.timestamp'?: string | number | undefined; 'dll.code_signature.trusted'?: boolean | undefined; 'dll.code_signature.valid'?: boolean | undefined; 'dll.hash.md5'?: string | undefined; 'dll.hash.sha1'?: string | undefined; 'dll.hash.sha256'?: string | undefined; 'dll.hash.sha384'?: string | undefined; 'dll.hash.sha512'?: string | undefined; 'dll.hash.ssdeep'?: string | undefined; 'dll.hash.tlsh'?: string | undefined; 'dll.name'?: string | undefined; 'dll.path'?: string | undefined; 'dll.pe.architecture'?: string | undefined; 'dll.pe.company'?: string | undefined; 'dll.pe.description'?: string | undefined; 'dll.pe.file_version'?: string | undefined; 'dll.pe.imphash'?: string | undefined; 'dll.pe.original_file_name'?: string | undefined; 'dll.pe.pehash'?: string | undefined; 'dll.pe.product'?: string | undefined; 'dns.answers'?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; 'dns.header_flags'?: string[] | undefined; 'dns.id'?: string | undefined; 'dns.op_code'?: string | undefined; 'dns.question.class'?: string | undefined; 'dns.question.name'?: string | undefined; 'dns.question.registered_domain'?: string | undefined; 'dns.question.subdomain'?: string | undefined; 'dns.question.top_level_domain'?: string | undefined; 'dns.question.type'?: string | undefined; 'dns.resolved_ip'?: string[] | undefined; 'dns.response_code'?: string | undefined; 'dns.type'?: string | undefined; 'email.attachments'?: { 'file.extension'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.name'?: string | undefined; 'file.size'?: string | number | undefined; }[] | undefined; 'email.bcc.address'?: string[] | undefined; 'email.cc.address'?: string[] | undefined; 'email.content_type'?: string | undefined; 'email.delivery_timestamp'?: string | number | undefined; 'email.direction'?: string | undefined; 'email.from.address'?: string[] | undefined; 'email.local_id'?: string | undefined; 'email.message_id'?: string | undefined; 'email.origination_timestamp'?: string | number | undefined; 'email.reply_to.address'?: string[] | undefined; 'email.sender.address'?: string | undefined; 'email.subject'?: string | undefined; 'email.to.address'?: string[] | undefined; 'email.x_mailer'?: string | undefined; 'error.code'?: string | undefined; 'error.id'?: string | undefined; 'error.message'?: string | undefined; 'error.stack_trace'?: string | undefined; 'error.type'?: string | undefined; 'event.action'?: string | undefined; 'event.agent_id_status'?: string | undefined; 'event.category'?: string[] | undefined; 'event.code'?: string | undefined; 'event.created'?: string | number | undefined; 'event.dataset'?: string | undefined; 'event.duration'?: string | number | undefined; 'event.end'?: string | number | undefined; 'event.hash'?: string | undefined; 'event.id'?: string | undefined; 'event.ingested'?: string | number | undefined; 'event.kind'?: string | undefined; 'event.module'?: string | undefined; 'event.original'?: string | undefined; 'event.outcome'?: string | undefined; 'event.provider'?: string | undefined; 'event.reason'?: string | undefined; 'event.reference'?: string | undefined; 'event.risk_score'?: number | undefined; 'event.risk_score_norm'?: number | undefined; 'event.sequence'?: string | number | undefined; 'event.severity'?: string | number | undefined; 'event.start'?: string | number | undefined; 'event.timezone'?: string | undefined; 'event.type'?: string[] | undefined; 'event.url'?: string | undefined; 'faas.coldstart'?: boolean | undefined; 'faas.execution'?: string | undefined; 'faas.id'?: string | undefined; 'faas.name'?: string | undefined; 'faas.version'?: string | undefined; 'file.accessed'?: string | number | undefined; 'file.attributes'?: string[] | undefined; 'file.code_signature.digest_algorithm'?: string | undefined; 'file.code_signature.exists'?: boolean | undefined; 'file.code_signature.signing_id'?: string | undefined; 'file.code_signature.status'?: string | undefined; 'file.code_signature.subject_name'?: string | undefined; 'file.code_signature.team_id'?: string | undefined; 'file.code_signature.timestamp'?: string | number | undefined; 'file.code_signature.trusted'?: boolean | undefined; 'file.code_signature.valid'?: boolean | undefined; 'file.created'?: string | number | undefined; 'file.ctime'?: string | number | undefined; 'file.device'?: string | undefined; 'file.directory'?: string | undefined; 'file.drive_letter'?: string | undefined; 'file.elf.architecture'?: string | undefined; 'file.elf.byte_order'?: string | undefined; 'file.elf.cpu_type'?: string | undefined; 'file.elf.creation_date'?: string | number | undefined; 'file.elf.exports'?: unknown[] | undefined; 'file.elf.header.abi_version'?: string | undefined; 'file.elf.header.class'?: string | undefined; 'file.elf.header.data'?: string | undefined; 'file.elf.header.entrypoint'?: string | number | undefined; 'file.elf.header.object_version'?: string | undefined; 'file.elf.header.os_abi'?: string | undefined; 'file.elf.header.type'?: string | undefined; 'file.elf.header.version'?: string | undefined; 'file.elf.imports'?: unknown[] | undefined; 'file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'file.elf.shared_libraries'?: string[] | undefined; 'file.elf.telfhash'?: string | undefined; 'file.extension'?: string | undefined; 'file.fork_name'?: string | undefined; 'file.gid'?: string | undefined; 'file.group'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.inode'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.mode'?: string | undefined; 'file.mtime'?: string | number | undefined; 'file.name'?: string | undefined; 'file.owner'?: string | undefined; 'file.path'?: string | undefined; 'file.pe.architecture'?: string | undefined; 'file.pe.company'?: string | undefined; 'file.pe.description'?: string | undefined; 'file.pe.file_version'?: string | undefined; 'file.pe.imphash'?: string | undefined; 'file.pe.original_file_name'?: string | undefined; 'file.pe.pehash'?: string | undefined; 'file.pe.product'?: string | undefined; 'file.size'?: string | number | undefined; 'file.target_path'?: string | undefined; 'file.type'?: string | undefined; 'file.uid'?: string | undefined; 'file.x509.alternative_names'?: string[] | undefined; 'file.x509.issuer.common_name'?: string[] | undefined; 'file.x509.issuer.country'?: string[] | undefined; 'file.x509.issuer.distinguished_name'?: string | undefined; 'file.x509.issuer.locality'?: string[] | undefined; 'file.x509.issuer.organization'?: string[] | undefined; 'file.x509.issuer.organizational_unit'?: string[] | undefined; 'file.x509.issuer.state_or_province'?: string[] | undefined; 'file.x509.not_after'?: string | number | undefined; 'file.x509.not_before'?: string | number | undefined; 'file.x509.public_key_algorithm'?: string | undefined; 'file.x509.public_key_curve'?: string | undefined; 'file.x509.public_key_exponent'?: string | number | undefined; 'file.x509.public_key_size'?: string | number | undefined; 'file.x509.serial_number'?: string | undefined; 'file.x509.signature_algorithm'?: string | undefined; 'file.x509.subject.common_name'?: string[] | undefined; 'file.x509.subject.country'?: string[] | undefined; 'file.x509.subject.distinguished_name'?: string | undefined; 'file.x509.subject.locality'?: string[] | undefined; 'file.x509.subject.organization'?: string[] | undefined; 'file.x509.subject.organizational_unit'?: string[] | undefined; 'file.x509.subject.state_or_province'?: string[] | undefined; 'file.x509.version_number'?: string | undefined; 'group.domain'?: string | undefined; 'group.id'?: string | undefined; 'group.name'?: string | undefined; 'host.architecture'?: string | undefined; 'host.boot.id'?: string | undefined; 'host.cpu.usage'?: string | number | undefined; 'host.disk.read.bytes'?: string | number | undefined; 'host.disk.write.bytes'?: string | number | undefined; 'host.domain'?: string | undefined; 'host.geo.city_name'?: string | undefined; 'host.geo.continent_code'?: string | undefined; 'host.geo.continent_name'?: string | undefined; 'host.geo.country_iso_code'?: string | undefined; 'host.geo.country_name'?: string | undefined; 'host.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'host.geo.name'?: string | undefined; 'host.geo.postal_code'?: string | undefined; 'host.geo.region_iso_code'?: string | undefined; 'host.geo.region_name'?: string | undefined; 'host.geo.timezone'?: string | undefined; 'host.hostname'?: string | undefined; 'host.id'?: string | undefined; 'host.ip'?: string[] | undefined; 'host.mac'?: string[] | undefined; 'host.name'?: string | undefined; 'host.network.egress.bytes'?: string | number | undefined; 'host.network.egress.packets'?: string | number | undefined; 'host.network.ingress.bytes'?: string | number | undefined; 'host.network.ingress.packets'?: string | number | undefined; 'host.os.family'?: string | undefined; 'host.os.full'?: string | undefined; 'host.os.kernel'?: string | undefined; 'host.os.name'?: string | undefined; 'host.os.platform'?: string | undefined; 'host.os.type'?: string | undefined; 'host.os.version'?: string | undefined; 'host.pid_ns_ino'?: string | undefined; 'host.risk.calculated_level'?: string | undefined; 'host.risk.calculated_score'?: number | undefined; 'host.risk.calculated_score_norm'?: number | undefined; 'host.risk.static_level'?: string | undefined; 'host.risk.static_score'?: number | undefined; 'host.risk.static_score_norm'?: number | undefined; 'host.type'?: string | undefined; 'host.uptime'?: string | number | undefined; 'http.request.body.bytes'?: string | number | undefined; 'http.request.body.content'?: string | undefined; 'http.request.bytes'?: string | number | undefined; 'http.request.id'?: string | undefined; 'http.request.method'?: string | undefined; 'http.request.mime_type'?: string | undefined; 'http.request.referrer'?: string | undefined; 'http.response.body.bytes'?: string | number | undefined; 'http.response.body.content'?: string | undefined; 'http.response.bytes'?: string | number | undefined; 'http.response.mime_type'?: string | undefined; 'http.response.status_code'?: string | number | undefined; 'http.version'?: string | undefined; labels?: unknown; 'log.file.path'?: string | undefined; 'log.level'?: string | undefined; 'log.logger'?: string | undefined; 'log.origin.file.line'?: string | number | undefined; 'log.origin.file.name'?: string | undefined; 'log.origin.function'?: string | undefined; 'log.syslog'?: unknown; message?: string | undefined; 'network.application'?: string | undefined; 'network.bytes'?: string | number | undefined; 'network.community_id'?: string | undefined; 'network.direction'?: string | undefined; 'network.forwarded_ip'?: string | undefined; 'network.iana_number'?: string | undefined; 'network.inner'?: unknown; 'network.name'?: string | undefined; 'network.packets'?: string | number | undefined; 'network.protocol'?: string | undefined; 'network.transport'?: string | undefined; 'network.type'?: string | undefined; 'network.vlan.id'?: string | undefined; 'network.vlan.name'?: string | undefined; 'observer.egress'?: unknown; 'observer.geo.city_name'?: string | undefined; 'observer.geo.continent_code'?: string | undefined; 'observer.geo.continent_name'?: string | undefined; 'observer.geo.country_iso_code'?: string | undefined; 'observer.geo.country_name'?: string | undefined; 'observer.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'observer.geo.name'?: string | undefined; 'observer.geo.postal_code'?: string | undefined; 'observer.geo.region_iso_code'?: string | undefined; 'observer.geo.region_name'?: string | undefined; 'observer.geo.timezone'?: string | undefined; 'observer.hostname'?: string | undefined; 'observer.ingress'?: unknown; 'observer.ip'?: string[] | undefined; 'observer.mac'?: string[] | undefined; 'observer.name'?: string | undefined; 'observer.os.family'?: string | undefined; 'observer.os.full'?: string | undefined; 'observer.os.kernel'?: string | undefined; 'observer.os.name'?: string | undefined; 'observer.os.platform'?: string | undefined; 'observer.os.type'?: string | undefined; 'observer.os.version'?: string | undefined; 'observer.product'?: string | undefined; 'observer.serial_number'?: string | undefined; 'observer.type'?: string | undefined; 'observer.vendor'?: string | undefined; 'observer.version'?: string | undefined; 'orchestrator.api_version'?: string | undefined; 'orchestrator.cluster.id'?: string | undefined; 'orchestrator.cluster.name'?: string | undefined; 'orchestrator.cluster.url'?: string | undefined; 'orchestrator.cluster.version'?: string | undefined; 'orchestrator.namespace'?: string | undefined; 'orchestrator.organization'?: string | undefined; 'orchestrator.resource.id'?: string | undefined; 'orchestrator.resource.ip'?: string[] | undefined; 'orchestrator.resource.name'?: string | undefined; 'orchestrator.resource.parent.type'?: string | undefined; 'orchestrator.resource.type'?: string | undefined; 'orchestrator.type'?: string | undefined; 'organization.id'?: string | undefined; 'organization.name'?: string | undefined; 'package.architecture'?: string | undefined; 'package.build_version'?: string | undefined; 'package.checksum'?: string | undefined; 'package.description'?: string | undefined; 'package.install_scope'?: string | undefined; 'package.installed'?: string | number | undefined; 'package.license'?: string | undefined; 'package.name'?: string | undefined; 'package.path'?: string | undefined; 'package.reference'?: string | undefined; 'package.size'?: string | number | undefined; 'package.type'?: string | undefined; 'package.version'?: string | undefined; 'process.args'?: string[] | undefined; 'process.args_count'?: string | number | undefined; 'process.code_signature.digest_algorithm'?: string | undefined; 'process.code_signature.exists'?: boolean | undefined; 'process.code_signature.signing_id'?: string | undefined; 'process.code_signature.status'?: string | undefined; 'process.code_signature.subject_name'?: string | undefined; 'process.code_signature.team_id'?: string | undefined; 'process.code_signature.timestamp'?: string | number | undefined; 'process.code_signature.trusted'?: boolean | undefined; 'process.code_signature.valid'?: boolean | undefined; 'process.command_line'?: string | undefined; 'process.elf.architecture'?: string | undefined; 'process.elf.byte_order'?: string | undefined; 'process.elf.cpu_type'?: string | undefined; 'process.elf.creation_date'?: string | number | undefined; 'process.elf.exports'?: unknown[] | undefined; 'process.elf.header.abi_version'?: string | undefined; 'process.elf.header.class'?: string | undefined; 'process.elf.header.data'?: string | undefined; 'process.elf.header.entrypoint'?: string | number | undefined; 'process.elf.header.object_version'?: string | undefined; 'process.elf.header.os_abi'?: string | undefined; 'process.elf.header.type'?: string | undefined; 'process.elf.header.version'?: string | undefined; 'process.elf.imports'?: unknown[] | undefined; 'process.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.elf.shared_libraries'?: string[] | undefined; 'process.elf.telfhash'?: string | undefined; 'process.end'?: string | number | undefined; 'process.entity_id'?: string | undefined; 'process.entry_leader.args'?: string[] | undefined; 'process.entry_leader.args_count'?: string | number | undefined; 'process.entry_leader.attested_groups.name'?: string | undefined; 'process.entry_leader.attested_user.id'?: string | undefined; 'process.entry_leader.attested_user.name'?: string | undefined; 'process.entry_leader.command_line'?: string | undefined; 'process.entry_leader.entity_id'?: string | undefined; 'process.entry_leader.entry_meta.source.ip'?: string | undefined; 'process.entry_leader.entry_meta.type'?: string | undefined; 'process.entry_leader.executable'?: string | undefined; 'process.entry_leader.group.id'?: string | undefined; 'process.entry_leader.group.name'?: string | undefined; 'process.entry_leader.interactive'?: boolean | undefined; 'process.entry_leader.name'?: string | undefined; 'process.entry_leader.parent.entity_id'?: string | undefined; 'process.entry_leader.parent.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.entity_id'?: string | undefined; 'process.entry_leader.parent.session_leader.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.start'?: string | number | undefined; 'process.entry_leader.parent.start'?: string | number | undefined; 'process.entry_leader.pid'?: string | number | undefined; 'process.entry_leader.real_group.id'?: string | undefined; 'process.entry_leader.real_group.name'?: string | undefined; 'process.entry_leader.real_user.id'?: string | undefined; 'process.entry_leader.real_user.name'?: string | undefined; 'process.entry_leader.same_as_process'?: boolean | undefined; 'process.entry_leader.saved_group.id'?: string | undefined; 'process.entry_leader.saved_group.name'?: string | undefined; 'process.entry_leader.saved_user.id'?: string | undefined; 'process.entry_leader.saved_user.name'?: string | undefined; 'process.entry_leader.start'?: string | number | undefined; 'process.entry_leader.supplemental_groups.id'?: string | undefined; 'process.entry_leader.supplemental_groups.name'?: string | undefined; 'process.entry_leader.tty'?: unknown; 'process.entry_leader.user.id'?: string | undefined; 'process.entry_leader.user.name'?: string | undefined; 'process.entry_leader.working_directory'?: string | undefined; 'process.env_vars'?: string[] | undefined; 'process.executable'?: string | undefined; 'process.exit_code'?: string | number | undefined; 'process.group_leader.args'?: string[] | undefined; 'process.group_leader.args_count'?: string | number | undefined; 'process.group_leader.command_line'?: string | undefined; 'process.group_leader.entity_id'?: string | undefined; 'process.group_leader.executable'?: string | undefined; 'process.group_leader.group.id'?: string | undefined; 'process.group_leader.group.name'?: string | undefined; 'process.group_leader.interactive'?: boolean | undefined; 'process.group_leader.name'?: string | undefined; 'process.group_leader.pid'?: string | number | undefined; 'process.group_leader.real_group.id'?: string | undefined; 'process.group_leader.real_group.name'?: string | undefined; 'process.group_leader.real_user.id'?: string | undefined; 'process.group_leader.real_user.name'?: string | undefined; 'process.group_leader.same_as_process'?: boolean | undefined; 'process.group_leader.saved_group.id'?: string | undefined; 'process.group_leader.saved_group.name'?: string | undefined; 'process.group_leader.saved_user.id'?: string | undefined; 'process.group_leader.saved_user.name'?: string | undefined; 'process.group_leader.start'?: string | number | undefined; 'process.group_leader.supplemental_groups.id'?: string | undefined; 'process.group_leader.supplemental_groups.name'?: string | undefined; 'process.group_leader.tty'?: unknown; 'process.group_leader.user.id'?: string | undefined; 'process.group_leader.user.name'?: string | undefined; 'process.group_leader.working_directory'?: string | undefined; 'process.hash.md5'?: string | undefined; 'process.hash.sha1'?: string | undefined; 'process.hash.sha256'?: string | undefined; 'process.hash.sha384'?: string | undefined; 'process.hash.sha512'?: string | undefined; 'process.hash.ssdeep'?: string | undefined; 'process.hash.tlsh'?: string | undefined; 'process.interactive'?: boolean | undefined; 'process.io'?: unknown; 'process.name'?: string | undefined; 'process.parent.args'?: string[] | undefined; 'process.parent.args_count'?: string | number | undefined; 'process.parent.code_signature.digest_algorithm'?: string | undefined; 'process.parent.code_signature.exists'?: boolean | undefined; 'process.parent.code_signature.signing_id'?: string | undefined; 'process.parent.code_signature.status'?: string | undefined; 'process.parent.code_signature.subject_name'?: string | undefined; 'process.parent.code_signature.team_id'?: string | undefined; 'process.parent.code_signature.timestamp'?: string | number | undefined; 'process.parent.code_signature.trusted'?: boolean | undefined; 'process.parent.code_signature.valid'?: boolean | undefined; 'process.parent.command_line'?: string | undefined; 'process.parent.elf.architecture'?: string | undefined; 'process.parent.elf.byte_order'?: string | undefined; 'process.parent.elf.cpu_type'?: string | undefined; 'process.parent.elf.creation_date'?: string | number | undefined; 'process.parent.elf.exports'?: unknown[] | undefined; 'process.parent.elf.header.abi_version'?: string | undefined; 'process.parent.elf.header.class'?: string | undefined; 'process.parent.elf.header.data'?: string | undefined; 'process.parent.elf.header.entrypoint'?: string | number | undefined; 'process.parent.elf.header.object_version'?: string | undefined; 'process.parent.elf.header.os_abi'?: string | undefined; 'process.parent.elf.header.type'?: string | undefined; 'process.parent.elf.header.version'?: string | undefined; 'process.parent.elf.imports'?: unknown[] | undefined; 'process.parent.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.parent.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.parent.elf.shared_libraries'?: string[] | undefined; 'process.parent.elf.telfhash'?: string | undefined; 'process.parent.end'?: string | number | undefined; 'process.parent.entity_id'?: string | undefined; 'process.parent.executable'?: string | undefined; 'process.parent.exit_code'?: string | number | undefined; 'process.parent.group.id'?: string | undefined; 'process.parent.group.name'?: string | undefined; 'process.parent.group_leader.entity_id'?: string | undefined; 'process.parent.group_leader.pid'?: string | number | undefined; 'process.parent.group_leader.start'?: string | number | undefined; 'process.parent.hash.md5'?: string | undefined; 'process.parent.hash.sha1'?: string | undefined; 'process.parent.hash.sha256'?: string | undefined; 'process.parent.hash.sha384'?: string | undefined; 'process.parent.hash.sha512'?: string | undefined; 'process.parent.hash.ssdeep'?: string | undefined; 'process.parent.hash.tlsh'?: string | undefined; 'process.parent.interactive'?: boolean | undefined; 'process.parent.name'?: string | undefined; 'process.parent.pe.architecture'?: string | undefined; 'process.parent.pe.company'?: string | undefined; 'process.parent.pe.description'?: string | undefined; 'process.parent.pe.file_version'?: string | undefined; 'process.parent.pe.imphash'?: string | undefined; 'process.parent.pe.original_file_name'?: string | undefined; 'process.parent.pe.pehash'?: string | undefined; 'process.parent.pe.product'?: string | undefined; 'process.parent.pgid'?: string | number | undefined; 'process.parent.pid'?: string | number | undefined; 'process.parent.real_group.id'?: string | undefined; 'process.parent.real_group.name'?: string | undefined; 'process.parent.real_user.id'?: string | undefined; 'process.parent.real_user.name'?: string | undefined; 'process.parent.saved_group.id'?: string | undefined; 'process.parent.saved_group.name'?: string | undefined; 'process.parent.saved_user.id'?: string | undefined; 'process.parent.saved_user.name'?: string | undefined; 'process.parent.start'?: string | number | undefined; 'process.parent.supplemental_groups.id'?: string | undefined; 'process.parent.supplemental_groups.name'?: string | undefined; 'process.parent.thread.id'?: string | number | undefined; 'process.parent.thread.name'?: string | undefined; 'process.parent.title'?: string | undefined; 'process.parent.tty'?: unknown; 'process.parent.uptime'?: string | number | undefined; 'process.parent.user.id'?: string | undefined; 'process.parent.user.name'?: string | undefined; 'process.parent.working_directory'?: string | undefined; 'process.pe.architecture'?: string | undefined; 'process.pe.company'?: string | undefined; 'process.pe.description'?: string | undefined; 'process.pe.file_version'?: string | undefined; 'process.pe.imphash'?: string | undefined; 'process.pe.original_file_name'?: string | undefined; 'process.pe.pehash'?: string | undefined; 'process.pe.product'?: string | undefined; 'process.pgid'?: string | number | undefined; 'process.pid'?: string | number | undefined; 'process.previous.args'?: string[] | undefined; 'process.previous.args_count'?: string | number | undefined; 'process.previous.executable'?: string | undefined; 'process.real_group.id'?: string | undefined; 'process.real_group.name'?: string | undefined; 'process.real_user.id'?: string | undefined; 'process.real_user.name'?: string | undefined; 'process.saved_group.id'?: string | undefined; 'process.saved_group.name'?: string | undefined; 'process.saved_user.id'?: string | undefined; 'process.saved_user.name'?: string | undefined; 'process.session_leader.args'?: string[] | undefined; 'process.session_leader.args_count'?: string | number | undefined; 'process.session_leader.command_line'?: string | undefined; 'process.session_leader.entity_id'?: string | undefined; 'process.session_leader.executable'?: string | undefined; 'process.session_leader.group.id'?: string | undefined; 'process.session_leader.group.name'?: string | undefined; 'process.session_leader.interactive'?: boolean | undefined; 'process.session_leader.name'?: string | undefined; 'process.session_leader.parent.entity_id'?: string | undefined; 'process.session_leader.parent.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.entity_id'?: string | undefined; 'process.session_leader.parent.session_leader.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.start'?: string | number | undefined; 'process.session_leader.parent.start'?: string | number | undefined; 'process.session_leader.pid'?: string | number | undefined; 'process.session_leader.real_group.id'?: string | undefined; 'process.session_leader.real_group.name'?: string | undefined; 'process.session_leader.real_user.id'?: string | undefined; 'process.session_leader.real_user.name'?: string | undefined; 'process.session_leader.same_as_process'?: boolean | undefined; 'process.session_leader.saved_group.id'?: string | undefined; 'process.session_leader.saved_group.name'?: string | undefined; 'process.session_leader.saved_user.id'?: string | undefined; 'process.session_leader.saved_user.name'?: string | undefined; 'process.session_leader.start'?: string | number | undefined; 'process.session_leader.supplemental_groups.id'?: string | undefined; 'process.session_leader.supplemental_groups.name'?: string | undefined; 'process.session_leader.tty'?: unknown; 'process.session_leader.user.id'?: string | undefined; 'process.session_leader.user.name'?: string | undefined; 'process.session_leader.working_directory'?: string | undefined; 'process.start'?: string | number | undefined; 'process.supplemental_groups.id'?: string | undefined; 'process.supplemental_groups.name'?: string | undefined; 'process.thread.id'?: string | number | undefined; 'process.thread.name'?: string | undefined; 'process.title'?: string | undefined; 'process.tty'?: unknown; 'process.uptime'?: string | number | undefined; 'process.user.id'?: string | undefined; 'process.user.name'?: string | undefined; 'process.working_directory'?: string | undefined; 'registry.data.bytes'?: string | undefined; 'registry.data.strings'?: string[] | undefined; 'registry.data.type'?: string | undefined; 'registry.hive'?: string | undefined; 'registry.key'?: string | undefined; 'registry.path'?: string | undefined; 'registry.value'?: string | undefined; 'related.hash'?: string[] | undefined; 'related.hosts'?: string[] | undefined; 'related.ip'?: string[] | undefined; 'related.user'?: string[] | undefined; 'rule.author'?: string[] | undefined; 'rule.category'?: string | undefined; 'rule.description'?: string | undefined; 'rule.id'?: string | undefined; 'rule.license'?: string | undefined; 'rule.name'?: string | undefined; 'rule.reference'?: string | undefined; 'rule.ruleset'?: string | undefined; 'rule.uuid'?: string | undefined; 'rule.version'?: string | undefined; 'server.address'?: string | undefined; 'server.as.number'?: string | number | undefined; 'server.as.organization.name'?: string | undefined; 'server.bytes'?: string | number | undefined; 'server.domain'?: string | undefined; 'server.geo.city_name'?: string | undefined; 'server.geo.continent_code'?: string | undefined; 'server.geo.continent_name'?: string | undefined; 'server.geo.country_iso_code'?: string | undefined; 'server.geo.country_name'?: string | undefined; 'server.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'server.geo.name'?: string | undefined; 'server.geo.postal_code'?: string | undefined; 'server.geo.region_iso_code'?: string | undefined; 'server.geo.region_name'?: string | undefined; 'server.geo.timezone'?: string | undefined; 'server.ip'?: string | undefined; 'server.mac'?: string | undefined; 'server.nat.ip'?: string | undefined; 'server.nat.port'?: string | number | undefined; 'server.packets'?: string | number | undefined; 'server.port'?: string | number | undefined; 'server.registered_domain'?: string | undefined; 'server.subdomain'?: string | undefined; 'server.top_level_domain'?: string | undefined; 'server.user.domain'?: string | undefined; 'server.user.email'?: string | undefined; 'server.user.full_name'?: string | undefined; 'server.user.group.domain'?: string | undefined; 'server.user.group.id'?: string | undefined; 'server.user.group.name'?: string | undefined; 'server.user.hash'?: string | undefined; 'server.user.id'?: string | undefined; 'server.user.name'?: string | undefined; 'server.user.roles'?: string[] | undefined; 'service.address'?: string | undefined; 'service.environment'?: string | undefined; 'service.ephemeral_id'?: string | undefined; 'service.id'?: string | undefined; 'service.name'?: string | undefined; 'service.node.name'?: string | undefined; 'service.node.role'?: string | undefined; 'service.node.roles'?: string[] | undefined; 'service.origin.address'?: string | undefined; 'service.origin.environment'?: string | undefined; 'service.origin.ephemeral_id'?: string | undefined; 'service.origin.id'?: string | undefined; 'service.origin.name'?: string | undefined; 'service.origin.node.name'?: string | undefined; 'service.origin.node.role'?: string | undefined; 'service.origin.node.roles'?: string[] | undefined; 'service.origin.state'?: string | undefined; 'service.origin.type'?: string | undefined; 'service.origin.version'?: string | undefined; 'service.state'?: string | undefined; 'service.target.address'?: string | undefined; 'service.target.environment'?: string | undefined; 'service.target.ephemeral_id'?: string | undefined; 'service.target.id'?: string | undefined; 'service.target.name'?: string | undefined; 'service.target.node.name'?: string | undefined; 'service.target.node.role'?: string | undefined; 'service.target.node.roles'?: string[] | undefined; 'service.target.state'?: string | undefined; 'service.target.type'?: string | undefined; 'service.target.version'?: string | undefined; 'service.type'?: string | undefined; 'service.version'?: string | undefined; 'source.address'?: string | undefined; 'source.as.number'?: string | number | undefined; 'source.as.organization.name'?: string | undefined; 'source.bytes'?: string | number | undefined; 'source.domain'?: string | undefined; 'source.geo.city_name'?: string | undefined; 'source.geo.continent_code'?: string | undefined; 'source.geo.continent_name'?: string | undefined; 'source.geo.country_iso_code'?: string | undefined; 'source.geo.country_name'?: string | undefined; 'source.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'source.geo.name'?: string | undefined; 'source.geo.postal_code'?: string | undefined; 'source.geo.region_iso_code'?: string | undefined; 'source.geo.region_name'?: string | undefined; 'source.geo.timezone'?: string | undefined; 'source.ip'?: string | undefined; 'source.mac'?: string | undefined; 'source.nat.ip'?: string | undefined; 'source.nat.port'?: string | number | undefined; 'source.packets'?: string | number | undefined; 'source.port'?: string | number | undefined; 'source.registered_domain'?: string | undefined; 'source.subdomain'?: string | undefined; 'source.top_level_domain'?: string | undefined; 'source.user.domain'?: string | undefined; 'source.user.email'?: string | undefined; 'source.user.full_name'?: string | undefined; 'source.user.group.domain'?: string | undefined; 'source.user.group.id'?: string | undefined; 'source.user.group.name'?: string | undefined; 'source.user.hash'?: string | undefined; 'source.user.id'?: string | undefined; 'source.user.name'?: string | undefined; 'source.user.roles'?: string[] | undefined; 'span.id'?: string | undefined; tags?: string[] | undefined; 'threat.enrichments'?: { indicator?: unknown; 'matched.atomic'?: string | undefined; 'matched.field'?: string | undefined; 'matched.id'?: string | undefined; 'matched.index'?: string | undefined; 'matched.occurred'?: string | number | undefined; 'matched.type'?: string | undefined; }[] | undefined; 'threat.feed.dashboard_id'?: string | undefined; 'threat.feed.description'?: string | undefined; 'threat.feed.name'?: string | undefined; 'threat.feed.reference'?: string | undefined; 'threat.framework'?: string | undefined; 'threat.group.alias'?: string[] | undefined; 'threat.group.id'?: string | undefined; 'threat.group.name'?: string | undefined; 'threat.group.reference'?: string | undefined; 'threat.indicator.as.number'?: string | number | undefined; 'threat.indicator.as.organization.name'?: string | undefined; 'threat.indicator.confidence'?: string | undefined; 'threat.indicator.description'?: string | undefined; 'threat.indicator.email.address'?: string | undefined; 'threat.indicator.file.accessed'?: string | number | undefined; 'threat.indicator.file.attributes'?: string[] | undefined; 'threat.indicator.file.code_signature.digest_algorithm'?: string | undefined; 'threat.indicator.file.code_signature.exists'?: boolean | undefined; 'threat.indicator.file.code_signature.signing_id'?: string | undefined; 'threat.indicator.file.code_signature.status'?: string | undefined; 'threat.indicator.file.code_signature.subject_name'?: string | undefined; 'threat.indicator.file.code_signature.team_id'?: string | undefined; 'threat.indicator.file.code_signature.timestamp'?: string | number | undefined; 'threat.indicator.file.code_signature.trusted'?: boolean | undefined; 'threat.indicator.file.code_signature.valid'?: boolean | undefined; 'threat.indicator.file.created'?: string | number | undefined; 'threat.indicator.file.ctime'?: string | number | undefined; 'threat.indicator.file.device'?: string | undefined; 'threat.indicator.file.directory'?: string | undefined; 'threat.indicator.file.drive_letter'?: string | undefined; 'threat.indicator.file.elf.architecture'?: string | undefined; 'threat.indicator.file.elf.byte_order'?: string | undefined; 'threat.indicator.file.elf.cpu_type'?: string | undefined; 'threat.indicator.file.elf.creation_date'?: string | number | undefined; 'threat.indicator.file.elf.exports'?: unknown[] | undefined; 'threat.indicator.file.elf.header.abi_version'?: string | undefined; 'threat.indicator.file.elf.header.class'?: string | undefined; 'threat.indicator.file.elf.header.data'?: string | undefined; 'threat.indicator.file.elf.header.entrypoint'?: string | number | undefined; 'threat.indicator.file.elf.header.object_version'?: string | undefined; 'threat.indicator.file.elf.header.os_abi'?: string | undefined; 'threat.indicator.file.elf.header.type'?: string | undefined; 'threat.indicator.file.elf.header.version'?: string | undefined; 'threat.indicator.file.elf.imports'?: unknown[] | undefined; 'threat.indicator.file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'threat.indicator.file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'threat.indicator.file.elf.shared_libraries'?: string[] | undefined; 'threat.indicator.file.elf.telfhash'?: string | undefined; 'threat.indicator.file.extension'?: string | undefined; 'threat.indicator.file.fork_name'?: string | undefined; 'threat.indicator.file.gid'?: string | undefined; 'threat.indicator.file.group'?: string | undefined; 'threat.indicator.file.hash.md5'?: string | undefined; 'threat.indicator.file.hash.sha1'?: string | undefined; 'threat.indicator.file.hash.sha256'?: string | undefined; 'threat.indicator.file.hash.sha384'?: string | undefined; 'threat.indicator.file.hash.sha512'?: string | undefined; 'threat.indicator.file.hash.ssdeep'?: string | undefined; 'threat.indicator.file.hash.tlsh'?: string | undefined; 'threat.indicator.file.inode'?: string | undefined; 'threat.indicator.file.mime_type'?: string | undefined; 'threat.indicator.file.mode'?: string | undefined; 'threat.indicator.file.mtime'?: string | number | undefined; 'threat.indicator.file.name'?: string | undefined; 'threat.indicator.file.owner'?: string | undefined; 'threat.indicator.file.path'?: string | undefined; 'threat.indicator.file.pe.architecture'?: string | undefined; 'threat.indicator.file.pe.company'?: string | undefined; 'threat.indicator.file.pe.description'?: string | undefined; 'threat.indicator.file.pe.file_version'?: string | undefined; 'threat.indicator.file.pe.imphash'?: string | undefined; 'threat.indicator.file.pe.original_file_name'?: string | undefined; 'threat.indicator.file.pe.pehash'?: string | undefined; 'threat.indicator.file.pe.product'?: string | undefined; 'threat.indicator.file.size'?: string | number | undefined; 'threat.indicator.file.target_path'?: string | undefined; 'threat.indicator.file.type'?: string | undefined; 'threat.indicator.file.uid'?: string | undefined; 'threat.indicator.file.x509.alternative_names'?: string[] | undefined; 'threat.indicator.file.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.file.x509.issuer.country'?: string[] | undefined; 'threat.indicator.file.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.not_after'?: string | number | undefined; 'threat.indicator.file.x509.not_before'?: string | number | undefined; 'threat.indicator.file.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.file.x509.public_key_curve'?: string | undefined; 'threat.indicator.file.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.file.x509.public_key_size'?: string | number | undefined; 'threat.indicator.file.x509.serial_number'?: string | undefined; 'threat.indicator.file.x509.signature_algorithm'?: string | undefined; 'threat.indicator.file.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.file.x509.subject.country'?: string[] | undefined; 'threat.indicator.file.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.subject.locality'?: string[] | undefined; 'threat.indicator.file.x509.subject.organization'?: string[] | undefined; 'threat.indicator.file.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.version_number'?: string | undefined; 'threat.indicator.first_seen'?: string | number | undefined; 'threat.indicator.geo.city_name'?: string | undefined; 'threat.indicator.geo.continent_code'?: string | undefined; 'threat.indicator.geo.continent_name'?: string | undefined; 'threat.indicator.geo.country_iso_code'?: string | undefined; 'threat.indicator.geo.country_name'?: string | undefined; 'threat.indicator.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'threat.indicator.geo.name'?: string | undefined; 'threat.indicator.geo.postal_code'?: string | undefined; 'threat.indicator.geo.region_iso_code'?: string | undefined; 'threat.indicator.geo.region_name'?: string | undefined; 'threat.indicator.geo.timezone'?: string | undefined; 'threat.indicator.ip'?: string | undefined; 'threat.indicator.last_seen'?: string | number | undefined; 'threat.indicator.marking.tlp'?: string | undefined; 'threat.indicator.marking.tlp_version'?: string | undefined; 'threat.indicator.modified_at'?: string | number | undefined; 'threat.indicator.port'?: string | number | undefined; 'threat.indicator.provider'?: string | undefined; 'threat.indicator.reference'?: string | undefined; 'threat.indicator.registry.data.bytes'?: string | undefined; 'threat.indicator.registry.data.strings'?: string[] | undefined; 'threat.indicator.registry.data.type'?: string | undefined; 'threat.indicator.registry.hive'?: string | undefined; 'threat.indicator.registry.key'?: string | undefined; 'threat.indicator.registry.path'?: string | undefined; 'threat.indicator.registry.value'?: string | undefined; 'threat.indicator.scanner_stats'?: string | number | undefined; 'threat.indicator.sightings'?: string | number | undefined; 'threat.indicator.type'?: string | undefined; 'threat.indicator.url.domain'?: string | undefined; 'threat.indicator.url.extension'?: string | undefined; 'threat.indicator.url.fragment'?: string | undefined; 'threat.indicator.url.full'?: string | undefined; 'threat.indicator.url.original'?: string | undefined; 'threat.indicator.url.password'?: string | undefined; 'threat.indicator.url.path'?: string | undefined; 'threat.indicator.url.port'?: string | number | undefined; 'threat.indicator.url.query'?: string | undefined; 'threat.indicator.url.registered_domain'?: string | undefined; 'threat.indicator.url.scheme'?: string | undefined; 'threat.indicator.url.subdomain'?: string | undefined; 'threat.indicator.url.top_level_domain'?: string | undefined; 'threat.indicator.url.username'?: string | undefined; 'threat.indicator.x509.alternative_names'?: string[] | undefined; 'threat.indicator.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.x509.issuer.country'?: string[] | undefined; 'threat.indicator.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.x509.not_after'?: string | number | undefined; 'threat.indicator.x509.not_before'?: string | number | undefined; 'threat.indicator.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.x509.public_key_curve'?: string | undefined; 'threat.indicator.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.x509.public_key_size'?: string | number | undefined; 'threat.indicator.x509.serial_number'?: string | undefined; 'threat.indicator.x509.signature_algorithm'?: string | undefined; 'threat.indicator.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.x509.subject.country'?: string[] | undefined; 'threat.indicator.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.x509.subject.locality'?: string[] | undefined; 'threat.indicator.x509.subject.organization'?: string[] | undefined; 'threat.indicator.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.x509.version_number'?: string | undefined; 'threat.software.alias'?: string[] | undefined; 'threat.software.id'?: string | undefined; 'threat.software.name'?: string | undefined; 'threat.software.platforms'?: string[] | undefined; 'threat.software.reference'?: string | undefined; 'threat.software.type'?: string | undefined; 'threat.tactic.id'?: string[] | undefined; 'threat.tactic.name'?: string[] | undefined; 'threat.tactic.reference'?: string[] | undefined; 'threat.technique.id'?: string[] | undefined; 'threat.technique.name'?: string[] | undefined; 'threat.technique.reference'?: string[] | undefined; 'threat.technique.subtechnique.id'?: string[] | undefined; 'threat.technique.subtechnique.name'?: string[] | undefined; 'threat.technique.subtechnique.reference'?: string[] | undefined; 'tls.cipher'?: string | undefined; 'tls.client.certificate'?: string | undefined; 'tls.client.certificate_chain'?: string[] | undefined; 'tls.client.hash.md5'?: string | undefined; 'tls.client.hash.sha1'?: string | undefined; 'tls.client.hash.sha256'?: string | undefined; 'tls.client.issuer'?: string | undefined; 'tls.client.ja3'?: string | undefined; 'tls.client.not_after'?: string | number | undefined; 'tls.client.not_before'?: string | number | undefined; 'tls.client.server_name'?: string | undefined; 'tls.client.subject'?: string | undefined; 'tls.client.supported_ciphers'?: string[] | undefined; 'tls.client.x509.alternative_names'?: string[] | undefined; 'tls.client.x509.issuer.common_name'?: string[] | undefined; 'tls.client.x509.issuer.country'?: string[] | undefined; 'tls.client.x509.issuer.distinguished_name'?: string | undefined; 'tls.client.x509.issuer.locality'?: string[] | undefined; 'tls.client.x509.issuer.organization'?: string[] | undefined; 'tls.client.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.client.x509.issuer.state_or_province'?: string[] | undefined; 'tls.client.x509.not_after'?: string | number | undefined; 'tls.client.x509.not_before'?: string | number | undefined; 'tls.client.x509.public_key_algorithm'?: string | undefined; 'tls.client.x509.public_key_curve'?: string | undefined; 'tls.client.x509.public_key_exponent'?: string | number | undefined; 'tls.client.x509.public_key_size'?: string | number | undefined; 'tls.client.x509.serial_number'?: string | undefined; 'tls.client.x509.signature_algorithm'?: string | undefined; 'tls.client.x509.subject.common_name'?: string[] | undefined; 'tls.client.x509.subject.country'?: string[] | undefined; 'tls.client.x509.subject.distinguished_name'?: string | undefined; 'tls.client.x509.subject.locality'?: string[] | undefined; 'tls.client.x509.subject.organization'?: string[] | undefined; 'tls.client.x509.subject.organizational_unit'?: string[] | undefined; 'tls.client.x509.subject.state_or_province'?: string[] | undefined; 'tls.client.x509.version_number'?: string | undefined; 'tls.curve'?: string | undefined; 'tls.established'?: boolean | undefined; 'tls.next_protocol'?: string | undefined; 'tls.resumed'?: boolean | undefined; 'tls.server.certificate'?: string | undefined; 'tls.server.certificate_chain'?: string[] | undefined; 'tls.server.hash.md5'?: string | undefined; 'tls.server.hash.sha1'?: string | undefined; 'tls.server.hash.sha256'?: string | undefined; 'tls.server.issuer'?: string | undefined; 'tls.server.ja3s'?: string | undefined; 'tls.server.not_after'?: string | number | undefined; 'tls.server.not_before'?: string | number | undefined; 'tls.server.subject'?: string | undefined; 'tls.server.x509.alternative_names'?: string[] | undefined; 'tls.server.x509.issuer.common_name'?: string[] | undefined; 'tls.server.x509.issuer.country'?: string[] | undefined; 'tls.server.x509.issuer.distinguished_name'?: string | undefined; 'tls.server.x509.issuer.locality'?: string[] | undefined; 'tls.server.x509.issuer.organization'?: string[] | undefined; 'tls.server.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.server.x509.issuer.state_or_province'?: string[] | undefined; 'tls.server.x509.not_after'?: string | number | undefined; 'tls.server.x509.not_before'?: string | number | undefined; 'tls.server.x509.public_key_algorithm'?: string | undefined; 'tls.server.x509.public_key_curve'?: string | undefined; 'tls.server.x509.public_key_exponent'?: string | number | undefined; 'tls.server.x509.public_key_size'?: string | number | undefined; 'tls.server.x509.serial_number'?: string | undefined; 'tls.server.x509.signature_algorithm'?: string | undefined; 'tls.server.x509.subject.common_name'?: string[] | undefined; 'tls.server.x509.subject.country'?: string[] | undefined; 'tls.server.x509.subject.distinguished_name'?: string | undefined; 'tls.server.x509.subject.locality'?: string[] | undefined; 'tls.server.x509.subject.organization'?: string[] | undefined; 'tls.server.x509.subject.organizational_unit'?: string[] | undefined; 'tls.server.x509.subject.state_or_province'?: string[] | undefined; 'tls.server.x509.version_number'?: string | undefined; 'tls.version'?: string | undefined; 'tls.version_protocol'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.id'?: string | undefined; 'url.domain'?: string | undefined; 'url.extension'?: string | undefined; 'url.fragment'?: string | undefined; 'url.full'?: string | undefined; 'url.original'?: string | undefined; 'url.password'?: string | undefined; 'url.path'?: string | undefined; 'url.port'?: string | number | undefined; 'url.query'?: string | undefined; 'url.registered_domain'?: string | undefined; 'url.scheme'?: string | undefined; 'url.subdomain'?: string | undefined; 'url.top_level_domain'?: string | undefined; 'url.username'?: string | undefined; 'user.changes.domain'?: string | undefined; 'user.changes.email'?: string | undefined; 'user.changes.full_name'?: string | undefined; 'user.changes.group.domain'?: string | undefined; 'user.changes.group.id'?: string | undefined; 'user.changes.group.name'?: string | undefined; 'user.changes.hash'?: string | undefined; 'user.changes.id'?: string | undefined; 'user.changes.name'?: string | undefined; 'user.changes.roles'?: string[] | undefined; 'user.domain'?: string | undefined; 'user.effective.domain'?: string | undefined; 'user.effective.email'?: string | undefined; 'user.effective.full_name'?: string | undefined; 'user.effective.group.domain'?: string | undefined; 'user.effective.group.id'?: string | undefined; 'user.effective.group.name'?: string | undefined; 'user.effective.hash'?: string | undefined; 'user.effective.id'?: string | undefined; 'user.effective.name'?: string | undefined; 'user.effective.roles'?: string[] | undefined; 'user.email'?: string | undefined; 'user.full_name'?: string | undefined; 'user.group.domain'?: string | undefined; 'user.group.id'?: string | undefined; 'user.group.name'?: string | undefined; 'user.hash'?: string | undefined; 'user.id'?: string | undefined; 'user.name'?: string | undefined; 'user.risk.calculated_level'?: string | undefined; 'user.risk.calculated_score'?: number | undefined; 'user.risk.calculated_score_norm'?: number | undefined; 'user.risk.static_level'?: string | undefined; 'user.risk.static_score'?: number | undefined; 'user.risk.static_score_norm'?: number | undefined; 'user.roles'?: string[] | undefined; 'user.target.domain'?: string | undefined; 'user.target.email'?: string | undefined; 'user.target.full_name'?: string | undefined; 'user.target.group.domain'?: string | undefined; 'user.target.group.id'?: string | undefined; 'user.target.group.name'?: string | undefined; 'user.target.hash'?: string | undefined; 'user.target.id'?: string | undefined; 'user.target.name'?: string | undefined; 'user.target.roles'?: string[] | undefined; 'user_agent.device.name'?: string | undefined; 'user_agent.name'?: string | undefined; 'user_agent.original'?: string | undefined; 'user_agent.os.family'?: string | undefined; 'user_agent.os.full'?: string | undefined; 'user_agent.os.kernel'?: string | undefined; 'user_agent.os.name'?: string | undefined; 'user_agent.os.platform'?: string | undefined; 'user_agent.os.type'?: string | undefined; 'user_agent.os.version'?: string | undefined; 'user_agent.version'?: string | undefined; 'vulnerability.category'?: string[] | undefined; 'vulnerability.classification'?: string | undefined; 'vulnerability.description'?: string | undefined; 'vulnerability.enumeration'?: string | undefined; 'vulnerability.id'?: string | undefined; 'vulnerability.reference'?: string | undefined; 'vulnerability.report_id'?: string | undefined; 'vulnerability.scanner.vendor'?: string | undefined; 'vulnerability.score.base'?: number | undefined; 'vulnerability.score.environmental'?: number | undefined; 'vulnerability.score.temporal'?: number | undefined; 'vulnerability.score.version'?: string | undefined; 'vulnerability.severity'?: string | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }) | ({} & { 'kibana.alert.context'?: unknown; 'kibana.alert.evaluation.threshold'?: string | number | undefined; 'kibana.alert.evaluation.value'?: string | number | undefined; 'kibana.alert.evaluation.values'?: (string | number)[] | undefined; 'kibana.alert.group'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & { '@timestamp': string | number; 'ecs.version': string; } & { 'agent.build.original'?: string | undefined; 'agent.ephemeral_id'?: string | undefined; 'agent.id'?: string | undefined; 'agent.name'?: string | undefined; 'agent.type'?: string | undefined; 'agent.version'?: string | undefined; 'client.address'?: string | undefined; 'client.as.number'?: string | number | undefined; 'client.as.organization.name'?: string | undefined; 'client.bytes'?: string | number | undefined; 'client.domain'?: string | undefined; 'client.geo.city_name'?: string | undefined; 'client.geo.continent_code'?: string | undefined; 'client.geo.continent_name'?: string | undefined; 'client.geo.country_iso_code'?: string | undefined; 'client.geo.country_name'?: string | undefined; 'client.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'client.geo.name'?: string | undefined; 'client.geo.postal_code'?: string | undefined; 'client.geo.region_iso_code'?: string | undefined; 'client.geo.region_name'?: string | undefined; 'client.geo.timezone'?: string | undefined; 'client.ip'?: string | undefined; 'client.mac'?: string | undefined; 'client.nat.ip'?: string | undefined; 'client.nat.port'?: string | number | undefined; 'client.packets'?: string | number | undefined; 'client.port'?: string | number | undefined; 'client.registered_domain'?: string | undefined; 'client.subdomain'?: string | undefined; 'client.top_level_domain'?: string | undefined; 'client.user.domain'?: string | undefined; 'client.user.email'?: string | undefined; 'client.user.full_name'?: string | undefined; 'client.user.group.domain'?: string | undefined; 'client.user.group.id'?: string | undefined; 'client.user.group.name'?: string | undefined; 'client.user.hash'?: string | undefined; 'client.user.id'?: string | undefined; 'client.user.name'?: string | undefined; 'client.user.roles'?: string[] | undefined; 'cloud.account.id'?: string | undefined; 'cloud.account.name'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.instance.id'?: string | undefined; 'cloud.instance.name'?: string | undefined; 'cloud.machine.type'?: string | undefined; 'cloud.origin.account.id'?: string | undefined; 'cloud.origin.account.name'?: string | undefined; 'cloud.origin.availability_zone'?: string | undefined; 'cloud.origin.instance.id'?: string | undefined; 'cloud.origin.instance.name'?: string | undefined; 'cloud.origin.machine.type'?: string | undefined; 'cloud.origin.project.id'?: string | undefined; 'cloud.origin.project.name'?: string | undefined; 'cloud.origin.provider'?: string | undefined; 'cloud.origin.region'?: string | undefined; 'cloud.origin.service.name'?: string | undefined; 'cloud.project.id'?: string | undefined; 'cloud.project.name'?: string | undefined; 'cloud.provider'?: string | undefined; 'cloud.region'?: string | undefined; 'cloud.service.name'?: string | undefined; 'cloud.target.account.id'?: string | undefined; 'cloud.target.account.name'?: string | undefined; 'cloud.target.availability_zone'?: string | undefined; 'cloud.target.instance.id'?: string | undefined; 'cloud.target.instance.name'?: string | undefined; 'cloud.target.machine.type'?: string | undefined; 'cloud.target.project.id'?: string | undefined; 'cloud.target.project.name'?: string | undefined; 'cloud.target.provider'?: string | undefined; 'cloud.target.region'?: string | undefined; 'cloud.target.service.name'?: string | undefined; 'container.cpu.usage'?: string | number | undefined; 'container.disk.read.bytes'?: string | number | undefined; 'container.disk.write.bytes'?: string | number | undefined; 'container.id'?: string | undefined; 'container.image.hash.all'?: string[] | undefined; 'container.image.name'?: string | undefined; 'container.image.tag'?: string[] | undefined; 'container.labels'?: unknown; 'container.memory.usage'?: string | number | undefined; 'container.name'?: string | undefined; 'container.network.egress.bytes'?: string | number | undefined; 'container.network.ingress.bytes'?: string | number | undefined; 'container.runtime'?: string | undefined; 'destination.address'?: string | undefined; 'destination.as.number'?: string | number | undefined; 'destination.as.organization.name'?: string | undefined; 'destination.bytes'?: string | number | undefined; 'destination.domain'?: string | undefined; 'destination.geo.city_name'?: string | undefined; 'destination.geo.continent_code'?: string | undefined; 'destination.geo.continent_name'?: string | undefined; 'destination.geo.country_iso_code'?: string | undefined; 'destination.geo.country_name'?: string | undefined; 'destination.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'destination.geo.name'?: string | undefined; 'destination.geo.postal_code'?: string | undefined; 'destination.geo.region_iso_code'?: string | undefined; 'destination.geo.region_name'?: string | undefined; 'destination.geo.timezone'?: string | undefined; 'destination.ip'?: string | undefined; 'destination.mac'?: string | undefined; 'destination.nat.ip'?: string | undefined; 'destination.nat.port'?: string | number | undefined; 'destination.packets'?: string | number | undefined; 'destination.port'?: string | number | undefined; 'destination.registered_domain'?: string | undefined; 'destination.subdomain'?: string | undefined; 'destination.top_level_domain'?: string | undefined; 'destination.user.domain'?: string | undefined; 'destination.user.email'?: string | undefined; 'destination.user.full_name'?: string | undefined; 'destination.user.group.domain'?: string | undefined; 'destination.user.group.id'?: string | undefined; 'destination.user.group.name'?: string | undefined; 'destination.user.hash'?: string | undefined; 'destination.user.id'?: string | undefined; 'destination.user.name'?: string | undefined; 'destination.user.roles'?: string[] | undefined; 'device.id'?: string | undefined; 'device.manufacturer'?: string | undefined; 'device.model.identifier'?: string | undefined; 'device.model.name'?: string | undefined; 'dll.code_signature.digest_algorithm'?: string | undefined; 'dll.code_signature.exists'?: boolean | undefined; 'dll.code_signature.signing_id'?: string | undefined; 'dll.code_signature.status'?: string | undefined; 'dll.code_signature.subject_name'?: string | undefined; 'dll.code_signature.team_id'?: string | undefined; 'dll.code_signature.timestamp'?: string | number | undefined; 'dll.code_signature.trusted'?: boolean | undefined; 'dll.code_signature.valid'?: boolean | undefined; 'dll.hash.md5'?: string | undefined; 'dll.hash.sha1'?: string | undefined; 'dll.hash.sha256'?: string | undefined; 'dll.hash.sha384'?: string | undefined; 'dll.hash.sha512'?: string | undefined; 'dll.hash.ssdeep'?: string | undefined; 'dll.hash.tlsh'?: string | undefined; 'dll.name'?: string | undefined; 'dll.path'?: string | undefined; 'dll.pe.architecture'?: string | undefined; 'dll.pe.company'?: string | undefined; 'dll.pe.description'?: string | undefined; 'dll.pe.file_version'?: string | undefined; 'dll.pe.imphash'?: string | undefined; 'dll.pe.original_file_name'?: string | undefined; 'dll.pe.pehash'?: string | undefined; 'dll.pe.product'?: string | undefined; 'dns.answers'?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; 'dns.header_flags'?: string[] | undefined; 'dns.id'?: string | undefined; 'dns.op_code'?: string | undefined; 'dns.question.class'?: string | undefined; 'dns.question.name'?: string | undefined; 'dns.question.registered_domain'?: string | undefined; 'dns.question.subdomain'?: string | undefined; 'dns.question.top_level_domain'?: string | undefined; 'dns.question.type'?: string | undefined; 'dns.resolved_ip'?: string[] | undefined; 'dns.response_code'?: string | undefined; 'dns.type'?: string | undefined; 'email.attachments'?: { 'file.extension'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.name'?: string | undefined; 'file.size'?: string | number | undefined; }[] | undefined; 'email.bcc.address'?: string[] | undefined; 'email.cc.address'?: string[] | undefined; 'email.content_type'?: string | undefined; 'email.delivery_timestamp'?: string | number | undefined; 'email.direction'?: string | undefined; 'email.from.address'?: string[] | undefined; 'email.local_id'?: string | undefined; 'email.message_id'?: string | undefined; 'email.origination_timestamp'?: string | number | undefined; 'email.reply_to.address'?: string[] | undefined; 'email.sender.address'?: string | undefined; 'email.subject'?: string | undefined; 'email.to.address'?: string[] | undefined; 'email.x_mailer'?: string | undefined; 'error.code'?: string | undefined; 'error.id'?: string | undefined; 'error.message'?: string | undefined; 'error.stack_trace'?: string | undefined; 'error.type'?: string | undefined; 'event.action'?: string | undefined; 'event.agent_id_status'?: string | undefined; 'event.category'?: string[] | undefined; 'event.code'?: string | undefined; 'event.created'?: string | number | undefined; 'event.dataset'?: string | undefined; 'event.duration'?: string | number | undefined; 'event.end'?: string | number | undefined; 'event.hash'?: string | undefined; 'event.id'?: string | undefined; 'event.ingested'?: string | number | undefined; 'event.kind'?: string | undefined; 'event.module'?: string | undefined; 'event.original'?: string | undefined; 'event.outcome'?: string | undefined; 'event.provider'?: string | undefined; 'event.reason'?: string | undefined; 'event.reference'?: string | undefined; 'event.risk_score'?: number | undefined; 'event.risk_score_norm'?: number | undefined; 'event.sequence'?: string | number | undefined; 'event.severity'?: string | number | undefined; 'event.start'?: string | number | undefined; 'event.timezone'?: string | undefined; 'event.type'?: string[] | undefined; 'event.url'?: string | undefined; 'faas.coldstart'?: boolean | undefined; 'faas.execution'?: string | undefined; 'faas.id'?: string | undefined; 'faas.name'?: string | undefined; 'faas.version'?: string | undefined; 'file.accessed'?: string | number | undefined; 'file.attributes'?: string[] | undefined; 'file.code_signature.digest_algorithm'?: string | undefined; 'file.code_signature.exists'?: boolean | undefined; 'file.code_signature.signing_id'?: string | undefined; 'file.code_signature.status'?: string | undefined; 'file.code_signature.subject_name'?: string | undefined; 'file.code_signature.team_id'?: string | undefined; 'file.code_signature.timestamp'?: string | number | undefined; 'file.code_signature.trusted'?: boolean | undefined; 'file.code_signature.valid'?: boolean | undefined; 'file.created'?: string | number | undefined; 'file.ctime'?: string | number | undefined; 'file.device'?: string | undefined; 'file.directory'?: string | undefined; 'file.drive_letter'?: string | undefined; 'file.elf.architecture'?: string | undefined; 'file.elf.byte_order'?: string | undefined; 'file.elf.cpu_type'?: string | undefined; 'file.elf.creation_date'?: string | number | undefined; 'file.elf.exports'?: unknown[] | undefined; 'file.elf.header.abi_version'?: string | undefined; 'file.elf.header.class'?: string | undefined; 'file.elf.header.data'?: string | undefined; 'file.elf.header.entrypoint'?: string | number | undefined; 'file.elf.header.object_version'?: string | undefined; 'file.elf.header.os_abi'?: string | undefined; 'file.elf.header.type'?: string | undefined; 'file.elf.header.version'?: string | undefined; 'file.elf.imports'?: unknown[] | undefined; 'file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'file.elf.shared_libraries'?: string[] | undefined; 'file.elf.telfhash'?: string | undefined; 'file.extension'?: string | undefined; 'file.fork_name'?: string | undefined; 'file.gid'?: string | undefined; 'file.group'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.inode'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.mode'?: string | undefined; 'file.mtime'?: string | number | undefined; 'file.name'?: string | undefined; 'file.owner'?: string | undefined; 'file.path'?: string | undefined; 'file.pe.architecture'?: string | undefined; 'file.pe.company'?: string | undefined; 'file.pe.description'?: string | undefined; 'file.pe.file_version'?: string | undefined; 'file.pe.imphash'?: string | undefined; 'file.pe.original_file_name'?: string | undefined; 'file.pe.pehash'?: string | undefined; 'file.pe.product'?: string | undefined; 'file.size'?: string | number | undefined; 'file.target_path'?: string | undefined; 'file.type'?: string | undefined; 'file.uid'?: string | undefined; 'file.x509.alternative_names'?: string[] | undefined; 'file.x509.issuer.common_name'?: string[] | undefined; 'file.x509.issuer.country'?: string[] | undefined; 'file.x509.issuer.distinguished_name'?: string | undefined; 'file.x509.issuer.locality'?: string[] | undefined; 'file.x509.issuer.organization'?: string[] | undefined; 'file.x509.issuer.organizational_unit'?: string[] | undefined; 'file.x509.issuer.state_or_province'?: string[] | undefined; 'file.x509.not_after'?: string | number | undefined; 'file.x509.not_before'?: string | number | undefined; 'file.x509.public_key_algorithm'?: string | undefined; 'file.x509.public_key_curve'?: string | undefined; 'file.x509.public_key_exponent'?: string | number | undefined; 'file.x509.public_key_size'?: string | number | undefined; 'file.x509.serial_number'?: string | undefined; 'file.x509.signature_algorithm'?: string | undefined; 'file.x509.subject.common_name'?: string[] | undefined; 'file.x509.subject.country'?: string[] | undefined; 'file.x509.subject.distinguished_name'?: string | undefined; 'file.x509.subject.locality'?: string[] | undefined; 'file.x509.subject.organization'?: string[] | undefined; 'file.x509.subject.organizational_unit'?: string[] | undefined; 'file.x509.subject.state_or_province'?: string[] | undefined; 'file.x509.version_number'?: string | undefined; 'group.domain'?: string | undefined; 'group.id'?: string | undefined; 'group.name'?: string | undefined; 'host.architecture'?: string | undefined; 'host.boot.id'?: string | undefined; 'host.cpu.usage'?: string | number | undefined; 'host.disk.read.bytes'?: string | number | undefined; 'host.disk.write.bytes'?: string | number | undefined; 'host.domain'?: string | undefined; 'host.geo.city_name'?: string | undefined; 'host.geo.continent_code'?: string | undefined; 'host.geo.continent_name'?: string | undefined; 'host.geo.country_iso_code'?: string | undefined; 'host.geo.country_name'?: string | undefined; 'host.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'host.geo.name'?: string | undefined; 'host.geo.postal_code'?: string | undefined; 'host.geo.region_iso_code'?: string | undefined; 'host.geo.region_name'?: string | undefined; 'host.geo.timezone'?: string | undefined; 'host.hostname'?: string | undefined; 'host.id'?: string | undefined; 'host.ip'?: string[] | undefined; 'host.mac'?: string[] | undefined; 'host.name'?: string | undefined; 'host.network.egress.bytes'?: string | number | undefined; 'host.network.egress.packets'?: string | number | undefined; 'host.network.ingress.bytes'?: string | number | undefined; 'host.network.ingress.packets'?: string | number | undefined; 'host.os.family'?: string | undefined; 'host.os.full'?: string | undefined; 'host.os.kernel'?: string | undefined; 'host.os.name'?: string | undefined; 'host.os.platform'?: string | undefined; 'host.os.type'?: string | undefined; 'host.os.version'?: string | undefined; 'host.pid_ns_ino'?: string | undefined; 'host.risk.calculated_level'?: string | undefined; 'host.risk.calculated_score'?: number | undefined; 'host.risk.calculated_score_norm'?: number | undefined; 'host.risk.static_level'?: string | undefined; 'host.risk.static_score'?: number | undefined; 'host.risk.static_score_norm'?: number | undefined; 'host.type'?: string | undefined; 'host.uptime'?: string | number | undefined; 'http.request.body.bytes'?: string | number | undefined; 'http.request.body.content'?: string | undefined; 'http.request.bytes'?: string | number | undefined; 'http.request.id'?: string | undefined; 'http.request.method'?: string | undefined; 'http.request.mime_type'?: string | undefined; 'http.request.referrer'?: string | undefined; 'http.response.body.bytes'?: string | number | undefined; 'http.response.body.content'?: string | undefined; 'http.response.bytes'?: string | number | undefined; 'http.response.mime_type'?: string | undefined; 'http.response.status_code'?: string | number | undefined; 'http.version'?: string | undefined; labels?: unknown; 'log.file.path'?: string | undefined; 'log.level'?: string | undefined; 'log.logger'?: string | undefined; 'log.origin.file.line'?: string | number | undefined; 'log.origin.file.name'?: string | undefined; 'log.origin.function'?: string | undefined; 'log.syslog'?: unknown; message?: string | undefined; 'network.application'?: string | undefined; 'network.bytes'?: string | number | undefined; 'network.community_id'?: string | undefined; 'network.direction'?: string | undefined; 'network.forwarded_ip'?: string | undefined; 'network.iana_number'?: string | undefined; 'network.inner'?: unknown; 'network.name'?: string | undefined; 'network.packets'?: string | number | undefined; 'network.protocol'?: string | undefined; 'network.transport'?: string | undefined; 'network.type'?: string | undefined; 'network.vlan.id'?: string | undefined; 'network.vlan.name'?: string | undefined; 'observer.egress'?: unknown; 'observer.geo.city_name'?: string | undefined; 'observer.geo.continent_code'?: string | undefined; 'observer.geo.continent_name'?: string | undefined; 'observer.geo.country_iso_code'?: string | undefined; 'observer.geo.country_name'?: string | undefined; 'observer.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'observer.geo.name'?: string | undefined; 'observer.geo.postal_code'?: string | undefined; 'observer.geo.region_iso_code'?: string | undefined; 'observer.geo.region_name'?: string | undefined; 'observer.geo.timezone'?: string | undefined; 'observer.hostname'?: string | undefined; 'observer.ingress'?: unknown; 'observer.ip'?: string[] | undefined; 'observer.mac'?: string[] | undefined; 'observer.name'?: string | undefined; 'observer.os.family'?: string | undefined; 'observer.os.full'?: string | undefined; 'observer.os.kernel'?: string | undefined; 'observer.os.name'?: string | undefined; 'observer.os.platform'?: string | undefined; 'observer.os.type'?: string | undefined; 'observer.os.version'?: string | undefined; 'observer.product'?: string | undefined; 'observer.serial_number'?: string | undefined; 'observer.type'?: string | undefined; 'observer.vendor'?: string | undefined; 'observer.version'?: string | undefined; 'orchestrator.api_version'?: string | undefined; 'orchestrator.cluster.id'?: string | undefined; 'orchestrator.cluster.name'?: string | undefined; 'orchestrator.cluster.url'?: string | undefined; 'orchestrator.cluster.version'?: string | undefined; 'orchestrator.namespace'?: string | undefined; 'orchestrator.organization'?: string | undefined; 'orchestrator.resource.id'?: string | undefined; 'orchestrator.resource.ip'?: string[] | undefined; 'orchestrator.resource.name'?: string | undefined; 'orchestrator.resource.parent.type'?: string | undefined; 'orchestrator.resource.type'?: string | undefined; 'orchestrator.type'?: string | undefined; 'organization.id'?: string | undefined; 'organization.name'?: string | undefined; 'package.architecture'?: string | undefined; 'package.build_version'?: string | undefined; 'package.checksum'?: string | undefined; 'package.description'?: string | undefined; 'package.install_scope'?: string | undefined; 'package.installed'?: string | number | undefined; 'package.license'?: string | undefined; 'package.name'?: string | undefined; 'package.path'?: string | undefined; 'package.reference'?: string | undefined; 'package.size'?: string | number | undefined; 'package.type'?: string | undefined; 'package.version'?: string | undefined; 'process.args'?: string[] | undefined; 'process.args_count'?: string | number | undefined; 'process.code_signature.digest_algorithm'?: string | undefined; 'process.code_signature.exists'?: boolean | undefined; 'process.code_signature.signing_id'?: string | undefined; 'process.code_signature.status'?: string | undefined; 'process.code_signature.subject_name'?: string | undefined; 'process.code_signature.team_id'?: string | undefined; 'process.code_signature.timestamp'?: string | number | undefined; 'process.code_signature.trusted'?: boolean | undefined; 'process.code_signature.valid'?: boolean | undefined; 'process.command_line'?: string | undefined; 'process.elf.architecture'?: string | undefined; 'process.elf.byte_order'?: string | undefined; 'process.elf.cpu_type'?: string | undefined; 'process.elf.creation_date'?: string | number | undefined; 'process.elf.exports'?: unknown[] | undefined; 'process.elf.header.abi_version'?: string | undefined; 'process.elf.header.class'?: string | undefined; 'process.elf.header.data'?: string | undefined; 'process.elf.header.entrypoint'?: string | number | undefined; 'process.elf.header.object_version'?: string | undefined; 'process.elf.header.os_abi'?: string | undefined; 'process.elf.header.type'?: string | undefined; 'process.elf.header.version'?: string | undefined; 'process.elf.imports'?: unknown[] | undefined; 'process.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.elf.shared_libraries'?: string[] | undefined; 'process.elf.telfhash'?: string | undefined; 'process.end'?: string | number | undefined; 'process.entity_id'?: string | undefined; 'process.entry_leader.args'?: string[] | undefined; 'process.entry_leader.args_count'?: string | number | undefined; 'process.entry_leader.attested_groups.name'?: string | undefined; 'process.entry_leader.attested_user.id'?: string | undefined; 'process.entry_leader.attested_user.name'?: string | undefined; 'process.entry_leader.command_line'?: string | undefined; 'process.entry_leader.entity_id'?: string | undefined; 'process.entry_leader.entry_meta.source.ip'?: string | undefined; 'process.entry_leader.entry_meta.type'?: string | undefined; 'process.entry_leader.executable'?: string | undefined; 'process.entry_leader.group.id'?: string | undefined; 'process.entry_leader.group.name'?: string | undefined; 'process.entry_leader.interactive'?: boolean | undefined; 'process.entry_leader.name'?: string | undefined; 'process.entry_leader.parent.entity_id'?: string | undefined; 'process.entry_leader.parent.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.entity_id'?: string | undefined; 'process.entry_leader.parent.session_leader.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.start'?: string | number | undefined; 'process.entry_leader.parent.start'?: string | number | undefined; 'process.entry_leader.pid'?: string | number | undefined; 'process.entry_leader.real_group.id'?: string | undefined; 'process.entry_leader.real_group.name'?: string | undefined; 'process.entry_leader.real_user.id'?: string | undefined; 'process.entry_leader.real_user.name'?: string | undefined; 'process.entry_leader.same_as_process'?: boolean | undefined; 'process.entry_leader.saved_group.id'?: string | undefined; 'process.entry_leader.saved_group.name'?: string | undefined; 'process.entry_leader.saved_user.id'?: string | undefined; 'process.entry_leader.saved_user.name'?: string | undefined; 'process.entry_leader.start'?: string | number | undefined; 'process.entry_leader.supplemental_groups.id'?: string | undefined; 'process.entry_leader.supplemental_groups.name'?: string | undefined; 'process.entry_leader.tty'?: unknown; 'process.entry_leader.user.id'?: string | undefined; 'process.entry_leader.user.name'?: string | undefined; 'process.entry_leader.working_directory'?: string | undefined; 'process.env_vars'?: string[] | undefined; 'process.executable'?: string | undefined; 'process.exit_code'?: string | number | undefined; 'process.group_leader.args'?: string[] | undefined; 'process.group_leader.args_count'?: string | number | undefined; 'process.group_leader.command_line'?: string | undefined; 'process.group_leader.entity_id'?: string | undefined; 'process.group_leader.executable'?: string | undefined; 'process.group_leader.group.id'?: string | undefined; 'process.group_leader.group.name'?: string | undefined; 'process.group_leader.interactive'?: boolean | undefined; 'process.group_leader.name'?: string | undefined; 'process.group_leader.pid'?: string | number | undefined; 'process.group_leader.real_group.id'?: string | undefined; 'process.group_leader.real_group.name'?: string | undefined; 'process.group_leader.real_user.id'?: string | undefined; 'process.group_leader.real_user.name'?: string | undefined; 'process.group_leader.same_as_process'?: boolean | undefined; 'process.group_leader.saved_group.id'?: string | undefined; 'process.group_leader.saved_group.name'?: string | undefined; 'process.group_leader.saved_user.id'?: string | undefined; 'process.group_leader.saved_user.name'?: string | undefined; 'process.group_leader.start'?: string | number | undefined; 'process.group_leader.supplemental_groups.id'?: string | undefined; 'process.group_leader.supplemental_groups.name'?: string | undefined; 'process.group_leader.tty'?: unknown; 'process.group_leader.user.id'?: string | undefined; 'process.group_leader.user.name'?: string | undefined; 'process.group_leader.working_directory'?: string | undefined; 'process.hash.md5'?: string | undefined; 'process.hash.sha1'?: string | undefined; 'process.hash.sha256'?: string | undefined; 'process.hash.sha384'?: string | undefined; 'process.hash.sha512'?: string | undefined; 'process.hash.ssdeep'?: string | undefined; 'process.hash.tlsh'?: string | undefined; 'process.interactive'?: boolean | undefined; 'process.io'?: unknown; 'process.name'?: string | undefined; 'process.parent.args'?: string[] | undefined; 'process.parent.args_count'?: string | number | undefined; 'process.parent.code_signature.digest_algorithm'?: string | undefined; 'process.parent.code_signature.exists'?: boolean | undefined; 'process.parent.code_signature.signing_id'?: string | undefined; 'process.parent.code_signature.status'?: string | undefined; 'process.parent.code_signature.subject_name'?: string | undefined; 'process.parent.code_signature.team_id'?: string | undefined; 'process.parent.code_signature.timestamp'?: string | number | undefined; 'process.parent.code_signature.trusted'?: boolean | undefined; 'process.parent.code_signature.valid'?: boolean | undefined; 'process.parent.command_line'?: string | undefined; 'process.parent.elf.architecture'?: string | undefined; 'process.parent.elf.byte_order'?: string | undefined; 'process.parent.elf.cpu_type'?: string | undefined; 'process.parent.elf.creation_date'?: string | number | undefined; 'process.parent.elf.exports'?: unknown[] | undefined; 'process.parent.elf.header.abi_version'?: string | undefined; 'process.parent.elf.header.class'?: string | undefined; 'process.parent.elf.header.data'?: string | undefined; 'process.parent.elf.header.entrypoint'?: string | number | undefined; 'process.parent.elf.header.object_version'?: string | undefined; 'process.parent.elf.header.os_abi'?: string | undefined; 'process.parent.elf.header.type'?: string | undefined; 'process.parent.elf.header.version'?: string | undefined; 'process.parent.elf.imports'?: unknown[] | undefined; 'process.parent.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.parent.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.parent.elf.shared_libraries'?: string[] | undefined; 'process.parent.elf.telfhash'?: string | undefined; 'process.parent.end'?: string | number | undefined; 'process.parent.entity_id'?: string | undefined; 'process.parent.executable'?: string | undefined; 'process.parent.exit_code'?: string | number | undefined; 'process.parent.group.id'?: string | undefined; 'process.parent.group.name'?: string | undefined; 'process.parent.group_leader.entity_id'?: string | undefined; 'process.parent.group_leader.pid'?: string | number | undefined; 'process.parent.group_leader.start'?: string | number | undefined; 'process.parent.hash.md5'?: string | undefined; 'process.parent.hash.sha1'?: string | undefined; 'process.parent.hash.sha256'?: string | undefined; 'process.parent.hash.sha384'?: string | undefined; 'process.parent.hash.sha512'?: string | undefined; 'process.parent.hash.ssdeep'?: string | undefined; 'process.parent.hash.tlsh'?: string | undefined; 'process.parent.interactive'?: boolean | undefined; 'process.parent.name'?: string | undefined; 'process.parent.pe.architecture'?: string | undefined; 'process.parent.pe.company'?: string | undefined; 'process.parent.pe.description'?: string | undefined; 'process.parent.pe.file_version'?: string | undefined; 'process.parent.pe.imphash'?: string | undefined; 'process.parent.pe.original_file_name'?: string | undefined; 'process.parent.pe.pehash'?: string | undefined; 'process.parent.pe.product'?: string | undefined; 'process.parent.pgid'?: string | number | undefined; 'process.parent.pid'?: string | number | undefined; 'process.parent.real_group.id'?: string | undefined; 'process.parent.real_group.name'?: string | undefined; 'process.parent.real_user.id'?: string | undefined; 'process.parent.real_user.name'?: string | undefined; 'process.parent.saved_group.id'?: string | undefined; 'process.parent.saved_group.name'?: string | undefined; 'process.parent.saved_user.id'?: string | undefined; 'process.parent.saved_user.name'?: string | undefined; 'process.parent.start'?: string | number | undefined; 'process.parent.supplemental_groups.id'?: string | undefined; 'process.parent.supplemental_groups.name'?: string | undefined; 'process.parent.thread.id'?: string | number | undefined; 'process.parent.thread.name'?: string | undefined; 'process.parent.title'?: string | undefined; 'process.parent.tty'?: unknown; 'process.parent.uptime'?: string | number | undefined; 'process.parent.user.id'?: string | undefined; 'process.parent.user.name'?: string | undefined; 'process.parent.working_directory'?: string | undefined; 'process.pe.architecture'?: string | undefined; 'process.pe.company'?: string | undefined; 'process.pe.description'?: string | undefined; 'process.pe.file_version'?: string | undefined; 'process.pe.imphash'?: string | undefined; 'process.pe.original_file_name'?: string | undefined; 'process.pe.pehash'?: string | undefined; 'process.pe.product'?: string | undefined; 'process.pgid'?: string | number | undefined; 'process.pid'?: string | number | undefined; 'process.previous.args'?: string[] | undefined; 'process.previous.args_count'?: string | number | undefined; 'process.previous.executable'?: string | undefined; 'process.real_group.id'?: string | undefined; 'process.real_group.name'?: string | undefined; 'process.real_user.id'?: string | undefined; 'process.real_user.name'?: string | undefined; 'process.saved_group.id'?: string | undefined; 'process.saved_group.name'?: string | undefined; 'process.saved_user.id'?: string | undefined; 'process.saved_user.name'?: string | undefined; 'process.session_leader.args'?: string[] | undefined; 'process.session_leader.args_count'?: string | number | undefined; 'process.session_leader.command_line'?: string | undefined; 'process.session_leader.entity_id'?: string | undefined; 'process.session_leader.executable'?: string | undefined; 'process.session_leader.group.id'?: string | undefined; 'process.session_leader.group.name'?: string | undefined; 'process.session_leader.interactive'?: boolean | undefined; 'process.session_leader.name'?: string | undefined; 'process.session_leader.parent.entity_id'?: string | undefined; 'process.session_leader.parent.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.entity_id'?: string | undefined; 'process.session_leader.parent.session_leader.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.start'?: string | number | undefined; 'process.session_leader.parent.start'?: string | number | undefined; 'process.session_leader.pid'?: string | number | undefined; 'process.session_leader.real_group.id'?: string | undefined; 'process.session_leader.real_group.name'?: string | undefined; 'process.session_leader.real_user.id'?: string | undefined; 'process.session_leader.real_user.name'?: string | undefined; 'process.session_leader.same_as_process'?: boolean | undefined; 'process.session_leader.saved_group.id'?: string | undefined; 'process.session_leader.saved_group.name'?: string | undefined; 'process.session_leader.saved_user.id'?: string | undefined; 'process.session_leader.saved_user.name'?: string | undefined; 'process.session_leader.start'?: string | number | undefined; 'process.session_leader.supplemental_groups.id'?: string | undefined; 'process.session_leader.supplemental_groups.name'?: string | undefined; 'process.session_leader.tty'?: unknown; 'process.session_leader.user.id'?: string | undefined; 'process.session_leader.user.name'?: string | undefined; 'process.session_leader.working_directory'?: string | undefined; 'process.start'?: string | number | undefined; 'process.supplemental_groups.id'?: string | undefined; 'process.supplemental_groups.name'?: string | undefined; 'process.thread.id'?: string | number | undefined; 'process.thread.name'?: string | undefined; 'process.title'?: string | undefined; 'process.tty'?: unknown; 'process.uptime'?: string | number | undefined; 'process.user.id'?: string | undefined; 'process.user.name'?: string | undefined; 'process.working_directory'?: string | undefined; 'registry.data.bytes'?: string | undefined; 'registry.data.strings'?: string[] | undefined; 'registry.data.type'?: string | undefined; 'registry.hive'?: string | undefined; 'registry.key'?: string | undefined; 'registry.path'?: string | undefined; 'registry.value'?: string | undefined; 'related.hash'?: string[] | undefined; 'related.hosts'?: string[] | undefined; 'related.ip'?: string[] | undefined; 'related.user'?: string[] | undefined; 'rule.author'?: string[] | undefined; 'rule.category'?: string | undefined; 'rule.description'?: string | undefined; 'rule.id'?: string | undefined; 'rule.license'?: string | undefined; 'rule.name'?: string | undefined; 'rule.reference'?: string | undefined; 'rule.ruleset'?: string | undefined; 'rule.uuid'?: string | undefined; 'rule.version'?: string | undefined; 'server.address'?: string | undefined; 'server.as.number'?: string | number | undefined; 'server.as.organization.name'?: string | undefined; 'server.bytes'?: string | number | undefined; 'server.domain'?: string | undefined; 'server.geo.city_name'?: string | undefined; 'server.geo.continent_code'?: string | undefined; 'server.geo.continent_name'?: string | undefined; 'server.geo.country_iso_code'?: string | undefined; 'server.geo.country_name'?: string | undefined; 'server.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'server.geo.name'?: string | undefined; 'server.geo.postal_code'?: string | undefined; 'server.geo.region_iso_code'?: string | undefined; 'server.geo.region_name'?: string | undefined; 'server.geo.timezone'?: string | undefined; 'server.ip'?: string | undefined; 'server.mac'?: string | undefined; 'server.nat.ip'?: string | undefined; 'server.nat.port'?: string | number | undefined; 'server.packets'?: string | number | undefined; 'server.port'?: string | number | undefined; 'server.registered_domain'?: string | undefined; 'server.subdomain'?: string | undefined; 'server.top_level_domain'?: string | undefined; 'server.user.domain'?: string | undefined; 'server.user.email'?: string | undefined; 'server.user.full_name'?: string | undefined; 'server.user.group.domain'?: string | undefined; 'server.user.group.id'?: string | undefined; 'server.user.group.name'?: string | undefined; 'server.user.hash'?: string | undefined; 'server.user.id'?: string | undefined; 'server.user.name'?: string | undefined; 'server.user.roles'?: string[] | undefined; 'service.address'?: string | undefined; 'service.environment'?: string | undefined; 'service.ephemeral_id'?: string | undefined; 'service.id'?: string | undefined; 'service.name'?: string | undefined; 'service.node.name'?: string | undefined; 'service.node.role'?: string | undefined; 'service.node.roles'?: string[] | undefined; 'service.origin.address'?: string | undefined; 'service.origin.environment'?: string | undefined; 'service.origin.ephemeral_id'?: string | undefined; 'service.origin.id'?: string | undefined; 'service.origin.name'?: string | undefined; 'service.origin.node.name'?: string | undefined; 'service.origin.node.role'?: string | undefined; 'service.origin.node.roles'?: string[] | undefined; 'service.origin.state'?: string | undefined; 'service.origin.type'?: string | undefined; 'service.origin.version'?: string | undefined; 'service.state'?: string | undefined; 'service.target.address'?: string | undefined; 'service.target.environment'?: string | undefined; 'service.target.ephemeral_id'?: string | undefined; 'service.target.id'?: string | undefined; 'service.target.name'?: string | undefined; 'service.target.node.name'?: string | undefined; 'service.target.node.role'?: string | undefined; 'service.target.node.roles'?: string[] | undefined; 'service.target.state'?: string | undefined; 'service.target.type'?: string | undefined; 'service.target.version'?: string | undefined; 'service.type'?: string | undefined; 'service.version'?: string | undefined; 'source.address'?: string | undefined; 'source.as.number'?: string | number | undefined; 'source.as.organization.name'?: string | undefined; 'source.bytes'?: string | number | undefined; 'source.domain'?: string | undefined; 'source.geo.city_name'?: string | undefined; 'source.geo.continent_code'?: string | undefined; 'source.geo.continent_name'?: string | undefined; 'source.geo.country_iso_code'?: string | undefined; 'source.geo.country_name'?: string | undefined; 'source.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'source.geo.name'?: string | undefined; 'source.geo.postal_code'?: string | undefined; 'source.geo.region_iso_code'?: string | undefined; 'source.geo.region_name'?: string | undefined; 'source.geo.timezone'?: string | undefined; 'source.ip'?: string | undefined; 'source.mac'?: string | undefined; 'source.nat.ip'?: string | undefined; 'source.nat.port'?: string | number | undefined; 'source.packets'?: string | number | undefined; 'source.port'?: string | number | undefined; 'source.registered_domain'?: string | undefined; 'source.subdomain'?: string | undefined; 'source.top_level_domain'?: string | undefined; 'source.user.domain'?: string | undefined; 'source.user.email'?: string | undefined; 'source.user.full_name'?: string | undefined; 'source.user.group.domain'?: string | undefined; 'source.user.group.id'?: string | undefined; 'source.user.group.name'?: string | undefined; 'source.user.hash'?: string | undefined; 'source.user.id'?: string | undefined; 'source.user.name'?: string | undefined; 'source.user.roles'?: string[] | undefined; 'span.id'?: string | undefined; tags?: string[] | undefined; 'threat.enrichments'?: { indicator?: unknown; 'matched.atomic'?: string | undefined; 'matched.field'?: string | undefined; 'matched.id'?: string | undefined; 'matched.index'?: string | undefined; 'matched.occurred'?: string | number | undefined; 'matched.type'?: string | undefined; }[] | undefined; 'threat.feed.dashboard_id'?: string | undefined; 'threat.feed.description'?: string | undefined; 'threat.feed.name'?: string | undefined; 'threat.feed.reference'?: string | undefined; 'threat.framework'?: string | undefined; 'threat.group.alias'?: string[] | undefined; 'threat.group.id'?: string | undefined; 'threat.group.name'?: string | undefined; 'threat.group.reference'?: string | undefined; 'threat.indicator.as.number'?: string | number | undefined; 'threat.indicator.as.organization.name'?: string | undefined; 'threat.indicator.confidence'?: string | undefined; 'threat.indicator.description'?: string | undefined; 'threat.indicator.email.address'?: string | undefined; 'threat.indicator.file.accessed'?: string | number | undefined; 'threat.indicator.file.attributes'?: string[] | undefined; 'threat.indicator.file.code_signature.digest_algorithm'?: string | undefined; 'threat.indicator.file.code_signature.exists'?: boolean | undefined; 'threat.indicator.file.code_signature.signing_id'?: string | undefined; 'threat.indicator.file.code_signature.status'?: string | undefined; 'threat.indicator.file.code_signature.subject_name'?: string | undefined; 'threat.indicator.file.code_signature.team_id'?: string | undefined; 'threat.indicator.file.code_signature.timestamp'?: string | number | undefined; 'threat.indicator.file.code_signature.trusted'?: boolean | undefined; 'threat.indicator.file.code_signature.valid'?: boolean | undefined; 'threat.indicator.file.created'?: string | number | undefined; 'threat.indicator.file.ctime'?: string | number | undefined; 'threat.indicator.file.device'?: string | undefined; 'threat.indicator.file.directory'?: string | undefined; 'threat.indicator.file.drive_letter'?: string | undefined; 'threat.indicator.file.elf.architecture'?: string | undefined; 'threat.indicator.file.elf.byte_order'?: string | undefined; 'threat.indicator.file.elf.cpu_type'?: string | undefined; 'threat.indicator.file.elf.creation_date'?: string | number | undefined; 'threat.indicator.file.elf.exports'?: unknown[] | undefined; 'threat.indicator.file.elf.header.abi_version'?: string | undefined; 'threat.indicator.file.elf.header.class'?: string | undefined; 'threat.indicator.file.elf.header.data'?: string | undefined; 'threat.indicator.file.elf.header.entrypoint'?: string | number | undefined; 'threat.indicator.file.elf.header.object_version'?: string | undefined; 'threat.indicator.file.elf.header.os_abi'?: string | undefined; 'threat.indicator.file.elf.header.type'?: string | undefined; 'threat.indicator.file.elf.header.version'?: string | undefined; 'threat.indicator.file.elf.imports'?: unknown[] | undefined; 'threat.indicator.file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'threat.indicator.file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'threat.indicator.file.elf.shared_libraries'?: string[] | undefined; 'threat.indicator.file.elf.telfhash'?: string | undefined; 'threat.indicator.file.extension'?: string | undefined; 'threat.indicator.file.fork_name'?: string | undefined; 'threat.indicator.file.gid'?: string | undefined; 'threat.indicator.file.group'?: string | undefined; 'threat.indicator.file.hash.md5'?: string | undefined; 'threat.indicator.file.hash.sha1'?: string | undefined; 'threat.indicator.file.hash.sha256'?: string | undefined; 'threat.indicator.file.hash.sha384'?: string | undefined; 'threat.indicator.file.hash.sha512'?: string | undefined; 'threat.indicator.file.hash.ssdeep'?: string | undefined; 'threat.indicator.file.hash.tlsh'?: string | undefined; 'threat.indicator.file.inode'?: string | undefined; 'threat.indicator.file.mime_type'?: string | undefined; 'threat.indicator.file.mode'?: string | undefined; 'threat.indicator.file.mtime'?: string | number | undefined; 'threat.indicator.file.name'?: string | undefined; 'threat.indicator.file.owner'?: string | undefined; 'threat.indicator.file.path'?: string | undefined; 'threat.indicator.file.pe.architecture'?: string | undefined; 'threat.indicator.file.pe.company'?: string | undefined; 'threat.indicator.file.pe.description'?: string | undefined; 'threat.indicator.file.pe.file_version'?: string | undefined; 'threat.indicator.file.pe.imphash'?: string | undefined; 'threat.indicator.file.pe.original_file_name'?: string | undefined; 'threat.indicator.file.pe.pehash'?: string | undefined; 'threat.indicator.file.pe.product'?: string | undefined; 'threat.indicator.file.size'?: string | number | undefined; 'threat.indicator.file.target_path'?: string | undefined; 'threat.indicator.file.type'?: string | undefined; 'threat.indicator.file.uid'?: string | undefined; 'threat.indicator.file.x509.alternative_names'?: string[] | undefined; 'threat.indicator.file.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.file.x509.issuer.country'?: string[] | undefined; 'threat.indicator.file.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.not_after'?: string | number | undefined; 'threat.indicator.file.x509.not_before'?: string | number | undefined; 'threat.indicator.file.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.file.x509.public_key_curve'?: string | undefined; 'threat.indicator.file.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.file.x509.public_key_size'?: string | number | undefined; 'threat.indicator.file.x509.serial_number'?: string | undefined; 'threat.indicator.file.x509.signature_algorithm'?: string | undefined; 'threat.indicator.file.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.file.x509.subject.country'?: string[] | undefined; 'threat.indicator.file.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.subject.locality'?: string[] | undefined; 'threat.indicator.file.x509.subject.organization'?: string[] | undefined; 'threat.indicator.file.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.version_number'?: string | undefined; 'threat.indicator.first_seen'?: string | number | undefined; 'threat.indicator.geo.city_name'?: string | undefined; 'threat.indicator.geo.continent_code'?: string | undefined; 'threat.indicator.geo.continent_name'?: string | undefined; 'threat.indicator.geo.country_iso_code'?: string | undefined; 'threat.indicator.geo.country_name'?: string | undefined; 'threat.indicator.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'threat.indicator.geo.name'?: string | undefined; 'threat.indicator.geo.postal_code'?: string | undefined; 'threat.indicator.geo.region_iso_code'?: string | undefined; 'threat.indicator.geo.region_name'?: string | undefined; 'threat.indicator.geo.timezone'?: string | undefined; 'threat.indicator.ip'?: string | undefined; 'threat.indicator.last_seen'?: string | number | undefined; 'threat.indicator.marking.tlp'?: string | undefined; 'threat.indicator.marking.tlp_version'?: string | undefined; 'threat.indicator.modified_at'?: string | number | undefined; 'threat.indicator.port'?: string | number | undefined; 'threat.indicator.provider'?: string | undefined; 'threat.indicator.reference'?: string | undefined; 'threat.indicator.registry.data.bytes'?: string | undefined; 'threat.indicator.registry.data.strings'?: string[] | undefined; 'threat.indicator.registry.data.type'?: string | undefined; 'threat.indicator.registry.hive'?: string | undefined; 'threat.indicator.registry.key'?: string | undefined; 'threat.indicator.registry.path'?: string | undefined; 'threat.indicator.registry.value'?: string | undefined; 'threat.indicator.scanner_stats'?: string | number | undefined; 'threat.indicator.sightings'?: string | number | undefined; 'threat.indicator.type'?: string | undefined; 'threat.indicator.url.domain'?: string | undefined; 'threat.indicator.url.extension'?: string | undefined; 'threat.indicator.url.fragment'?: string | undefined; 'threat.indicator.url.full'?: string | undefined; 'threat.indicator.url.original'?: string | undefined; 'threat.indicator.url.password'?: string | undefined; 'threat.indicator.url.path'?: string | undefined; 'threat.indicator.url.port'?: string | number | undefined; 'threat.indicator.url.query'?: string | undefined; 'threat.indicator.url.registered_domain'?: string | undefined; 'threat.indicator.url.scheme'?: string | undefined; 'threat.indicator.url.subdomain'?: string | undefined; 'threat.indicator.url.top_level_domain'?: string | undefined; 'threat.indicator.url.username'?: string | undefined; 'threat.indicator.x509.alternative_names'?: string[] | undefined; 'threat.indicator.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.x509.issuer.country'?: string[] | undefined; 'threat.indicator.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.x509.not_after'?: string | number | undefined; 'threat.indicator.x509.not_before'?: string | number | undefined; 'threat.indicator.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.x509.public_key_curve'?: string | undefined; 'threat.indicator.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.x509.public_key_size'?: string | number | undefined; 'threat.indicator.x509.serial_number'?: string | undefined; 'threat.indicator.x509.signature_algorithm'?: string | undefined; 'threat.indicator.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.x509.subject.country'?: string[] | undefined; 'threat.indicator.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.x509.subject.locality'?: string[] | undefined; 'threat.indicator.x509.subject.organization'?: string[] | undefined; 'threat.indicator.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.x509.version_number'?: string | undefined; 'threat.software.alias'?: string[] | undefined; 'threat.software.id'?: string | undefined; 'threat.software.name'?: string | undefined; 'threat.software.platforms'?: string[] | undefined; 'threat.software.reference'?: string | undefined; 'threat.software.type'?: string | undefined; 'threat.tactic.id'?: string[] | undefined; 'threat.tactic.name'?: string[] | undefined; 'threat.tactic.reference'?: string[] | undefined; 'threat.technique.id'?: string[] | undefined; 'threat.technique.name'?: string[] | undefined; 'threat.technique.reference'?: string[] | undefined; 'threat.technique.subtechnique.id'?: string[] | undefined; 'threat.technique.subtechnique.name'?: string[] | undefined; 'threat.technique.subtechnique.reference'?: string[] | undefined; 'tls.cipher'?: string | undefined; 'tls.client.certificate'?: string | undefined; 'tls.client.certificate_chain'?: string[] | undefined; 'tls.client.hash.md5'?: string | undefined; 'tls.client.hash.sha1'?: string | undefined; 'tls.client.hash.sha256'?: string | undefined; 'tls.client.issuer'?: string | undefined; 'tls.client.ja3'?: string | undefined; 'tls.client.not_after'?: string | number | undefined; 'tls.client.not_before'?: string | number | undefined; 'tls.client.server_name'?: string | undefined; 'tls.client.subject'?: string | undefined; 'tls.client.supported_ciphers'?: string[] | undefined; 'tls.client.x509.alternative_names'?: string[] | undefined; 'tls.client.x509.issuer.common_name'?: string[] | undefined; 'tls.client.x509.issuer.country'?: string[] | undefined; 'tls.client.x509.issuer.distinguished_name'?: string | undefined; 'tls.client.x509.issuer.locality'?: string[] | undefined; 'tls.client.x509.issuer.organization'?: string[] | undefined; 'tls.client.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.client.x509.issuer.state_or_province'?: string[] | undefined; 'tls.client.x509.not_after'?: string | number | undefined; 'tls.client.x509.not_before'?: string | number | undefined; 'tls.client.x509.public_key_algorithm'?: string | undefined; 'tls.client.x509.public_key_curve'?: string | undefined; 'tls.client.x509.public_key_exponent'?: string | number | undefined; 'tls.client.x509.public_key_size'?: string | number | undefined; 'tls.client.x509.serial_number'?: string | undefined; 'tls.client.x509.signature_algorithm'?: string | undefined; 'tls.client.x509.subject.common_name'?: string[] | undefined; 'tls.client.x509.subject.country'?: string[] | undefined; 'tls.client.x509.subject.distinguished_name'?: string | undefined; 'tls.client.x509.subject.locality'?: string[] | undefined; 'tls.client.x509.subject.organization'?: string[] | undefined; 'tls.client.x509.subject.organizational_unit'?: string[] | undefined; 'tls.client.x509.subject.state_or_province'?: string[] | undefined; 'tls.client.x509.version_number'?: string | undefined; 'tls.curve'?: string | undefined; 'tls.established'?: boolean | undefined; 'tls.next_protocol'?: string | undefined; 'tls.resumed'?: boolean | undefined; 'tls.server.certificate'?: string | undefined; 'tls.server.certificate_chain'?: string[] | undefined; 'tls.server.hash.md5'?: string | undefined; 'tls.server.hash.sha1'?: string | undefined; 'tls.server.hash.sha256'?: string | undefined; 'tls.server.issuer'?: string | undefined; 'tls.server.ja3s'?: string | undefined; 'tls.server.not_after'?: string | number | undefined; 'tls.server.not_before'?: string | number | undefined; 'tls.server.subject'?: string | undefined; 'tls.server.x509.alternative_names'?: string[] | undefined; 'tls.server.x509.issuer.common_name'?: string[] | undefined; 'tls.server.x509.issuer.country'?: string[] | undefined; 'tls.server.x509.issuer.distinguished_name'?: string | undefined; 'tls.server.x509.issuer.locality'?: string[] | undefined; 'tls.server.x509.issuer.organization'?: string[] | undefined; 'tls.server.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.server.x509.issuer.state_or_province'?: string[] | undefined; 'tls.server.x509.not_after'?: string | number | undefined; 'tls.server.x509.not_before'?: string | number | undefined; 'tls.server.x509.public_key_algorithm'?: string | undefined; 'tls.server.x509.public_key_curve'?: string | undefined; 'tls.server.x509.public_key_exponent'?: string | number | undefined; 'tls.server.x509.public_key_size'?: string | number | undefined; 'tls.server.x509.serial_number'?: string | undefined; 'tls.server.x509.signature_algorithm'?: string | undefined; 'tls.server.x509.subject.common_name'?: string[] | undefined; 'tls.server.x509.subject.country'?: string[] | undefined; 'tls.server.x509.subject.distinguished_name'?: string | undefined; 'tls.server.x509.subject.locality'?: string[] | undefined; 'tls.server.x509.subject.organization'?: string[] | undefined; 'tls.server.x509.subject.organizational_unit'?: string[] | undefined; 'tls.server.x509.subject.state_or_province'?: string[] | undefined; 'tls.server.x509.version_number'?: string | undefined; 'tls.version'?: string | undefined; 'tls.version_protocol'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.id'?: string | undefined; 'url.domain'?: string | undefined; 'url.extension'?: string | undefined; 'url.fragment'?: string | undefined; 'url.full'?: string | undefined; 'url.original'?: string | undefined; 'url.password'?: string | undefined; 'url.path'?: string | undefined; 'url.port'?: string | number | undefined; 'url.query'?: string | undefined; 'url.registered_domain'?: string | undefined; 'url.scheme'?: string | undefined; 'url.subdomain'?: string | undefined; 'url.top_level_domain'?: string | undefined; 'url.username'?: string | undefined; 'user.changes.domain'?: string | undefined; 'user.changes.email'?: string | undefined; 'user.changes.full_name'?: string | undefined; 'user.changes.group.domain'?: string | undefined; 'user.changes.group.id'?: string | undefined; 'user.changes.group.name'?: string | undefined; 'user.changes.hash'?: string | undefined; 'user.changes.id'?: string | undefined; 'user.changes.name'?: string | undefined; 'user.changes.roles'?: string[] | undefined; 'user.domain'?: string | undefined; 'user.effective.domain'?: string | undefined; 'user.effective.email'?: string | undefined; 'user.effective.full_name'?: string | undefined; 'user.effective.group.domain'?: string | undefined; 'user.effective.group.id'?: string | undefined; 'user.effective.group.name'?: string | undefined; 'user.effective.hash'?: string | undefined; 'user.effective.id'?: string | undefined; 'user.effective.name'?: string | undefined; 'user.effective.roles'?: string[] | undefined; 'user.email'?: string | undefined; 'user.full_name'?: string | undefined; 'user.group.domain'?: string | undefined; 'user.group.id'?: string | undefined; 'user.group.name'?: string | undefined; 'user.hash'?: string | undefined; 'user.id'?: string | undefined; 'user.name'?: string | undefined; 'user.risk.calculated_level'?: string | undefined; 'user.risk.calculated_score'?: number | undefined; 'user.risk.calculated_score_norm'?: number | undefined; 'user.risk.static_level'?: string | undefined; 'user.risk.static_score'?: number | undefined; 'user.risk.static_score_norm'?: number | undefined; 'user.roles'?: string[] | undefined; 'user.target.domain'?: string | undefined; 'user.target.email'?: string | undefined; 'user.target.full_name'?: string | undefined; 'user.target.group.domain'?: string | undefined; 'user.target.group.id'?: string | undefined; 'user.target.group.name'?: string | undefined; 'user.target.hash'?: string | undefined; 'user.target.id'?: string | undefined; 'user.target.name'?: string | undefined; 'user.target.roles'?: string[] | undefined; 'user_agent.device.name'?: string | undefined; 'user_agent.name'?: string | undefined; 'user_agent.original'?: string | undefined; 'user_agent.os.family'?: string | undefined; 'user_agent.os.full'?: string | undefined; 'user_agent.os.kernel'?: string | undefined; 'user_agent.os.name'?: string | undefined; 'user_agent.os.platform'?: string | undefined; 'user_agent.os.type'?: string | undefined; 'user_agent.os.version'?: string | undefined; 'user_agent.version'?: string | undefined; 'vulnerability.category'?: string[] | undefined; 'vulnerability.classification'?: string | undefined; 'vulnerability.description'?: string | undefined; 'vulnerability.enumeration'?: string | undefined; 'vulnerability.id'?: string | undefined; 'vulnerability.reference'?: string | undefined; 'vulnerability.report_id'?: string | undefined; 'vulnerability.scanner.vendor'?: string | undefined; 'vulnerability.score.base'?: number | undefined; 'vulnerability.score.environmental'?: number | undefined; 'vulnerability.score.temporal'?: number | undefined; 'vulnerability.score.version'?: string | undefined; 'vulnerability.severity'?: string | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }) | ({} & { 'kibana.alert.context'?: unknown; 'kibana.alert.evaluation.threshold'?: string | number | undefined; 'kibana.alert.evaluation.value'?: string | number | undefined; 'kibana.alert.evaluation.values'?: (string | number)[] | undefined; 'kibana.alert.group'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; 'slo.id'?: string | undefined; 'slo.instanceId'?: string | undefined; 'slo.revision'?: string | number | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }) | ({} & { 'agent.name'?: string | undefined; 'anomaly.bucket_span.minutes'?: string | undefined; 'anomaly.start'?: string | number | undefined; 'error.message'?: string | undefined; 'kibana.alert.context'?: unknown; 'kibana.alert.evaluation.threshold'?: string | number | undefined; 'kibana.alert.evaluation.value'?: string | number | undefined; 'kibana.alert.evaluation.values'?: (string | number)[] | undefined; 'kibana.alert.group'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; 'monitor.id'?: string | undefined; 'monitor.name'?: string | undefined; 'monitor.type'?: string | undefined; 'observer.geo.name'?: string | undefined; 'tls.server.hash.sha256'?: string | undefined; 'tls.server.x509.issuer.common_name'?: string | undefined; 'tls.server.x509.not_after'?: string | number | undefined; 'tls.server.x509.not_before'?: string | number | undefined; 'tls.server.x509.subject.common_name'?: string | undefined; 'url.full'?: string | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }) | ({ '@timestamp': string | number; 'kibana.alert.ancestors': { depth: string | number; id: string; index: string; type: string; }[]; 'kibana.alert.depth': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.original_event.action': string; 'kibana.alert.original_event.category': string[]; 'kibana.alert.original_event.created': string | number; 'kibana.alert.original_event.dataset': string; 'kibana.alert.original_event.id': string; 'kibana.alert.original_event.ingested': string | number; 'kibana.alert.original_event.kind': string; 'kibana.alert.original_event.module': string; 'kibana.alert.original_event.original': string; 'kibana.alert.original_event.outcome': string; 'kibana.alert.original_event.provider': string; 'kibana.alert.original_event.sequence': string | number; 'kibana.alert.original_event.type': string[]; 'kibana.alert.original_time': string | number; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.false_positives': string[]; 'kibana.alert.rule.max_signals': (string | number)[]; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.threat.framework': string; 'kibana.alert.rule.threat.tactic.id': string; 'kibana.alert.rule.threat.tactic.name': string; 'kibana.alert.rule.threat.tactic.reference': string; 'kibana.alert.rule.threat.technique.id': string; 'kibana.alert.rule.threat.technique.name': string; 'kibana.alert.rule.threat.technique.reference': string; 'kibana.alert.rule.threat.technique.subtechnique.id': string; 'kibana.alert.rule.threat.technique.subtechnique.name': string; 'kibana.alert.rule.threat.technique.subtechnique.reference': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'ecs.version'?: string | undefined; 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.ancestors.rule'?: string | undefined; 'kibana.alert.building_block_type'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.group.id'?: string | undefined; 'kibana.alert.group.index'?: number | undefined; 'kibana.alert.host.criticality_level'?: string | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.new_terms'?: string[] | undefined; 'kibana.alert.original_event.agent_id_status'?: string | undefined; 'kibana.alert.original_event.code'?: string | undefined; 'kibana.alert.original_event.duration'?: string | undefined; 'kibana.alert.original_event.end'?: string | number | undefined; 'kibana.alert.original_event.hash'?: string | undefined; 'kibana.alert.original_event.reason'?: string | undefined; 'kibana.alert.original_event.reference'?: string | undefined; 'kibana.alert.original_event.risk_score'?: number | undefined; 'kibana.alert.original_event.risk_score_norm'?: number | undefined; 'kibana.alert.original_event.severity'?: string | number | undefined; 'kibana.alert.original_event.start'?: string | number | undefined; 'kibana.alert.original_event.timezone'?: string | undefined; 'kibana.alert.original_event.url'?: string | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.building_block_type'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.immutable'?: string[] | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.rule.timeline_id'?: string[] | undefined; 'kibana.alert.rule.timeline_title'?: string[] | undefined; 'kibana.alert.rule.timestamp_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.threshold_result.cardinality'?: unknown; 'kibana.alert.threshold_result.count'?: string | number | undefined; 'kibana.alert.threshold_result.from'?: string | number | undefined; 'kibana.alert.threshold_result.terms'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.user.criticality_level'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.alert.workflow_user'?: string | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & { '@timestamp': string | number; 'ecs.version': string; } & { 'agent.build.original'?: string | undefined; 'agent.ephemeral_id'?: string | undefined; 'agent.id'?: string | undefined; 'agent.name'?: string | undefined; 'agent.type'?: string | undefined; 'agent.version'?: string | undefined; 'client.address'?: string | undefined; 'client.as.number'?: string | number | undefined; 'client.as.organization.name'?: string | undefined; 'client.bytes'?: string | number | undefined; 'client.domain'?: string | undefined; 'client.geo.city_name'?: string | undefined; 'client.geo.continent_code'?: string | undefined; 'client.geo.continent_name'?: string | undefined; 'client.geo.country_iso_code'?: string | undefined; 'client.geo.country_name'?: string | undefined; 'client.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'client.geo.name'?: string | undefined; 'client.geo.postal_code'?: string | undefined; 'client.geo.region_iso_code'?: string | undefined; 'client.geo.region_name'?: string | undefined; 'client.geo.timezone'?: string | undefined; 'client.ip'?: string | undefined; 'client.mac'?: string | undefined; 'client.nat.ip'?: string | undefined; 'client.nat.port'?: string | number | undefined; 'client.packets'?: string | number | undefined; 'client.port'?: string | number | undefined; 'client.registered_domain'?: string | undefined; 'client.subdomain'?: string | undefined; 'client.top_level_domain'?: string | undefined; 'client.user.domain'?: string | undefined; 'client.user.email'?: string | undefined; 'client.user.full_name'?: string | undefined; 'client.user.group.domain'?: string | undefined; 'client.user.group.id'?: string | undefined; 'client.user.group.name'?: string | undefined; 'client.user.hash'?: string | undefined; 'client.user.id'?: string | undefined; 'client.user.name'?: string | undefined; 'client.user.roles'?: string[] | undefined; 'cloud.account.id'?: string | undefined; 'cloud.account.name'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.instance.id'?: string | undefined; 'cloud.instance.name'?: string | undefined; 'cloud.machine.type'?: string | undefined; 'cloud.origin.account.id'?: string | undefined; 'cloud.origin.account.name'?: string | undefined; 'cloud.origin.availability_zone'?: string | undefined; 'cloud.origin.instance.id'?: string | undefined; 'cloud.origin.instance.name'?: string | undefined; 'cloud.origin.machine.type'?: string | undefined; 'cloud.origin.project.id'?: string | undefined; 'cloud.origin.project.name'?: string | undefined; 'cloud.origin.provider'?: string | undefined; 'cloud.origin.region'?: string | undefined; 'cloud.origin.service.name'?: string | undefined; 'cloud.project.id'?: string | undefined; 'cloud.project.name'?: string | undefined; 'cloud.provider'?: string | undefined; 'cloud.region'?: string | undefined; 'cloud.service.name'?: string | undefined; 'cloud.target.account.id'?: string | undefined; 'cloud.target.account.name'?: string | undefined; 'cloud.target.availability_zone'?: string | undefined; 'cloud.target.instance.id'?: string | undefined; 'cloud.target.instance.name'?: string | undefined; 'cloud.target.machine.type'?: string | undefined; 'cloud.target.project.id'?: string | undefined; 'cloud.target.project.name'?: string | undefined; 'cloud.target.provider'?: string | undefined; 'cloud.target.region'?: string | undefined; 'cloud.target.service.name'?: string | undefined; 'container.cpu.usage'?: string | number | undefined; 'container.disk.read.bytes'?: string | number | undefined; 'container.disk.write.bytes'?: string | number | undefined; 'container.id'?: string | undefined; 'container.image.hash.all'?: string[] | undefined; 'container.image.name'?: string | undefined; 'container.image.tag'?: string[] | undefined; 'container.labels'?: unknown; 'container.memory.usage'?: string | number | undefined; 'container.name'?: string | undefined; 'container.network.egress.bytes'?: string | number | undefined; 'container.network.ingress.bytes'?: string | number | undefined; 'container.runtime'?: string | undefined; 'destination.address'?: string | undefined; 'destination.as.number'?: string | number | undefined; 'destination.as.organization.name'?: string | undefined; 'destination.bytes'?: string | number | undefined; 'destination.domain'?: string | undefined; 'destination.geo.city_name'?: string | undefined; 'destination.geo.continent_code'?: string | undefined; 'destination.geo.continent_name'?: string | undefined; 'destination.geo.country_iso_code'?: string | undefined; 'destination.geo.country_name'?: string | undefined; 'destination.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'destination.geo.name'?: string | undefined; 'destination.geo.postal_code'?: string | undefined; 'destination.geo.region_iso_code'?: string | undefined; 'destination.geo.region_name'?: string | undefined; 'destination.geo.timezone'?: string | undefined; 'destination.ip'?: string | undefined; 'destination.mac'?: string | undefined; 'destination.nat.ip'?: string | undefined; 'destination.nat.port'?: string | number | undefined; 'destination.packets'?: string | number | undefined; 'destination.port'?: string | number | undefined; 'destination.registered_domain'?: string | undefined; 'destination.subdomain'?: string | undefined; 'destination.top_level_domain'?: string | undefined; 'destination.user.domain'?: string | undefined; 'destination.user.email'?: string | undefined; 'destination.user.full_name'?: string | undefined; 'destination.user.group.domain'?: string | undefined; 'destination.user.group.id'?: string | undefined; 'destination.user.group.name'?: string | undefined; 'destination.user.hash'?: string | undefined; 'destination.user.id'?: string | undefined; 'destination.user.name'?: string | undefined; 'destination.user.roles'?: string[] | undefined; 'device.id'?: string | undefined; 'device.manufacturer'?: string | undefined; 'device.model.identifier'?: string | undefined; 'device.model.name'?: string | undefined; 'dll.code_signature.digest_algorithm'?: string | undefined; 'dll.code_signature.exists'?: boolean | undefined; 'dll.code_signature.signing_id'?: string | undefined; 'dll.code_signature.status'?: string | undefined; 'dll.code_signature.subject_name'?: string | undefined; 'dll.code_signature.team_id'?: string | undefined; 'dll.code_signature.timestamp'?: string | number | undefined; 'dll.code_signature.trusted'?: boolean | undefined; 'dll.code_signature.valid'?: boolean | undefined; 'dll.hash.md5'?: string | undefined; 'dll.hash.sha1'?: string | undefined; 'dll.hash.sha256'?: string | undefined; 'dll.hash.sha384'?: string | undefined; 'dll.hash.sha512'?: string | undefined; 'dll.hash.ssdeep'?: string | undefined; 'dll.hash.tlsh'?: string | undefined; 'dll.name'?: string | undefined; 'dll.path'?: string | undefined; 'dll.pe.architecture'?: string | undefined; 'dll.pe.company'?: string | undefined; 'dll.pe.description'?: string | undefined; 'dll.pe.file_version'?: string | undefined; 'dll.pe.imphash'?: string | undefined; 'dll.pe.original_file_name'?: string | undefined; 'dll.pe.pehash'?: string | undefined; 'dll.pe.product'?: string | undefined; 'dns.answers'?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; 'dns.header_flags'?: string[] | undefined; 'dns.id'?: string | undefined; 'dns.op_code'?: string | undefined; 'dns.question.class'?: string | undefined; 'dns.question.name'?: string | undefined; 'dns.question.registered_domain'?: string | undefined; 'dns.question.subdomain'?: string | undefined; 'dns.question.top_level_domain'?: string | undefined; 'dns.question.type'?: string | undefined; 'dns.resolved_ip'?: string[] | undefined; 'dns.response_code'?: string | undefined; 'dns.type'?: string | undefined; 'email.attachments'?: { 'file.extension'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.name'?: string | undefined; 'file.size'?: string | number | undefined; }[] | undefined; 'email.bcc.address'?: string[] | undefined; 'email.cc.address'?: string[] | undefined; 'email.content_type'?: string | undefined; 'email.delivery_timestamp'?: string | number | undefined; 'email.direction'?: string | undefined; 'email.from.address'?: string[] | undefined; 'email.local_id'?: string | undefined; 'email.message_id'?: string | undefined; 'email.origination_timestamp'?: string | number | undefined; 'email.reply_to.address'?: string[] | undefined; 'email.sender.address'?: string | undefined; 'email.subject'?: string | undefined; 'email.to.address'?: string[] | undefined; 'email.x_mailer'?: string | undefined; 'error.code'?: string | undefined; 'error.id'?: string | undefined; 'error.message'?: string | undefined; 'error.stack_trace'?: string | undefined; 'error.type'?: string | undefined; 'event.action'?: string | undefined; 'event.agent_id_status'?: string | undefined; 'event.category'?: string[] | undefined; 'event.code'?: string | undefined; 'event.created'?: string | number | undefined; 'event.dataset'?: string | undefined; 'event.duration'?: string | number | undefined; 'event.end'?: string | number | undefined; 'event.hash'?: string | undefined; 'event.id'?: string | undefined; 'event.ingested'?: string | number | undefined; 'event.kind'?: string | undefined; 'event.module'?: string | undefined; 'event.original'?: string | undefined; 'event.outcome'?: string | undefined; 'event.provider'?: string | undefined; 'event.reason'?: string | undefined; 'event.reference'?: string | undefined; 'event.risk_score'?: number | undefined; 'event.risk_score_norm'?: number | undefined; 'event.sequence'?: string | number | undefined; 'event.severity'?: string | number | undefined; 'event.start'?: string | number | undefined; 'event.timezone'?: string | undefined; 'event.type'?: string[] | undefined; 'event.url'?: string | undefined; 'faas.coldstart'?: boolean | undefined; 'faas.execution'?: string | undefined; 'faas.id'?: string | undefined; 'faas.name'?: string | undefined; 'faas.version'?: string | undefined; 'file.accessed'?: string | number | undefined; 'file.attributes'?: string[] | undefined; 'file.code_signature.digest_algorithm'?: string | undefined; 'file.code_signature.exists'?: boolean | undefined; 'file.code_signature.signing_id'?: string | undefined; 'file.code_signature.status'?: string | undefined; 'file.code_signature.subject_name'?: string | undefined; 'file.code_signature.team_id'?: string | undefined; 'file.code_signature.timestamp'?: string | number | undefined; 'file.code_signature.trusted'?: boolean | undefined; 'file.code_signature.valid'?: boolean | undefined; 'file.created'?: string | number | undefined; 'file.ctime'?: string | number | undefined; 'file.device'?: string | undefined; 'file.directory'?: string | undefined; 'file.drive_letter'?: string | undefined; 'file.elf.architecture'?: string | undefined; 'file.elf.byte_order'?: string | undefined; 'file.elf.cpu_type'?: string | undefined; 'file.elf.creation_date'?: string | number | undefined; 'file.elf.exports'?: unknown[] | undefined; 'file.elf.header.abi_version'?: string | undefined; 'file.elf.header.class'?: string | undefined; 'file.elf.header.data'?: string | undefined; 'file.elf.header.entrypoint'?: string | number | undefined; 'file.elf.header.object_version'?: string | undefined; 'file.elf.header.os_abi'?: string | undefined; 'file.elf.header.type'?: string | undefined; 'file.elf.header.version'?: string | undefined; 'file.elf.imports'?: unknown[] | undefined; 'file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'file.elf.shared_libraries'?: string[] | undefined; 'file.elf.telfhash'?: string | undefined; 'file.extension'?: string | undefined; 'file.fork_name'?: string | undefined; 'file.gid'?: string | undefined; 'file.group'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.inode'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.mode'?: string | undefined; 'file.mtime'?: string | number | undefined; 'file.name'?: string | undefined; 'file.owner'?: string | undefined; 'file.path'?: string | undefined; 'file.pe.architecture'?: string | undefined; 'file.pe.company'?: string | undefined; 'file.pe.description'?: string | undefined; 'file.pe.file_version'?: string | undefined; 'file.pe.imphash'?: string | undefined; 'file.pe.original_file_name'?: string | undefined; 'file.pe.pehash'?: string | undefined; 'file.pe.product'?: string | undefined; 'file.size'?: string | number | undefined; 'file.target_path'?: string | undefined; 'file.type'?: string | undefined; 'file.uid'?: string | undefined; 'file.x509.alternative_names'?: string[] | undefined; 'file.x509.issuer.common_name'?: string[] | undefined; 'file.x509.issuer.country'?: string[] | undefined; 'file.x509.issuer.distinguished_name'?: string | undefined; 'file.x509.issuer.locality'?: string[] | undefined; 'file.x509.issuer.organization'?: string[] | undefined; 'file.x509.issuer.organizational_unit'?: string[] | undefined; 'file.x509.issuer.state_or_province'?: string[] | undefined; 'file.x509.not_after'?: string | number | undefined; 'file.x509.not_before'?: string | number | undefined; 'file.x509.public_key_algorithm'?: string | undefined; 'file.x509.public_key_curve'?: string | undefined; 'file.x509.public_key_exponent'?: string | number | undefined; 'file.x509.public_key_size'?: string | number | undefined; 'file.x509.serial_number'?: string | undefined; 'file.x509.signature_algorithm'?: string | undefined; 'file.x509.subject.common_name'?: string[] | undefined; 'file.x509.subject.country'?: string[] | undefined; 'file.x509.subject.distinguished_name'?: string | undefined; 'file.x509.subject.locality'?: string[] | undefined; 'file.x509.subject.organization'?: string[] | undefined; 'file.x509.subject.organizational_unit'?: string[] | undefined; 'file.x509.subject.state_or_province'?: string[] | undefined; 'file.x509.version_number'?: string | undefined; 'group.domain'?: string | undefined; 'group.id'?: string | undefined; 'group.name'?: string | undefined; 'host.architecture'?: string | undefined; 'host.boot.id'?: string | undefined; 'host.cpu.usage'?: string | number | undefined; 'host.disk.read.bytes'?: string | number | undefined; 'host.disk.write.bytes'?: string | number | undefined; 'host.domain'?: string | undefined; 'host.geo.city_name'?: string | undefined; 'host.geo.continent_code'?: string | undefined; 'host.geo.continent_name'?: string | undefined; 'host.geo.country_iso_code'?: string | undefined; 'host.geo.country_name'?: string | undefined; 'host.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'host.geo.name'?: string | undefined; 'host.geo.postal_code'?: string | undefined; 'host.geo.region_iso_code'?: string | undefined; 'host.geo.region_name'?: string | undefined; 'host.geo.timezone'?: string | undefined; 'host.hostname'?: string | undefined; 'host.id'?: string | undefined; 'host.ip'?: string[] | undefined; 'host.mac'?: string[] | undefined; 'host.name'?: string | undefined; 'host.network.egress.bytes'?: string | number | undefined; 'host.network.egress.packets'?: string | number | undefined; 'host.network.ingress.bytes'?: string | number | undefined; 'host.network.ingress.packets'?: string | number | undefined; 'host.os.family'?: string | undefined; 'host.os.full'?: string | undefined; 'host.os.kernel'?: string | undefined; 'host.os.name'?: string | undefined; 'host.os.platform'?: string | undefined; 'host.os.type'?: string | undefined; 'host.os.version'?: string | undefined; 'host.pid_ns_ino'?: string | undefined; 'host.risk.calculated_level'?: string | undefined; 'host.risk.calculated_score'?: number | undefined; 'host.risk.calculated_score_norm'?: number | undefined; 'host.risk.static_level'?: string | undefined; 'host.risk.static_score'?: number | undefined; 'host.risk.static_score_norm'?: number | undefined; 'host.type'?: string | undefined; 'host.uptime'?: string | number | undefined; 'http.request.body.bytes'?: string | number | undefined; 'http.request.body.content'?: string | undefined; 'http.request.bytes'?: string | number | undefined; 'http.request.id'?: string | undefined; 'http.request.method'?: string | undefined; 'http.request.mime_type'?: string | undefined; 'http.request.referrer'?: string | undefined; 'http.response.body.bytes'?: string | number | undefined; 'http.response.body.content'?: string | undefined; 'http.response.bytes'?: string | number | undefined; 'http.response.mime_type'?: string | undefined; 'http.response.status_code'?: string | number | undefined; 'http.version'?: string | undefined; labels?: unknown; 'log.file.path'?: string | undefined; 'log.level'?: string | undefined; 'log.logger'?: string | undefined; 'log.origin.file.line'?: string | number | undefined; 'log.origin.file.name'?: string | undefined; 'log.origin.function'?: string | undefined; 'log.syslog'?: unknown; message?: string | undefined; 'network.application'?: string | undefined; 'network.bytes'?: string | number | undefined; 'network.community_id'?: string | undefined; 'network.direction'?: string | undefined; 'network.forwarded_ip'?: string | undefined; 'network.iana_number'?: string | undefined; 'network.inner'?: unknown; 'network.name'?: string | undefined; 'network.packets'?: string | number | undefined; 'network.protocol'?: string | undefined; 'network.transport'?: string | undefined; 'network.type'?: string | undefined; 'network.vlan.id'?: string | undefined; 'network.vlan.name'?: string | undefined; 'observer.egress'?: unknown; 'observer.geo.city_name'?: string | undefined; 'observer.geo.continent_code'?: string | undefined; 'observer.geo.continent_name'?: string | undefined; 'observer.geo.country_iso_code'?: string | undefined; 'observer.geo.country_name'?: string | undefined; 'observer.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'observer.geo.name'?: string | undefined; 'observer.geo.postal_code'?: string | undefined; 'observer.geo.region_iso_code'?: string | undefined; 'observer.geo.region_name'?: string | undefined; 'observer.geo.timezone'?: string | undefined; 'observer.hostname'?: string | undefined; 'observer.ingress'?: unknown; 'observer.ip'?: string[] | undefined; 'observer.mac'?: string[] | undefined; 'observer.name'?: string | undefined; 'observer.os.family'?: string | undefined; 'observer.os.full'?: string | undefined; 'observer.os.kernel'?: string | undefined; 'observer.os.name'?: string | undefined; 'observer.os.platform'?: string | undefined; 'observer.os.type'?: string | undefined; 'observer.os.version'?: string | undefined; 'observer.product'?: string | undefined; 'observer.serial_number'?: string | undefined; 'observer.type'?: string | undefined; 'observer.vendor'?: string | undefined; 'observer.version'?: string | undefined; 'orchestrator.api_version'?: string | undefined; 'orchestrator.cluster.id'?: string | undefined; 'orchestrator.cluster.name'?: string | undefined; 'orchestrator.cluster.url'?: string | undefined; 'orchestrator.cluster.version'?: string | undefined; 'orchestrator.namespace'?: string | undefined; 'orchestrator.organization'?: string | undefined; 'orchestrator.resource.id'?: string | undefined; 'orchestrator.resource.ip'?: string[] | undefined; 'orchestrator.resource.name'?: string | undefined; 'orchestrator.resource.parent.type'?: string | undefined; 'orchestrator.resource.type'?: string | undefined; 'orchestrator.type'?: string | undefined; 'organization.id'?: string | undefined; 'organization.name'?: string | undefined; 'package.architecture'?: string | undefined; 'package.build_version'?: string | undefined; 'package.checksum'?: string | undefined; 'package.description'?: string | undefined; 'package.install_scope'?: string | undefined; 'package.installed'?: string | number | undefined; 'package.license'?: string | undefined; 'package.name'?: string | undefined; 'package.path'?: string | undefined; 'package.reference'?: string | undefined; 'package.size'?: string | number | undefined; 'package.type'?: string | undefined; 'package.version'?: string | undefined; 'process.args'?: string[] | undefined; 'process.args_count'?: string | number | undefined; 'process.code_signature.digest_algorithm'?: string | undefined; 'process.code_signature.exists'?: boolean | undefined; 'process.code_signature.signing_id'?: string | undefined; 'process.code_signature.status'?: string | undefined; 'process.code_signature.subject_name'?: string | undefined; 'process.code_signature.team_id'?: string | undefined; 'process.code_signature.timestamp'?: string | number | undefined; 'process.code_signature.trusted'?: boolean | undefined; 'process.code_signature.valid'?: boolean | undefined; 'process.command_line'?: string | undefined; 'process.elf.architecture'?: string | undefined; 'process.elf.byte_order'?: string | undefined; 'process.elf.cpu_type'?: string | undefined; 'process.elf.creation_date'?: string | number | undefined; 'process.elf.exports'?: unknown[] | undefined; 'process.elf.header.abi_version'?: string | undefined; 'process.elf.header.class'?: string | undefined; 'process.elf.header.data'?: string | undefined; 'process.elf.header.entrypoint'?: string | number | undefined; 'process.elf.header.object_version'?: string | undefined; 'process.elf.header.os_abi'?: string | undefined; 'process.elf.header.type'?: string | undefined; 'process.elf.header.version'?: string | undefined; 'process.elf.imports'?: unknown[] | undefined; 'process.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.elf.shared_libraries'?: string[] | undefined; 'process.elf.telfhash'?: string | undefined; 'process.end'?: string | number | undefined; 'process.entity_id'?: string | undefined; 'process.entry_leader.args'?: string[] | undefined; 'process.entry_leader.args_count'?: string | number | undefined; 'process.entry_leader.attested_groups.name'?: string | undefined; 'process.entry_leader.attested_user.id'?: string | undefined; 'process.entry_leader.attested_user.name'?: string | undefined; 'process.entry_leader.command_line'?: string | undefined; 'process.entry_leader.entity_id'?: string | undefined; 'process.entry_leader.entry_meta.source.ip'?: string | undefined; 'process.entry_leader.entry_meta.type'?: string | undefined; 'process.entry_leader.executable'?: string | undefined; 'process.entry_leader.group.id'?: string | undefined; 'process.entry_leader.group.name'?: string | undefined; 'process.entry_leader.interactive'?: boolean | undefined; 'process.entry_leader.name'?: string | undefined; 'process.entry_leader.parent.entity_id'?: string | undefined; 'process.entry_leader.parent.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.entity_id'?: string | undefined; 'process.entry_leader.parent.session_leader.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.start'?: string | number | undefined; 'process.entry_leader.parent.start'?: string | number | undefined; 'process.entry_leader.pid'?: string | number | undefined; 'process.entry_leader.real_group.id'?: string | undefined; 'process.entry_leader.real_group.name'?: string | undefined; 'process.entry_leader.real_user.id'?: string | undefined; 'process.entry_leader.real_user.name'?: string | undefined; 'process.entry_leader.same_as_process'?: boolean | undefined; 'process.entry_leader.saved_group.id'?: string | undefined; 'process.entry_leader.saved_group.name'?: string | undefined; 'process.entry_leader.saved_user.id'?: string | undefined; 'process.entry_leader.saved_user.name'?: string | undefined; 'process.entry_leader.start'?: string | number | undefined; 'process.entry_leader.supplemental_groups.id'?: string | undefined; 'process.entry_leader.supplemental_groups.name'?: string | undefined; 'process.entry_leader.tty'?: unknown; 'process.entry_leader.user.id'?: string | undefined; 'process.entry_leader.user.name'?: string | undefined; 'process.entry_leader.working_directory'?: string | undefined; 'process.env_vars'?: string[] | undefined; 'process.executable'?: string | undefined; 'process.exit_code'?: string | number | undefined; 'process.group_leader.args'?: string[] | undefined; 'process.group_leader.args_count'?: string | number | undefined; 'process.group_leader.command_line'?: string | undefined; 'process.group_leader.entity_id'?: string | undefined; 'process.group_leader.executable'?: string | undefined; 'process.group_leader.group.id'?: string | undefined; 'process.group_leader.group.name'?: string | undefined; 'process.group_leader.interactive'?: boolean | undefined; 'process.group_leader.name'?: string | undefined; 'process.group_leader.pid'?: string | number | undefined; 'process.group_leader.real_group.id'?: string | undefined; 'process.group_leader.real_group.name'?: string | undefined; 'process.group_leader.real_user.id'?: string | undefined; 'process.group_leader.real_user.name'?: string | undefined; 'process.group_leader.same_as_process'?: boolean | undefined; 'process.group_leader.saved_group.id'?: string | undefined; 'process.group_leader.saved_group.name'?: string | undefined; 'process.group_leader.saved_user.id'?: string | undefined; 'process.group_leader.saved_user.name'?: string | undefined; 'process.group_leader.start'?: string | number | undefined; 'process.group_leader.supplemental_groups.id'?: string | undefined; 'process.group_leader.supplemental_groups.name'?: string | undefined; 'process.group_leader.tty'?: unknown; 'process.group_leader.user.id'?: string | undefined; 'process.group_leader.user.name'?: string | undefined; 'process.group_leader.working_directory'?: string | undefined; 'process.hash.md5'?: string | undefined; 'process.hash.sha1'?: string | undefined; 'process.hash.sha256'?: string | undefined; 'process.hash.sha384'?: string | undefined; 'process.hash.sha512'?: string | undefined; 'process.hash.ssdeep'?: string | undefined; 'process.hash.tlsh'?: string | undefined; 'process.interactive'?: boolean | undefined; 'process.io'?: unknown; 'process.name'?: string | undefined; 'process.parent.args'?: string[] | undefined; 'process.parent.args_count'?: string | number | undefined; 'process.parent.code_signature.digest_algorithm'?: string | undefined; 'process.parent.code_signature.exists'?: boolean | undefined; 'process.parent.code_signature.signing_id'?: string | undefined; 'process.parent.code_signature.status'?: string | undefined; 'process.parent.code_signature.subject_name'?: string | undefined; 'process.parent.code_signature.team_id'?: string | undefined; 'process.parent.code_signature.timestamp'?: string | number | undefined; 'process.parent.code_signature.trusted'?: boolean | undefined; 'process.parent.code_signature.valid'?: boolean | undefined; 'process.parent.command_line'?: string | undefined; 'process.parent.elf.architecture'?: string | undefined; 'process.parent.elf.byte_order'?: string | undefined; 'process.parent.elf.cpu_type'?: string | undefined; 'process.parent.elf.creation_date'?: string | number | undefined; 'process.parent.elf.exports'?: unknown[] | undefined; 'process.parent.elf.header.abi_version'?: string | undefined; 'process.parent.elf.header.class'?: string | undefined; 'process.parent.elf.header.data'?: string | undefined; 'process.parent.elf.header.entrypoint'?: string | number | undefined; 'process.parent.elf.header.object_version'?: string | undefined; 'process.parent.elf.header.os_abi'?: string | undefined; 'process.parent.elf.header.type'?: string | undefined; 'process.parent.elf.header.version'?: string | undefined; 'process.parent.elf.imports'?: unknown[] | undefined; 'process.parent.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.parent.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.parent.elf.shared_libraries'?: string[] | undefined; 'process.parent.elf.telfhash'?: string | undefined; 'process.parent.end'?: string | number | undefined; 'process.parent.entity_id'?: string | undefined; 'process.parent.executable'?: string | undefined; 'process.parent.exit_code'?: string | number | undefined; 'process.parent.group.id'?: string | undefined; 'process.parent.group.name'?: string | undefined; 'process.parent.group_leader.entity_id'?: string | undefined; 'process.parent.group_leader.pid'?: string | number | undefined; 'process.parent.group_leader.start'?: string | number | undefined; 'process.parent.hash.md5'?: string | undefined; 'process.parent.hash.sha1'?: string | undefined; 'process.parent.hash.sha256'?: string | undefined; 'process.parent.hash.sha384'?: string | undefined; 'process.parent.hash.sha512'?: string | undefined; 'process.parent.hash.ssdeep'?: string | undefined; 'process.parent.hash.tlsh'?: string | undefined; 'process.parent.interactive'?: boolean | undefined; 'process.parent.name'?: string | undefined; 'process.parent.pe.architecture'?: string | undefined; 'process.parent.pe.company'?: string | undefined; 'process.parent.pe.description'?: string | undefined; 'process.parent.pe.file_version'?: string | undefined; 'process.parent.pe.imphash'?: string | undefined; 'process.parent.pe.original_file_name'?: string | undefined; 'process.parent.pe.pehash'?: string | undefined; 'process.parent.pe.product'?: string | undefined; 'process.parent.pgid'?: string | number | undefined; 'process.parent.pid'?: string | number | undefined; 'process.parent.real_group.id'?: string | undefined; 'process.parent.real_group.name'?: string | undefined; 'process.parent.real_user.id'?: string | undefined; 'process.parent.real_user.name'?: string | undefined; 'process.parent.saved_group.id'?: string | undefined; 'process.parent.saved_group.name'?: string | undefined; 'process.parent.saved_user.id'?: string | undefined; 'process.parent.saved_user.name'?: string | undefined; 'process.parent.start'?: string | number | undefined; 'process.parent.supplemental_groups.id'?: string | undefined; 'process.parent.supplemental_groups.name'?: string | undefined; 'process.parent.thread.id'?: string | number | undefined; 'process.parent.thread.name'?: string | undefined; 'process.parent.title'?: string | undefined; 'process.parent.tty'?: unknown; 'process.parent.uptime'?: string | number | undefined; 'process.parent.user.id'?: string | undefined; 'process.parent.user.name'?: string | undefined; 'process.parent.working_directory'?: string | undefined; 'process.pe.architecture'?: string | undefined; 'process.pe.company'?: string | undefined; 'process.pe.description'?: string | undefined; 'process.pe.file_version'?: string | undefined; 'process.pe.imphash'?: string | undefined; 'process.pe.original_file_name'?: string | undefined; 'process.pe.pehash'?: string | undefined; 'process.pe.product'?: string | undefined; 'process.pgid'?: string | number | undefined; 'process.pid'?: string | number | undefined; 'process.previous.args'?: string[] | undefined; 'process.previous.args_count'?: string | number | undefined; 'process.previous.executable'?: string | undefined; 'process.real_group.id'?: string | undefined; 'process.real_group.name'?: string | undefined; 'process.real_user.id'?: string | undefined; 'process.real_user.name'?: string | undefined; 'process.saved_group.id'?: string | undefined; 'process.saved_group.name'?: string | undefined; 'process.saved_user.id'?: string | undefined; 'process.saved_user.name'?: string | undefined; 'process.session_leader.args'?: string[] | undefined; 'process.session_leader.args_count'?: string | number | undefined; 'process.session_leader.command_line'?: string | undefined; 'process.session_leader.entity_id'?: string | undefined; 'process.session_leader.executable'?: string | undefined; 'process.session_leader.group.id'?: string | undefined; 'process.session_leader.group.name'?: string | undefined; 'process.session_leader.interactive'?: boolean | undefined; 'process.session_leader.name'?: string | undefined; 'process.session_leader.parent.entity_id'?: string | undefined; 'process.session_leader.parent.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.entity_id'?: string | undefined; 'process.session_leader.parent.session_leader.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.start'?: string | number | undefined; 'process.session_leader.parent.start'?: string | number | undefined; 'process.session_leader.pid'?: string | number | undefined; 'process.session_leader.real_group.id'?: string | undefined; 'process.session_leader.real_group.name'?: string | undefined; 'process.session_leader.real_user.id'?: string | undefined; 'process.session_leader.real_user.name'?: string | undefined; 'process.session_leader.same_as_process'?: boolean | undefined; 'process.session_leader.saved_group.id'?: string | undefined; 'process.session_leader.saved_group.name'?: string | undefined; 'process.session_leader.saved_user.id'?: string | undefined; 'process.session_leader.saved_user.name'?: string | undefined; 'process.session_leader.start'?: string | number | undefined; 'process.session_leader.supplemental_groups.id'?: string | undefined; 'process.session_leader.supplemental_groups.name'?: string | undefined; 'process.session_leader.tty'?: unknown; 'process.session_leader.user.id'?: string | undefined; 'process.session_leader.user.name'?: string | undefined; 'process.session_leader.working_directory'?: string | undefined; 'process.start'?: string | number | undefined; 'process.supplemental_groups.id'?: string | undefined; 'process.supplemental_groups.name'?: string | undefined; 'process.thread.id'?: string | number | undefined; 'process.thread.name'?: string | undefined; 'process.title'?: string | undefined; 'process.tty'?: unknown; 'process.uptime'?: string | number | undefined; 'process.user.id'?: string | undefined; 'process.user.name'?: string | undefined; 'process.working_directory'?: string | undefined; 'registry.data.bytes'?: string | undefined; 'registry.data.strings'?: string[] | undefined; 'registry.data.type'?: string | undefined; 'registry.hive'?: string | undefined; 'registry.key'?: string | undefined; 'registry.path'?: string | undefined; 'registry.value'?: string | undefined; 'related.hash'?: string[] | undefined; 'related.hosts'?: string[] | undefined; 'related.ip'?: string[] | undefined; 'related.user'?: string[] | undefined; 'rule.author'?: string[] | undefined; 'rule.category'?: string | undefined; 'rule.description'?: string | undefined; 'rule.id'?: string | undefined; 'rule.license'?: string | undefined; 'rule.name'?: string | undefined; 'rule.reference'?: string | undefined; 'rule.ruleset'?: string | undefined; 'rule.uuid'?: string | undefined; 'rule.version'?: string | undefined; 'server.address'?: string | undefined; 'server.as.number'?: string | number | undefined; 'server.as.organization.name'?: string | undefined; 'server.bytes'?: string | number | undefined; 'server.domain'?: string | undefined; 'server.geo.city_name'?: string | undefined; 'server.geo.continent_code'?: string | undefined; 'server.geo.continent_name'?: string | undefined; 'server.geo.country_iso_code'?: string | undefined; 'server.geo.country_name'?: string | undefined; 'server.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'server.geo.name'?: string | undefined; 'server.geo.postal_code'?: string | undefined; 'server.geo.region_iso_code'?: string | undefined; 'server.geo.region_name'?: string | undefined; 'server.geo.timezone'?: string | undefined; 'server.ip'?: string | undefined; 'server.mac'?: string | undefined; 'server.nat.ip'?: string | undefined; 'server.nat.port'?: string | number | undefined; 'server.packets'?: string | number | undefined; 'server.port'?: string | number | undefined; 'server.registered_domain'?: string | undefined; 'server.subdomain'?: string | undefined; 'server.top_level_domain'?: string | undefined; 'server.user.domain'?: string | undefined; 'server.user.email'?: string | undefined; 'server.user.full_name'?: string | undefined; 'server.user.group.domain'?: string | undefined; 'server.user.group.id'?: string | undefined; 'server.user.group.name'?: string | undefined; 'server.user.hash'?: string | undefined; 'server.user.id'?: string | undefined; 'server.user.name'?: string | undefined; 'server.user.roles'?: string[] | undefined; 'service.address'?: string | undefined; 'service.environment'?: string | undefined; 'service.ephemeral_id'?: string | undefined; 'service.id'?: string | undefined; 'service.name'?: string | undefined; 'service.node.name'?: string | undefined; 'service.node.role'?: string | undefined; 'service.node.roles'?: string[] | undefined; 'service.origin.address'?: string | undefined; 'service.origin.environment'?: string | undefined; 'service.origin.ephemeral_id'?: string | undefined; 'service.origin.id'?: string | undefined; 'service.origin.name'?: string | undefined; 'service.origin.node.name'?: string | undefined; 'service.origin.node.role'?: string | undefined; 'service.origin.node.roles'?: string[] | undefined; 'service.origin.state'?: string | undefined; 'service.origin.type'?: string | undefined; 'service.origin.version'?: string | undefined; 'service.state'?: string | undefined; 'service.target.address'?: string | undefined; 'service.target.environment'?: string | undefined; 'service.target.ephemeral_id'?: string | undefined; 'service.target.id'?: string | undefined; 'service.target.name'?: string | undefined; 'service.target.node.name'?: string | undefined; 'service.target.node.role'?: string | undefined; 'service.target.node.roles'?: string[] | undefined; 'service.target.state'?: string | undefined; 'service.target.type'?: string | undefined; 'service.target.version'?: string | undefined; 'service.type'?: string | undefined; 'service.version'?: string | undefined; 'source.address'?: string | undefined; 'source.as.number'?: string | number | undefined; 'source.as.organization.name'?: string | undefined; 'source.bytes'?: string | number | undefined; 'source.domain'?: string | undefined; 'source.geo.city_name'?: string | undefined; 'source.geo.continent_code'?: string | undefined; 'source.geo.continent_name'?: string | undefined; 'source.geo.country_iso_code'?: string | undefined; 'source.geo.country_name'?: string | undefined; 'source.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'source.geo.name'?: string | undefined; 'source.geo.postal_code'?: string | undefined; 'source.geo.region_iso_code'?: string | undefined; 'source.geo.region_name'?: string | undefined; 'source.geo.timezone'?: string | undefined; 'source.ip'?: string | undefined; 'source.mac'?: string | undefined; 'source.nat.ip'?: string | undefined; 'source.nat.port'?: string | number | undefined; 'source.packets'?: string | number | undefined; 'source.port'?: string | number | undefined; 'source.registered_domain'?: string | undefined; 'source.subdomain'?: string | undefined; 'source.top_level_domain'?: string | undefined; 'source.user.domain'?: string | undefined; 'source.user.email'?: string | undefined; 'source.user.full_name'?: string | undefined; 'source.user.group.domain'?: string | undefined; 'source.user.group.id'?: string | undefined; 'source.user.group.name'?: string | undefined; 'source.user.hash'?: string | undefined; 'source.user.id'?: string | undefined; 'source.user.name'?: string | undefined; 'source.user.roles'?: string[] | undefined; 'span.id'?: string | undefined; tags?: string[] | undefined; 'threat.enrichments'?: { indicator?: unknown; 'matched.atomic'?: string | undefined; 'matched.field'?: string | undefined; 'matched.id'?: string | undefined; 'matched.index'?: string | undefined; 'matched.occurred'?: string | number | undefined; 'matched.type'?: string | undefined; }[] | undefined; 'threat.feed.dashboard_id'?: string | undefined; 'threat.feed.description'?: string | undefined; 'threat.feed.name'?: string | undefined; 'threat.feed.reference'?: string | undefined; 'threat.framework'?: string | undefined; 'threat.group.alias'?: string[] | undefined; 'threat.group.id'?: string | undefined; 'threat.group.name'?: string | undefined; 'threat.group.reference'?: string | undefined; 'threat.indicator.as.number'?: string | number | undefined; 'threat.indicator.as.organization.name'?: string | undefined; 'threat.indicator.confidence'?: string | undefined; 'threat.indicator.description'?: string | undefined; 'threat.indicator.email.address'?: string | undefined; 'threat.indicator.file.accessed'?: string | number | undefined; 'threat.indicator.file.attributes'?: string[] | undefined; 'threat.indicator.file.code_signature.digest_algorithm'?: string | undefined; 'threat.indicator.file.code_signature.exists'?: boolean | undefined; 'threat.indicator.file.code_signature.signing_id'?: string | undefined; 'threat.indicator.file.code_signature.status'?: string | undefined; 'threat.indicator.file.code_signature.subject_name'?: string | undefined; 'threat.indicator.file.code_signature.team_id'?: string | undefined; 'threat.indicator.file.code_signature.timestamp'?: string | number | undefined; 'threat.indicator.file.code_signature.trusted'?: boolean | undefined; 'threat.indicator.file.code_signature.valid'?: boolean | undefined; 'threat.indicator.file.created'?: string | number | undefined; 'threat.indicator.file.ctime'?: string | number | undefined; 'threat.indicator.file.device'?: string | undefined; 'threat.indicator.file.directory'?: string | undefined; 'threat.indicator.file.drive_letter'?: string | undefined; 'threat.indicator.file.elf.architecture'?: string | undefined; 'threat.indicator.file.elf.byte_order'?: string | undefined; 'threat.indicator.file.elf.cpu_type'?: string | undefined; 'threat.indicator.file.elf.creation_date'?: string | number | undefined; 'threat.indicator.file.elf.exports'?: unknown[] | undefined; 'threat.indicator.file.elf.header.abi_version'?: string | undefined; 'threat.indicator.file.elf.header.class'?: string | undefined; 'threat.indicator.file.elf.header.data'?: string | undefined; 'threat.indicator.file.elf.header.entrypoint'?: string | number | undefined; 'threat.indicator.file.elf.header.object_version'?: string | undefined; 'threat.indicator.file.elf.header.os_abi'?: string | undefined; 'threat.indicator.file.elf.header.type'?: string | undefined; 'threat.indicator.file.elf.header.version'?: string | undefined; 'threat.indicator.file.elf.imports'?: unknown[] | undefined; 'threat.indicator.file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'threat.indicator.file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'threat.indicator.file.elf.shared_libraries'?: string[] | undefined; 'threat.indicator.file.elf.telfhash'?: string | undefined; 'threat.indicator.file.extension'?: string | undefined; 'threat.indicator.file.fork_name'?: string | undefined; 'threat.indicator.file.gid'?: string | undefined; 'threat.indicator.file.group'?: string | undefined; 'threat.indicator.file.hash.md5'?: string | undefined; 'threat.indicator.file.hash.sha1'?: string | undefined; 'threat.indicator.file.hash.sha256'?: string | undefined; 'threat.indicator.file.hash.sha384'?: string | undefined; 'threat.indicator.file.hash.sha512'?: string | undefined; 'threat.indicator.file.hash.ssdeep'?: string | undefined; 'threat.indicator.file.hash.tlsh'?: string | undefined; 'threat.indicator.file.inode'?: string | undefined; 'threat.indicator.file.mime_type'?: string | undefined; 'threat.indicator.file.mode'?: string | undefined; 'threat.indicator.file.mtime'?: string | number | undefined; 'threat.indicator.file.name'?: string | undefined; 'threat.indicator.file.owner'?: string | undefined; 'threat.indicator.file.path'?: string | undefined; 'threat.indicator.file.pe.architecture'?: string | undefined; 'threat.indicator.file.pe.company'?: string | undefined; 'threat.indicator.file.pe.description'?: string | undefined; 'threat.indicator.file.pe.file_version'?: string | undefined; 'threat.indicator.file.pe.imphash'?: string | undefined; 'threat.indicator.file.pe.original_file_name'?: string | undefined; 'threat.indicator.file.pe.pehash'?: string | undefined; 'threat.indicator.file.pe.product'?: string | undefined; 'threat.indicator.file.size'?: string | number | undefined; 'threat.indicator.file.target_path'?: string | undefined; 'threat.indicator.file.type'?: string | undefined; 'threat.indicator.file.uid'?: string | undefined; 'threat.indicator.file.x509.alternative_names'?: string[] | undefined; 'threat.indicator.file.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.file.x509.issuer.country'?: string[] | undefined; 'threat.indicator.file.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.not_after'?: string | number | undefined; 'threat.indicator.file.x509.not_before'?: string | number | undefined; 'threat.indicator.file.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.file.x509.public_key_curve'?: string | undefined; 'threat.indicator.file.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.file.x509.public_key_size'?: string | number | undefined; 'threat.indicator.file.x509.serial_number'?: string | undefined; 'threat.indicator.file.x509.signature_algorithm'?: string | undefined; 'threat.indicator.file.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.file.x509.subject.country'?: string[] | undefined; 'threat.indicator.file.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.subject.locality'?: string[] | undefined; 'threat.indicator.file.x509.subject.organization'?: string[] | undefined; 'threat.indicator.file.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.version_number'?: string | undefined; 'threat.indicator.first_seen'?: string | number | undefined; 'threat.indicator.geo.city_name'?: string | undefined; 'threat.indicator.geo.continent_code'?: string | undefined; 'threat.indicator.geo.continent_name'?: string | undefined; 'threat.indicator.geo.country_iso_code'?: string | undefined; 'threat.indicator.geo.country_name'?: string | undefined; 'threat.indicator.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'threat.indicator.geo.name'?: string | undefined; 'threat.indicator.geo.postal_code'?: string | undefined; 'threat.indicator.geo.region_iso_code'?: string | undefined; 'threat.indicator.geo.region_name'?: string | undefined; 'threat.indicator.geo.timezone'?: string | undefined; 'threat.indicator.ip'?: string | undefined; 'threat.indicator.last_seen'?: string | number | undefined; 'threat.indicator.marking.tlp'?: string | undefined; 'threat.indicator.marking.tlp_version'?: string | undefined; 'threat.indicator.modified_at'?: string | number | undefined; 'threat.indicator.port'?: string | number | undefined; 'threat.indicator.provider'?: string | undefined; 'threat.indicator.reference'?: string | undefined; 'threat.indicator.registry.data.bytes'?: string | undefined; 'threat.indicator.registry.data.strings'?: string[] | undefined; 'threat.indicator.registry.data.type'?: string | undefined; 'threat.indicator.registry.hive'?: string | undefined; 'threat.indicator.registry.key'?: string | undefined; 'threat.indicator.registry.path'?: string | undefined; 'threat.indicator.registry.value'?: string | undefined; 'threat.indicator.scanner_stats'?: string | number | undefined; 'threat.indicator.sightings'?: string | number | undefined; 'threat.indicator.type'?: string | undefined; 'threat.indicator.url.domain'?: string | undefined; 'threat.indicator.url.extension'?: string | undefined; 'threat.indicator.url.fragment'?: string | undefined; 'threat.indicator.url.full'?: string | undefined; 'threat.indicator.url.original'?: string | undefined; 'threat.indicator.url.password'?: string | undefined; 'threat.indicator.url.path'?: string | undefined; 'threat.indicator.url.port'?: string | number | undefined; 'threat.indicator.url.query'?: string | undefined; 'threat.indicator.url.registered_domain'?: string | undefined; 'threat.indicator.url.scheme'?: string | undefined; 'threat.indicator.url.subdomain'?: string | undefined; 'threat.indicator.url.top_level_domain'?: string | undefined; 'threat.indicator.url.username'?: string | undefined; 'threat.indicator.x509.alternative_names'?: string[] | undefined; 'threat.indicator.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.x509.issuer.country'?: string[] | undefined; 'threat.indicator.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.x509.not_after'?: string | number | undefined; 'threat.indicator.x509.not_before'?: string | number | undefined; 'threat.indicator.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.x509.public_key_curve'?: string | undefined; 'threat.indicator.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.x509.public_key_size'?: string | number | undefined; 'threat.indicator.x509.serial_number'?: string | undefined; 'threat.indicator.x509.signature_algorithm'?: string | undefined; 'threat.indicator.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.x509.subject.country'?: string[] | undefined; 'threat.indicator.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.x509.subject.locality'?: string[] | undefined; 'threat.indicator.x509.subject.organization'?: string[] | undefined; 'threat.indicator.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.x509.version_number'?: string | undefined; 'threat.software.alias'?: string[] | undefined; 'threat.software.id'?: string | undefined; 'threat.software.name'?: string | undefined; 'threat.software.platforms'?: string[] | undefined; 'threat.software.reference'?: string | undefined; 'threat.software.type'?: string | undefined; 'threat.tactic.id'?: string[] | undefined; 'threat.tactic.name'?: string[] | undefined; 'threat.tactic.reference'?: string[] | undefined; 'threat.technique.id'?: string[] | undefined; 'threat.technique.name'?: string[] | undefined; 'threat.technique.reference'?: string[] | undefined; 'threat.technique.subtechnique.id'?: string[] | undefined; 'threat.technique.subtechnique.name'?: string[] | undefined; 'threat.technique.subtechnique.reference'?: string[] | undefined; 'tls.cipher'?: string | undefined; 'tls.client.certificate'?: string | undefined; 'tls.client.certificate_chain'?: string[] | undefined; 'tls.client.hash.md5'?: string | undefined; 'tls.client.hash.sha1'?: string | undefined; 'tls.client.hash.sha256'?: string | undefined; 'tls.client.issuer'?: string | undefined; 'tls.client.ja3'?: string | undefined; 'tls.client.not_after'?: string | number | undefined; 'tls.client.not_before'?: string | number | undefined; 'tls.client.server_name'?: string | undefined; 'tls.client.subject'?: string | undefined; 'tls.client.supported_ciphers'?: string[] | undefined; 'tls.client.x509.alternative_names'?: string[] | undefined; 'tls.client.x509.issuer.common_name'?: string[] | undefined; 'tls.client.x509.issuer.country'?: string[] | undefined; 'tls.client.x509.issuer.distinguished_name'?: string | undefined; 'tls.client.x509.issuer.locality'?: string[] | undefined; 'tls.client.x509.issuer.organization'?: string[] | undefined; 'tls.client.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.client.x509.issuer.state_or_province'?: string[] | undefined; 'tls.client.x509.not_after'?: string | number | undefined; 'tls.client.x509.not_before'?: string | number | undefined; 'tls.client.x509.public_key_algorithm'?: string | undefined; 'tls.client.x509.public_key_curve'?: string | undefined; 'tls.client.x509.public_key_exponent'?: string | number | undefined; 'tls.client.x509.public_key_size'?: string | number | undefined; 'tls.client.x509.serial_number'?: string | undefined; 'tls.client.x509.signature_algorithm'?: string | undefined; 'tls.client.x509.subject.common_name'?: string[] | undefined; 'tls.client.x509.subject.country'?: string[] | undefined; 'tls.client.x509.subject.distinguished_name'?: string | undefined; 'tls.client.x509.subject.locality'?: string[] | undefined; 'tls.client.x509.subject.organization'?: string[] | undefined; 'tls.client.x509.subject.organizational_unit'?: string[] | undefined; 'tls.client.x509.subject.state_or_province'?: string[] | undefined; 'tls.client.x509.version_number'?: string | undefined; 'tls.curve'?: string | undefined; 'tls.established'?: boolean | undefined; 'tls.next_protocol'?: string | undefined; 'tls.resumed'?: boolean | undefined; 'tls.server.certificate'?: string | undefined; 'tls.server.certificate_chain'?: string[] | undefined; 'tls.server.hash.md5'?: string | undefined; 'tls.server.hash.sha1'?: string | undefined; 'tls.server.hash.sha256'?: string | undefined; 'tls.server.issuer'?: string | undefined; 'tls.server.ja3s'?: string | undefined; 'tls.server.not_after'?: string | number | undefined; 'tls.server.not_before'?: string | number | undefined; 'tls.server.subject'?: string | undefined; 'tls.server.x509.alternative_names'?: string[] | undefined; 'tls.server.x509.issuer.common_name'?: string[] | undefined; 'tls.server.x509.issuer.country'?: string[] | undefined; 'tls.server.x509.issuer.distinguished_name'?: string | undefined; 'tls.server.x509.issuer.locality'?: string[] | undefined; 'tls.server.x509.issuer.organization'?: string[] | undefined; 'tls.server.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.server.x509.issuer.state_or_province'?: string[] | undefined; 'tls.server.x509.not_after'?: string | number | undefined; 'tls.server.x509.not_before'?: string | number | undefined; 'tls.server.x509.public_key_algorithm'?: string | undefined; 'tls.server.x509.public_key_curve'?: string | undefined; 'tls.server.x509.public_key_exponent'?: string | number | undefined; 'tls.server.x509.public_key_size'?: string | number | undefined; 'tls.server.x509.serial_number'?: string | undefined; 'tls.server.x509.signature_algorithm'?: string | undefined; 'tls.server.x509.subject.common_name'?: string[] | undefined; 'tls.server.x509.subject.country'?: string[] | undefined; 'tls.server.x509.subject.distinguished_name'?: string | undefined; 'tls.server.x509.subject.locality'?: string[] | undefined; 'tls.server.x509.subject.organization'?: string[] | undefined; 'tls.server.x509.subject.organizational_unit'?: string[] | undefined; 'tls.server.x509.subject.state_or_province'?: string[] | undefined; 'tls.server.x509.version_number'?: string | undefined; 'tls.version'?: string | undefined; 'tls.version_protocol'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.id'?: string | undefined; 'url.domain'?: string | undefined; 'url.extension'?: string | undefined; 'url.fragment'?: string | undefined; 'url.full'?: string | undefined; 'url.original'?: string | undefined; 'url.password'?: string | undefined; 'url.path'?: string | undefined; 'url.port'?: string | number | undefined; 'url.query'?: string | undefined; 'url.registered_domain'?: string | undefined; 'url.scheme'?: string | undefined; 'url.subdomain'?: string | undefined; 'url.top_level_domain'?: string | undefined; 'url.username'?: string | undefined; 'user.changes.domain'?: string | undefined; 'user.changes.email'?: string | undefined; 'user.changes.full_name'?: string | undefined; 'user.changes.group.domain'?: string | undefined; 'user.changes.group.id'?: string | undefined; 'user.changes.group.name'?: string | undefined; 'user.changes.hash'?: string | undefined; 'user.changes.id'?: string | undefined; 'user.changes.name'?: string | undefined; 'user.changes.roles'?: string[] | undefined; 'user.domain'?: string | undefined; 'user.effective.domain'?: string | undefined; 'user.effective.email'?: string | undefined; 'user.effective.full_name'?: string | undefined; 'user.effective.group.domain'?: string | undefined; 'user.effective.group.id'?: string | undefined; 'user.effective.group.name'?: string | undefined; 'user.effective.hash'?: string | undefined; 'user.effective.id'?: string | undefined; 'user.effective.name'?: string | undefined; 'user.effective.roles'?: string[] | undefined; 'user.email'?: string | undefined; 'user.full_name'?: string | undefined; 'user.group.domain'?: string | undefined; 'user.group.id'?: string | undefined; 'user.group.name'?: string | undefined; 'user.hash'?: string | undefined; 'user.id'?: string | undefined; 'user.name'?: string | undefined; 'user.risk.calculated_level'?: string | undefined; 'user.risk.calculated_score'?: number | undefined; 'user.risk.calculated_score_norm'?: number | undefined; 'user.risk.static_level'?: string | undefined; 'user.risk.static_score'?: number | undefined; 'user.risk.static_score_norm'?: number | undefined; 'user.roles'?: string[] | undefined; 'user.target.domain'?: string | undefined; 'user.target.email'?: string | undefined; 'user.target.full_name'?: string | undefined; 'user.target.group.domain'?: string | undefined; 'user.target.group.id'?: string | undefined; 'user.target.group.name'?: string | undefined; 'user.target.hash'?: string | undefined; 'user.target.id'?: string | undefined; 'user.target.name'?: string | undefined; 'user.target.roles'?: string[] | undefined; 'user_agent.device.name'?: string | undefined; 'user_agent.name'?: string | undefined; 'user_agent.original'?: string | undefined; 'user_agent.os.family'?: string | undefined; 'user_agent.os.full'?: string | undefined; 'user_agent.os.kernel'?: string | undefined; 'user_agent.os.name'?: string | undefined; 'user_agent.os.platform'?: string | undefined; 'user_agent.os.type'?: string | undefined; 'user_agent.os.version'?: string | undefined; 'user_agent.version'?: string | undefined; 'vulnerability.category'?: string[] | undefined; 'vulnerability.classification'?: string | undefined; 'vulnerability.description'?: string | undefined; 'vulnerability.enumeration'?: string | undefined; 'vulnerability.id'?: string | undefined; 'vulnerability.reference'?: string | undefined; 'vulnerability.report_id'?: string | undefined; 'vulnerability.scanner.vendor'?: string | undefined; 'vulnerability.score.base'?: number | undefined; 'vulnerability.score.environmental'?: number | undefined; 'vulnerability.score.temporal'?: number | undefined; 'vulnerability.score.version'?: string | undefined; 'vulnerability.severity'?: string | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }) | ({ 'kibana.alert.job_id': string; } & { 'kibana.alert.anomaly_score'?: number[] | undefined; 'kibana.alert.anomaly_timestamp'?: string | number | undefined; 'kibana.alert.is_interim'?: boolean | undefined; 'kibana.alert.top_influencers'?: { influencer_field_name?: string | undefined; influencer_field_value?: string | undefined; influencer_score?: number | undefined; initial_influencer_score?: number | undefined; is_interim?: boolean | undefined; job_id?: string | undefined; timestamp?: string | number | undefined; }[] | undefined; 'kibana.alert.top_records'?: { actual?: number | undefined; by_field_name?: string | undefined; by_field_value?: string | undefined; detector_index?: number | undefined; field_name?: string | undefined; function?: string | undefined; initial_record_score?: number | undefined; is_interim?: boolean | undefined; job_id?: string | undefined; over_field_name?: string | undefined; over_field_value?: string | undefined; partition_field_name?: string | undefined; partition_field_value?: string | undefined; record_score?: number | undefined; timestamp?: string | number | undefined; typical?: number | undefined; }[] | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; })" + "({ '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; }) | ({} & {} & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; }) | ({} & { 'agent.name'?: string | undefined; 'error.grouping_key'?: string | undefined; 'error.grouping_name'?: string | undefined; 'kibana.alert.context'?: unknown; 'kibana.alert.evaluation.threshold'?: string | number | undefined; 'kibana.alert.evaluation.value'?: string | number | undefined; 'kibana.alert.evaluation.values'?: (string | number)[] | undefined; 'kibana.alert.group'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; labels?: unknown; 'processor.event'?: string | undefined; 'service.environment'?: string | undefined; 'service.language.name'?: string | undefined; 'service.name'?: string | undefined; 'transaction.name'?: string | undefined; 'transaction.type'?: string | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }) | ({} & { 'kibana.alert.context'?: unknown; 'kibana.alert.evaluation.threshold'?: string | number | undefined; 'kibana.alert.evaluation.value'?: string | number | undefined; 'kibana.alert.evaluation.values'?: (string | number)[] | undefined; 'kibana.alert.group'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & { '@timestamp': string | number; 'ecs.version': string; } & { 'agent.build.original'?: string | undefined; 'agent.ephemeral_id'?: string | undefined; 'agent.id'?: string | undefined; 'agent.name'?: string | undefined; 'agent.type'?: string | undefined; 'agent.version'?: string | undefined; 'client.address'?: string | undefined; 'client.as.number'?: string | number | undefined; 'client.as.organization.name'?: string | undefined; 'client.bytes'?: string | number | undefined; 'client.domain'?: string | undefined; 'client.geo.city_name'?: string | undefined; 'client.geo.continent_code'?: string | undefined; 'client.geo.continent_name'?: string | undefined; 'client.geo.country_iso_code'?: string | undefined; 'client.geo.country_name'?: string | undefined; 'client.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'client.geo.name'?: string | undefined; 'client.geo.postal_code'?: string | undefined; 'client.geo.region_iso_code'?: string | undefined; 'client.geo.region_name'?: string | undefined; 'client.geo.timezone'?: string | undefined; 'client.ip'?: string | undefined; 'client.mac'?: string | undefined; 'client.nat.ip'?: string | undefined; 'client.nat.port'?: string | number | undefined; 'client.packets'?: string | number | undefined; 'client.port'?: string | number | undefined; 'client.registered_domain'?: string | undefined; 'client.subdomain'?: string | undefined; 'client.top_level_domain'?: string | undefined; 'client.user.domain'?: string | undefined; 'client.user.email'?: string | undefined; 'client.user.full_name'?: string | undefined; 'client.user.group.domain'?: string | undefined; 'client.user.group.id'?: string | undefined; 'client.user.group.name'?: string | undefined; 'client.user.hash'?: string | undefined; 'client.user.id'?: string | undefined; 'client.user.name'?: string | undefined; 'client.user.roles'?: string[] | undefined; 'cloud.account.id'?: string | undefined; 'cloud.account.name'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.instance.id'?: string | undefined; 'cloud.instance.name'?: string | undefined; 'cloud.machine.type'?: string | undefined; 'cloud.origin.account.id'?: string | undefined; 'cloud.origin.account.name'?: string | undefined; 'cloud.origin.availability_zone'?: string | undefined; 'cloud.origin.instance.id'?: string | undefined; 'cloud.origin.instance.name'?: string | undefined; 'cloud.origin.machine.type'?: string | undefined; 'cloud.origin.project.id'?: string | undefined; 'cloud.origin.project.name'?: string | undefined; 'cloud.origin.provider'?: string | undefined; 'cloud.origin.region'?: string | undefined; 'cloud.origin.service.name'?: string | undefined; 'cloud.project.id'?: string | undefined; 'cloud.project.name'?: string | undefined; 'cloud.provider'?: string | undefined; 'cloud.region'?: string | undefined; 'cloud.service.name'?: string | undefined; 'cloud.target.account.id'?: string | undefined; 'cloud.target.account.name'?: string | undefined; 'cloud.target.availability_zone'?: string | undefined; 'cloud.target.instance.id'?: string | undefined; 'cloud.target.instance.name'?: string | undefined; 'cloud.target.machine.type'?: string | undefined; 'cloud.target.project.id'?: string | undefined; 'cloud.target.project.name'?: string | undefined; 'cloud.target.provider'?: string | undefined; 'cloud.target.region'?: string | undefined; 'cloud.target.service.name'?: string | undefined; 'container.cpu.usage'?: string | number | undefined; 'container.disk.read.bytes'?: string | number | undefined; 'container.disk.write.bytes'?: string | number | undefined; 'container.id'?: string | undefined; 'container.image.hash.all'?: string[] | undefined; 'container.image.name'?: string | undefined; 'container.image.tag'?: string[] | undefined; 'container.labels'?: unknown; 'container.memory.usage'?: string | number | undefined; 'container.name'?: string | undefined; 'container.network.egress.bytes'?: string | number | undefined; 'container.network.ingress.bytes'?: string | number | undefined; 'container.runtime'?: string | undefined; 'destination.address'?: string | undefined; 'destination.as.number'?: string | number | undefined; 'destination.as.organization.name'?: string | undefined; 'destination.bytes'?: string | number | undefined; 'destination.domain'?: string | undefined; 'destination.geo.city_name'?: string | undefined; 'destination.geo.continent_code'?: string | undefined; 'destination.geo.continent_name'?: string | undefined; 'destination.geo.country_iso_code'?: string | undefined; 'destination.geo.country_name'?: string | undefined; 'destination.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'destination.geo.name'?: string | undefined; 'destination.geo.postal_code'?: string | undefined; 'destination.geo.region_iso_code'?: string | undefined; 'destination.geo.region_name'?: string | undefined; 'destination.geo.timezone'?: string | undefined; 'destination.ip'?: string | undefined; 'destination.mac'?: string | undefined; 'destination.nat.ip'?: string | undefined; 'destination.nat.port'?: string | number | undefined; 'destination.packets'?: string | number | undefined; 'destination.port'?: string | number | undefined; 'destination.registered_domain'?: string | undefined; 'destination.subdomain'?: string | undefined; 'destination.top_level_domain'?: string | undefined; 'destination.user.domain'?: string | undefined; 'destination.user.email'?: string | undefined; 'destination.user.full_name'?: string | undefined; 'destination.user.group.domain'?: string | undefined; 'destination.user.group.id'?: string | undefined; 'destination.user.group.name'?: string | undefined; 'destination.user.hash'?: string | undefined; 'destination.user.id'?: string | undefined; 'destination.user.name'?: string | undefined; 'destination.user.roles'?: string[] | undefined; 'device.id'?: string | undefined; 'device.manufacturer'?: string | undefined; 'device.model.identifier'?: string | undefined; 'device.model.name'?: string | undefined; 'dll.code_signature.digest_algorithm'?: string | undefined; 'dll.code_signature.exists'?: boolean | undefined; 'dll.code_signature.signing_id'?: string | undefined; 'dll.code_signature.status'?: string | undefined; 'dll.code_signature.subject_name'?: string | undefined; 'dll.code_signature.team_id'?: string | undefined; 'dll.code_signature.timestamp'?: string | number | undefined; 'dll.code_signature.trusted'?: boolean | undefined; 'dll.code_signature.valid'?: boolean | undefined; 'dll.hash.md5'?: string | undefined; 'dll.hash.sha1'?: string | undefined; 'dll.hash.sha256'?: string | undefined; 'dll.hash.sha384'?: string | undefined; 'dll.hash.sha512'?: string | undefined; 'dll.hash.ssdeep'?: string | undefined; 'dll.hash.tlsh'?: string | undefined; 'dll.name'?: string | undefined; 'dll.path'?: string | undefined; 'dll.pe.architecture'?: string | undefined; 'dll.pe.company'?: string | undefined; 'dll.pe.description'?: string | undefined; 'dll.pe.file_version'?: string | undefined; 'dll.pe.imphash'?: string | undefined; 'dll.pe.original_file_name'?: string | undefined; 'dll.pe.pehash'?: string | undefined; 'dll.pe.product'?: string | undefined; 'dns.answers'?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; 'dns.header_flags'?: string[] | undefined; 'dns.id'?: string | undefined; 'dns.op_code'?: string | undefined; 'dns.question.class'?: string | undefined; 'dns.question.name'?: string | undefined; 'dns.question.registered_domain'?: string | undefined; 'dns.question.subdomain'?: string | undefined; 'dns.question.top_level_domain'?: string | undefined; 'dns.question.type'?: string | undefined; 'dns.resolved_ip'?: string[] | undefined; 'dns.response_code'?: string | undefined; 'dns.type'?: string | undefined; 'email.attachments'?: { 'file.extension'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.name'?: string | undefined; 'file.size'?: string | number | undefined; }[] | undefined; 'email.bcc.address'?: string[] | undefined; 'email.cc.address'?: string[] | undefined; 'email.content_type'?: string | undefined; 'email.delivery_timestamp'?: string | number | undefined; 'email.direction'?: string | undefined; 'email.from.address'?: string[] | undefined; 'email.local_id'?: string | undefined; 'email.message_id'?: string | undefined; 'email.origination_timestamp'?: string | number | undefined; 'email.reply_to.address'?: string[] | undefined; 'email.sender.address'?: string | undefined; 'email.subject'?: string | undefined; 'email.to.address'?: string[] | undefined; 'email.x_mailer'?: string | undefined; 'error.code'?: string | undefined; 'error.id'?: string | undefined; 'error.message'?: string | undefined; 'error.stack_trace'?: string | undefined; 'error.type'?: string | undefined; 'event.action'?: string | undefined; 'event.agent_id_status'?: string | undefined; 'event.category'?: string[] | undefined; 'event.code'?: string | undefined; 'event.created'?: string | number | undefined; 'event.dataset'?: string | undefined; 'event.duration'?: string | number | undefined; 'event.end'?: string | number | undefined; 'event.hash'?: string | undefined; 'event.id'?: string | undefined; 'event.ingested'?: string | number | undefined; 'event.kind'?: string | undefined; 'event.module'?: string | undefined; 'event.original'?: string | undefined; 'event.outcome'?: string | undefined; 'event.provider'?: string | undefined; 'event.reason'?: string | undefined; 'event.reference'?: string | undefined; 'event.risk_score'?: number | undefined; 'event.risk_score_norm'?: number | undefined; 'event.sequence'?: string | number | undefined; 'event.severity'?: string | number | undefined; 'event.start'?: string | number | undefined; 'event.timezone'?: string | undefined; 'event.type'?: string[] | undefined; 'event.url'?: string | undefined; 'faas.coldstart'?: boolean | undefined; 'faas.execution'?: string | undefined; 'faas.id'?: string | undefined; 'faas.name'?: string | undefined; 'faas.version'?: string | undefined; 'file.accessed'?: string | number | undefined; 'file.attributes'?: string[] | undefined; 'file.code_signature.digest_algorithm'?: string | undefined; 'file.code_signature.exists'?: boolean | undefined; 'file.code_signature.signing_id'?: string | undefined; 'file.code_signature.status'?: string | undefined; 'file.code_signature.subject_name'?: string | undefined; 'file.code_signature.team_id'?: string | undefined; 'file.code_signature.timestamp'?: string | number | undefined; 'file.code_signature.trusted'?: boolean | undefined; 'file.code_signature.valid'?: boolean | undefined; 'file.created'?: string | number | undefined; 'file.ctime'?: string | number | undefined; 'file.device'?: string | undefined; 'file.directory'?: string | undefined; 'file.drive_letter'?: string | undefined; 'file.elf.architecture'?: string | undefined; 'file.elf.byte_order'?: string | undefined; 'file.elf.cpu_type'?: string | undefined; 'file.elf.creation_date'?: string | number | undefined; 'file.elf.exports'?: unknown[] | undefined; 'file.elf.header.abi_version'?: string | undefined; 'file.elf.header.class'?: string | undefined; 'file.elf.header.data'?: string | undefined; 'file.elf.header.entrypoint'?: string | number | undefined; 'file.elf.header.object_version'?: string | undefined; 'file.elf.header.os_abi'?: string | undefined; 'file.elf.header.type'?: string | undefined; 'file.elf.header.version'?: string | undefined; 'file.elf.imports'?: unknown[] | undefined; 'file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'file.elf.shared_libraries'?: string[] | undefined; 'file.elf.telfhash'?: string | undefined; 'file.extension'?: string | undefined; 'file.fork_name'?: string | undefined; 'file.gid'?: string | undefined; 'file.group'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.inode'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.mode'?: string | undefined; 'file.mtime'?: string | number | undefined; 'file.name'?: string | undefined; 'file.owner'?: string | undefined; 'file.path'?: string | undefined; 'file.pe.architecture'?: string | undefined; 'file.pe.company'?: string | undefined; 'file.pe.description'?: string | undefined; 'file.pe.file_version'?: string | undefined; 'file.pe.imphash'?: string | undefined; 'file.pe.original_file_name'?: string | undefined; 'file.pe.pehash'?: string | undefined; 'file.pe.product'?: string | undefined; 'file.size'?: string | number | undefined; 'file.target_path'?: string | undefined; 'file.type'?: string | undefined; 'file.uid'?: string | undefined; 'file.x509.alternative_names'?: string[] | undefined; 'file.x509.issuer.common_name'?: string[] | undefined; 'file.x509.issuer.country'?: string[] | undefined; 'file.x509.issuer.distinguished_name'?: string | undefined; 'file.x509.issuer.locality'?: string[] | undefined; 'file.x509.issuer.organization'?: string[] | undefined; 'file.x509.issuer.organizational_unit'?: string[] | undefined; 'file.x509.issuer.state_or_province'?: string[] | undefined; 'file.x509.not_after'?: string | number | undefined; 'file.x509.not_before'?: string | number | undefined; 'file.x509.public_key_algorithm'?: string | undefined; 'file.x509.public_key_curve'?: string | undefined; 'file.x509.public_key_exponent'?: string | number | undefined; 'file.x509.public_key_size'?: string | number | undefined; 'file.x509.serial_number'?: string | undefined; 'file.x509.signature_algorithm'?: string | undefined; 'file.x509.subject.common_name'?: string[] | undefined; 'file.x509.subject.country'?: string[] | undefined; 'file.x509.subject.distinguished_name'?: string | undefined; 'file.x509.subject.locality'?: string[] | undefined; 'file.x509.subject.organization'?: string[] | undefined; 'file.x509.subject.organizational_unit'?: string[] | undefined; 'file.x509.subject.state_or_province'?: string[] | undefined; 'file.x509.version_number'?: string | undefined; 'group.domain'?: string | undefined; 'group.id'?: string | undefined; 'group.name'?: string | undefined; 'host.architecture'?: string | undefined; 'host.boot.id'?: string | undefined; 'host.cpu.usage'?: string | number | undefined; 'host.disk.read.bytes'?: string | number | undefined; 'host.disk.write.bytes'?: string | number | undefined; 'host.domain'?: string | undefined; 'host.geo.city_name'?: string | undefined; 'host.geo.continent_code'?: string | undefined; 'host.geo.continent_name'?: string | undefined; 'host.geo.country_iso_code'?: string | undefined; 'host.geo.country_name'?: string | undefined; 'host.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'host.geo.name'?: string | undefined; 'host.geo.postal_code'?: string | undefined; 'host.geo.region_iso_code'?: string | undefined; 'host.geo.region_name'?: string | undefined; 'host.geo.timezone'?: string | undefined; 'host.hostname'?: string | undefined; 'host.id'?: string | undefined; 'host.ip'?: string[] | undefined; 'host.mac'?: string[] | undefined; 'host.name'?: string | undefined; 'host.network.egress.bytes'?: string | number | undefined; 'host.network.egress.packets'?: string | number | undefined; 'host.network.ingress.bytes'?: string | number | undefined; 'host.network.ingress.packets'?: string | number | undefined; 'host.os.family'?: string | undefined; 'host.os.full'?: string | undefined; 'host.os.kernel'?: string | undefined; 'host.os.name'?: string | undefined; 'host.os.platform'?: string | undefined; 'host.os.type'?: string | undefined; 'host.os.version'?: string | undefined; 'host.pid_ns_ino'?: string | undefined; 'host.risk.calculated_level'?: string | undefined; 'host.risk.calculated_score'?: number | undefined; 'host.risk.calculated_score_norm'?: number | undefined; 'host.risk.static_level'?: string | undefined; 'host.risk.static_score'?: number | undefined; 'host.risk.static_score_norm'?: number | undefined; 'host.type'?: string | undefined; 'host.uptime'?: string | number | undefined; 'http.request.body.bytes'?: string | number | undefined; 'http.request.body.content'?: string | undefined; 'http.request.bytes'?: string | number | undefined; 'http.request.id'?: string | undefined; 'http.request.method'?: string | undefined; 'http.request.mime_type'?: string | undefined; 'http.request.referrer'?: string | undefined; 'http.response.body.bytes'?: string | number | undefined; 'http.response.body.content'?: string | undefined; 'http.response.bytes'?: string | number | undefined; 'http.response.mime_type'?: string | undefined; 'http.response.status_code'?: string | number | undefined; 'http.version'?: string | undefined; labels?: unknown; 'log.file.path'?: string | undefined; 'log.level'?: string | undefined; 'log.logger'?: string | undefined; 'log.origin.file.line'?: string | number | undefined; 'log.origin.file.name'?: string | undefined; 'log.origin.function'?: string | undefined; 'log.syslog'?: unknown; message?: string | undefined; 'network.application'?: string | undefined; 'network.bytes'?: string | number | undefined; 'network.community_id'?: string | undefined; 'network.direction'?: string | undefined; 'network.forwarded_ip'?: string | undefined; 'network.iana_number'?: string | undefined; 'network.inner'?: unknown; 'network.name'?: string | undefined; 'network.packets'?: string | number | undefined; 'network.protocol'?: string | undefined; 'network.transport'?: string | undefined; 'network.type'?: string | undefined; 'network.vlan.id'?: string | undefined; 'network.vlan.name'?: string | undefined; 'observer.egress'?: unknown; 'observer.geo.city_name'?: string | undefined; 'observer.geo.continent_code'?: string | undefined; 'observer.geo.continent_name'?: string | undefined; 'observer.geo.country_iso_code'?: string | undefined; 'observer.geo.country_name'?: string | undefined; 'observer.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'observer.geo.name'?: string | undefined; 'observer.geo.postal_code'?: string | undefined; 'observer.geo.region_iso_code'?: string | undefined; 'observer.geo.region_name'?: string | undefined; 'observer.geo.timezone'?: string | undefined; 'observer.hostname'?: string | undefined; 'observer.ingress'?: unknown; 'observer.ip'?: string[] | undefined; 'observer.mac'?: string[] | undefined; 'observer.name'?: string | undefined; 'observer.os.family'?: string | undefined; 'observer.os.full'?: string | undefined; 'observer.os.kernel'?: string | undefined; 'observer.os.name'?: string | undefined; 'observer.os.platform'?: string | undefined; 'observer.os.type'?: string | undefined; 'observer.os.version'?: string | undefined; 'observer.product'?: string | undefined; 'observer.serial_number'?: string | undefined; 'observer.type'?: string | undefined; 'observer.vendor'?: string | undefined; 'observer.version'?: string | undefined; 'orchestrator.api_version'?: string | undefined; 'orchestrator.cluster.id'?: string | undefined; 'orchestrator.cluster.name'?: string | undefined; 'orchestrator.cluster.url'?: string | undefined; 'orchestrator.cluster.version'?: string | undefined; 'orchestrator.namespace'?: string | undefined; 'orchestrator.organization'?: string | undefined; 'orchestrator.resource.id'?: string | undefined; 'orchestrator.resource.ip'?: string[] | undefined; 'orchestrator.resource.name'?: string | undefined; 'orchestrator.resource.parent.type'?: string | undefined; 'orchestrator.resource.type'?: string | undefined; 'orchestrator.type'?: string | undefined; 'organization.id'?: string | undefined; 'organization.name'?: string | undefined; 'package.architecture'?: string | undefined; 'package.build_version'?: string | undefined; 'package.checksum'?: string | undefined; 'package.description'?: string | undefined; 'package.install_scope'?: string | undefined; 'package.installed'?: string | number | undefined; 'package.license'?: string | undefined; 'package.name'?: string | undefined; 'package.path'?: string | undefined; 'package.reference'?: string | undefined; 'package.size'?: string | number | undefined; 'package.type'?: string | undefined; 'package.version'?: string | undefined; 'process.args'?: string[] | undefined; 'process.args_count'?: string | number | undefined; 'process.code_signature.digest_algorithm'?: string | undefined; 'process.code_signature.exists'?: boolean | undefined; 'process.code_signature.signing_id'?: string | undefined; 'process.code_signature.status'?: string | undefined; 'process.code_signature.subject_name'?: string | undefined; 'process.code_signature.team_id'?: string | undefined; 'process.code_signature.timestamp'?: string | number | undefined; 'process.code_signature.trusted'?: boolean | undefined; 'process.code_signature.valid'?: boolean | undefined; 'process.command_line'?: string | undefined; 'process.elf.architecture'?: string | undefined; 'process.elf.byte_order'?: string | undefined; 'process.elf.cpu_type'?: string | undefined; 'process.elf.creation_date'?: string | number | undefined; 'process.elf.exports'?: unknown[] | undefined; 'process.elf.header.abi_version'?: string | undefined; 'process.elf.header.class'?: string | undefined; 'process.elf.header.data'?: string | undefined; 'process.elf.header.entrypoint'?: string | number | undefined; 'process.elf.header.object_version'?: string | undefined; 'process.elf.header.os_abi'?: string | undefined; 'process.elf.header.type'?: string | undefined; 'process.elf.header.version'?: string | undefined; 'process.elf.imports'?: unknown[] | undefined; 'process.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.elf.shared_libraries'?: string[] | undefined; 'process.elf.telfhash'?: string | undefined; 'process.end'?: string | number | undefined; 'process.entity_id'?: string | undefined; 'process.entry_leader.args'?: string[] | undefined; 'process.entry_leader.args_count'?: string | number | undefined; 'process.entry_leader.attested_groups.name'?: string | undefined; 'process.entry_leader.attested_user.id'?: string | undefined; 'process.entry_leader.attested_user.name'?: string | undefined; 'process.entry_leader.command_line'?: string | undefined; 'process.entry_leader.entity_id'?: string | undefined; 'process.entry_leader.entry_meta.source.ip'?: string | undefined; 'process.entry_leader.entry_meta.type'?: string | undefined; 'process.entry_leader.executable'?: string | undefined; 'process.entry_leader.group.id'?: string | undefined; 'process.entry_leader.group.name'?: string | undefined; 'process.entry_leader.interactive'?: boolean | undefined; 'process.entry_leader.name'?: string | undefined; 'process.entry_leader.parent.entity_id'?: string | undefined; 'process.entry_leader.parent.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.entity_id'?: string | undefined; 'process.entry_leader.parent.session_leader.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.start'?: string | number | undefined; 'process.entry_leader.parent.start'?: string | number | undefined; 'process.entry_leader.pid'?: string | number | undefined; 'process.entry_leader.real_group.id'?: string | undefined; 'process.entry_leader.real_group.name'?: string | undefined; 'process.entry_leader.real_user.id'?: string | undefined; 'process.entry_leader.real_user.name'?: string | undefined; 'process.entry_leader.same_as_process'?: boolean | undefined; 'process.entry_leader.saved_group.id'?: string | undefined; 'process.entry_leader.saved_group.name'?: string | undefined; 'process.entry_leader.saved_user.id'?: string | undefined; 'process.entry_leader.saved_user.name'?: string | undefined; 'process.entry_leader.start'?: string | number | undefined; 'process.entry_leader.supplemental_groups.id'?: string | undefined; 'process.entry_leader.supplemental_groups.name'?: string | undefined; 'process.entry_leader.tty'?: unknown; 'process.entry_leader.user.id'?: string | undefined; 'process.entry_leader.user.name'?: string | undefined; 'process.entry_leader.working_directory'?: string | undefined; 'process.env_vars'?: string[] | undefined; 'process.executable'?: string | undefined; 'process.exit_code'?: string | number | undefined; 'process.group_leader.args'?: string[] | undefined; 'process.group_leader.args_count'?: string | number | undefined; 'process.group_leader.command_line'?: string | undefined; 'process.group_leader.entity_id'?: string | undefined; 'process.group_leader.executable'?: string | undefined; 'process.group_leader.group.id'?: string | undefined; 'process.group_leader.group.name'?: string | undefined; 'process.group_leader.interactive'?: boolean | undefined; 'process.group_leader.name'?: string | undefined; 'process.group_leader.pid'?: string | number | undefined; 'process.group_leader.real_group.id'?: string | undefined; 'process.group_leader.real_group.name'?: string | undefined; 'process.group_leader.real_user.id'?: string | undefined; 'process.group_leader.real_user.name'?: string | undefined; 'process.group_leader.same_as_process'?: boolean | undefined; 'process.group_leader.saved_group.id'?: string | undefined; 'process.group_leader.saved_group.name'?: string | undefined; 'process.group_leader.saved_user.id'?: string | undefined; 'process.group_leader.saved_user.name'?: string | undefined; 'process.group_leader.start'?: string | number | undefined; 'process.group_leader.supplemental_groups.id'?: string | undefined; 'process.group_leader.supplemental_groups.name'?: string | undefined; 'process.group_leader.tty'?: unknown; 'process.group_leader.user.id'?: string | undefined; 'process.group_leader.user.name'?: string | undefined; 'process.group_leader.working_directory'?: string | undefined; 'process.hash.md5'?: string | undefined; 'process.hash.sha1'?: string | undefined; 'process.hash.sha256'?: string | undefined; 'process.hash.sha384'?: string | undefined; 'process.hash.sha512'?: string | undefined; 'process.hash.ssdeep'?: string | undefined; 'process.hash.tlsh'?: string | undefined; 'process.interactive'?: boolean | undefined; 'process.io'?: unknown; 'process.name'?: string | undefined; 'process.parent.args'?: string[] | undefined; 'process.parent.args_count'?: string | number | undefined; 'process.parent.code_signature.digest_algorithm'?: string | undefined; 'process.parent.code_signature.exists'?: boolean | undefined; 'process.parent.code_signature.signing_id'?: string | undefined; 'process.parent.code_signature.status'?: string | undefined; 'process.parent.code_signature.subject_name'?: string | undefined; 'process.parent.code_signature.team_id'?: string | undefined; 'process.parent.code_signature.timestamp'?: string | number | undefined; 'process.parent.code_signature.trusted'?: boolean | undefined; 'process.parent.code_signature.valid'?: boolean | undefined; 'process.parent.command_line'?: string | undefined; 'process.parent.elf.architecture'?: string | undefined; 'process.parent.elf.byte_order'?: string | undefined; 'process.parent.elf.cpu_type'?: string | undefined; 'process.parent.elf.creation_date'?: string | number | undefined; 'process.parent.elf.exports'?: unknown[] | undefined; 'process.parent.elf.header.abi_version'?: string | undefined; 'process.parent.elf.header.class'?: string | undefined; 'process.parent.elf.header.data'?: string | undefined; 'process.parent.elf.header.entrypoint'?: string | number | undefined; 'process.parent.elf.header.object_version'?: string | undefined; 'process.parent.elf.header.os_abi'?: string | undefined; 'process.parent.elf.header.type'?: string | undefined; 'process.parent.elf.header.version'?: string | undefined; 'process.parent.elf.imports'?: unknown[] | undefined; 'process.parent.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.parent.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.parent.elf.shared_libraries'?: string[] | undefined; 'process.parent.elf.telfhash'?: string | undefined; 'process.parent.end'?: string | number | undefined; 'process.parent.entity_id'?: string | undefined; 'process.parent.executable'?: string | undefined; 'process.parent.exit_code'?: string | number | undefined; 'process.parent.group.id'?: string | undefined; 'process.parent.group.name'?: string | undefined; 'process.parent.group_leader.entity_id'?: string | undefined; 'process.parent.group_leader.pid'?: string | number | undefined; 'process.parent.group_leader.start'?: string | number | undefined; 'process.parent.hash.md5'?: string | undefined; 'process.parent.hash.sha1'?: string | undefined; 'process.parent.hash.sha256'?: string | undefined; 'process.parent.hash.sha384'?: string | undefined; 'process.parent.hash.sha512'?: string | undefined; 'process.parent.hash.ssdeep'?: string | undefined; 'process.parent.hash.tlsh'?: string | undefined; 'process.parent.interactive'?: boolean | undefined; 'process.parent.name'?: string | undefined; 'process.parent.pe.architecture'?: string | undefined; 'process.parent.pe.company'?: string | undefined; 'process.parent.pe.description'?: string | undefined; 'process.parent.pe.file_version'?: string | undefined; 'process.parent.pe.imphash'?: string | undefined; 'process.parent.pe.original_file_name'?: string | undefined; 'process.parent.pe.pehash'?: string | undefined; 'process.parent.pe.product'?: string | undefined; 'process.parent.pgid'?: string | number | undefined; 'process.parent.pid'?: string | number | undefined; 'process.parent.real_group.id'?: string | undefined; 'process.parent.real_group.name'?: string | undefined; 'process.parent.real_user.id'?: string | undefined; 'process.parent.real_user.name'?: string | undefined; 'process.parent.saved_group.id'?: string | undefined; 'process.parent.saved_group.name'?: string | undefined; 'process.parent.saved_user.id'?: string | undefined; 'process.parent.saved_user.name'?: string | undefined; 'process.parent.start'?: string | number | undefined; 'process.parent.supplemental_groups.id'?: string | undefined; 'process.parent.supplemental_groups.name'?: string | undefined; 'process.parent.thread.id'?: string | number | undefined; 'process.parent.thread.name'?: string | undefined; 'process.parent.title'?: string | undefined; 'process.parent.tty'?: unknown; 'process.parent.uptime'?: string | number | undefined; 'process.parent.user.id'?: string | undefined; 'process.parent.user.name'?: string | undefined; 'process.parent.working_directory'?: string | undefined; 'process.pe.architecture'?: string | undefined; 'process.pe.company'?: string | undefined; 'process.pe.description'?: string | undefined; 'process.pe.file_version'?: string | undefined; 'process.pe.imphash'?: string | undefined; 'process.pe.original_file_name'?: string | undefined; 'process.pe.pehash'?: string | undefined; 'process.pe.product'?: string | undefined; 'process.pgid'?: string | number | undefined; 'process.pid'?: string | number | undefined; 'process.previous.args'?: string[] | undefined; 'process.previous.args_count'?: string | number | undefined; 'process.previous.executable'?: string | undefined; 'process.real_group.id'?: string | undefined; 'process.real_group.name'?: string | undefined; 'process.real_user.id'?: string | undefined; 'process.real_user.name'?: string | undefined; 'process.saved_group.id'?: string | undefined; 'process.saved_group.name'?: string | undefined; 'process.saved_user.id'?: string | undefined; 'process.saved_user.name'?: string | undefined; 'process.session_leader.args'?: string[] | undefined; 'process.session_leader.args_count'?: string | number | undefined; 'process.session_leader.command_line'?: string | undefined; 'process.session_leader.entity_id'?: string | undefined; 'process.session_leader.executable'?: string | undefined; 'process.session_leader.group.id'?: string | undefined; 'process.session_leader.group.name'?: string | undefined; 'process.session_leader.interactive'?: boolean | undefined; 'process.session_leader.name'?: string | undefined; 'process.session_leader.parent.entity_id'?: string | undefined; 'process.session_leader.parent.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.entity_id'?: string | undefined; 'process.session_leader.parent.session_leader.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.start'?: string | number | undefined; 'process.session_leader.parent.start'?: string | number | undefined; 'process.session_leader.pid'?: string | number | undefined; 'process.session_leader.real_group.id'?: string | undefined; 'process.session_leader.real_group.name'?: string | undefined; 'process.session_leader.real_user.id'?: string | undefined; 'process.session_leader.real_user.name'?: string | undefined; 'process.session_leader.same_as_process'?: boolean | undefined; 'process.session_leader.saved_group.id'?: string | undefined; 'process.session_leader.saved_group.name'?: string | undefined; 'process.session_leader.saved_user.id'?: string | undefined; 'process.session_leader.saved_user.name'?: string | undefined; 'process.session_leader.start'?: string | number | undefined; 'process.session_leader.supplemental_groups.id'?: string | undefined; 'process.session_leader.supplemental_groups.name'?: string | undefined; 'process.session_leader.tty'?: unknown; 'process.session_leader.user.id'?: string | undefined; 'process.session_leader.user.name'?: string | undefined; 'process.session_leader.working_directory'?: string | undefined; 'process.start'?: string | number | undefined; 'process.supplemental_groups.id'?: string | undefined; 'process.supplemental_groups.name'?: string | undefined; 'process.thread.id'?: string | number | undefined; 'process.thread.name'?: string | undefined; 'process.title'?: string | undefined; 'process.tty'?: unknown; 'process.uptime'?: string | number | undefined; 'process.user.id'?: string | undefined; 'process.user.name'?: string | undefined; 'process.working_directory'?: string | undefined; 'registry.data.bytes'?: string | undefined; 'registry.data.strings'?: string[] | undefined; 'registry.data.type'?: string | undefined; 'registry.hive'?: string | undefined; 'registry.key'?: string | undefined; 'registry.path'?: string | undefined; 'registry.value'?: string | undefined; 'related.hash'?: string[] | undefined; 'related.hosts'?: string[] | undefined; 'related.ip'?: string[] | undefined; 'related.user'?: string[] | undefined; 'rule.author'?: string[] | undefined; 'rule.category'?: string | undefined; 'rule.description'?: string | undefined; 'rule.id'?: string | undefined; 'rule.license'?: string | undefined; 'rule.name'?: string | undefined; 'rule.reference'?: string | undefined; 'rule.ruleset'?: string | undefined; 'rule.uuid'?: string | undefined; 'rule.version'?: string | undefined; 'server.address'?: string | undefined; 'server.as.number'?: string | number | undefined; 'server.as.organization.name'?: string | undefined; 'server.bytes'?: string | number | undefined; 'server.domain'?: string | undefined; 'server.geo.city_name'?: string | undefined; 'server.geo.continent_code'?: string | undefined; 'server.geo.continent_name'?: string | undefined; 'server.geo.country_iso_code'?: string | undefined; 'server.geo.country_name'?: string | undefined; 'server.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'server.geo.name'?: string | undefined; 'server.geo.postal_code'?: string | undefined; 'server.geo.region_iso_code'?: string | undefined; 'server.geo.region_name'?: string | undefined; 'server.geo.timezone'?: string | undefined; 'server.ip'?: string | undefined; 'server.mac'?: string | undefined; 'server.nat.ip'?: string | undefined; 'server.nat.port'?: string | number | undefined; 'server.packets'?: string | number | undefined; 'server.port'?: string | number | undefined; 'server.registered_domain'?: string | undefined; 'server.subdomain'?: string | undefined; 'server.top_level_domain'?: string | undefined; 'server.user.domain'?: string | undefined; 'server.user.email'?: string | undefined; 'server.user.full_name'?: string | undefined; 'server.user.group.domain'?: string | undefined; 'server.user.group.id'?: string | undefined; 'server.user.group.name'?: string | undefined; 'server.user.hash'?: string | undefined; 'server.user.id'?: string | undefined; 'server.user.name'?: string | undefined; 'server.user.roles'?: string[] | undefined; 'service.address'?: string | undefined; 'service.environment'?: string | undefined; 'service.ephemeral_id'?: string | undefined; 'service.id'?: string | undefined; 'service.name'?: string | undefined; 'service.node.name'?: string | undefined; 'service.node.role'?: string | undefined; 'service.node.roles'?: string[] | undefined; 'service.origin.address'?: string | undefined; 'service.origin.environment'?: string | undefined; 'service.origin.ephemeral_id'?: string | undefined; 'service.origin.id'?: string | undefined; 'service.origin.name'?: string | undefined; 'service.origin.node.name'?: string | undefined; 'service.origin.node.role'?: string | undefined; 'service.origin.node.roles'?: string[] | undefined; 'service.origin.state'?: string | undefined; 'service.origin.type'?: string | undefined; 'service.origin.version'?: string | undefined; 'service.state'?: string | undefined; 'service.target.address'?: string | undefined; 'service.target.environment'?: string | undefined; 'service.target.ephemeral_id'?: string | undefined; 'service.target.id'?: string | undefined; 'service.target.name'?: string | undefined; 'service.target.node.name'?: string | undefined; 'service.target.node.role'?: string | undefined; 'service.target.node.roles'?: string[] | undefined; 'service.target.state'?: string | undefined; 'service.target.type'?: string | undefined; 'service.target.version'?: string | undefined; 'service.type'?: string | undefined; 'service.version'?: string | undefined; 'source.address'?: string | undefined; 'source.as.number'?: string | number | undefined; 'source.as.organization.name'?: string | undefined; 'source.bytes'?: string | number | undefined; 'source.domain'?: string | undefined; 'source.geo.city_name'?: string | undefined; 'source.geo.continent_code'?: string | undefined; 'source.geo.continent_name'?: string | undefined; 'source.geo.country_iso_code'?: string | undefined; 'source.geo.country_name'?: string | undefined; 'source.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'source.geo.name'?: string | undefined; 'source.geo.postal_code'?: string | undefined; 'source.geo.region_iso_code'?: string | undefined; 'source.geo.region_name'?: string | undefined; 'source.geo.timezone'?: string | undefined; 'source.ip'?: string | undefined; 'source.mac'?: string | undefined; 'source.nat.ip'?: string | undefined; 'source.nat.port'?: string | number | undefined; 'source.packets'?: string | number | undefined; 'source.port'?: string | number | undefined; 'source.registered_domain'?: string | undefined; 'source.subdomain'?: string | undefined; 'source.top_level_domain'?: string | undefined; 'source.user.domain'?: string | undefined; 'source.user.email'?: string | undefined; 'source.user.full_name'?: string | undefined; 'source.user.group.domain'?: string | undefined; 'source.user.group.id'?: string | undefined; 'source.user.group.name'?: string | undefined; 'source.user.hash'?: string | undefined; 'source.user.id'?: string | undefined; 'source.user.name'?: string | undefined; 'source.user.roles'?: string[] | undefined; 'span.id'?: string | undefined; tags?: string[] | undefined; 'threat.enrichments'?: { indicator?: unknown; 'matched.atomic'?: string | undefined; 'matched.field'?: string | undefined; 'matched.id'?: string | undefined; 'matched.index'?: string | undefined; 'matched.occurred'?: string | number | undefined; 'matched.type'?: string | undefined; }[] | undefined; 'threat.feed.dashboard_id'?: string | undefined; 'threat.feed.description'?: string | undefined; 'threat.feed.name'?: string | undefined; 'threat.feed.reference'?: string | undefined; 'threat.framework'?: string | undefined; 'threat.group.alias'?: string[] | undefined; 'threat.group.id'?: string | undefined; 'threat.group.name'?: string | undefined; 'threat.group.reference'?: string | undefined; 'threat.indicator.as.number'?: string | number | undefined; 'threat.indicator.as.organization.name'?: string | undefined; 'threat.indicator.confidence'?: string | undefined; 'threat.indicator.description'?: string | undefined; 'threat.indicator.email.address'?: string | undefined; 'threat.indicator.file.accessed'?: string | number | undefined; 'threat.indicator.file.attributes'?: string[] | undefined; 'threat.indicator.file.code_signature.digest_algorithm'?: string | undefined; 'threat.indicator.file.code_signature.exists'?: boolean | undefined; 'threat.indicator.file.code_signature.signing_id'?: string | undefined; 'threat.indicator.file.code_signature.status'?: string | undefined; 'threat.indicator.file.code_signature.subject_name'?: string | undefined; 'threat.indicator.file.code_signature.team_id'?: string | undefined; 'threat.indicator.file.code_signature.timestamp'?: string | number | undefined; 'threat.indicator.file.code_signature.trusted'?: boolean | undefined; 'threat.indicator.file.code_signature.valid'?: boolean | undefined; 'threat.indicator.file.created'?: string | number | undefined; 'threat.indicator.file.ctime'?: string | number | undefined; 'threat.indicator.file.device'?: string | undefined; 'threat.indicator.file.directory'?: string | undefined; 'threat.indicator.file.drive_letter'?: string | undefined; 'threat.indicator.file.elf.architecture'?: string | undefined; 'threat.indicator.file.elf.byte_order'?: string | undefined; 'threat.indicator.file.elf.cpu_type'?: string | undefined; 'threat.indicator.file.elf.creation_date'?: string | number | undefined; 'threat.indicator.file.elf.exports'?: unknown[] | undefined; 'threat.indicator.file.elf.header.abi_version'?: string | undefined; 'threat.indicator.file.elf.header.class'?: string | undefined; 'threat.indicator.file.elf.header.data'?: string | undefined; 'threat.indicator.file.elf.header.entrypoint'?: string | number | undefined; 'threat.indicator.file.elf.header.object_version'?: string | undefined; 'threat.indicator.file.elf.header.os_abi'?: string | undefined; 'threat.indicator.file.elf.header.type'?: string | undefined; 'threat.indicator.file.elf.header.version'?: string | undefined; 'threat.indicator.file.elf.imports'?: unknown[] | undefined; 'threat.indicator.file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'threat.indicator.file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'threat.indicator.file.elf.shared_libraries'?: string[] | undefined; 'threat.indicator.file.elf.telfhash'?: string | undefined; 'threat.indicator.file.extension'?: string | undefined; 'threat.indicator.file.fork_name'?: string | undefined; 'threat.indicator.file.gid'?: string | undefined; 'threat.indicator.file.group'?: string | undefined; 'threat.indicator.file.hash.md5'?: string | undefined; 'threat.indicator.file.hash.sha1'?: string | undefined; 'threat.indicator.file.hash.sha256'?: string | undefined; 'threat.indicator.file.hash.sha384'?: string | undefined; 'threat.indicator.file.hash.sha512'?: string | undefined; 'threat.indicator.file.hash.ssdeep'?: string | undefined; 'threat.indicator.file.hash.tlsh'?: string | undefined; 'threat.indicator.file.inode'?: string | undefined; 'threat.indicator.file.mime_type'?: string | undefined; 'threat.indicator.file.mode'?: string | undefined; 'threat.indicator.file.mtime'?: string | number | undefined; 'threat.indicator.file.name'?: string | undefined; 'threat.indicator.file.owner'?: string | undefined; 'threat.indicator.file.path'?: string | undefined; 'threat.indicator.file.pe.architecture'?: string | undefined; 'threat.indicator.file.pe.company'?: string | undefined; 'threat.indicator.file.pe.description'?: string | undefined; 'threat.indicator.file.pe.file_version'?: string | undefined; 'threat.indicator.file.pe.imphash'?: string | undefined; 'threat.indicator.file.pe.original_file_name'?: string | undefined; 'threat.indicator.file.pe.pehash'?: string | undefined; 'threat.indicator.file.pe.product'?: string | undefined; 'threat.indicator.file.size'?: string | number | undefined; 'threat.indicator.file.target_path'?: string | undefined; 'threat.indicator.file.type'?: string | undefined; 'threat.indicator.file.uid'?: string | undefined; 'threat.indicator.file.x509.alternative_names'?: string[] | undefined; 'threat.indicator.file.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.file.x509.issuer.country'?: string[] | undefined; 'threat.indicator.file.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.not_after'?: string | number | undefined; 'threat.indicator.file.x509.not_before'?: string | number | undefined; 'threat.indicator.file.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.file.x509.public_key_curve'?: string | undefined; 'threat.indicator.file.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.file.x509.public_key_size'?: string | number | undefined; 'threat.indicator.file.x509.serial_number'?: string | undefined; 'threat.indicator.file.x509.signature_algorithm'?: string | undefined; 'threat.indicator.file.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.file.x509.subject.country'?: string[] | undefined; 'threat.indicator.file.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.subject.locality'?: string[] | undefined; 'threat.indicator.file.x509.subject.organization'?: string[] | undefined; 'threat.indicator.file.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.version_number'?: string | undefined; 'threat.indicator.first_seen'?: string | number | undefined; 'threat.indicator.geo.city_name'?: string | undefined; 'threat.indicator.geo.continent_code'?: string | undefined; 'threat.indicator.geo.continent_name'?: string | undefined; 'threat.indicator.geo.country_iso_code'?: string | undefined; 'threat.indicator.geo.country_name'?: string | undefined; 'threat.indicator.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'threat.indicator.geo.name'?: string | undefined; 'threat.indicator.geo.postal_code'?: string | undefined; 'threat.indicator.geo.region_iso_code'?: string | undefined; 'threat.indicator.geo.region_name'?: string | undefined; 'threat.indicator.geo.timezone'?: string | undefined; 'threat.indicator.ip'?: string | undefined; 'threat.indicator.last_seen'?: string | number | undefined; 'threat.indicator.marking.tlp'?: string | undefined; 'threat.indicator.marking.tlp_version'?: string | undefined; 'threat.indicator.modified_at'?: string | number | undefined; 'threat.indicator.port'?: string | number | undefined; 'threat.indicator.provider'?: string | undefined; 'threat.indicator.reference'?: string | undefined; 'threat.indicator.registry.data.bytes'?: string | undefined; 'threat.indicator.registry.data.strings'?: string[] | undefined; 'threat.indicator.registry.data.type'?: string | undefined; 'threat.indicator.registry.hive'?: string | undefined; 'threat.indicator.registry.key'?: string | undefined; 'threat.indicator.registry.path'?: string | undefined; 'threat.indicator.registry.value'?: string | undefined; 'threat.indicator.scanner_stats'?: string | number | undefined; 'threat.indicator.sightings'?: string | number | undefined; 'threat.indicator.type'?: string | undefined; 'threat.indicator.url.domain'?: string | undefined; 'threat.indicator.url.extension'?: string | undefined; 'threat.indicator.url.fragment'?: string | undefined; 'threat.indicator.url.full'?: string | undefined; 'threat.indicator.url.original'?: string | undefined; 'threat.indicator.url.password'?: string | undefined; 'threat.indicator.url.path'?: string | undefined; 'threat.indicator.url.port'?: string | number | undefined; 'threat.indicator.url.query'?: string | undefined; 'threat.indicator.url.registered_domain'?: string | undefined; 'threat.indicator.url.scheme'?: string | undefined; 'threat.indicator.url.subdomain'?: string | undefined; 'threat.indicator.url.top_level_domain'?: string | undefined; 'threat.indicator.url.username'?: string | undefined; 'threat.indicator.x509.alternative_names'?: string[] | undefined; 'threat.indicator.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.x509.issuer.country'?: string[] | undefined; 'threat.indicator.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.x509.not_after'?: string | number | undefined; 'threat.indicator.x509.not_before'?: string | number | undefined; 'threat.indicator.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.x509.public_key_curve'?: string | undefined; 'threat.indicator.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.x509.public_key_size'?: string | number | undefined; 'threat.indicator.x509.serial_number'?: string | undefined; 'threat.indicator.x509.signature_algorithm'?: string | undefined; 'threat.indicator.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.x509.subject.country'?: string[] | undefined; 'threat.indicator.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.x509.subject.locality'?: string[] | undefined; 'threat.indicator.x509.subject.organization'?: string[] | undefined; 'threat.indicator.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.x509.version_number'?: string | undefined; 'threat.software.alias'?: string[] | undefined; 'threat.software.id'?: string | undefined; 'threat.software.name'?: string | undefined; 'threat.software.platforms'?: string[] | undefined; 'threat.software.reference'?: string | undefined; 'threat.software.type'?: string | undefined; 'threat.tactic.id'?: string[] | undefined; 'threat.tactic.name'?: string[] | undefined; 'threat.tactic.reference'?: string[] | undefined; 'threat.technique.id'?: string[] | undefined; 'threat.technique.name'?: string[] | undefined; 'threat.technique.reference'?: string[] | undefined; 'threat.technique.subtechnique.id'?: string[] | undefined; 'threat.technique.subtechnique.name'?: string[] | undefined; 'threat.technique.subtechnique.reference'?: string[] | undefined; 'tls.cipher'?: string | undefined; 'tls.client.certificate'?: string | undefined; 'tls.client.certificate_chain'?: string[] | undefined; 'tls.client.hash.md5'?: string | undefined; 'tls.client.hash.sha1'?: string | undefined; 'tls.client.hash.sha256'?: string | undefined; 'tls.client.issuer'?: string | undefined; 'tls.client.ja3'?: string | undefined; 'tls.client.not_after'?: string | number | undefined; 'tls.client.not_before'?: string | number | undefined; 'tls.client.server_name'?: string | undefined; 'tls.client.subject'?: string | undefined; 'tls.client.supported_ciphers'?: string[] | undefined; 'tls.client.x509.alternative_names'?: string[] | undefined; 'tls.client.x509.issuer.common_name'?: string[] | undefined; 'tls.client.x509.issuer.country'?: string[] | undefined; 'tls.client.x509.issuer.distinguished_name'?: string | undefined; 'tls.client.x509.issuer.locality'?: string[] | undefined; 'tls.client.x509.issuer.organization'?: string[] | undefined; 'tls.client.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.client.x509.issuer.state_or_province'?: string[] | undefined; 'tls.client.x509.not_after'?: string | number | undefined; 'tls.client.x509.not_before'?: string | number | undefined; 'tls.client.x509.public_key_algorithm'?: string | undefined; 'tls.client.x509.public_key_curve'?: string | undefined; 'tls.client.x509.public_key_exponent'?: string | number | undefined; 'tls.client.x509.public_key_size'?: string | number | undefined; 'tls.client.x509.serial_number'?: string | undefined; 'tls.client.x509.signature_algorithm'?: string | undefined; 'tls.client.x509.subject.common_name'?: string[] | undefined; 'tls.client.x509.subject.country'?: string[] | undefined; 'tls.client.x509.subject.distinguished_name'?: string | undefined; 'tls.client.x509.subject.locality'?: string[] | undefined; 'tls.client.x509.subject.organization'?: string[] | undefined; 'tls.client.x509.subject.organizational_unit'?: string[] | undefined; 'tls.client.x509.subject.state_or_province'?: string[] | undefined; 'tls.client.x509.version_number'?: string | undefined; 'tls.curve'?: string | undefined; 'tls.established'?: boolean | undefined; 'tls.next_protocol'?: string | undefined; 'tls.resumed'?: boolean | undefined; 'tls.server.certificate'?: string | undefined; 'tls.server.certificate_chain'?: string[] | undefined; 'tls.server.hash.md5'?: string | undefined; 'tls.server.hash.sha1'?: string | undefined; 'tls.server.hash.sha256'?: string | undefined; 'tls.server.issuer'?: string | undefined; 'tls.server.ja3s'?: string | undefined; 'tls.server.not_after'?: string | number | undefined; 'tls.server.not_before'?: string | number | undefined; 'tls.server.subject'?: string | undefined; 'tls.server.x509.alternative_names'?: string[] | undefined; 'tls.server.x509.issuer.common_name'?: string[] | undefined; 'tls.server.x509.issuer.country'?: string[] | undefined; 'tls.server.x509.issuer.distinguished_name'?: string | undefined; 'tls.server.x509.issuer.locality'?: string[] | undefined; 'tls.server.x509.issuer.organization'?: string[] | undefined; 'tls.server.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.server.x509.issuer.state_or_province'?: string[] | undefined; 'tls.server.x509.not_after'?: string | number | undefined; 'tls.server.x509.not_before'?: string | number | undefined; 'tls.server.x509.public_key_algorithm'?: string | undefined; 'tls.server.x509.public_key_curve'?: string | undefined; 'tls.server.x509.public_key_exponent'?: string | number | undefined; 'tls.server.x509.public_key_size'?: string | number | undefined; 'tls.server.x509.serial_number'?: string | undefined; 'tls.server.x509.signature_algorithm'?: string | undefined; 'tls.server.x509.subject.common_name'?: string[] | undefined; 'tls.server.x509.subject.country'?: string[] | undefined; 'tls.server.x509.subject.distinguished_name'?: string | undefined; 'tls.server.x509.subject.locality'?: string[] | undefined; 'tls.server.x509.subject.organization'?: string[] | undefined; 'tls.server.x509.subject.organizational_unit'?: string[] | undefined; 'tls.server.x509.subject.state_or_province'?: string[] | undefined; 'tls.server.x509.version_number'?: string | undefined; 'tls.version'?: string | undefined; 'tls.version_protocol'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.id'?: string | undefined; 'url.domain'?: string | undefined; 'url.extension'?: string | undefined; 'url.fragment'?: string | undefined; 'url.full'?: string | undefined; 'url.original'?: string | undefined; 'url.password'?: string | undefined; 'url.path'?: string | undefined; 'url.port'?: string | number | undefined; 'url.query'?: string | undefined; 'url.registered_domain'?: string | undefined; 'url.scheme'?: string | undefined; 'url.subdomain'?: string | undefined; 'url.top_level_domain'?: string | undefined; 'url.username'?: string | undefined; 'user.changes.domain'?: string | undefined; 'user.changes.email'?: string | undefined; 'user.changes.full_name'?: string | undefined; 'user.changes.group.domain'?: string | undefined; 'user.changes.group.id'?: string | undefined; 'user.changes.group.name'?: string | undefined; 'user.changes.hash'?: string | undefined; 'user.changes.id'?: string | undefined; 'user.changes.name'?: string | undefined; 'user.changes.roles'?: string[] | undefined; 'user.domain'?: string | undefined; 'user.effective.domain'?: string | undefined; 'user.effective.email'?: string | undefined; 'user.effective.full_name'?: string | undefined; 'user.effective.group.domain'?: string | undefined; 'user.effective.group.id'?: string | undefined; 'user.effective.group.name'?: string | undefined; 'user.effective.hash'?: string | undefined; 'user.effective.id'?: string | undefined; 'user.effective.name'?: string | undefined; 'user.effective.roles'?: string[] | undefined; 'user.email'?: string | undefined; 'user.full_name'?: string | undefined; 'user.group.domain'?: string | undefined; 'user.group.id'?: string | undefined; 'user.group.name'?: string | undefined; 'user.hash'?: string | undefined; 'user.id'?: string | undefined; 'user.name'?: string | undefined; 'user.risk.calculated_level'?: string | undefined; 'user.risk.calculated_score'?: number | undefined; 'user.risk.calculated_score_norm'?: number | undefined; 'user.risk.static_level'?: string | undefined; 'user.risk.static_score'?: number | undefined; 'user.risk.static_score_norm'?: number | undefined; 'user.roles'?: string[] | undefined; 'user.target.domain'?: string | undefined; 'user.target.email'?: string | undefined; 'user.target.full_name'?: string | undefined; 'user.target.group.domain'?: string | undefined; 'user.target.group.id'?: string | undefined; 'user.target.group.name'?: string | undefined; 'user.target.hash'?: string | undefined; 'user.target.id'?: string | undefined; 'user.target.name'?: string | undefined; 'user.target.roles'?: string[] | undefined; 'user_agent.device.name'?: string | undefined; 'user_agent.name'?: string | undefined; 'user_agent.original'?: string | undefined; 'user_agent.os.family'?: string | undefined; 'user_agent.os.full'?: string | undefined; 'user_agent.os.kernel'?: string | undefined; 'user_agent.os.name'?: string | undefined; 'user_agent.os.platform'?: string | undefined; 'user_agent.os.type'?: string | undefined; 'user_agent.os.version'?: string | undefined; 'user_agent.version'?: string | undefined; 'vulnerability.category'?: string[] | undefined; 'vulnerability.classification'?: string | undefined; 'vulnerability.description'?: string | undefined; 'vulnerability.enumeration'?: string | undefined; 'vulnerability.id'?: string | undefined; 'vulnerability.reference'?: string | undefined; 'vulnerability.report_id'?: string | undefined; 'vulnerability.scanner.vendor'?: string | undefined; 'vulnerability.score.base'?: number | undefined; 'vulnerability.score.environmental'?: number | undefined; 'vulnerability.score.temporal'?: number | undefined; 'vulnerability.score.version'?: string | undefined; 'vulnerability.severity'?: string | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }) | ({} & { 'kibana.alert.context'?: unknown; 'kibana.alert.evaluation.threshold'?: string | number | undefined; 'kibana.alert.evaluation.value'?: string | number | undefined; 'kibana.alert.evaluation.values'?: (string | number)[] | undefined; 'kibana.alert.group'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & { '@timestamp': string | number; 'ecs.version': string; } & { 'agent.build.original'?: string | undefined; 'agent.ephemeral_id'?: string | undefined; 'agent.id'?: string | undefined; 'agent.name'?: string | undefined; 'agent.type'?: string | undefined; 'agent.version'?: string | undefined; 'client.address'?: string | undefined; 'client.as.number'?: string | number | undefined; 'client.as.organization.name'?: string | undefined; 'client.bytes'?: string | number | undefined; 'client.domain'?: string | undefined; 'client.geo.city_name'?: string | undefined; 'client.geo.continent_code'?: string | undefined; 'client.geo.continent_name'?: string | undefined; 'client.geo.country_iso_code'?: string | undefined; 'client.geo.country_name'?: string | undefined; 'client.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'client.geo.name'?: string | undefined; 'client.geo.postal_code'?: string | undefined; 'client.geo.region_iso_code'?: string | undefined; 'client.geo.region_name'?: string | undefined; 'client.geo.timezone'?: string | undefined; 'client.ip'?: string | undefined; 'client.mac'?: string | undefined; 'client.nat.ip'?: string | undefined; 'client.nat.port'?: string | number | undefined; 'client.packets'?: string | number | undefined; 'client.port'?: string | number | undefined; 'client.registered_domain'?: string | undefined; 'client.subdomain'?: string | undefined; 'client.top_level_domain'?: string | undefined; 'client.user.domain'?: string | undefined; 'client.user.email'?: string | undefined; 'client.user.full_name'?: string | undefined; 'client.user.group.domain'?: string | undefined; 'client.user.group.id'?: string | undefined; 'client.user.group.name'?: string | undefined; 'client.user.hash'?: string | undefined; 'client.user.id'?: string | undefined; 'client.user.name'?: string | undefined; 'client.user.roles'?: string[] | undefined; 'cloud.account.id'?: string | undefined; 'cloud.account.name'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.instance.id'?: string | undefined; 'cloud.instance.name'?: string | undefined; 'cloud.machine.type'?: string | undefined; 'cloud.origin.account.id'?: string | undefined; 'cloud.origin.account.name'?: string | undefined; 'cloud.origin.availability_zone'?: string | undefined; 'cloud.origin.instance.id'?: string | undefined; 'cloud.origin.instance.name'?: string | undefined; 'cloud.origin.machine.type'?: string | undefined; 'cloud.origin.project.id'?: string | undefined; 'cloud.origin.project.name'?: string | undefined; 'cloud.origin.provider'?: string | undefined; 'cloud.origin.region'?: string | undefined; 'cloud.origin.service.name'?: string | undefined; 'cloud.project.id'?: string | undefined; 'cloud.project.name'?: string | undefined; 'cloud.provider'?: string | undefined; 'cloud.region'?: string | undefined; 'cloud.service.name'?: string | undefined; 'cloud.target.account.id'?: string | undefined; 'cloud.target.account.name'?: string | undefined; 'cloud.target.availability_zone'?: string | undefined; 'cloud.target.instance.id'?: string | undefined; 'cloud.target.instance.name'?: string | undefined; 'cloud.target.machine.type'?: string | undefined; 'cloud.target.project.id'?: string | undefined; 'cloud.target.project.name'?: string | undefined; 'cloud.target.provider'?: string | undefined; 'cloud.target.region'?: string | undefined; 'cloud.target.service.name'?: string | undefined; 'container.cpu.usage'?: string | number | undefined; 'container.disk.read.bytes'?: string | number | undefined; 'container.disk.write.bytes'?: string | number | undefined; 'container.id'?: string | undefined; 'container.image.hash.all'?: string[] | undefined; 'container.image.name'?: string | undefined; 'container.image.tag'?: string[] | undefined; 'container.labels'?: unknown; 'container.memory.usage'?: string | number | undefined; 'container.name'?: string | undefined; 'container.network.egress.bytes'?: string | number | undefined; 'container.network.ingress.bytes'?: string | number | undefined; 'container.runtime'?: string | undefined; 'destination.address'?: string | undefined; 'destination.as.number'?: string | number | undefined; 'destination.as.organization.name'?: string | undefined; 'destination.bytes'?: string | number | undefined; 'destination.domain'?: string | undefined; 'destination.geo.city_name'?: string | undefined; 'destination.geo.continent_code'?: string | undefined; 'destination.geo.continent_name'?: string | undefined; 'destination.geo.country_iso_code'?: string | undefined; 'destination.geo.country_name'?: string | undefined; 'destination.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'destination.geo.name'?: string | undefined; 'destination.geo.postal_code'?: string | undefined; 'destination.geo.region_iso_code'?: string | undefined; 'destination.geo.region_name'?: string | undefined; 'destination.geo.timezone'?: string | undefined; 'destination.ip'?: string | undefined; 'destination.mac'?: string | undefined; 'destination.nat.ip'?: string | undefined; 'destination.nat.port'?: string | number | undefined; 'destination.packets'?: string | number | undefined; 'destination.port'?: string | number | undefined; 'destination.registered_domain'?: string | undefined; 'destination.subdomain'?: string | undefined; 'destination.top_level_domain'?: string | undefined; 'destination.user.domain'?: string | undefined; 'destination.user.email'?: string | undefined; 'destination.user.full_name'?: string | undefined; 'destination.user.group.domain'?: string | undefined; 'destination.user.group.id'?: string | undefined; 'destination.user.group.name'?: string | undefined; 'destination.user.hash'?: string | undefined; 'destination.user.id'?: string | undefined; 'destination.user.name'?: string | undefined; 'destination.user.roles'?: string[] | undefined; 'device.id'?: string | undefined; 'device.manufacturer'?: string | undefined; 'device.model.identifier'?: string | undefined; 'device.model.name'?: string | undefined; 'dll.code_signature.digest_algorithm'?: string | undefined; 'dll.code_signature.exists'?: boolean | undefined; 'dll.code_signature.signing_id'?: string | undefined; 'dll.code_signature.status'?: string | undefined; 'dll.code_signature.subject_name'?: string | undefined; 'dll.code_signature.team_id'?: string | undefined; 'dll.code_signature.timestamp'?: string | number | undefined; 'dll.code_signature.trusted'?: boolean | undefined; 'dll.code_signature.valid'?: boolean | undefined; 'dll.hash.md5'?: string | undefined; 'dll.hash.sha1'?: string | undefined; 'dll.hash.sha256'?: string | undefined; 'dll.hash.sha384'?: string | undefined; 'dll.hash.sha512'?: string | undefined; 'dll.hash.ssdeep'?: string | undefined; 'dll.hash.tlsh'?: string | undefined; 'dll.name'?: string | undefined; 'dll.path'?: string | undefined; 'dll.pe.architecture'?: string | undefined; 'dll.pe.company'?: string | undefined; 'dll.pe.description'?: string | undefined; 'dll.pe.file_version'?: string | undefined; 'dll.pe.imphash'?: string | undefined; 'dll.pe.original_file_name'?: string | undefined; 'dll.pe.pehash'?: string | undefined; 'dll.pe.product'?: string | undefined; 'dns.answers'?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; 'dns.header_flags'?: string[] | undefined; 'dns.id'?: string | undefined; 'dns.op_code'?: string | undefined; 'dns.question.class'?: string | undefined; 'dns.question.name'?: string | undefined; 'dns.question.registered_domain'?: string | undefined; 'dns.question.subdomain'?: string | undefined; 'dns.question.top_level_domain'?: string | undefined; 'dns.question.type'?: string | undefined; 'dns.resolved_ip'?: string[] | undefined; 'dns.response_code'?: string | undefined; 'dns.type'?: string | undefined; 'email.attachments'?: { 'file.extension'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.name'?: string | undefined; 'file.size'?: string | number | undefined; }[] | undefined; 'email.bcc.address'?: string[] | undefined; 'email.cc.address'?: string[] | undefined; 'email.content_type'?: string | undefined; 'email.delivery_timestamp'?: string | number | undefined; 'email.direction'?: string | undefined; 'email.from.address'?: string[] | undefined; 'email.local_id'?: string | undefined; 'email.message_id'?: string | undefined; 'email.origination_timestamp'?: string | number | undefined; 'email.reply_to.address'?: string[] | undefined; 'email.sender.address'?: string | undefined; 'email.subject'?: string | undefined; 'email.to.address'?: string[] | undefined; 'email.x_mailer'?: string | undefined; 'error.code'?: string | undefined; 'error.id'?: string | undefined; 'error.message'?: string | undefined; 'error.stack_trace'?: string | undefined; 'error.type'?: string | undefined; 'event.action'?: string | undefined; 'event.agent_id_status'?: string | undefined; 'event.category'?: string[] | undefined; 'event.code'?: string | undefined; 'event.created'?: string | number | undefined; 'event.dataset'?: string | undefined; 'event.duration'?: string | number | undefined; 'event.end'?: string | number | undefined; 'event.hash'?: string | undefined; 'event.id'?: string | undefined; 'event.ingested'?: string | number | undefined; 'event.kind'?: string | undefined; 'event.module'?: string | undefined; 'event.original'?: string | undefined; 'event.outcome'?: string | undefined; 'event.provider'?: string | undefined; 'event.reason'?: string | undefined; 'event.reference'?: string | undefined; 'event.risk_score'?: number | undefined; 'event.risk_score_norm'?: number | undefined; 'event.sequence'?: string | number | undefined; 'event.severity'?: string | number | undefined; 'event.start'?: string | number | undefined; 'event.timezone'?: string | undefined; 'event.type'?: string[] | undefined; 'event.url'?: string | undefined; 'faas.coldstart'?: boolean | undefined; 'faas.execution'?: string | undefined; 'faas.id'?: string | undefined; 'faas.name'?: string | undefined; 'faas.version'?: string | undefined; 'file.accessed'?: string | number | undefined; 'file.attributes'?: string[] | undefined; 'file.code_signature.digest_algorithm'?: string | undefined; 'file.code_signature.exists'?: boolean | undefined; 'file.code_signature.signing_id'?: string | undefined; 'file.code_signature.status'?: string | undefined; 'file.code_signature.subject_name'?: string | undefined; 'file.code_signature.team_id'?: string | undefined; 'file.code_signature.timestamp'?: string | number | undefined; 'file.code_signature.trusted'?: boolean | undefined; 'file.code_signature.valid'?: boolean | undefined; 'file.created'?: string | number | undefined; 'file.ctime'?: string | number | undefined; 'file.device'?: string | undefined; 'file.directory'?: string | undefined; 'file.drive_letter'?: string | undefined; 'file.elf.architecture'?: string | undefined; 'file.elf.byte_order'?: string | undefined; 'file.elf.cpu_type'?: string | undefined; 'file.elf.creation_date'?: string | number | undefined; 'file.elf.exports'?: unknown[] | undefined; 'file.elf.header.abi_version'?: string | undefined; 'file.elf.header.class'?: string | undefined; 'file.elf.header.data'?: string | undefined; 'file.elf.header.entrypoint'?: string | number | undefined; 'file.elf.header.object_version'?: string | undefined; 'file.elf.header.os_abi'?: string | undefined; 'file.elf.header.type'?: string | undefined; 'file.elf.header.version'?: string | undefined; 'file.elf.imports'?: unknown[] | undefined; 'file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'file.elf.shared_libraries'?: string[] | undefined; 'file.elf.telfhash'?: string | undefined; 'file.extension'?: string | undefined; 'file.fork_name'?: string | undefined; 'file.gid'?: string | undefined; 'file.group'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.inode'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.mode'?: string | undefined; 'file.mtime'?: string | number | undefined; 'file.name'?: string | undefined; 'file.owner'?: string | undefined; 'file.path'?: string | undefined; 'file.pe.architecture'?: string | undefined; 'file.pe.company'?: string | undefined; 'file.pe.description'?: string | undefined; 'file.pe.file_version'?: string | undefined; 'file.pe.imphash'?: string | undefined; 'file.pe.original_file_name'?: string | undefined; 'file.pe.pehash'?: string | undefined; 'file.pe.product'?: string | undefined; 'file.size'?: string | number | undefined; 'file.target_path'?: string | undefined; 'file.type'?: string | undefined; 'file.uid'?: string | undefined; 'file.x509.alternative_names'?: string[] | undefined; 'file.x509.issuer.common_name'?: string[] | undefined; 'file.x509.issuer.country'?: string[] | undefined; 'file.x509.issuer.distinguished_name'?: string | undefined; 'file.x509.issuer.locality'?: string[] | undefined; 'file.x509.issuer.organization'?: string[] | undefined; 'file.x509.issuer.organizational_unit'?: string[] | undefined; 'file.x509.issuer.state_or_province'?: string[] | undefined; 'file.x509.not_after'?: string | number | undefined; 'file.x509.not_before'?: string | number | undefined; 'file.x509.public_key_algorithm'?: string | undefined; 'file.x509.public_key_curve'?: string | undefined; 'file.x509.public_key_exponent'?: string | number | undefined; 'file.x509.public_key_size'?: string | number | undefined; 'file.x509.serial_number'?: string | undefined; 'file.x509.signature_algorithm'?: string | undefined; 'file.x509.subject.common_name'?: string[] | undefined; 'file.x509.subject.country'?: string[] | undefined; 'file.x509.subject.distinguished_name'?: string | undefined; 'file.x509.subject.locality'?: string[] | undefined; 'file.x509.subject.organization'?: string[] | undefined; 'file.x509.subject.organizational_unit'?: string[] | undefined; 'file.x509.subject.state_or_province'?: string[] | undefined; 'file.x509.version_number'?: string | undefined; 'group.domain'?: string | undefined; 'group.id'?: string | undefined; 'group.name'?: string | undefined; 'host.architecture'?: string | undefined; 'host.boot.id'?: string | undefined; 'host.cpu.usage'?: string | number | undefined; 'host.disk.read.bytes'?: string | number | undefined; 'host.disk.write.bytes'?: string | number | undefined; 'host.domain'?: string | undefined; 'host.geo.city_name'?: string | undefined; 'host.geo.continent_code'?: string | undefined; 'host.geo.continent_name'?: string | undefined; 'host.geo.country_iso_code'?: string | undefined; 'host.geo.country_name'?: string | undefined; 'host.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'host.geo.name'?: string | undefined; 'host.geo.postal_code'?: string | undefined; 'host.geo.region_iso_code'?: string | undefined; 'host.geo.region_name'?: string | undefined; 'host.geo.timezone'?: string | undefined; 'host.hostname'?: string | undefined; 'host.id'?: string | undefined; 'host.ip'?: string[] | undefined; 'host.mac'?: string[] | undefined; 'host.name'?: string | undefined; 'host.network.egress.bytes'?: string | number | undefined; 'host.network.egress.packets'?: string | number | undefined; 'host.network.ingress.bytes'?: string | number | undefined; 'host.network.ingress.packets'?: string | number | undefined; 'host.os.family'?: string | undefined; 'host.os.full'?: string | undefined; 'host.os.kernel'?: string | undefined; 'host.os.name'?: string | undefined; 'host.os.platform'?: string | undefined; 'host.os.type'?: string | undefined; 'host.os.version'?: string | undefined; 'host.pid_ns_ino'?: string | undefined; 'host.risk.calculated_level'?: string | undefined; 'host.risk.calculated_score'?: number | undefined; 'host.risk.calculated_score_norm'?: number | undefined; 'host.risk.static_level'?: string | undefined; 'host.risk.static_score'?: number | undefined; 'host.risk.static_score_norm'?: number | undefined; 'host.type'?: string | undefined; 'host.uptime'?: string | number | undefined; 'http.request.body.bytes'?: string | number | undefined; 'http.request.body.content'?: string | undefined; 'http.request.bytes'?: string | number | undefined; 'http.request.id'?: string | undefined; 'http.request.method'?: string | undefined; 'http.request.mime_type'?: string | undefined; 'http.request.referrer'?: string | undefined; 'http.response.body.bytes'?: string | number | undefined; 'http.response.body.content'?: string | undefined; 'http.response.bytes'?: string | number | undefined; 'http.response.mime_type'?: string | undefined; 'http.response.status_code'?: string | number | undefined; 'http.version'?: string | undefined; labels?: unknown; 'log.file.path'?: string | undefined; 'log.level'?: string | undefined; 'log.logger'?: string | undefined; 'log.origin.file.line'?: string | number | undefined; 'log.origin.file.name'?: string | undefined; 'log.origin.function'?: string | undefined; 'log.syslog'?: unknown; message?: string | undefined; 'network.application'?: string | undefined; 'network.bytes'?: string | number | undefined; 'network.community_id'?: string | undefined; 'network.direction'?: string | undefined; 'network.forwarded_ip'?: string | undefined; 'network.iana_number'?: string | undefined; 'network.inner'?: unknown; 'network.name'?: string | undefined; 'network.packets'?: string | number | undefined; 'network.protocol'?: string | undefined; 'network.transport'?: string | undefined; 'network.type'?: string | undefined; 'network.vlan.id'?: string | undefined; 'network.vlan.name'?: string | undefined; 'observer.egress'?: unknown; 'observer.geo.city_name'?: string | undefined; 'observer.geo.continent_code'?: string | undefined; 'observer.geo.continent_name'?: string | undefined; 'observer.geo.country_iso_code'?: string | undefined; 'observer.geo.country_name'?: string | undefined; 'observer.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'observer.geo.name'?: string | undefined; 'observer.geo.postal_code'?: string | undefined; 'observer.geo.region_iso_code'?: string | undefined; 'observer.geo.region_name'?: string | undefined; 'observer.geo.timezone'?: string | undefined; 'observer.hostname'?: string | undefined; 'observer.ingress'?: unknown; 'observer.ip'?: string[] | undefined; 'observer.mac'?: string[] | undefined; 'observer.name'?: string | undefined; 'observer.os.family'?: string | undefined; 'observer.os.full'?: string | undefined; 'observer.os.kernel'?: string | undefined; 'observer.os.name'?: string | undefined; 'observer.os.platform'?: string | undefined; 'observer.os.type'?: string | undefined; 'observer.os.version'?: string | undefined; 'observer.product'?: string | undefined; 'observer.serial_number'?: string | undefined; 'observer.type'?: string | undefined; 'observer.vendor'?: string | undefined; 'observer.version'?: string | undefined; 'orchestrator.api_version'?: string | undefined; 'orchestrator.cluster.id'?: string | undefined; 'orchestrator.cluster.name'?: string | undefined; 'orchestrator.cluster.url'?: string | undefined; 'orchestrator.cluster.version'?: string | undefined; 'orchestrator.namespace'?: string | undefined; 'orchestrator.organization'?: string | undefined; 'orchestrator.resource.id'?: string | undefined; 'orchestrator.resource.ip'?: string[] | undefined; 'orchestrator.resource.name'?: string | undefined; 'orchestrator.resource.parent.type'?: string | undefined; 'orchestrator.resource.type'?: string | undefined; 'orchestrator.type'?: string | undefined; 'organization.id'?: string | undefined; 'organization.name'?: string | undefined; 'package.architecture'?: string | undefined; 'package.build_version'?: string | undefined; 'package.checksum'?: string | undefined; 'package.description'?: string | undefined; 'package.install_scope'?: string | undefined; 'package.installed'?: string | number | undefined; 'package.license'?: string | undefined; 'package.name'?: string | undefined; 'package.path'?: string | undefined; 'package.reference'?: string | undefined; 'package.size'?: string | number | undefined; 'package.type'?: string | undefined; 'package.version'?: string | undefined; 'process.args'?: string[] | undefined; 'process.args_count'?: string | number | undefined; 'process.code_signature.digest_algorithm'?: string | undefined; 'process.code_signature.exists'?: boolean | undefined; 'process.code_signature.signing_id'?: string | undefined; 'process.code_signature.status'?: string | undefined; 'process.code_signature.subject_name'?: string | undefined; 'process.code_signature.team_id'?: string | undefined; 'process.code_signature.timestamp'?: string | number | undefined; 'process.code_signature.trusted'?: boolean | undefined; 'process.code_signature.valid'?: boolean | undefined; 'process.command_line'?: string | undefined; 'process.elf.architecture'?: string | undefined; 'process.elf.byte_order'?: string | undefined; 'process.elf.cpu_type'?: string | undefined; 'process.elf.creation_date'?: string | number | undefined; 'process.elf.exports'?: unknown[] | undefined; 'process.elf.header.abi_version'?: string | undefined; 'process.elf.header.class'?: string | undefined; 'process.elf.header.data'?: string | undefined; 'process.elf.header.entrypoint'?: string | number | undefined; 'process.elf.header.object_version'?: string | undefined; 'process.elf.header.os_abi'?: string | undefined; 'process.elf.header.type'?: string | undefined; 'process.elf.header.version'?: string | undefined; 'process.elf.imports'?: unknown[] | undefined; 'process.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.elf.shared_libraries'?: string[] | undefined; 'process.elf.telfhash'?: string | undefined; 'process.end'?: string | number | undefined; 'process.entity_id'?: string | undefined; 'process.entry_leader.args'?: string[] | undefined; 'process.entry_leader.args_count'?: string | number | undefined; 'process.entry_leader.attested_groups.name'?: string | undefined; 'process.entry_leader.attested_user.id'?: string | undefined; 'process.entry_leader.attested_user.name'?: string | undefined; 'process.entry_leader.command_line'?: string | undefined; 'process.entry_leader.entity_id'?: string | undefined; 'process.entry_leader.entry_meta.source.ip'?: string | undefined; 'process.entry_leader.entry_meta.type'?: string | undefined; 'process.entry_leader.executable'?: string | undefined; 'process.entry_leader.group.id'?: string | undefined; 'process.entry_leader.group.name'?: string | undefined; 'process.entry_leader.interactive'?: boolean | undefined; 'process.entry_leader.name'?: string | undefined; 'process.entry_leader.parent.entity_id'?: string | undefined; 'process.entry_leader.parent.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.entity_id'?: string | undefined; 'process.entry_leader.parent.session_leader.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.start'?: string | number | undefined; 'process.entry_leader.parent.start'?: string | number | undefined; 'process.entry_leader.pid'?: string | number | undefined; 'process.entry_leader.real_group.id'?: string | undefined; 'process.entry_leader.real_group.name'?: string | undefined; 'process.entry_leader.real_user.id'?: string | undefined; 'process.entry_leader.real_user.name'?: string | undefined; 'process.entry_leader.same_as_process'?: boolean | undefined; 'process.entry_leader.saved_group.id'?: string | undefined; 'process.entry_leader.saved_group.name'?: string | undefined; 'process.entry_leader.saved_user.id'?: string | undefined; 'process.entry_leader.saved_user.name'?: string | undefined; 'process.entry_leader.start'?: string | number | undefined; 'process.entry_leader.supplemental_groups.id'?: string | undefined; 'process.entry_leader.supplemental_groups.name'?: string | undefined; 'process.entry_leader.tty'?: unknown; 'process.entry_leader.user.id'?: string | undefined; 'process.entry_leader.user.name'?: string | undefined; 'process.entry_leader.working_directory'?: string | undefined; 'process.env_vars'?: string[] | undefined; 'process.executable'?: string | undefined; 'process.exit_code'?: string | number | undefined; 'process.group_leader.args'?: string[] | undefined; 'process.group_leader.args_count'?: string | number | undefined; 'process.group_leader.command_line'?: string | undefined; 'process.group_leader.entity_id'?: string | undefined; 'process.group_leader.executable'?: string | undefined; 'process.group_leader.group.id'?: string | undefined; 'process.group_leader.group.name'?: string | undefined; 'process.group_leader.interactive'?: boolean | undefined; 'process.group_leader.name'?: string | undefined; 'process.group_leader.pid'?: string | number | undefined; 'process.group_leader.real_group.id'?: string | undefined; 'process.group_leader.real_group.name'?: string | undefined; 'process.group_leader.real_user.id'?: string | undefined; 'process.group_leader.real_user.name'?: string | undefined; 'process.group_leader.same_as_process'?: boolean | undefined; 'process.group_leader.saved_group.id'?: string | undefined; 'process.group_leader.saved_group.name'?: string | undefined; 'process.group_leader.saved_user.id'?: string | undefined; 'process.group_leader.saved_user.name'?: string | undefined; 'process.group_leader.start'?: string | number | undefined; 'process.group_leader.supplemental_groups.id'?: string | undefined; 'process.group_leader.supplemental_groups.name'?: string | undefined; 'process.group_leader.tty'?: unknown; 'process.group_leader.user.id'?: string | undefined; 'process.group_leader.user.name'?: string | undefined; 'process.group_leader.working_directory'?: string | undefined; 'process.hash.md5'?: string | undefined; 'process.hash.sha1'?: string | undefined; 'process.hash.sha256'?: string | undefined; 'process.hash.sha384'?: string | undefined; 'process.hash.sha512'?: string | undefined; 'process.hash.ssdeep'?: string | undefined; 'process.hash.tlsh'?: string | undefined; 'process.interactive'?: boolean | undefined; 'process.io'?: unknown; 'process.name'?: string | undefined; 'process.parent.args'?: string[] | undefined; 'process.parent.args_count'?: string | number | undefined; 'process.parent.code_signature.digest_algorithm'?: string | undefined; 'process.parent.code_signature.exists'?: boolean | undefined; 'process.parent.code_signature.signing_id'?: string | undefined; 'process.parent.code_signature.status'?: string | undefined; 'process.parent.code_signature.subject_name'?: string | undefined; 'process.parent.code_signature.team_id'?: string | undefined; 'process.parent.code_signature.timestamp'?: string | number | undefined; 'process.parent.code_signature.trusted'?: boolean | undefined; 'process.parent.code_signature.valid'?: boolean | undefined; 'process.parent.command_line'?: string | undefined; 'process.parent.elf.architecture'?: string | undefined; 'process.parent.elf.byte_order'?: string | undefined; 'process.parent.elf.cpu_type'?: string | undefined; 'process.parent.elf.creation_date'?: string | number | undefined; 'process.parent.elf.exports'?: unknown[] | undefined; 'process.parent.elf.header.abi_version'?: string | undefined; 'process.parent.elf.header.class'?: string | undefined; 'process.parent.elf.header.data'?: string | undefined; 'process.parent.elf.header.entrypoint'?: string | number | undefined; 'process.parent.elf.header.object_version'?: string | undefined; 'process.parent.elf.header.os_abi'?: string | undefined; 'process.parent.elf.header.type'?: string | undefined; 'process.parent.elf.header.version'?: string | undefined; 'process.parent.elf.imports'?: unknown[] | undefined; 'process.parent.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.parent.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.parent.elf.shared_libraries'?: string[] | undefined; 'process.parent.elf.telfhash'?: string | undefined; 'process.parent.end'?: string | number | undefined; 'process.parent.entity_id'?: string | undefined; 'process.parent.executable'?: string | undefined; 'process.parent.exit_code'?: string | number | undefined; 'process.parent.group.id'?: string | undefined; 'process.parent.group.name'?: string | undefined; 'process.parent.group_leader.entity_id'?: string | undefined; 'process.parent.group_leader.pid'?: string | number | undefined; 'process.parent.group_leader.start'?: string | number | undefined; 'process.parent.hash.md5'?: string | undefined; 'process.parent.hash.sha1'?: string | undefined; 'process.parent.hash.sha256'?: string | undefined; 'process.parent.hash.sha384'?: string | undefined; 'process.parent.hash.sha512'?: string | undefined; 'process.parent.hash.ssdeep'?: string | undefined; 'process.parent.hash.tlsh'?: string | undefined; 'process.parent.interactive'?: boolean | undefined; 'process.parent.name'?: string | undefined; 'process.parent.pe.architecture'?: string | undefined; 'process.parent.pe.company'?: string | undefined; 'process.parent.pe.description'?: string | undefined; 'process.parent.pe.file_version'?: string | undefined; 'process.parent.pe.imphash'?: string | undefined; 'process.parent.pe.original_file_name'?: string | undefined; 'process.parent.pe.pehash'?: string | undefined; 'process.parent.pe.product'?: string | undefined; 'process.parent.pgid'?: string | number | undefined; 'process.parent.pid'?: string | number | undefined; 'process.parent.real_group.id'?: string | undefined; 'process.parent.real_group.name'?: string | undefined; 'process.parent.real_user.id'?: string | undefined; 'process.parent.real_user.name'?: string | undefined; 'process.parent.saved_group.id'?: string | undefined; 'process.parent.saved_group.name'?: string | undefined; 'process.parent.saved_user.id'?: string | undefined; 'process.parent.saved_user.name'?: string | undefined; 'process.parent.start'?: string | number | undefined; 'process.parent.supplemental_groups.id'?: string | undefined; 'process.parent.supplemental_groups.name'?: string | undefined; 'process.parent.thread.id'?: string | number | undefined; 'process.parent.thread.name'?: string | undefined; 'process.parent.title'?: string | undefined; 'process.parent.tty'?: unknown; 'process.parent.uptime'?: string | number | undefined; 'process.parent.user.id'?: string | undefined; 'process.parent.user.name'?: string | undefined; 'process.parent.working_directory'?: string | undefined; 'process.pe.architecture'?: string | undefined; 'process.pe.company'?: string | undefined; 'process.pe.description'?: string | undefined; 'process.pe.file_version'?: string | undefined; 'process.pe.imphash'?: string | undefined; 'process.pe.original_file_name'?: string | undefined; 'process.pe.pehash'?: string | undefined; 'process.pe.product'?: string | undefined; 'process.pgid'?: string | number | undefined; 'process.pid'?: string | number | undefined; 'process.previous.args'?: string[] | undefined; 'process.previous.args_count'?: string | number | undefined; 'process.previous.executable'?: string | undefined; 'process.real_group.id'?: string | undefined; 'process.real_group.name'?: string | undefined; 'process.real_user.id'?: string | undefined; 'process.real_user.name'?: string | undefined; 'process.saved_group.id'?: string | undefined; 'process.saved_group.name'?: string | undefined; 'process.saved_user.id'?: string | undefined; 'process.saved_user.name'?: string | undefined; 'process.session_leader.args'?: string[] | undefined; 'process.session_leader.args_count'?: string | number | undefined; 'process.session_leader.command_line'?: string | undefined; 'process.session_leader.entity_id'?: string | undefined; 'process.session_leader.executable'?: string | undefined; 'process.session_leader.group.id'?: string | undefined; 'process.session_leader.group.name'?: string | undefined; 'process.session_leader.interactive'?: boolean | undefined; 'process.session_leader.name'?: string | undefined; 'process.session_leader.parent.entity_id'?: string | undefined; 'process.session_leader.parent.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.entity_id'?: string | undefined; 'process.session_leader.parent.session_leader.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.start'?: string | number | undefined; 'process.session_leader.parent.start'?: string | number | undefined; 'process.session_leader.pid'?: string | number | undefined; 'process.session_leader.real_group.id'?: string | undefined; 'process.session_leader.real_group.name'?: string | undefined; 'process.session_leader.real_user.id'?: string | undefined; 'process.session_leader.real_user.name'?: string | undefined; 'process.session_leader.same_as_process'?: boolean | undefined; 'process.session_leader.saved_group.id'?: string | undefined; 'process.session_leader.saved_group.name'?: string | undefined; 'process.session_leader.saved_user.id'?: string | undefined; 'process.session_leader.saved_user.name'?: string | undefined; 'process.session_leader.start'?: string | number | undefined; 'process.session_leader.supplemental_groups.id'?: string | undefined; 'process.session_leader.supplemental_groups.name'?: string | undefined; 'process.session_leader.tty'?: unknown; 'process.session_leader.user.id'?: string | undefined; 'process.session_leader.user.name'?: string | undefined; 'process.session_leader.working_directory'?: string | undefined; 'process.start'?: string | number | undefined; 'process.supplemental_groups.id'?: string | undefined; 'process.supplemental_groups.name'?: string | undefined; 'process.thread.id'?: string | number | undefined; 'process.thread.name'?: string | undefined; 'process.title'?: string | undefined; 'process.tty'?: unknown; 'process.uptime'?: string | number | undefined; 'process.user.id'?: string | undefined; 'process.user.name'?: string | undefined; 'process.working_directory'?: string | undefined; 'registry.data.bytes'?: string | undefined; 'registry.data.strings'?: string[] | undefined; 'registry.data.type'?: string | undefined; 'registry.hive'?: string | undefined; 'registry.key'?: string | undefined; 'registry.path'?: string | undefined; 'registry.value'?: string | undefined; 'related.hash'?: string[] | undefined; 'related.hosts'?: string[] | undefined; 'related.ip'?: string[] | undefined; 'related.user'?: string[] | undefined; 'rule.author'?: string[] | undefined; 'rule.category'?: string | undefined; 'rule.description'?: string | undefined; 'rule.id'?: string | undefined; 'rule.license'?: string | undefined; 'rule.name'?: string | undefined; 'rule.reference'?: string | undefined; 'rule.ruleset'?: string | undefined; 'rule.uuid'?: string | undefined; 'rule.version'?: string | undefined; 'server.address'?: string | undefined; 'server.as.number'?: string | number | undefined; 'server.as.organization.name'?: string | undefined; 'server.bytes'?: string | number | undefined; 'server.domain'?: string | undefined; 'server.geo.city_name'?: string | undefined; 'server.geo.continent_code'?: string | undefined; 'server.geo.continent_name'?: string | undefined; 'server.geo.country_iso_code'?: string | undefined; 'server.geo.country_name'?: string | undefined; 'server.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'server.geo.name'?: string | undefined; 'server.geo.postal_code'?: string | undefined; 'server.geo.region_iso_code'?: string | undefined; 'server.geo.region_name'?: string | undefined; 'server.geo.timezone'?: string | undefined; 'server.ip'?: string | undefined; 'server.mac'?: string | undefined; 'server.nat.ip'?: string | undefined; 'server.nat.port'?: string | number | undefined; 'server.packets'?: string | number | undefined; 'server.port'?: string | number | undefined; 'server.registered_domain'?: string | undefined; 'server.subdomain'?: string | undefined; 'server.top_level_domain'?: string | undefined; 'server.user.domain'?: string | undefined; 'server.user.email'?: string | undefined; 'server.user.full_name'?: string | undefined; 'server.user.group.domain'?: string | undefined; 'server.user.group.id'?: string | undefined; 'server.user.group.name'?: string | undefined; 'server.user.hash'?: string | undefined; 'server.user.id'?: string | undefined; 'server.user.name'?: string | undefined; 'server.user.roles'?: string[] | undefined; 'service.address'?: string | undefined; 'service.environment'?: string | undefined; 'service.ephemeral_id'?: string | undefined; 'service.id'?: string | undefined; 'service.name'?: string | undefined; 'service.node.name'?: string | undefined; 'service.node.role'?: string | undefined; 'service.node.roles'?: string[] | undefined; 'service.origin.address'?: string | undefined; 'service.origin.environment'?: string | undefined; 'service.origin.ephemeral_id'?: string | undefined; 'service.origin.id'?: string | undefined; 'service.origin.name'?: string | undefined; 'service.origin.node.name'?: string | undefined; 'service.origin.node.role'?: string | undefined; 'service.origin.node.roles'?: string[] | undefined; 'service.origin.state'?: string | undefined; 'service.origin.type'?: string | undefined; 'service.origin.version'?: string | undefined; 'service.state'?: string | undefined; 'service.target.address'?: string | undefined; 'service.target.environment'?: string | undefined; 'service.target.ephemeral_id'?: string | undefined; 'service.target.id'?: string | undefined; 'service.target.name'?: string | undefined; 'service.target.node.name'?: string | undefined; 'service.target.node.role'?: string | undefined; 'service.target.node.roles'?: string[] | undefined; 'service.target.state'?: string | undefined; 'service.target.type'?: string | undefined; 'service.target.version'?: string | undefined; 'service.type'?: string | undefined; 'service.version'?: string | undefined; 'source.address'?: string | undefined; 'source.as.number'?: string | number | undefined; 'source.as.organization.name'?: string | undefined; 'source.bytes'?: string | number | undefined; 'source.domain'?: string | undefined; 'source.geo.city_name'?: string | undefined; 'source.geo.continent_code'?: string | undefined; 'source.geo.continent_name'?: string | undefined; 'source.geo.country_iso_code'?: string | undefined; 'source.geo.country_name'?: string | undefined; 'source.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'source.geo.name'?: string | undefined; 'source.geo.postal_code'?: string | undefined; 'source.geo.region_iso_code'?: string | undefined; 'source.geo.region_name'?: string | undefined; 'source.geo.timezone'?: string | undefined; 'source.ip'?: string | undefined; 'source.mac'?: string | undefined; 'source.nat.ip'?: string | undefined; 'source.nat.port'?: string | number | undefined; 'source.packets'?: string | number | undefined; 'source.port'?: string | number | undefined; 'source.registered_domain'?: string | undefined; 'source.subdomain'?: string | undefined; 'source.top_level_domain'?: string | undefined; 'source.user.domain'?: string | undefined; 'source.user.email'?: string | undefined; 'source.user.full_name'?: string | undefined; 'source.user.group.domain'?: string | undefined; 'source.user.group.id'?: string | undefined; 'source.user.group.name'?: string | undefined; 'source.user.hash'?: string | undefined; 'source.user.id'?: string | undefined; 'source.user.name'?: string | undefined; 'source.user.roles'?: string[] | undefined; 'span.id'?: string | undefined; tags?: string[] | undefined; 'threat.enrichments'?: { indicator?: unknown; 'matched.atomic'?: string | undefined; 'matched.field'?: string | undefined; 'matched.id'?: string | undefined; 'matched.index'?: string | undefined; 'matched.occurred'?: string | number | undefined; 'matched.type'?: string | undefined; }[] | undefined; 'threat.feed.dashboard_id'?: string | undefined; 'threat.feed.description'?: string | undefined; 'threat.feed.name'?: string | undefined; 'threat.feed.reference'?: string | undefined; 'threat.framework'?: string | undefined; 'threat.group.alias'?: string[] | undefined; 'threat.group.id'?: string | undefined; 'threat.group.name'?: string | undefined; 'threat.group.reference'?: string | undefined; 'threat.indicator.as.number'?: string | number | undefined; 'threat.indicator.as.organization.name'?: string | undefined; 'threat.indicator.confidence'?: string | undefined; 'threat.indicator.description'?: string | undefined; 'threat.indicator.email.address'?: string | undefined; 'threat.indicator.file.accessed'?: string | number | undefined; 'threat.indicator.file.attributes'?: string[] | undefined; 'threat.indicator.file.code_signature.digest_algorithm'?: string | undefined; 'threat.indicator.file.code_signature.exists'?: boolean | undefined; 'threat.indicator.file.code_signature.signing_id'?: string | undefined; 'threat.indicator.file.code_signature.status'?: string | undefined; 'threat.indicator.file.code_signature.subject_name'?: string | undefined; 'threat.indicator.file.code_signature.team_id'?: string | undefined; 'threat.indicator.file.code_signature.timestamp'?: string | number | undefined; 'threat.indicator.file.code_signature.trusted'?: boolean | undefined; 'threat.indicator.file.code_signature.valid'?: boolean | undefined; 'threat.indicator.file.created'?: string | number | undefined; 'threat.indicator.file.ctime'?: string | number | undefined; 'threat.indicator.file.device'?: string | undefined; 'threat.indicator.file.directory'?: string | undefined; 'threat.indicator.file.drive_letter'?: string | undefined; 'threat.indicator.file.elf.architecture'?: string | undefined; 'threat.indicator.file.elf.byte_order'?: string | undefined; 'threat.indicator.file.elf.cpu_type'?: string | undefined; 'threat.indicator.file.elf.creation_date'?: string | number | undefined; 'threat.indicator.file.elf.exports'?: unknown[] | undefined; 'threat.indicator.file.elf.header.abi_version'?: string | undefined; 'threat.indicator.file.elf.header.class'?: string | undefined; 'threat.indicator.file.elf.header.data'?: string | undefined; 'threat.indicator.file.elf.header.entrypoint'?: string | number | undefined; 'threat.indicator.file.elf.header.object_version'?: string | undefined; 'threat.indicator.file.elf.header.os_abi'?: string | undefined; 'threat.indicator.file.elf.header.type'?: string | undefined; 'threat.indicator.file.elf.header.version'?: string | undefined; 'threat.indicator.file.elf.imports'?: unknown[] | undefined; 'threat.indicator.file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'threat.indicator.file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'threat.indicator.file.elf.shared_libraries'?: string[] | undefined; 'threat.indicator.file.elf.telfhash'?: string | undefined; 'threat.indicator.file.extension'?: string | undefined; 'threat.indicator.file.fork_name'?: string | undefined; 'threat.indicator.file.gid'?: string | undefined; 'threat.indicator.file.group'?: string | undefined; 'threat.indicator.file.hash.md5'?: string | undefined; 'threat.indicator.file.hash.sha1'?: string | undefined; 'threat.indicator.file.hash.sha256'?: string | undefined; 'threat.indicator.file.hash.sha384'?: string | undefined; 'threat.indicator.file.hash.sha512'?: string | undefined; 'threat.indicator.file.hash.ssdeep'?: string | undefined; 'threat.indicator.file.hash.tlsh'?: string | undefined; 'threat.indicator.file.inode'?: string | undefined; 'threat.indicator.file.mime_type'?: string | undefined; 'threat.indicator.file.mode'?: string | undefined; 'threat.indicator.file.mtime'?: string | number | undefined; 'threat.indicator.file.name'?: string | undefined; 'threat.indicator.file.owner'?: string | undefined; 'threat.indicator.file.path'?: string | undefined; 'threat.indicator.file.pe.architecture'?: string | undefined; 'threat.indicator.file.pe.company'?: string | undefined; 'threat.indicator.file.pe.description'?: string | undefined; 'threat.indicator.file.pe.file_version'?: string | undefined; 'threat.indicator.file.pe.imphash'?: string | undefined; 'threat.indicator.file.pe.original_file_name'?: string | undefined; 'threat.indicator.file.pe.pehash'?: string | undefined; 'threat.indicator.file.pe.product'?: string | undefined; 'threat.indicator.file.size'?: string | number | undefined; 'threat.indicator.file.target_path'?: string | undefined; 'threat.indicator.file.type'?: string | undefined; 'threat.indicator.file.uid'?: string | undefined; 'threat.indicator.file.x509.alternative_names'?: string[] | undefined; 'threat.indicator.file.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.file.x509.issuer.country'?: string[] | undefined; 'threat.indicator.file.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.not_after'?: string | number | undefined; 'threat.indicator.file.x509.not_before'?: string | number | undefined; 'threat.indicator.file.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.file.x509.public_key_curve'?: string | undefined; 'threat.indicator.file.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.file.x509.public_key_size'?: string | number | undefined; 'threat.indicator.file.x509.serial_number'?: string | undefined; 'threat.indicator.file.x509.signature_algorithm'?: string | undefined; 'threat.indicator.file.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.file.x509.subject.country'?: string[] | undefined; 'threat.indicator.file.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.subject.locality'?: string[] | undefined; 'threat.indicator.file.x509.subject.organization'?: string[] | undefined; 'threat.indicator.file.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.version_number'?: string | undefined; 'threat.indicator.first_seen'?: string | number | undefined; 'threat.indicator.geo.city_name'?: string | undefined; 'threat.indicator.geo.continent_code'?: string | undefined; 'threat.indicator.geo.continent_name'?: string | undefined; 'threat.indicator.geo.country_iso_code'?: string | undefined; 'threat.indicator.geo.country_name'?: string | undefined; 'threat.indicator.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'threat.indicator.geo.name'?: string | undefined; 'threat.indicator.geo.postal_code'?: string | undefined; 'threat.indicator.geo.region_iso_code'?: string | undefined; 'threat.indicator.geo.region_name'?: string | undefined; 'threat.indicator.geo.timezone'?: string | undefined; 'threat.indicator.ip'?: string | undefined; 'threat.indicator.last_seen'?: string | number | undefined; 'threat.indicator.marking.tlp'?: string | undefined; 'threat.indicator.marking.tlp_version'?: string | undefined; 'threat.indicator.modified_at'?: string | number | undefined; 'threat.indicator.port'?: string | number | undefined; 'threat.indicator.provider'?: string | undefined; 'threat.indicator.reference'?: string | undefined; 'threat.indicator.registry.data.bytes'?: string | undefined; 'threat.indicator.registry.data.strings'?: string[] | undefined; 'threat.indicator.registry.data.type'?: string | undefined; 'threat.indicator.registry.hive'?: string | undefined; 'threat.indicator.registry.key'?: string | undefined; 'threat.indicator.registry.path'?: string | undefined; 'threat.indicator.registry.value'?: string | undefined; 'threat.indicator.scanner_stats'?: string | number | undefined; 'threat.indicator.sightings'?: string | number | undefined; 'threat.indicator.type'?: string | undefined; 'threat.indicator.url.domain'?: string | undefined; 'threat.indicator.url.extension'?: string | undefined; 'threat.indicator.url.fragment'?: string | undefined; 'threat.indicator.url.full'?: string | undefined; 'threat.indicator.url.original'?: string | undefined; 'threat.indicator.url.password'?: string | undefined; 'threat.indicator.url.path'?: string | undefined; 'threat.indicator.url.port'?: string | number | undefined; 'threat.indicator.url.query'?: string | undefined; 'threat.indicator.url.registered_domain'?: string | undefined; 'threat.indicator.url.scheme'?: string | undefined; 'threat.indicator.url.subdomain'?: string | undefined; 'threat.indicator.url.top_level_domain'?: string | undefined; 'threat.indicator.url.username'?: string | undefined; 'threat.indicator.x509.alternative_names'?: string[] | undefined; 'threat.indicator.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.x509.issuer.country'?: string[] | undefined; 'threat.indicator.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.x509.not_after'?: string | number | undefined; 'threat.indicator.x509.not_before'?: string | number | undefined; 'threat.indicator.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.x509.public_key_curve'?: string | undefined; 'threat.indicator.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.x509.public_key_size'?: string | number | undefined; 'threat.indicator.x509.serial_number'?: string | undefined; 'threat.indicator.x509.signature_algorithm'?: string | undefined; 'threat.indicator.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.x509.subject.country'?: string[] | undefined; 'threat.indicator.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.x509.subject.locality'?: string[] | undefined; 'threat.indicator.x509.subject.organization'?: string[] | undefined; 'threat.indicator.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.x509.version_number'?: string | undefined; 'threat.software.alias'?: string[] | undefined; 'threat.software.id'?: string | undefined; 'threat.software.name'?: string | undefined; 'threat.software.platforms'?: string[] | undefined; 'threat.software.reference'?: string | undefined; 'threat.software.type'?: string | undefined; 'threat.tactic.id'?: string[] | undefined; 'threat.tactic.name'?: string[] | undefined; 'threat.tactic.reference'?: string[] | undefined; 'threat.technique.id'?: string[] | undefined; 'threat.technique.name'?: string[] | undefined; 'threat.technique.reference'?: string[] | undefined; 'threat.technique.subtechnique.id'?: string[] | undefined; 'threat.technique.subtechnique.name'?: string[] | undefined; 'threat.technique.subtechnique.reference'?: string[] | undefined; 'tls.cipher'?: string | undefined; 'tls.client.certificate'?: string | undefined; 'tls.client.certificate_chain'?: string[] | undefined; 'tls.client.hash.md5'?: string | undefined; 'tls.client.hash.sha1'?: string | undefined; 'tls.client.hash.sha256'?: string | undefined; 'tls.client.issuer'?: string | undefined; 'tls.client.ja3'?: string | undefined; 'tls.client.not_after'?: string | number | undefined; 'tls.client.not_before'?: string | number | undefined; 'tls.client.server_name'?: string | undefined; 'tls.client.subject'?: string | undefined; 'tls.client.supported_ciphers'?: string[] | undefined; 'tls.client.x509.alternative_names'?: string[] | undefined; 'tls.client.x509.issuer.common_name'?: string[] | undefined; 'tls.client.x509.issuer.country'?: string[] | undefined; 'tls.client.x509.issuer.distinguished_name'?: string | undefined; 'tls.client.x509.issuer.locality'?: string[] | undefined; 'tls.client.x509.issuer.organization'?: string[] | undefined; 'tls.client.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.client.x509.issuer.state_or_province'?: string[] | undefined; 'tls.client.x509.not_after'?: string | number | undefined; 'tls.client.x509.not_before'?: string | number | undefined; 'tls.client.x509.public_key_algorithm'?: string | undefined; 'tls.client.x509.public_key_curve'?: string | undefined; 'tls.client.x509.public_key_exponent'?: string | number | undefined; 'tls.client.x509.public_key_size'?: string | number | undefined; 'tls.client.x509.serial_number'?: string | undefined; 'tls.client.x509.signature_algorithm'?: string | undefined; 'tls.client.x509.subject.common_name'?: string[] | undefined; 'tls.client.x509.subject.country'?: string[] | undefined; 'tls.client.x509.subject.distinguished_name'?: string | undefined; 'tls.client.x509.subject.locality'?: string[] | undefined; 'tls.client.x509.subject.organization'?: string[] | undefined; 'tls.client.x509.subject.organizational_unit'?: string[] | undefined; 'tls.client.x509.subject.state_or_province'?: string[] | undefined; 'tls.client.x509.version_number'?: string | undefined; 'tls.curve'?: string | undefined; 'tls.established'?: boolean | undefined; 'tls.next_protocol'?: string | undefined; 'tls.resumed'?: boolean | undefined; 'tls.server.certificate'?: string | undefined; 'tls.server.certificate_chain'?: string[] | undefined; 'tls.server.hash.md5'?: string | undefined; 'tls.server.hash.sha1'?: string | undefined; 'tls.server.hash.sha256'?: string | undefined; 'tls.server.issuer'?: string | undefined; 'tls.server.ja3s'?: string | undefined; 'tls.server.not_after'?: string | number | undefined; 'tls.server.not_before'?: string | number | undefined; 'tls.server.subject'?: string | undefined; 'tls.server.x509.alternative_names'?: string[] | undefined; 'tls.server.x509.issuer.common_name'?: string[] | undefined; 'tls.server.x509.issuer.country'?: string[] | undefined; 'tls.server.x509.issuer.distinguished_name'?: string | undefined; 'tls.server.x509.issuer.locality'?: string[] | undefined; 'tls.server.x509.issuer.organization'?: string[] | undefined; 'tls.server.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.server.x509.issuer.state_or_province'?: string[] | undefined; 'tls.server.x509.not_after'?: string | number | undefined; 'tls.server.x509.not_before'?: string | number | undefined; 'tls.server.x509.public_key_algorithm'?: string | undefined; 'tls.server.x509.public_key_curve'?: string | undefined; 'tls.server.x509.public_key_exponent'?: string | number | undefined; 'tls.server.x509.public_key_size'?: string | number | undefined; 'tls.server.x509.serial_number'?: string | undefined; 'tls.server.x509.signature_algorithm'?: string | undefined; 'tls.server.x509.subject.common_name'?: string[] | undefined; 'tls.server.x509.subject.country'?: string[] | undefined; 'tls.server.x509.subject.distinguished_name'?: string | undefined; 'tls.server.x509.subject.locality'?: string[] | undefined; 'tls.server.x509.subject.organization'?: string[] | undefined; 'tls.server.x509.subject.organizational_unit'?: string[] | undefined; 'tls.server.x509.subject.state_or_province'?: string[] | undefined; 'tls.server.x509.version_number'?: string | undefined; 'tls.version'?: string | undefined; 'tls.version_protocol'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.id'?: string | undefined; 'url.domain'?: string | undefined; 'url.extension'?: string | undefined; 'url.fragment'?: string | undefined; 'url.full'?: string | undefined; 'url.original'?: string | undefined; 'url.password'?: string | undefined; 'url.path'?: string | undefined; 'url.port'?: string | number | undefined; 'url.query'?: string | undefined; 'url.registered_domain'?: string | undefined; 'url.scheme'?: string | undefined; 'url.subdomain'?: string | undefined; 'url.top_level_domain'?: string | undefined; 'url.username'?: string | undefined; 'user.changes.domain'?: string | undefined; 'user.changes.email'?: string | undefined; 'user.changes.full_name'?: string | undefined; 'user.changes.group.domain'?: string | undefined; 'user.changes.group.id'?: string | undefined; 'user.changes.group.name'?: string | undefined; 'user.changes.hash'?: string | undefined; 'user.changes.id'?: string | undefined; 'user.changes.name'?: string | undefined; 'user.changes.roles'?: string[] | undefined; 'user.domain'?: string | undefined; 'user.effective.domain'?: string | undefined; 'user.effective.email'?: string | undefined; 'user.effective.full_name'?: string | undefined; 'user.effective.group.domain'?: string | undefined; 'user.effective.group.id'?: string | undefined; 'user.effective.group.name'?: string | undefined; 'user.effective.hash'?: string | undefined; 'user.effective.id'?: string | undefined; 'user.effective.name'?: string | undefined; 'user.effective.roles'?: string[] | undefined; 'user.email'?: string | undefined; 'user.full_name'?: string | undefined; 'user.group.domain'?: string | undefined; 'user.group.id'?: string | undefined; 'user.group.name'?: string | undefined; 'user.hash'?: string | undefined; 'user.id'?: string | undefined; 'user.name'?: string | undefined; 'user.risk.calculated_level'?: string | undefined; 'user.risk.calculated_score'?: number | undefined; 'user.risk.calculated_score_norm'?: number | undefined; 'user.risk.static_level'?: string | undefined; 'user.risk.static_score'?: number | undefined; 'user.risk.static_score_norm'?: number | undefined; 'user.roles'?: string[] | undefined; 'user.target.domain'?: string | undefined; 'user.target.email'?: string | undefined; 'user.target.full_name'?: string | undefined; 'user.target.group.domain'?: string | undefined; 'user.target.group.id'?: string | undefined; 'user.target.group.name'?: string | undefined; 'user.target.hash'?: string | undefined; 'user.target.id'?: string | undefined; 'user.target.name'?: string | undefined; 'user.target.roles'?: string[] | undefined; 'user_agent.device.name'?: string | undefined; 'user_agent.name'?: string | undefined; 'user_agent.original'?: string | undefined; 'user_agent.os.family'?: string | undefined; 'user_agent.os.full'?: string | undefined; 'user_agent.os.kernel'?: string | undefined; 'user_agent.os.name'?: string | undefined; 'user_agent.os.platform'?: string | undefined; 'user_agent.os.type'?: string | undefined; 'user_agent.os.version'?: string | undefined; 'user_agent.version'?: string | undefined; 'vulnerability.category'?: string[] | undefined; 'vulnerability.classification'?: string | undefined; 'vulnerability.description'?: string | undefined; 'vulnerability.enumeration'?: string | undefined; 'vulnerability.id'?: string | undefined; 'vulnerability.reference'?: string | undefined; 'vulnerability.report_id'?: string | undefined; 'vulnerability.scanner.vendor'?: string | undefined; 'vulnerability.score.base'?: number | undefined; 'vulnerability.score.environmental'?: number | undefined; 'vulnerability.score.temporal'?: number | undefined; 'vulnerability.score.version'?: string | undefined; 'vulnerability.severity'?: string | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }) | ({} & { 'kibana.alert.context'?: unknown; 'kibana.alert.evaluation.threshold'?: string | number | undefined; 'kibana.alert.evaluation.value'?: string | number | undefined; 'kibana.alert.evaluation.values'?: (string | number)[] | undefined; 'kibana.alert.group'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; 'slo.id'?: string | undefined; 'slo.instanceId'?: string | undefined; 'slo.revision'?: string | number | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }) | ({} & { 'agent.name'?: string | undefined; 'anomaly.bucket_span.minutes'?: string | undefined; 'anomaly.start'?: string | number | undefined; 'error.message'?: string | undefined; 'kibana.alert.context'?: unknown; 'kibana.alert.evaluation.threshold'?: string | number | undefined; 'kibana.alert.evaluation.value'?: string | number | undefined; 'kibana.alert.evaluation.values'?: (string | number)[] | undefined; 'kibana.alert.group'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; 'monitor.id'?: string | undefined; 'monitor.name'?: string | undefined; 'monitor.type'?: string | undefined; 'observer.geo.name'?: string | undefined; 'tls.server.hash.sha256'?: string | undefined; 'tls.server.x509.issuer.common_name'?: string | undefined; 'tls.server.x509.not_after'?: string | number | undefined; 'tls.server.x509.not_before'?: string | number | undefined; 'tls.server.x509.subject.common_name'?: string | undefined; 'url.full'?: string | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }) | ({ '@timestamp': string | number; 'kibana.alert.ancestors': { depth: string | number; id: string; index: string; type: string; }[]; 'kibana.alert.depth': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.original_event.action': string; 'kibana.alert.original_event.category': string[]; 'kibana.alert.original_event.created': string | number; 'kibana.alert.original_event.dataset': string; 'kibana.alert.original_event.id': string; 'kibana.alert.original_event.ingested': string | number; 'kibana.alert.original_event.kind': string; 'kibana.alert.original_event.module': string; 'kibana.alert.original_event.original': string; 'kibana.alert.original_event.outcome': string; 'kibana.alert.original_event.provider': string; 'kibana.alert.original_event.sequence': string | number; 'kibana.alert.original_event.type': string[]; 'kibana.alert.original_time': string | number; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.false_positives': string[]; 'kibana.alert.rule.max_signals': (string | number)[]; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.threat.framework': string; 'kibana.alert.rule.threat.tactic.id': string; 'kibana.alert.rule.threat.tactic.name': string; 'kibana.alert.rule.threat.tactic.reference': string; 'kibana.alert.rule.threat.technique.id': string; 'kibana.alert.rule.threat.technique.name': string; 'kibana.alert.rule.threat.technique.reference': string; 'kibana.alert.rule.threat.technique.subtechnique.id': string; 'kibana.alert.rule.threat.technique.subtechnique.name': string; 'kibana.alert.rule.threat.technique.subtechnique.reference': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'ecs.version'?: string | undefined; 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'host.asset.criticality'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.ancestors.rule'?: string | undefined; 'kibana.alert.building_block_type'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.group.id'?: string | undefined; 'kibana.alert.group.index'?: number | undefined; 'kibana.alert.host.criticality_level'?: string | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.new_terms'?: string[] | undefined; 'kibana.alert.original_event.agent_id_status'?: string | undefined; 'kibana.alert.original_event.code'?: string | undefined; 'kibana.alert.original_event.duration'?: string | undefined; 'kibana.alert.original_event.end'?: string | number | undefined; 'kibana.alert.original_event.hash'?: string | undefined; 'kibana.alert.original_event.reason'?: string | undefined; 'kibana.alert.original_event.reference'?: string | undefined; 'kibana.alert.original_event.risk_score'?: number | undefined; 'kibana.alert.original_event.risk_score_norm'?: number | undefined; 'kibana.alert.original_event.severity'?: string | number | undefined; 'kibana.alert.original_event.start'?: string | number | undefined; 'kibana.alert.original_event.timezone'?: string | undefined; 'kibana.alert.original_event.url'?: string | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.building_block_type'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.immutable'?: string[] | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.rule.timeline_id'?: string[] | undefined; 'kibana.alert.rule.timeline_title'?: string[] | undefined; 'kibana.alert.rule.timestamp_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.threshold_result.cardinality'?: unknown; 'kibana.alert.threshold_result.count'?: string | number | undefined; 'kibana.alert.threshold_result.from'?: string | number | undefined; 'kibana.alert.threshold_result.terms'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.user.criticality_level'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.alert.workflow_user'?: string | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; 'user.asset.criticality'?: string | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & { '@timestamp': string | number; 'ecs.version': string; } & { 'agent.build.original'?: string | undefined; 'agent.ephemeral_id'?: string | undefined; 'agent.id'?: string | undefined; 'agent.name'?: string | undefined; 'agent.type'?: string | undefined; 'agent.version'?: string | undefined; 'client.address'?: string | undefined; 'client.as.number'?: string | number | undefined; 'client.as.organization.name'?: string | undefined; 'client.bytes'?: string | number | undefined; 'client.domain'?: string | undefined; 'client.geo.city_name'?: string | undefined; 'client.geo.continent_code'?: string | undefined; 'client.geo.continent_name'?: string | undefined; 'client.geo.country_iso_code'?: string | undefined; 'client.geo.country_name'?: string | undefined; 'client.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'client.geo.name'?: string | undefined; 'client.geo.postal_code'?: string | undefined; 'client.geo.region_iso_code'?: string | undefined; 'client.geo.region_name'?: string | undefined; 'client.geo.timezone'?: string | undefined; 'client.ip'?: string | undefined; 'client.mac'?: string | undefined; 'client.nat.ip'?: string | undefined; 'client.nat.port'?: string | number | undefined; 'client.packets'?: string | number | undefined; 'client.port'?: string | number | undefined; 'client.registered_domain'?: string | undefined; 'client.subdomain'?: string | undefined; 'client.top_level_domain'?: string | undefined; 'client.user.domain'?: string | undefined; 'client.user.email'?: string | undefined; 'client.user.full_name'?: string | undefined; 'client.user.group.domain'?: string | undefined; 'client.user.group.id'?: string | undefined; 'client.user.group.name'?: string | undefined; 'client.user.hash'?: string | undefined; 'client.user.id'?: string | undefined; 'client.user.name'?: string | undefined; 'client.user.roles'?: string[] | undefined; 'cloud.account.id'?: string | undefined; 'cloud.account.name'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.instance.id'?: string | undefined; 'cloud.instance.name'?: string | undefined; 'cloud.machine.type'?: string | undefined; 'cloud.origin.account.id'?: string | undefined; 'cloud.origin.account.name'?: string | undefined; 'cloud.origin.availability_zone'?: string | undefined; 'cloud.origin.instance.id'?: string | undefined; 'cloud.origin.instance.name'?: string | undefined; 'cloud.origin.machine.type'?: string | undefined; 'cloud.origin.project.id'?: string | undefined; 'cloud.origin.project.name'?: string | undefined; 'cloud.origin.provider'?: string | undefined; 'cloud.origin.region'?: string | undefined; 'cloud.origin.service.name'?: string | undefined; 'cloud.project.id'?: string | undefined; 'cloud.project.name'?: string | undefined; 'cloud.provider'?: string | undefined; 'cloud.region'?: string | undefined; 'cloud.service.name'?: string | undefined; 'cloud.target.account.id'?: string | undefined; 'cloud.target.account.name'?: string | undefined; 'cloud.target.availability_zone'?: string | undefined; 'cloud.target.instance.id'?: string | undefined; 'cloud.target.instance.name'?: string | undefined; 'cloud.target.machine.type'?: string | undefined; 'cloud.target.project.id'?: string | undefined; 'cloud.target.project.name'?: string | undefined; 'cloud.target.provider'?: string | undefined; 'cloud.target.region'?: string | undefined; 'cloud.target.service.name'?: string | undefined; 'container.cpu.usage'?: string | number | undefined; 'container.disk.read.bytes'?: string | number | undefined; 'container.disk.write.bytes'?: string | number | undefined; 'container.id'?: string | undefined; 'container.image.hash.all'?: string[] | undefined; 'container.image.name'?: string | undefined; 'container.image.tag'?: string[] | undefined; 'container.labels'?: unknown; 'container.memory.usage'?: string | number | undefined; 'container.name'?: string | undefined; 'container.network.egress.bytes'?: string | number | undefined; 'container.network.ingress.bytes'?: string | number | undefined; 'container.runtime'?: string | undefined; 'destination.address'?: string | undefined; 'destination.as.number'?: string | number | undefined; 'destination.as.organization.name'?: string | undefined; 'destination.bytes'?: string | number | undefined; 'destination.domain'?: string | undefined; 'destination.geo.city_name'?: string | undefined; 'destination.geo.continent_code'?: string | undefined; 'destination.geo.continent_name'?: string | undefined; 'destination.geo.country_iso_code'?: string | undefined; 'destination.geo.country_name'?: string | undefined; 'destination.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'destination.geo.name'?: string | undefined; 'destination.geo.postal_code'?: string | undefined; 'destination.geo.region_iso_code'?: string | undefined; 'destination.geo.region_name'?: string | undefined; 'destination.geo.timezone'?: string | undefined; 'destination.ip'?: string | undefined; 'destination.mac'?: string | undefined; 'destination.nat.ip'?: string | undefined; 'destination.nat.port'?: string | number | undefined; 'destination.packets'?: string | number | undefined; 'destination.port'?: string | number | undefined; 'destination.registered_domain'?: string | undefined; 'destination.subdomain'?: string | undefined; 'destination.top_level_domain'?: string | undefined; 'destination.user.domain'?: string | undefined; 'destination.user.email'?: string | undefined; 'destination.user.full_name'?: string | undefined; 'destination.user.group.domain'?: string | undefined; 'destination.user.group.id'?: string | undefined; 'destination.user.group.name'?: string | undefined; 'destination.user.hash'?: string | undefined; 'destination.user.id'?: string | undefined; 'destination.user.name'?: string | undefined; 'destination.user.roles'?: string[] | undefined; 'device.id'?: string | undefined; 'device.manufacturer'?: string | undefined; 'device.model.identifier'?: string | undefined; 'device.model.name'?: string | undefined; 'dll.code_signature.digest_algorithm'?: string | undefined; 'dll.code_signature.exists'?: boolean | undefined; 'dll.code_signature.signing_id'?: string | undefined; 'dll.code_signature.status'?: string | undefined; 'dll.code_signature.subject_name'?: string | undefined; 'dll.code_signature.team_id'?: string | undefined; 'dll.code_signature.timestamp'?: string | number | undefined; 'dll.code_signature.trusted'?: boolean | undefined; 'dll.code_signature.valid'?: boolean | undefined; 'dll.hash.md5'?: string | undefined; 'dll.hash.sha1'?: string | undefined; 'dll.hash.sha256'?: string | undefined; 'dll.hash.sha384'?: string | undefined; 'dll.hash.sha512'?: string | undefined; 'dll.hash.ssdeep'?: string | undefined; 'dll.hash.tlsh'?: string | undefined; 'dll.name'?: string | undefined; 'dll.path'?: string | undefined; 'dll.pe.architecture'?: string | undefined; 'dll.pe.company'?: string | undefined; 'dll.pe.description'?: string | undefined; 'dll.pe.file_version'?: string | undefined; 'dll.pe.imphash'?: string | undefined; 'dll.pe.original_file_name'?: string | undefined; 'dll.pe.pehash'?: string | undefined; 'dll.pe.product'?: string | undefined; 'dns.answers'?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; 'dns.header_flags'?: string[] | undefined; 'dns.id'?: string | undefined; 'dns.op_code'?: string | undefined; 'dns.question.class'?: string | undefined; 'dns.question.name'?: string | undefined; 'dns.question.registered_domain'?: string | undefined; 'dns.question.subdomain'?: string | undefined; 'dns.question.top_level_domain'?: string | undefined; 'dns.question.type'?: string | undefined; 'dns.resolved_ip'?: string[] | undefined; 'dns.response_code'?: string | undefined; 'dns.type'?: string | undefined; 'email.attachments'?: { 'file.extension'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.name'?: string | undefined; 'file.size'?: string | number | undefined; }[] | undefined; 'email.bcc.address'?: string[] | undefined; 'email.cc.address'?: string[] | undefined; 'email.content_type'?: string | undefined; 'email.delivery_timestamp'?: string | number | undefined; 'email.direction'?: string | undefined; 'email.from.address'?: string[] | undefined; 'email.local_id'?: string | undefined; 'email.message_id'?: string | undefined; 'email.origination_timestamp'?: string | number | undefined; 'email.reply_to.address'?: string[] | undefined; 'email.sender.address'?: string | undefined; 'email.subject'?: string | undefined; 'email.to.address'?: string[] | undefined; 'email.x_mailer'?: string | undefined; 'error.code'?: string | undefined; 'error.id'?: string | undefined; 'error.message'?: string | undefined; 'error.stack_trace'?: string | undefined; 'error.type'?: string | undefined; 'event.action'?: string | undefined; 'event.agent_id_status'?: string | undefined; 'event.category'?: string[] | undefined; 'event.code'?: string | undefined; 'event.created'?: string | number | undefined; 'event.dataset'?: string | undefined; 'event.duration'?: string | number | undefined; 'event.end'?: string | number | undefined; 'event.hash'?: string | undefined; 'event.id'?: string | undefined; 'event.ingested'?: string | number | undefined; 'event.kind'?: string | undefined; 'event.module'?: string | undefined; 'event.original'?: string | undefined; 'event.outcome'?: string | undefined; 'event.provider'?: string | undefined; 'event.reason'?: string | undefined; 'event.reference'?: string | undefined; 'event.risk_score'?: number | undefined; 'event.risk_score_norm'?: number | undefined; 'event.sequence'?: string | number | undefined; 'event.severity'?: string | number | undefined; 'event.start'?: string | number | undefined; 'event.timezone'?: string | undefined; 'event.type'?: string[] | undefined; 'event.url'?: string | undefined; 'faas.coldstart'?: boolean | undefined; 'faas.execution'?: string | undefined; 'faas.id'?: string | undefined; 'faas.name'?: string | undefined; 'faas.version'?: string | undefined; 'file.accessed'?: string | number | undefined; 'file.attributes'?: string[] | undefined; 'file.code_signature.digest_algorithm'?: string | undefined; 'file.code_signature.exists'?: boolean | undefined; 'file.code_signature.signing_id'?: string | undefined; 'file.code_signature.status'?: string | undefined; 'file.code_signature.subject_name'?: string | undefined; 'file.code_signature.team_id'?: string | undefined; 'file.code_signature.timestamp'?: string | number | undefined; 'file.code_signature.trusted'?: boolean | undefined; 'file.code_signature.valid'?: boolean | undefined; 'file.created'?: string | number | undefined; 'file.ctime'?: string | number | undefined; 'file.device'?: string | undefined; 'file.directory'?: string | undefined; 'file.drive_letter'?: string | undefined; 'file.elf.architecture'?: string | undefined; 'file.elf.byte_order'?: string | undefined; 'file.elf.cpu_type'?: string | undefined; 'file.elf.creation_date'?: string | number | undefined; 'file.elf.exports'?: unknown[] | undefined; 'file.elf.header.abi_version'?: string | undefined; 'file.elf.header.class'?: string | undefined; 'file.elf.header.data'?: string | undefined; 'file.elf.header.entrypoint'?: string | number | undefined; 'file.elf.header.object_version'?: string | undefined; 'file.elf.header.os_abi'?: string | undefined; 'file.elf.header.type'?: string | undefined; 'file.elf.header.version'?: string | undefined; 'file.elf.imports'?: unknown[] | undefined; 'file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'file.elf.shared_libraries'?: string[] | undefined; 'file.elf.telfhash'?: string | undefined; 'file.extension'?: string | undefined; 'file.fork_name'?: string | undefined; 'file.gid'?: string | undefined; 'file.group'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.inode'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.mode'?: string | undefined; 'file.mtime'?: string | number | undefined; 'file.name'?: string | undefined; 'file.owner'?: string | undefined; 'file.path'?: string | undefined; 'file.pe.architecture'?: string | undefined; 'file.pe.company'?: string | undefined; 'file.pe.description'?: string | undefined; 'file.pe.file_version'?: string | undefined; 'file.pe.imphash'?: string | undefined; 'file.pe.original_file_name'?: string | undefined; 'file.pe.pehash'?: string | undefined; 'file.pe.product'?: string | undefined; 'file.size'?: string | number | undefined; 'file.target_path'?: string | undefined; 'file.type'?: string | undefined; 'file.uid'?: string | undefined; 'file.x509.alternative_names'?: string[] | undefined; 'file.x509.issuer.common_name'?: string[] | undefined; 'file.x509.issuer.country'?: string[] | undefined; 'file.x509.issuer.distinguished_name'?: string | undefined; 'file.x509.issuer.locality'?: string[] | undefined; 'file.x509.issuer.organization'?: string[] | undefined; 'file.x509.issuer.organizational_unit'?: string[] | undefined; 'file.x509.issuer.state_or_province'?: string[] | undefined; 'file.x509.not_after'?: string | number | undefined; 'file.x509.not_before'?: string | number | undefined; 'file.x509.public_key_algorithm'?: string | undefined; 'file.x509.public_key_curve'?: string | undefined; 'file.x509.public_key_exponent'?: string | number | undefined; 'file.x509.public_key_size'?: string | number | undefined; 'file.x509.serial_number'?: string | undefined; 'file.x509.signature_algorithm'?: string | undefined; 'file.x509.subject.common_name'?: string[] | undefined; 'file.x509.subject.country'?: string[] | undefined; 'file.x509.subject.distinguished_name'?: string | undefined; 'file.x509.subject.locality'?: string[] | undefined; 'file.x509.subject.organization'?: string[] | undefined; 'file.x509.subject.organizational_unit'?: string[] | undefined; 'file.x509.subject.state_or_province'?: string[] | undefined; 'file.x509.version_number'?: string | undefined; 'group.domain'?: string | undefined; 'group.id'?: string | undefined; 'group.name'?: string | undefined; 'host.architecture'?: string | undefined; 'host.boot.id'?: string | undefined; 'host.cpu.usage'?: string | number | undefined; 'host.disk.read.bytes'?: string | number | undefined; 'host.disk.write.bytes'?: string | number | undefined; 'host.domain'?: string | undefined; 'host.geo.city_name'?: string | undefined; 'host.geo.continent_code'?: string | undefined; 'host.geo.continent_name'?: string | undefined; 'host.geo.country_iso_code'?: string | undefined; 'host.geo.country_name'?: string | undefined; 'host.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'host.geo.name'?: string | undefined; 'host.geo.postal_code'?: string | undefined; 'host.geo.region_iso_code'?: string | undefined; 'host.geo.region_name'?: string | undefined; 'host.geo.timezone'?: string | undefined; 'host.hostname'?: string | undefined; 'host.id'?: string | undefined; 'host.ip'?: string[] | undefined; 'host.mac'?: string[] | undefined; 'host.name'?: string | undefined; 'host.network.egress.bytes'?: string | number | undefined; 'host.network.egress.packets'?: string | number | undefined; 'host.network.ingress.bytes'?: string | number | undefined; 'host.network.ingress.packets'?: string | number | undefined; 'host.os.family'?: string | undefined; 'host.os.full'?: string | undefined; 'host.os.kernel'?: string | undefined; 'host.os.name'?: string | undefined; 'host.os.platform'?: string | undefined; 'host.os.type'?: string | undefined; 'host.os.version'?: string | undefined; 'host.pid_ns_ino'?: string | undefined; 'host.risk.calculated_level'?: string | undefined; 'host.risk.calculated_score'?: number | undefined; 'host.risk.calculated_score_norm'?: number | undefined; 'host.risk.static_level'?: string | undefined; 'host.risk.static_score'?: number | undefined; 'host.risk.static_score_norm'?: number | undefined; 'host.type'?: string | undefined; 'host.uptime'?: string | number | undefined; 'http.request.body.bytes'?: string | number | undefined; 'http.request.body.content'?: string | undefined; 'http.request.bytes'?: string | number | undefined; 'http.request.id'?: string | undefined; 'http.request.method'?: string | undefined; 'http.request.mime_type'?: string | undefined; 'http.request.referrer'?: string | undefined; 'http.response.body.bytes'?: string | number | undefined; 'http.response.body.content'?: string | undefined; 'http.response.bytes'?: string | number | undefined; 'http.response.mime_type'?: string | undefined; 'http.response.status_code'?: string | number | undefined; 'http.version'?: string | undefined; labels?: unknown; 'log.file.path'?: string | undefined; 'log.level'?: string | undefined; 'log.logger'?: string | undefined; 'log.origin.file.line'?: string | number | undefined; 'log.origin.file.name'?: string | undefined; 'log.origin.function'?: string | undefined; 'log.syslog'?: unknown; message?: string | undefined; 'network.application'?: string | undefined; 'network.bytes'?: string | number | undefined; 'network.community_id'?: string | undefined; 'network.direction'?: string | undefined; 'network.forwarded_ip'?: string | undefined; 'network.iana_number'?: string | undefined; 'network.inner'?: unknown; 'network.name'?: string | undefined; 'network.packets'?: string | number | undefined; 'network.protocol'?: string | undefined; 'network.transport'?: string | undefined; 'network.type'?: string | undefined; 'network.vlan.id'?: string | undefined; 'network.vlan.name'?: string | undefined; 'observer.egress'?: unknown; 'observer.geo.city_name'?: string | undefined; 'observer.geo.continent_code'?: string | undefined; 'observer.geo.continent_name'?: string | undefined; 'observer.geo.country_iso_code'?: string | undefined; 'observer.geo.country_name'?: string | undefined; 'observer.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'observer.geo.name'?: string | undefined; 'observer.geo.postal_code'?: string | undefined; 'observer.geo.region_iso_code'?: string | undefined; 'observer.geo.region_name'?: string | undefined; 'observer.geo.timezone'?: string | undefined; 'observer.hostname'?: string | undefined; 'observer.ingress'?: unknown; 'observer.ip'?: string[] | undefined; 'observer.mac'?: string[] | undefined; 'observer.name'?: string | undefined; 'observer.os.family'?: string | undefined; 'observer.os.full'?: string | undefined; 'observer.os.kernel'?: string | undefined; 'observer.os.name'?: string | undefined; 'observer.os.platform'?: string | undefined; 'observer.os.type'?: string | undefined; 'observer.os.version'?: string | undefined; 'observer.product'?: string | undefined; 'observer.serial_number'?: string | undefined; 'observer.type'?: string | undefined; 'observer.vendor'?: string | undefined; 'observer.version'?: string | undefined; 'orchestrator.api_version'?: string | undefined; 'orchestrator.cluster.id'?: string | undefined; 'orchestrator.cluster.name'?: string | undefined; 'orchestrator.cluster.url'?: string | undefined; 'orchestrator.cluster.version'?: string | undefined; 'orchestrator.namespace'?: string | undefined; 'orchestrator.organization'?: string | undefined; 'orchestrator.resource.id'?: string | undefined; 'orchestrator.resource.ip'?: string[] | undefined; 'orchestrator.resource.name'?: string | undefined; 'orchestrator.resource.parent.type'?: string | undefined; 'orchestrator.resource.type'?: string | undefined; 'orchestrator.type'?: string | undefined; 'organization.id'?: string | undefined; 'organization.name'?: string | undefined; 'package.architecture'?: string | undefined; 'package.build_version'?: string | undefined; 'package.checksum'?: string | undefined; 'package.description'?: string | undefined; 'package.install_scope'?: string | undefined; 'package.installed'?: string | number | undefined; 'package.license'?: string | undefined; 'package.name'?: string | undefined; 'package.path'?: string | undefined; 'package.reference'?: string | undefined; 'package.size'?: string | number | undefined; 'package.type'?: string | undefined; 'package.version'?: string | undefined; 'process.args'?: string[] | undefined; 'process.args_count'?: string | number | undefined; 'process.code_signature.digest_algorithm'?: string | undefined; 'process.code_signature.exists'?: boolean | undefined; 'process.code_signature.signing_id'?: string | undefined; 'process.code_signature.status'?: string | undefined; 'process.code_signature.subject_name'?: string | undefined; 'process.code_signature.team_id'?: string | undefined; 'process.code_signature.timestamp'?: string | number | undefined; 'process.code_signature.trusted'?: boolean | undefined; 'process.code_signature.valid'?: boolean | undefined; 'process.command_line'?: string | undefined; 'process.elf.architecture'?: string | undefined; 'process.elf.byte_order'?: string | undefined; 'process.elf.cpu_type'?: string | undefined; 'process.elf.creation_date'?: string | number | undefined; 'process.elf.exports'?: unknown[] | undefined; 'process.elf.header.abi_version'?: string | undefined; 'process.elf.header.class'?: string | undefined; 'process.elf.header.data'?: string | undefined; 'process.elf.header.entrypoint'?: string | number | undefined; 'process.elf.header.object_version'?: string | undefined; 'process.elf.header.os_abi'?: string | undefined; 'process.elf.header.type'?: string | undefined; 'process.elf.header.version'?: string | undefined; 'process.elf.imports'?: unknown[] | undefined; 'process.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.elf.shared_libraries'?: string[] | undefined; 'process.elf.telfhash'?: string | undefined; 'process.end'?: string | number | undefined; 'process.entity_id'?: string | undefined; 'process.entry_leader.args'?: string[] | undefined; 'process.entry_leader.args_count'?: string | number | undefined; 'process.entry_leader.attested_groups.name'?: string | undefined; 'process.entry_leader.attested_user.id'?: string | undefined; 'process.entry_leader.attested_user.name'?: string | undefined; 'process.entry_leader.command_line'?: string | undefined; 'process.entry_leader.entity_id'?: string | undefined; 'process.entry_leader.entry_meta.source.ip'?: string | undefined; 'process.entry_leader.entry_meta.type'?: string | undefined; 'process.entry_leader.executable'?: string | undefined; 'process.entry_leader.group.id'?: string | undefined; 'process.entry_leader.group.name'?: string | undefined; 'process.entry_leader.interactive'?: boolean | undefined; 'process.entry_leader.name'?: string | undefined; 'process.entry_leader.parent.entity_id'?: string | undefined; 'process.entry_leader.parent.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.entity_id'?: string | undefined; 'process.entry_leader.parent.session_leader.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.start'?: string | number | undefined; 'process.entry_leader.parent.start'?: string | number | undefined; 'process.entry_leader.pid'?: string | number | undefined; 'process.entry_leader.real_group.id'?: string | undefined; 'process.entry_leader.real_group.name'?: string | undefined; 'process.entry_leader.real_user.id'?: string | undefined; 'process.entry_leader.real_user.name'?: string | undefined; 'process.entry_leader.same_as_process'?: boolean | undefined; 'process.entry_leader.saved_group.id'?: string | undefined; 'process.entry_leader.saved_group.name'?: string | undefined; 'process.entry_leader.saved_user.id'?: string | undefined; 'process.entry_leader.saved_user.name'?: string | undefined; 'process.entry_leader.start'?: string | number | undefined; 'process.entry_leader.supplemental_groups.id'?: string | undefined; 'process.entry_leader.supplemental_groups.name'?: string | undefined; 'process.entry_leader.tty'?: unknown; 'process.entry_leader.user.id'?: string | undefined; 'process.entry_leader.user.name'?: string | undefined; 'process.entry_leader.working_directory'?: string | undefined; 'process.env_vars'?: string[] | undefined; 'process.executable'?: string | undefined; 'process.exit_code'?: string | number | undefined; 'process.group_leader.args'?: string[] | undefined; 'process.group_leader.args_count'?: string | number | undefined; 'process.group_leader.command_line'?: string | undefined; 'process.group_leader.entity_id'?: string | undefined; 'process.group_leader.executable'?: string | undefined; 'process.group_leader.group.id'?: string | undefined; 'process.group_leader.group.name'?: string | undefined; 'process.group_leader.interactive'?: boolean | undefined; 'process.group_leader.name'?: string | undefined; 'process.group_leader.pid'?: string | number | undefined; 'process.group_leader.real_group.id'?: string | undefined; 'process.group_leader.real_group.name'?: string | undefined; 'process.group_leader.real_user.id'?: string | undefined; 'process.group_leader.real_user.name'?: string | undefined; 'process.group_leader.same_as_process'?: boolean | undefined; 'process.group_leader.saved_group.id'?: string | undefined; 'process.group_leader.saved_group.name'?: string | undefined; 'process.group_leader.saved_user.id'?: string | undefined; 'process.group_leader.saved_user.name'?: string | undefined; 'process.group_leader.start'?: string | number | undefined; 'process.group_leader.supplemental_groups.id'?: string | undefined; 'process.group_leader.supplemental_groups.name'?: string | undefined; 'process.group_leader.tty'?: unknown; 'process.group_leader.user.id'?: string | undefined; 'process.group_leader.user.name'?: string | undefined; 'process.group_leader.working_directory'?: string | undefined; 'process.hash.md5'?: string | undefined; 'process.hash.sha1'?: string | undefined; 'process.hash.sha256'?: string | undefined; 'process.hash.sha384'?: string | undefined; 'process.hash.sha512'?: string | undefined; 'process.hash.ssdeep'?: string | undefined; 'process.hash.tlsh'?: string | undefined; 'process.interactive'?: boolean | undefined; 'process.io'?: unknown; 'process.name'?: string | undefined; 'process.parent.args'?: string[] | undefined; 'process.parent.args_count'?: string | number | undefined; 'process.parent.code_signature.digest_algorithm'?: string | undefined; 'process.parent.code_signature.exists'?: boolean | undefined; 'process.parent.code_signature.signing_id'?: string | undefined; 'process.parent.code_signature.status'?: string | undefined; 'process.parent.code_signature.subject_name'?: string | undefined; 'process.parent.code_signature.team_id'?: string | undefined; 'process.parent.code_signature.timestamp'?: string | number | undefined; 'process.parent.code_signature.trusted'?: boolean | undefined; 'process.parent.code_signature.valid'?: boolean | undefined; 'process.parent.command_line'?: string | undefined; 'process.parent.elf.architecture'?: string | undefined; 'process.parent.elf.byte_order'?: string | undefined; 'process.parent.elf.cpu_type'?: string | undefined; 'process.parent.elf.creation_date'?: string | number | undefined; 'process.parent.elf.exports'?: unknown[] | undefined; 'process.parent.elf.header.abi_version'?: string | undefined; 'process.parent.elf.header.class'?: string | undefined; 'process.parent.elf.header.data'?: string | undefined; 'process.parent.elf.header.entrypoint'?: string | number | undefined; 'process.parent.elf.header.object_version'?: string | undefined; 'process.parent.elf.header.os_abi'?: string | undefined; 'process.parent.elf.header.type'?: string | undefined; 'process.parent.elf.header.version'?: string | undefined; 'process.parent.elf.imports'?: unknown[] | undefined; 'process.parent.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.parent.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.parent.elf.shared_libraries'?: string[] | undefined; 'process.parent.elf.telfhash'?: string | undefined; 'process.parent.end'?: string | number | undefined; 'process.parent.entity_id'?: string | undefined; 'process.parent.executable'?: string | undefined; 'process.parent.exit_code'?: string | number | undefined; 'process.parent.group.id'?: string | undefined; 'process.parent.group.name'?: string | undefined; 'process.parent.group_leader.entity_id'?: string | undefined; 'process.parent.group_leader.pid'?: string | number | undefined; 'process.parent.group_leader.start'?: string | number | undefined; 'process.parent.hash.md5'?: string | undefined; 'process.parent.hash.sha1'?: string | undefined; 'process.parent.hash.sha256'?: string | undefined; 'process.parent.hash.sha384'?: string | undefined; 'process.parent.hash.sha512'?: string | undefined; 'process.parent.hash.ssdeep'?: string | undefined; 'process.parent.hash.tlsh'?: string | undefined; 'process.parent.interactive'?: boolean | undefined; 'process.parent.name'?: string | undefined; 'process.parent.pe.architecture'?: string | undefined; 'process.parent.pe.company'?: string | undefined; 'process.parent.pe.description'?: string | undefined; 'process.parent.pe.file_version'?: string | undefined; 'process.parent.pe.imphash'?: string | undefined; 'process.parent.pe.original_file_name'?: string | undefined; 'process.parent.pe.pehash'?: string | undefined; 'process.parent.pe.product'?: string | undefined; 'process.parent.pgid'?: string | number | undefined; 'process.parent.pid'?: string | number | undefined; 'process.parent.real_group.id'?: string | undefined; 'process.parent.real_group.name'?: string | undefined; 'process.parent.real_user.id'?: string | undefined; 'process.parent.real_user.name'?: string | undefined; 'process.parent.saved_group.id'?: string | undefined; 'process.parent.saved_group.name'?: string | undefined; 'process.parent.saved_user.id'?: string | undefined; 'process.parent.saved_user.name'?: string | undefined; 'process.parent.start'?: string | number | undefined; 'process.parent.supplemental_groups.id'?: string | undefined; 'process.parent.supplemental_groups.name'?: string | undefined; 'process.parent.thread.id'?: string | number | undefined; 'process.parent.thread.name'?: string | undefined; 'process.parent.title'?: string | undefined; 'process.parent.tty'?: unknown; 'process.parent.uptime'?: string | number | undefined; 'process.parent.user.id'?: string | undefined; 'process.parent.user.name'?: string | undefined; 'process.parent.working_directory'?: string | undefined; 'process.pe.architecture'?: string | undefined; 'process.pe.company'?: string | undefined; 'process.pe.description'?: string | undefined; 'process.pe.file_version'?: string | undefined; 'process.pe.imphash'?: string | undefined; 'process.pe.original_file_name'?: string | undefined; 'process.pe.pehash'?: string | undefined; 'process.pe.product'?: string | undefined; 'process.pgid'?: string | number | undefined; 'process.pid'?: string | number | undefined; 'process.previous.args'?: string[] | undefined; 'process.previous.args_count'?: string | number | undefined; 'process.previous.executable'?: string | undefined; 'process.real_group.id'?: string | undefined; 'process.real_group.name'?: string | undefined; 'process.real_user.id'?: string | undefined; 'process.real_user.name'?: string | undefined; 'process.saved_group.id'?: string | undefined; 'process.saved_group.name'?: string | undefined; 'process.saved_user.id'?: string | undefined; 'process.saved_user.name'?: string | undefined; 'process.session_leader.args'?: string[] | undefined; 'process.session_leader.args_count'?: string | number | undefined; 'process.session_leader.command_line'?: string | undefined; 'process.session_leader.entity_id'?: string | undefined; 'process.session_leader.executable'?: string | undefined; 'process.session_leader.group.id'?: string | undefined; 'process.session_leader.group.name'?: string | undefined; 'process.session_leader.interactive'?: boolean | undefined; 'process.session_leader.name'?: string | undefined; 'process.session_leader.parent.entity_id'?: string | undefined; 'process.session_leader.parent.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.entity_id'?: string | undefined; 'process.session_leader.parent.session_leader.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.start'?: string | number | undefined; 'process.session_leader.parent.start'?: string | number | undefined; 'process.session_leader.pid'?: string | number | undefined; 'process.session_leader.real_group.id'?: string | undefined; 'process.session_leader.real_group.name'?: string | undefined; 'process.session_leader.real_user.id'?: string | undefined; 'process.session_leader.real_user.name'?: string | undefined; 'process.session_leader.same_as_process'?: boolean | undefined; 'process.session_leader.saved_group.id'?: string | undefined; 'process.session_leader.saved_group.name'?: string | undefined; 'process.session_leader.saved_user.id'?: string | undefined; 'process.session_leader.saved_user.name'?: string | undefined; 'process.session_leader.start'?: string | number | undefined; 'process.session_leader.supplemental_groups.id'?: string | undefined; 'process.session_leader.supplemental_groups.name'?: string | undefined; 'process.session_leader.tty'?: unknown; 'process.session_leader.user.id'?: string | undefined; 'process.session_leader.user.name'?: string | undefined; 'process.session_leader.working_directory'?: string | undefined; 'process.start'?: string | number | undefined; 'process.supplemental_groups.id'?: string | undefined; 'process.supplemental_groups.name'?: string | undefined; 'process.thread.id'?: string | number | undefined; 'process.thread.name'?: string | undefined; 'process.title'?: string | undefined; 'process.tty'?: unknown; 'process.uptime'?: string | number | undefined; 'process.user.id'?: string | undefined; 'process.user.name'?: string | undefined; 'process.working_directory'?: string | undefined; 'registry.data.bytes'?: string | undefined; 'registry.data.strings'?: string[] | undefined; 'registry.data.type'?: string | undefined; 'registry.hive'?: string | undefined; 'registry.key'?: string | undefined; 'registry.path'?: string | undefined; 'registry.value'?: string | undefined; 'related.hash'?: string[] | undefined; 'related.hosts'?: string[] | undefined; 'related.ip'?: string[] | undefined; 'related.user'?: string[] | undefined; 'rule.author'?: string[] | undefined; 'rule.category'?: string | undefined; 'rule.description'?: string | undefined; 'rule.id'?: string | undefined; 'rule.license'?: string | undefined; 'rule.name'?: string | undefined; 'rule.reference'?: string | undefined; 'rule.ruleset'?: string | undefined; 'rule.uuid'?: string | undefined; 'rule.version'?: string | undefined; 'server.address'?: string | undefined; 'server.as.number'?: string | number | undefined; 'server.as.organization.name'?: string | undefined; 'server.bytes'?: string | number | undefined; 'server.domain'?: string | undefined; 'server.geo.city_name'?: string | undefined; 'server.geo.continent_code'?: string | undefined; 'server.geo.continent_name'?: string | undefined; 'server.geo.country_iso_code'?: string | undefined; 'server.geo.country_name'?: string | undefined; 'server.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'server.geo.name'?: string | undefined; 'server.geo.postal_code'?: string | undefined; 'server.geo.region_iso_code'?: string | undefined; 'server.geo.region_name'?: string | undefined; 'server.geo.timezone'?: string | undefined; 'server.ip'?: string | undefined; 'server.mac'?: string | undefined; 'server.nat.ip'?: string | undefined; 'server.nat.port'?: string | number | undefined; 'server.packets'?: string | number | undefined; 'server.port'?: string | number | undefined; 'server.registered_domain'?: string | undefined; 'server.subdomain'?: string | undefined; 'server.top_level_domain'?: string | undefined; 'server.user.domain'?: string | undefined; 'server.user.email'?: string | undefined; 'server.user.full_name'?: string | undefined; 'server.user.group.domain'?: string | undefined; 'server.user.group.id'?: string | undefined; 'server.user.group.name'?: string | undefined; 'server.user.hash'?: string | undefined; 'server.user.id'?: string | undefined; 'server.user.name'?: string | undefined; 'server.user.roles'?: string[] | undefined; 'service.address'?: string | undefined; 'service.environment'?: string | undefined; 'service.ephemeral_id'?: string | undefined; 'service.id'?: string | undefined; 'service.name'?: string | undefined; 'service.node.name'?: string | undefined; 'service.node.role'?: string | undefined; 'service.node.roles'?: string[] | undefined; 'service.origin.address'?: string | undefined; 'service.origin.environment'?: string | undefined; 'service.origin.ephemeral_id'?: string | undefined; 'service.origin.id'?: string | undefined; 'service.origin.name'?: string | undefined; 'service.origin.node.name'?: string | undefined; 'service.origin.node.role'?: string | undefined; 'service.origin.node.roles'?: string[] | undefined; 'service.origin.state'?: string | undefined; 'service.origin.type'?: string | undefined; 'service.origin.version'?: string | undefined; 'service.state'?: string | undefined; 'service.target.address'?: string | undefined; 'service.target.environment'?: string | undefined; 'service.target.ephemeral_id'?: string | undefined; 'service.target.id'?: string | undefined; 'service.target.name'?: string | undefined; 'service.target.node.name'?: string | undefined; 'service.target.node.role'?: string | undefined; 'service.target.node.roles'?: string[] | undefined; 'service.target.state'?: string | undefined; 'service.target.type'?: string | undefined; 'service.target.version'?: string | undefined; 'service.type'?: string | undefined; 'service.version'?: string | undefined; 'source.address'?: string | undefined; 'source.as.number'?: string | number | undefined; 'source.as.organization.name'?: string | undefined; 'source.bytes'?: string | number | undefined; 'source.domain'?: string | undefined; 'source.geo.city_name'?: string | undefined; 'source.geo.continent_code'?: string | undefined; 'source.geo.continent_name'?: string | undefined; 'source.geo.country_iso_code'?: string | undefined; 'source.geo.country_name'?: string | undefined; 'source.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'source.geo.name'?: string | undefined; 'source.geo.postal_code'?: string | undefined; 'source.geo.region_iso_code'?: string | undefined; 'source.geo.region_name'?: string | undefined; 'source.geo.timezone'?: string | undefined; 'source.ip'?: string | undefined; 'source.mac'?: string | undefined; 'source.nat.ip'?: string | undefined; 'source.nat.port'?: string | number | undefined; 'source.packets'?: string | number | undefined; 'source.port'?: string | number | undefined; 'source.registered_domain'?: string | undefined; 'source.subdomain'?: string | undefined; 'source.top_level_domain'?: string | undefined; 'source.user.domain'?: string | undefined; 'source.user.email'?: string | undefined; 'source.user.full_name'?: string | undefined; 'source.user.group.domain'?: string | undefined; 'source.user.group.id'?: string | undefined; 'source.user.group.name'?: string | undefined; 'source.user.hash'?: string | undefined; 'source.user.id'?: string | undefined; 'source.user.name'?: string | undefined; 'source.user.roles'?: string[] | undefined; 'span.id'?: string | undefined; tags?: string[] | undefined; 'threat.enrichments'?: { indicator?: unknown; 'matched.atomic'?: string | undefined; 'matched.field'?: string | undefined; 'matched.id'?: string | undefined; 'matched.index'?: string | undefined; 'matched.occurred'?: string | number | undefined; 'matched.type'?: string | undefined; }[] | undefined; 'threat.feed.dashboard_id'?: string | undefined; 'threat.feed.description'?: string | undefined; 'threat.feed.name'?: string | undefined; 'threat.feed.reference'?: string | undefined; 'threat.framework'?: string | undefined; 'threat.group.alias'?: string[] | undefined; 'threat.group.id'?: string | undefined; 'threat.group.name'?: string | undefined; 'threat.group.reference'?: string | undefined; 'threat.indicator.as.number'?: string | number | undefined; 'threat.indicator.as.organization.name'?: string | undefined; 'threat.indicator.confidence'?: string | undefined; 'threat.indicator.description'?: string | undefined; 'threat.indicator.email.address'?: string | undefined; 'threat.indicator.file.accessed'?: string | number | undefined; 'threat.indicator.file.attributes'?: string[] | undefined; 'threat.indicator.file.code_signature.digest_algorithm'?: string | undefined; 'threat.indicator.file.code_signature.exists'?: boolean | undefined; 'threat.indicator.file.code_signature.signing_id'?: string | undefined; 'threat.indicator.file.code_signature.status'?: string | undefined; 'threat.indicator.file.code_signature.subject_name'?: string | undefined; 'threat.indicator.file.code_signature.team_id'?: string | undefined; 'threat.indicator.file.code_signature.timestamp'?: string | number | undefined; 'threat.indicator.file.code_signature.trusted'?: boolean | undefined; 'threat.indicator.file.code_signature.valid'?: boolean | undefined; 'threat.indicator.file.created'?: string | number | undefined; 'threat.indicator.file.ctime'?: string | number | undefined; 'threat.indicator.file.device'?: string | undefined; 'threat.indicator.file.directory'?: string | undefined; 'threat.indicator.file.drive_letter'?: string | undefined; 'threat.indicator.file.elf.architecture'?: string | undefined; 'threat.indicator.file.elf.byte_order'?: string | undefined; 'threat.indicator.file.elf.cpu_type'?: string | undefined; 'threat.indicator.file.elf.creation_date'?: string | number | undefined; 'threat.indicator.file.elf.exports'?: unknown[] | undefined; 'threat.indicator.file.elf.header.abi_version'?: string | undefined; 'threat.indicator.file.elf.header.class'?: string | undefined; 'threat.indicator.file.elf.header.data'?: string | undefined; 'threat.indicator.file.elf.header.entrypoint'?: string | number | undefined; 'threat.indicator.file.elf.header.object_version'?: string | undefined; 'threat.indicator.file.elf.header.os_abi'?: string | undefined; 'threat.indicator.file.elf.header.type'?: string | undefined; 'threat.indicator.file.elf.header.version'?: string | undefined; 'threat.indicator.file.elf.imports'?: unknown[] | undefined; 'threat.indicator.file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'threat.indicator.file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'threat.indicator.file.elf.shared_libraries'?: string[] | undefined; 'threat.indicator.file.elf.telfhash'?: string | undefined; 'threat.indicator.file.extension'?: string | undefined; 'threat.indicator.file.fork_name'?: string | undefined; 'threat.indicator.file.gid'?: string | undefined; 'threat.indicator.file.group'?: string | undefined; 'threat.indicator.file.hash.md5'?: string | undefined; 'threat.indicator.file.hash.sha1'?: string | undefined; 'threat.indicator.file.hash.sha256'?: string | undefined; 'threat.indicator.file.hash.sha384'?: string | undefined; 'threat.indicator.file.hash.sha512'?: string | undefined; 'threat.indicator.file.hash.ssdeep'?: string | undefined; 'threat.indicator.file.hash.tlsh'?: string | undefined; 'threat.indicator.file.inode'?: string | undefined; 'threat.indicator.file.mime_type'?: string | undefined; 'threat.indicator.file.mode'?: string | undefined; 'threat.indicator.file.mtime'?: string | number | undefined; 'threat.indicator.file.name'?: string | undefined; 'threat.indicator.file.owner'?: string | undefined; 'threat.indicator.file.path'?: string | undefined; 'threat.indicator.file.pe.architecture'?: string | undefined; 'threat.indicator.file.pe.company'?: string | undefined; 'threat.indicator.file.pe.description'?: string | undefined; 'threat.indicator.file.pe.file_version'?: string | undefined; 'threat.indicator.file.pe.imphash'?: string | undefined; 'threat.indicator.file.pe.original_file_name'?: string | undefined; 'threat.indicator.file.pe.pehash'?: string | undefined; 'threat.indicator.file.pe.product'?: string | undefined; 'threat.indicator.file.size'?: string | number | undefined; 'threat.indicator.file.target_path'?: string | undefined; 'threat.indicator.file.type'?: string | undefined; 'threat.indicator.file.uid'?: string | undefined; 'threat.indicator.file.x509.alternative_names'?: string[] | undefined; 'threat.indicator.file.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.file.x509.issuer.country'?: string[] | undefined; 'threat.indicator.file.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.not_after'?: string | number | undefined; 'threat.indicator.file.x509.not_before'?: string | number | undefined; 'threat.indicator.file.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.file.x509.public_key_curve'?: string | undefined; 'threat.indicator.file.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.file.x509.public_key_size'?: string | number | undefined; 'threat.indicator.file.x509.serial_number'?: string | undefined; 'threat.indicator.file.x509.signature_algorithm'?: string | undefined; 'threat.indicator.file.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.file.x509.subject.country'?: string[] | undefined; 'threat.indicator.file.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.subject.locality'?: string[] | undefined; 'threat.indicator.file.x509.subject.organization'?: string[] | undefined; 'threat.indicator.file.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.version_number'?: string | undefined; 'threat.indicator.first_seen'?: string | number | undefined; 'threat.indicator.geo.city_name'?: string | undefined; 'threat.indicator.geo.continent_code'?: string | undefined; 'threat.indicator.geo.continent_name'?: string | undefined; 'threat.indicator.geo.country_iso_code'?: string | undefined; 'threat.indicator.geo.country_name'?: string | undefined; 'threat.indicator.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'threat.indicator.geo.name'?: string | undefined; 'threat.indicator.geo.postal_code'?: string | undefined; 'threat.indicator.geo.region_iso_code'?: string | undefined; 'threat.indicator.geo.region_name'?: string | undefined; 'threat.indicator.geo.timezone'?: string | undefined; 'threat.indicator.ip'?: string | undefined; 'threat.indicator.last_seen'?: string | number | undefined; 'threat.indicator.marking.tlp'?: string | undefined; 'threat.indicator.marking.tlp_version'?: string | undefined; 'threat.indicator.modified_at'?: string | number | undefined; 'threat.indicator.port'?: string | number | undefined; 'threat.indicator.provider'?: string | undefined; 'threat.indicator.reference'?: string | undefined; 'threat.indicator.registry.data.bytes'?: string | undefined; 'threat.indicator.registry.data.strings'?: string[] | undefined; 'threat.indicator.registry.data.type'?: string | undefined; 'threat.indicator.registry.hive'?: string | undefined; 'threat.indicator.registry.key'?: string | undefined; 'threat.indicator.registry.path'?: string | undefined; 'threat.indicator.registry.value'?: string | undefined; 'threat.indicator.scanner_stats'?: string | number | undefined; 'threat.indicator.sightings'?: string | number | undefined; 'threat.indicator.type'?: string | undefined; 'threat.indicator.url.domain'?: string | undefined; 'threat.indicator.url.extension'?: string | undefined; 'threat.indicator.url.fragment'?: string | undefined; 'threat.indicator.url.full'?: string | undefined; 'threat.indicator.url.original'?: string | undefined; 'threat.indicator.url.password'?: string | undefined; 'threat.indicator.url.path'?: string | undefined; 'threat.indicator.url.port'?: string | number | undefined; 'threat.indicator.url.query'?: string | undefined; 'threat.indicator.url.registered_domain'?: string | undefined; 'threat.indicator.url.scheme'?: string | undefined; 'threat.indicator.url.subdomain'?: string | undefined; 'threat.indicator.url.top_level_domain'?: string | undefined; 'threat.indicator.url.username'?: string | undefined; 'threat.indicator.x509.alternative_names'?: string[] | undefined; 'threat.indicator.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.x509.issuer.country'?: string[] | undefined; 'threat.indicator.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.x509.not_after'?: string | number | undefined; 'threat.indicator.x509.not_before'?: string | number | undefined; 'threat.indicator.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.x509.public_key_curve'?: string | undefined; 'threat.indicator.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.x509.public_key_size'?: string | number | undefined; 'threat.indicator.x509.serial_number'?: string | undefined; 'threat.indicator.x509.signature_algorithm'?: string | undefined; 'threat.indicator.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.x509.subject.country'?: string[] | undefined; 'threat.indicator.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.x509.subject.locality'?: string[] | undefined; 'threat.indicator.x509.subject.organization'?: string[] | undefined; 'threat.indicator.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.x509.version_number'?: string | undefined; 'threat.software.alias'?: string[] | undefined; 'threat.software.id'?: string | undefined; 'threat.software.name'?: string | undefined; 'threat.software.platforms'?: string[] | undefined; 'threat.software.reference'?: string | undefined; 'threat.software.type'?: string | undefined; 'threat.tactic.id'?: string[] | undefined; 'threat.tactic.name'?: string[] | undefined; 'threat.tactic.reference'?: string[] | undefined; 'threat.technique.id'?: string[] | undefined; 'threat.technique.name'?: string[] | undefined; 'threat.technique.reference'?: string[] | undefined; 'threat.technique.subtechnique.id'?: string[] | undefined; 'threat.technique.subtechnique.name'?: string[] | undefined; 'threat.technique.subtechnique.reference'?: string[] | undefined; 'tls.cipher'?: string | undefined; 'tls.client.certificate'?: string | undefined; 'tls.client.certificate_chain'?: string[] | undefined; 'tls.client.hash.md5'?: string | undefined; 'tls.client.hash.sha1'?: string | undefined; 'tls.client.hash.sha256'?: string | undefined; 'tls.client.issuer'?: string | undefined; 'tls.client.ja3'?: string | undefined; 'tls.client.not_after'?: string | number | undefined; 'tls.client.not_before'?: string | number | undefined; 'tls.client.server_name'?: string | undefined; 'tls.client.subject'?: string | undefined; 'tls.client.supported_ciphers'?: string[] | undefined; 'tls.client.x509.alternative_names'?: string[] | undefined; 'tls.client.x509.issuer.common_name'?: string[] | undefined; 'tls.client.x509.issuer.country'?: string[] | undefined; 'tls.client.x509.issuer.distinguished_name'?: string | undefined; 'tls.client.x509.issuer.locality'?: string[] | undefined; 'tls.client.x509.issuer.organization'?: string[] | undefined; 'tls.client.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.client.x509.issuer.state_or_province'?: string[] | undefined; 'tls.client.x509.not_after'?: string | number | undefined; 'tls.client.x509.not_before'?: string | number | undefined; 'tls.client.x509.public_key_algorithm'?: string | undefined; 'tls.client.x509.public_key_curve'?: string | undefined; 'tls.client.x509.public_key_exponent'?: string | number | undefined; 'tls.client.x509.public_key_size'?: string | number | undefined; 'tls.client.x509.serial_number'?: string | undefined; 'tls.client.x509.signature_algorithm'?: string | undefined; 'tls.client.x509.subject.common_name'?: string[] | undefined; 'tls.client.x509.subject.country'?: string[] | undefined; 'tls.client.x509.subject.distinguished_name'?: string | undefined; 'tls.client.x509.subject.locality'?: string[] | undefined; 'tls.client.x509.subject.organization'?: string[] | undefined; 'tls.client.x509.subject.organizational_unit'?: string[] | undefined; 'tls.client.x509.subject.state_or_province'?: string[] | undefined; 'tls.client.x509.version_number'?: string | undefined; 'tls.curve'?: string | undefined; 'tls.established'?: boolean | undefined; 'tls.next_protocol'?: string | undefined; 'tls.resumed'?: boolean | undefined; 'tls.server.certificate'?: string | undefined; 'tls.server.certificate_chain'?: string[] | undefined; 'tls.server.hash.md5'?: string | undefined; 'tls.server.hash.sha1'?: string | undefined; 'tls.server.hash.sha256'?: string | undefined; 'tls.server.issuer'?: string | undefined; 'tls.server.ja3s'?: string | undefined; 'tls.server.not_after'?: string | number | undefined; 'tls.server.not_before'?: string | number | undefined; 'tls.server.subject'?: string | undefined; 'tls.server.x509.alternative_names'?: string[] | undefined; 'tls.server.x509.issuer.common_name'?: string[] | undefined; 'tls.server.x509.issuer.country'?: string[] | undefined; 'tls.server.x509.issuer.distinguished_name'?: string | undefined; 'tls.server.x509.issuer.locality'?: string[] | undefined; 'tls.server.x509.issuer.organization'?: string[] | undefined; 'tls.server.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.server.x509.issuer.state_or_province'?: string[] | undefined; 'tls.server.x509.not_after'?: string | number | undefined; 'tls.server.x509.not_before'?: string | number | undefined; 'tls.server.x509.public_key_algorithm'?: string | undefined; 'tls.server.x509.public_key_curve'?: string | undefined; 'tls.server.x509.public_key_exponent'?: string | number | undefined; 'tls.server.x509.public_key_size'?: string | number | undefined; 'tls.server.x509.serial_number'?: string | undefined; 'tls.server.x509.signature_algorithm'?: string | undefined; 'tls.server.x509.subject.common_name'?: string[] | undefined; 'tls.server.x509.subject.country'?: string[] | undefined; 'tls.server.x509.subject.distinguished_name'?: string | undefined; 'tls.server.x509.subject.locality'?: string[] | undefined; 'tls.server.x509.subject.organization'?: string[] | undefined; 'tls.server.x509.subject.organizational_unit'?: string[] | undefined; 'tls.server.x509.subject.state_or_province'?: string[] | undefined; 'tls.server.x509.version_number'?: string | undefined; 'tls.version'?: string | undefined; 'tls.version_protocol'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.id'?: string | undefined; 'url.domain'?: string | undefined; 'url.extension'?: string | undefined; 'url.fragment'?: string | undefined; 'url.full'?: string | undefined; 'url.original'?: string | undefined; 'url.password'?: string | undefined; 'url.path'?: string | undefined; 'url.port'?: string | number | undefined; 'url.query'?: string | undefined; 'url.registered_domain'?: string | undefined; 'url.scheme'?: string | undefined; 'url.subdomain'?: string | undefined; 'url.top_level_domain'?: string | undefined; 'url.username'?: string | undefined; 'user.changes.domain'?: string | undefined; 'user.changes.email'?: string | undefined; 'user.changes.full_name'?: string | undefined; 'user.changes.group.domain'?: string | undefined; 'user.changes.group.id'?: string | undefined; 'user.changes.group.name'?: string | undefined; 'user.changes.hash'?: string | undefined; 'user.changes.id'?: string | undefined; 'user.changes.name'?: string | undefined; 'user.changes.roles'?: string[] | undefined; 'user.domain'?: string | undefined; 'user.effective.domain'?: string | undefined; 'user.effective.email'?: string | undefined; 'user.effective.full_name'?: string | undefined; 'user.effective.group.domain'?: string | undefined; 'user.effective.group.id'?: string | undefined; 'user.effective.group.name'?: string | undefined; 'user.effective.hash'?: string | undefined; 'user.effective.id'?: string | undefined; 'user.effective.name'?: string | undefined; 'user.effective.roles'?: string[] | undefined; 'user.email'?: string | undefined; 'user.full_name'?: string | undefined; 'user.group.domain'?: string | undefined; 'user.group.id'?: string | undefined; 'user.group.name'?: string | undefined; 'user.hash'?: string | undefined; 'user.id'?: string | undefined; 'user.name'?: string | undefined; 'user.risk.calculated_level'?: string | undefined; 'user.risk.calculated_score'?: number | undefined; 'user.risk.calculated_score_norm'?: number | undefined; 'user.risk.static_level'?: string | undefined; 'user.risk.static_score'?: number | undefined; 'user.risk.static_score_norm'?: number | undefined; 'user.roles'?: string[] | undefined; 'user.target.domain'?: string | undefined; 'user.target.email'?: string | undefined; 'user.target.full_name'?: string | undefined; 'user.target.group.domain'?: string | undefined; 'user.target.group.id'?: string | undefined; 'user.target.group.name'?: string | undefined; 'user.target.hash'?: string | undefined; 'user.target.id'?: string | undefined; 'user.target.name'?: string | undefined; 'user.target.roles'?: string[] | undefined; 'user_agent.device.name'?: string | undefined; 'user_agent.name'?: string | undefined; 'user_agent.original'?: string | undefined; 'user_agent.os.family'?: string | undefined; 'user_agent.os.full'?: string | undefined; 'user_agent.os.kernel'?: string | undefined; 'user_agent.os.name'?: string | undefined; 'user_agent.os.platform'?: string | undefined; 'user_agent.os.type'?: string | undefined; 'user_agent.os.version'?: string | undefined; 'user_agent.version'?: string | undefined; 'vulnerability.category'?: string[] | undefined; 'vulnerability.classification'?: string | undefined; 'vulnerability.description'?: string | undefined; 'vulnerability.enumeration'?: string | undefined; 'vulnerability.id'?: string | undefined; 'vulnerability.reference'?: string | undefined; 'vulnerability.report_id'?: string | undefined; 'vulnerability.scanner.vendor'?: string | undefined; 'vulnerability.score.base'?: number | undefined; 'vulnerability.score.environmental'?: number | undefined; 'vulnerability.score.temporal'?: number | undefined; 'vulnerability.score.version'?: string | undefined; 'vulnerability.severity'?: string | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }) | ({ 'kibana.alert.job_id': string; } & { 'kibana.alert.anomaly_score'?: number[] | undefined; 'kibana.alert.anomaly_timestamp'?: string | number | undefined; 'kibana.alert.is_interim'?: boolean | undefined; 'kibana.alert.top_influencers'?: { influencer_field_name?: string | undefined; influencer_field_value?: string | undefined; influencer_score?: number | undefined; initial_influencer_score?: number | undefined; is_interim?: boolean | undefined; job_id?: string | undefined; timestamp?: string | number | undefined; }[] | undefined; 'kibana.alert.top_records'?: { actual?: number | undefined; by_field_name?: string | undefined; by_field_value?: string | undefined; detector_index?: number | undefined; field_name?: string | undefined; function?: string | undefined; initial_record_score?: number | undefined; is_interim?: boolean | undefined; job_id?: string | undefined; over_field_name?: string | undefined; over_field_value?: string | undefined; partition_field_name?: string | undefined; partition_field_value?: string | undefined; record_score?: number | undefined; timestamp?: string | number | undefined; typical?: number | undefined; }[] | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; })" ], "path": "packages/kbn-alerts-as-data-utils/src/schemas/index.ts", "deprecated": false, @@ -420,7 +420,7 @@ "label": "SecurityAlert", "description": [], "signature": [ - "{ '@timestamp': string | number; 'kibana.alert.ancestors': { depth: string | number; id: string; index: string; type: string; }[]; 'kibana.alert.depth': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.original_event.action': string; 'kibana.alert.original_event.category': string[]; 'kibana.alert.original_event.created': string | number; 'kibana.alert.original_event.dataset': string; 'kibana.alert.original_event.id': string; 'kibana.alert.original_event.ingested': string | number; 'kibana.alert.original_event.kind': string; 'kibana.alert.original_event.module': string; 'kibana.alert.original_event.original': string; 'kibana.alert.original_event.outcome': string; 'kibana.alert.original_event.provider': string; 'kibana.alert.original_event.sequence': string | number; 'kibana.alert.original_event.type': string[]; 'kibana.alert.original_time': string | number; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.false_positives': string[]; 'kibana.alert.rule.max_signals': (string | number)[]; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.threat.framework': string; 'kibana.alert.rule.threat.tactic.id': string; 'kibana.alert.rule.threat.tactic.name': string; 'kibana.alert.rule.threat.tactic.reference': string; 'kibana.alert.rule.threat.technique.id': string; 'kibana.alert.rule.threat.technique.name': string; 'kibana.alert.rule.threat.technique.reference': string; 'kibana.alert.rule.threat.technique.subtechnique.id': string; 'kibana.alert.rule.threat.technique.subtechnique.name': string; 'kibana.alert.rule.threat.technique.subtechnique.reference': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'ecs.version'?: string | undefined; 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.ancestors.rule'?: string | undefined; 'kibana.alert.building_block_type'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.group.id'?: string | undefined; 'kibana.alert.group.index'?: number | undefined; 'kibana.alert.host.criticality_level'?: string | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.new_terms'?: string[] | undefined; 'kibana.alert.original_event.agent_id_status'?: string | undefined; 'kibana.alert.original_event.code'?: string | undefined; 'kibana.alert.original_event.duration'?: string | undefined; 'kibana.alert.original_event.end'?: string | number | undefined; 'kibana.alert.original_event.hash'?: string | undefined; 'kibana.alert.original_event.reason'?: string | undefined; 'kibana.alert.original_event.reference'?: string | undefined; 'kibana.alert.original_event.risk_score'?: number | undefined; 'kibana.alert.original_event.risk_score_norm'?: number | undefined; 'kibana.alert.original_event.severity'?: string | number | undefined; 'kibana.alert.original_event.start'?: string | number | undefined; 'kibana.alert.original_event.timezone'?: string | undefined; 'kibana.alert.original_event.url'?: string | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.building_block_type'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.immutable'?: string[] | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.rule.timeline_id'?: string[] | undefined; 'kibana.alert.rule.timeline_title'?: string[] | undefined; 'kibana.alert.rule.timestamp_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.threshold_result.cardinality'?: unknown; 'kibana.alert.threshold_result.count'?: string | number | undefined; 'kibana.alert.threshold_result.from'?: string | number | undefined; 'kibana.alert.threshold_result.terms'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.user.criticality_level'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.alert.workflow_user'?: string | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & { '@timestamp': string | number; 'ecs.version': string; } & { 'agent.build.original'?: string | undefined; 'agent.ephemeral_id'?: string | undefined; 'agent.id'?: string | undefined; 'agent.name'?: string | undefined; 'agent.type'?: string | undefined; 'agent.version'?: string | undefined; 'client.address'?: string | undefined; 'client.as.number'?: string | number | undefined; 'client.as.organization.name'?: string | undefined; 'client.bytes'?: string | number | undefined; 'client.domain'?: string | undefined; 'client.geo.city_name'?: string | undefined; 'client.geo.continent_code'?: string | undefined; 'client.geo.continent_name'?: string | undefined; 'client.geo.country_iso_code'?: string | undefined; 'client.geo.country_name'?: string | undefined; 'client.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'client.geo.name'?: string | undefined; 'client.geo.postal_code'?: string | undefined; 'client.geo.region_iso_code'?: string | undefined; 'client.geo.region_name'?: string | undefined; 'client.geo.timezone'?: string | undefined; 'client.ip'?: string | undefined; 'client.mac'?: string | undefined; 'client.nat.ip'?: string | undefined; 'client.nat.port'?: string | number | undefined; 'client.packets'?: string | number | undefined; 'client.port'?: string | number | undefined; 'client.registered_domain'?: string | undefined; 'client.subdomain'?: string | undefined; 'client.top_level_domain'?: string | undefined; 'client.user.domain'?: string | undefined; 'client.user.email'?: string | undefined; 'client.user.full_name'?: string | undefined; 'client.user.group.domain'?: string | undefined; 'client.user.group.id'?: string | undefined; 'client.user.group.name'?: string | undefined; 'client.user.hash'?: string | undefined; 'client.user.id'?: string | undefined; 'client.user.name'?: string | undefined; 'client.user.roles'?: string[] | undefined; 'cloud.account.id'?: string | undefined; 'cloud.account.name'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.instance.id'?: string | undefined; 'cloud.instance.name'?: string | undefined; 'cloud.machine.type'?: string | undefined; 'cloud.origin.account.id'?: string | undefined; 'cloud.origin.account.name'?: string | undefined; 'cloud.origin.availability_zone'?: string | undefined; 'cloud.origin.instance.id'?: string | undefined; 'cloud.origin.instance.name'?: string | undefined; 'cloud.origin.machine.type'?: string | undefined; 'cloud.origin.project.id'?: string | undefined; 'cloud.origin.project.name'?: string | undefined; 'cloud.origin.provider'?: string | undefined; 'cloud.origin.region'?: string | undefined; 'cloud.origin.service.name'?: string | undefined; 'cloud.project.id'?: string | undefined; 'cloud.project.name'?: string | undefined; 'cloud.provider'?: string | undefined; 'cloud.region'?: string | undefined; 'cloud.service.name'?: string | undefined; 'cloud.target.account.id'?: string | undefined; 'cloud.target.account.name'?: string | undefined; 'cloud.target.availability_zone'?: string | undefined; 'cloud.target.instance.id'?: string | undefined; 'cloud.target.instance.name'?: string | undefined; 'cloud.target.machine.type'?: string | undefined; 'cloud.target.project.id'?: string | undefined; 'cloud.target.project.name'?: string | undefined; 'cloud.target.provider'?: string | undefined; 'cloud.target.region'?: string | undefined; 'cloud.target.service.name'?: string | undefined; 'container.cpu.usage'?: string | number | undefined; 'container.disk.read.bytes'?: string | number | undefined; 'container.disk.write.bytes'?: string | number | undefined; 'container.id'?: string | undefined; 'container.image.hash.all'?: string[] | undefined; 'container.image.name'?: string | undefined; 'container.image.tag'?: string[] | undefined; 'container.labels'?: unknown; 'container.memory.usage'?: string | number | undefined; 'container.name'?: string | undefined; 'container.network.egress.bytes'?: string | number | undefined; 'container.network.ingress.bytes'?: string | number | undefined; 'container.runtime'?: string | undefined; 'destination.address'?: string | undefined; 'destination.as.number'?: string | number | undefined; 'destination.as.organization.name'?: string | undefined; 'destination.bytes'?: string | number | undefined; 'destination.domain'?: string | undefined; 'destination.geo.city_name'?: string | undefined; 'destination.geo.continent_code'?: string | undefined; 'destination.geo.continent_name'?: string | undefined; 'destination.geo.country_iso_code'?: string | undefined; 'destination.geo.country_name'?: string | undefined; 'destination.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'destination.geo.name'?: string | undefined; 'destination.geo.postal_code'?: string | undefined; 'destination.geo.region_iso_code'?: string | undefined; 'destination.geo.region_name'?: string | undefined; 'destination.geo.timezone'?: string | undefined; 'destination.ip'?: string | undefined; 'destination.mac'?: string | undefined; 'destination.nat.ip'?: string | undefined; 'destination.nat.port'?: string | number | undefined; 'destination.packets'?: string | number | undefined; 'destination.port'?: string | number | undefined; 'destination.registered_domain'?: string | undefined; 'destination.subdomain'?: string | undefined; 'destination.top_level_domain'?: string | undefined; 'destination.user.domain'?: string | undefined; 'destination.user.email'?: string | undefined; 'destination.user.full_name'?: string | undefined; 'destination.user.group.domain'?: string | undefined; 'destination.user.group.id'?: string | undefined; 'destination.user.group.name'?: string | undefined; 'destination.user.hash'?: string | undefined; 'destination.user.id'?: string | undefined; 'destination.user.name'?: string | undefined; 'destination.user.roles'?: string[] | undefined; 'device.id'?: string | undefined; 'device.manufacturer'?: string | undefined; 'device.model.identifier'?: string | undefined; 'device.model.name'?: string | undefined; 'dll.code_signature.digest_algorithm'?: string | undefined; 'dll.code_signature.exists'?: boolean | undefined; 'dll.code_signature.signing_id'?: string | undefined; 'dll.code_signature.status'?: string | undefined; 'dll.code_signature.subject_name'?: string | undefined; 'dll.code_signature.team_id'?: string | undefined; 'dll.code_signature.timestamp'?: string | number | undefined; 'dll.code_signature.trusted'?: boolean | undefined; 'dll.code_signature.valid'?: boolean | undefined; 'dll.hash.md5'?: string | undefined; 'dll.hash.sha1'?: string | undefined; 'dll.hash.sha256'?: string | undefined; 'dll.hash.sha384'?: string | undefined; 'dll.hash.sha512'?: string | undefined; 'dll.hash.ssdeep'?: string | undefined; 'dll.hash.tlsh'?: string | undefined; 'dll.name'?: string | undefined; 'dll.path'?: string | undefined; 'dll.pe.architecture'?: string | undefined; 'dll.pe.company'?: string | undefined; 'dll.pe.description'?: string | undefined; 'dll.pe.file_version'?: string | undefined; 'dll.pe.imphash'?: string | undefined; 'dll.pe.original_file_name'?: string | undefined; 'dll.pe.pehash'?: string | undefined; 'dll.pe.product'?: string | undefined; 'dns.answers'?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; 'dns.header_flags'?: string[] | undefined; 'dns.id'?: string | undefined; 'dns.op_code'?: string | undefined; 'dns.question.class'?: string | undefined; 'dns.question.name'?: string | undefined; 'dns.question.registered_domain'?: string | undefined; 'dns.question.subdomain'?: string | undefined; 'dns.question.top_level_domain'?: string | undefined; 'dns.question.type'?: string | undefined; 'dns.resolved_ip'?: string[] | undefined; 'dns.response_code'?: string | undefined; 'dns.type'?: string | undefined; 'email.attachments'?: { 'file.extension'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.name'?: string | undefined; 'file.size'?: string | number | undefined; }[] | undefined; 'email.bcc.address'?: string[] | undefined; 'email.cc.address'?: string[] | undefined; 'email.content_type'?: string | undefined; 'email.delivery_timestamp'?: string | number | undefined; 'email.direction'?: string | undefined; 'email.from.address'?: string[] | undefined; 'email.local_id'?: string | undefined; 'email.message_id'?: string | undefined; 'email.origination_timestamp'?: string | number | undefined; 'email.reply_to.address'?: string[] | undefined; 'email.sender.address'?: string | undefined; 'email.subject'?: string | undefined; 'email.to.address'?: string[] | undefined; 'email.x_mailer'?: string | undefined; 'error.code'?: string | undefined; 'error.id'?: string | undefined; 'error.message'?: string | undefined; 'error.stack_trace'?: string | undefined; 'error.type'?: string | undefined; 'event.action'?: string | undefined; 'event.agent_id_status'?: string | undefined; 'event.category'?: string[] | undefined; 'event.code'?: string | undefined; 'event.created'?: string | number | undefined; 'event.dataset'?: string | undefined; 'event.duration'?: string | number | undefined; 'event.end'?: string | number | undefined; 'event.hash'?: string | undefined; 'event.id'?: string | undefined; 'event.ingested'?: string | number | undefined; 'event.kind'?: string | undefined; 'event.module'?: string | undefined; 'event.original'?: string | undefined; 'event.outcome'?: string | undefined; 'event.provider'?: string | undefined; 'event.reason'?: string | undefined; 'event.reference'?: string | undefined; 'event.risk_score'?: number | undefined; 'event.risk_score_norm'?: number | undefined; 'event.sequence'?: string | number | undefined; 'event.severity'?: string | number | undefined; 'event.start'?: string | number | undefined; 'event.timezone'?: string | undefined; 'event.type'?: string[] | undefined; 'event.url'?: string | undefined; 'faas.coldstart'?: boolean | undefined; 'faas.execution'?: string | undefined; 'faas.id'?: string | undefined; 'faas.name'?: string | undefined; 'faas.version'?: string | undefined; 'file.accessed'?: string | number | undefined; 'file.attributes'?: string[] | undefined; 'file.code_signature.digest_algorithm'?: string | undefined; 'file.code_signature.exists'?: boolean | undefined; 'file.code_signature.signing_id'?: string | undefined; 'file.code_signature.status'?: string | undefined; 'file.code_signature.subject_name'?: string | undefined; 'file.code_signature.team_id'?: string | undefined; 'file.code_signature.timestamp'?: string | number | undefined; 'file.code_signature.trusted'?: boolean | undefined; 'file.code_signature.valid'?: boolean | undefined; 'file.created'?: string | number | undefined; 'file.ctime'?: string | number | undefined; 'file.device'?: string | undefined; 'file.directory'?: string | undefined; 'file.drive_letter'?: string | undefined; 'file.elf.architecture'?: string | undefined; 'file.elf.byte_order'?: string | undefined; 'file.elf.cpu_type'?: string | undefined; 'file.elf.creation_date'?: string | number | undefined; 'file.elf.exports'?: unknown[] | undefined; 'file.elf.header.abi_version'?: string | undefined; 'file.elf.header.class'?: string | undefined; 'file.elf.header.data'?: string | undefined; 'file.elf.header.entrypoint'?: string | number | undefined; 'file.elf.header.object_version'?: string | undefined; 'file.elf.header.os_abi'?: string | undefined; 'file.elf.header.type'?: string | undefined; 'file.elf.header.version'?: string | undefined; 'file.elf.imports'?: unknown[] | undefined; 'file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'file.elf.shared_libraries'?: string[] | undefined; 'file.elf.telfhash'?: string | undefined; 'file.extension'?: string | undefined; 'file.fork_name'?: string | undefined; 'file.gid'?: string | undefined; 'file.group'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.inode'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.mode'?: string | undefined; 'file.mtime'?: string | number | undefined; 'file.name'?: string | undefined; 'file.owner'?: string | undefined; 'file.path'?: string | undefined; 'file.pe.architecture'?: string | undefined; 'file.pe.company'?: string | undefined; 'file.pe.description'?: string | undefined; 'file.pe.file_version'?: string | undefined; 'file.pe.imphash'?: string | undefined; 'file.pe.original_file_name'?: string | undefined; 'file.pe.pehash'?: string | undefined; 'file.pe.product'?: string | undefined; 'file.size'?: string | number | undefined; 'file.target_path'?: string | undefined; 'file.type'?: string | undefined; 'file.uid'?: string | undefined; 'file.x509.alternative_names'?: string[] | undefined; 'file.x509.issuer.common_name'?: string[] | undefined; 'file.x509.issuer.country'?: string[] | undefined; 'file.x509.issuer.distinguished_name'?: string | undefined; 'file.x509.issuer.locality'?: string[] | undefined; 'file.x509.issuer.organization'?: string[] | undefined; 'file.x509.issuer.organizational_unit'?: string[] | undefined; 'file.x509.issuer.state_or_province'?: string[] | undefined; 'file.x509.not_after'?: string | number | undefined; 'file.x509.not_before'?: string | number | undefined; 'file.x509.public_key_algorithm'?: string | undefined; 'file.x509.public_key_curve'?: string | undefined; 'file.x509.public_key_exponent'?: string | number | undefined; 'file.x509.public_key_size'?: string | number | undefined; 'file.x509.serial_number'?: string | undefined; 'file.x509.signature_algorithm'?: string | undefined; 'file.x509.subject.common_name'?: string[] | undefined; 'file.x509.subject.country'?: string[] | undefined; 'file.x509.subject.distinguished_name'?: string | undefined; 'file.x509.subject.locality'?: string[] | undefined; 'file.x509.subject.organization'?: string[] | undefined; 'file.x509.subject.organizational_unit'?: string[] | undefined; 'file.x509.subject.state_or_province'?: string[] | undefined; 'file.x509.version_number'?: string | undefined; 'group.domain'?: string | undefined; 'group.id'?: string | undefined; 'group.name'?: string | undefined; 'host.architecture'?: string | undefined; 'host.boot.id'?: string | undefined; 'host.cpu.usage'?: string | number | undefined; 'host.disk.read.bytes'?: string | number | undefined; 'host.disk.write.bytes'?: string | number | undefined; 'host.domain'?: string | undefined; 'host.geo.city_name'?: string | undefined; 'host.geo.continent_code'?: string | undefined; 'host.geo.continent_name'?: string | undefined; 'host.geo.country_iso_code'?: string | undefined; 'host.geo.country_name'?: string | undefined; 'host.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'host.geo.name'?: string | undefined; 'host.geo.postal_code'?: string | undefined; 'host.geo.region_iso_code'?: string | undefined; 'host.geo.region_name'?: string | undefined; 'host.geo.timezone'?: string | undefined; 'host.hostname'?: string | undefined; 'host.id'?: string | undefined; 'host.ip'?: string[] | undefined; 'host.mac'?: string[] | undefined; 'host.name'?: string | undefined; 'host.network.egress.bytes'?: string | number | undefined; 'host.network.egress.packets'?: string | number | undefined; 'host.network.ingress.bytes'?: string | number | undefined; 'host.network.ingress.packets'?: string | number | undefined; 'host.os.family'?: string | undefined; 'host.os.full'?: string | undefined; 'host.os.kernel'?: string | undefined; 'host.os.name'?: string | undefined; 'host.os.platform'?: string | undefined; 'host.os.type'?: string | undefined; 'host.os.version'?: string | undefined; 'host.pid_ns_ino'?: string | undefined; 'host.risk.calculated_level'?: string | undefined; 'host.risk.calculated_score'?: number | undefined; 'host.risk.calculated_score_norm'?: number | undefined; 'host.risk.static_level'?: string | undefined; 'host.risk.static_score'?: number | undefined; 'host.risk.static_score_norm'?: number | undefined; 'host.type'?: string | undefined; 'host.uptime'?: string | number | undefined; 'http.request.body.bytes'?: string | number | undefined; 'http.request.body.content'?: string | undefined; 'http.request.bytes'?: string | number | undefined; 'http.request.id'?: string | undefined; 'http.request.method'?: string | undefined; 'http.request.mime_type'?: string | undefined; 'http.request.referrer'?: string | undefined; 'http.response.body.bytes'?: string | number | undefined; 'http.response.body.content'?: string | undefined; 'http.response.bytes'?: string | number | undefined; 'http.response.mime_type'?: string | undefined; 'http.response.status_code'?: string | number | undefined; 'http.version'?: string | undefined; labels?: unknown; 'log.file.path'?: string | undefined; 'log.level'?: string | undefined; 'log.logger'?: string | undefined; 'log.origin.file.line'?: string | number | undefined; 'log.origin.file.name'?: string | undefined; 'log.origin.function'?: string | undefined; 'log.syslog'?: unknown; message?: string | undefined; 'network.application'?: string | undefined; 'network.bytes'?: string | number | undefined; 'network.community_id'?: string | undefined; 'network.direction'?: string | undefined; 'network.forwarded_ip'?: string | undefined; 'network.iana_number'?: string | undefined; 'network.inner'?: unknown; 'network.name'?: string | undefined; 'network.packets'?: string | number | undefined; 'network.protocol'?: string | undefined; 'network.transport'?: string | undefined; 'network.type'?: string | undefined; 'network.vlan.id'?: string | undefined; 'network.vlan.name'?: string | undefined; 'observer.egress'?: unknown; 'observer.geo.city_name'?: string | undefined; 'observer.geo.continent_code'?: string | undefined; 'observer.geo.continent_name'?: string | undefined; 'observer.geo.country_iso_code'?: string | undefined; 'observer.geo.country_name'?: string | undefined; 'observer.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'observer.geo.name'?: string | undefined; 'observer.geo.postal_code'?: string | undefined; 'observer.geo.region_iso_code'?: string | undefined; 'observer.geo.region_name'?: string | undefined; 'observer.geo.timezone'?: string | undefined; 'observer.hostname'?: string | undefined; 'observer.ingress'?: unknown; 'observer.ip'?: string[] | undefined; 'observer.mac'?: string[] | undefined; 'observer.name'?: string | undefined; 'observer.os.family'?: string | undefined; 'observer.os.full'?: string | undefined; 'observer.os.kernel'?: string | undefined; 'observer.os.name'?: string | undefined; 'observer.os.platform'?: string | undefined; 'observer.os.type'?: string | undefined; 'observer.os.version'?: string | undefined; 'observer.product'?: string | undefined; 'observer.serial_number'?: string | undefined; 'observer.type'?: string | undefined; 'observer.vendor'?: string | undefined; 'observer.version'?: string | undefined; 'orchestrator.api_version'?: string | undefined; 'orchestrator.cluster.id'?: string | undefined; 'orchestrator.cluster.name'?: string | undefined; 'orchestrator.cluster.url'?: string | undefined; 'orchestrator.cluster.version'?: string | undefined; 'orchestrator.namespace'?: string | undefined; 'orchestrator.organization'?: string | undefined; 'orchestrator.resource.id'?: string | undefined; 'orchestrator.resource.ip'?: string[] | undefined; 'orchestrator.resource.name'?: string | undefined; 'orchestrator.resource.parent.type'?: string | undefined; 'orchestrator.resource.type'?: string | undefined; 'orchestrator.type'?: string | undefined; 'organization.id'?: string | undefined; 'organization.name'?: string | undefined; 'package.architecture'?: string | undefined; 'package.build_version'?: string | undefined; 'package.checksum'?: string | undefined; 'package.description'?: string | undefined; 'package.install_scope'?: string | undefined; 'package.installed'?: string | number | undefined; 'package.license'?: string | undefined; 'package.name'?: string | undefined; 'package.path'?: string | undefined; 'package.reference'?: string | undefined; 'package.size'?: string | number | undefined; 'package.type'?: string | undefined; 'package.version'?: string | undefined; 'process.args'?: string[] | undefined; 'process.args_count'?: string | number | undefined; 'process.code_signature.digest_algorithm'?: string | undefined; 'process.code_signature.exists'?: boolean | undefined; 'process.code_signature.signing_id'?: string | undefined; 'process.code_signature.status'?: string | undefined; 'process.code_signature.subject_name'?: string | undefined; 'process.code_signature.team_id'?: string | undefined; 'process.code_signature.timestamp'?: string | number | undefined; 'process.code_signature.trusted'?: boolean | undefined; 'process.code_signature.valid'?: boolean | undefined; 'process.command_line'?: string | undefined; 'process.elf.architecture'?: string | undefined; 'process.elf.byte_order'?: string | undefined; 'process.elf.cpu_type'?: string | undefined; 'process.elf.creation_date'?: string | number | undefined; 'process.elf.exports'?: unknown[] | undefined; 'process.elf.header.abi_version'?: string | undefined; 'process.elf.header.class'?: string | undefined; 'process.elf.header.data'?: string | undefined; 'process.elf.header.entrypoint'?: string | number | undefined; 'process.elf.header.object_version'?: string | undefined; 'process.elf.header.os_abi'?: string | undefined; 'process.elf.header.type'?: string | undefined; 'process.elf.header.version'?: string | undefined; 'process.elf.imports'?: unknown[] | undefined; 'process.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.elf.shared_libraries'?: string[] | undefined; 'process.elf.telfhash'?: string | undefined; 'process.end'?: string | number | undefined; 'process.entity_id'?: string | undefined; 'process.entry_leader.args'?: string[] | undefined; 'process.entry_leader.args_count'?: string | number | undefined; 'process.entry_leader.attested_groups.name'?: string | undefined; 'process.entry_leader.attested_user.id'?: string | undefined; 'process.entry_leader.attested_user.name'?: string | undefined; 'process.entry_leader.command_line'?: string | undefined; 'process.entry_leader.entity_id'?: string | undefined; 'process.entry_leader.entry_meta.source.ip'?: string | undefined; 'process.entry_leader.entry_meta.type'?: string | undefined; 'process.entry_leader.executable'?: string | undefined; 'process.entry_leader.group.id'?: string | undefined; 'process.entry_leader.group.name'?: string | undefined; 'process.entry_leader.interactive'?: boolean | undefined; 'process.entry_leader.name'?: string | undefined; 'process.entry_leader.parent.entity_id'?: string | undefined; 'process.entry_leader.parent.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.entity_id'?: string | undefined; 'process.entry_leader.parent.session_leader.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.start'?: string | number | undefined; 'process.entry_leader.parent.start'?: string | number | undefined; 'process.entry_leader.pid'?: string | number | undefined; 'process.entry_leader.real_group.id'?: string | undefined; 'process.entry_leader.real_group.name'?: string | undefined; 'process.entry_leader.real_user.id'?: string | undefined; 'process.entry_leader.real_user.name'?: string | undefined; 'process.entry_leader.same_as_process'?: boolean | undefined; 'process.entry_leader.saved_group.id'?: string | undefined; 'process.entry_leader.saved_group.name'?: string | undefined; 'process.entry_leader.saved_user.id'?: string | undefined; 'process.entry_leader.saved_user.name'?: string | undefined; 'process.entry_leader.start'?: string | number | undefined; 'process.entry_leader.supplemental_groups.id'?: string | undefined; 'process.entry_leader.supplemental_groups.name'?: string | undefined; 'process.entry_leader.tty'?: unknown; 'process.entry_leader.user.id'?: string | undefined; 'process.entry_leader.user.name'?: string | undefined; 'process.entry_leader.working_directory'?: string | undefined; 'process.env_vars'?: string[] | undefined; 'process.executable'?: string | undefined; 'process.exit_code'?: string | number | undefined; 'process.group_leader.args'?: string[] | undefined; 'process.group_leader.args_count'?: string | number | undefined; 'process.group_leader.command_line'?: string | undefined; 'process.group_leader.entity_id'?: string | undefined; 'process.group_leader.executable'?: string | undefined; 'process.group_leader.group.id'?: string | undefined; 'process.group_leader.group.name'?: string | undefined; 'process.group_leader.interactive'?: boolean | undefined; 'process.group_leader.name'?: string | undefined; 'process.group_leader.pid'?: string | number | undefined; 'process.group_leader.real_group.id'?: string | undefined; 'process.group_leader.real_group.name'?: string | undefined; 'process.group_leader.real_user.id'?: string | undefined; 'process.group_leader.real_user.name'?: string | undefined; 'process.group_leader.same_as_process'?: boolean | undefined; 'process.group_leader.saved_group.id'?: string | undefined; 'process.group_leader.saved_group.name'?: string | undefined; 'process.group_leader.saved_user.id'?: string | undefined; 'process.group_leader.saved_user.name'?: string | undefined; 'process.group_leader.start'?: string | number | undefined; 'process.group_leader.supplemental_groups.id'?: string | undefined; 'process.group_leader.supplemental_groups.name'?: string | undefined; 'process.group_leader.tty'?: unknown; 'process.group_leader.user.id'?: string | undefined; 'process.group_leader.user.name'?: string | undefined; 'process.group_leader.working_directory'?: string | undefined; 'process.hash.md5'?: string | undefined; 'process.hash.sha1'?: string | undefined; 'process.hash.sha256'?: string | undefined; 'process.hash.sha384'?: string | undefined; 'process.hash.sha512'?: string | undefined; 'process.hash.ssdeep'?: string | undefined; 'process.hash.tlsh'?: string | undefined; 'process.interactive'?: boolean | undefined; 'process.io'?: unknown; 'process.name'?: string | undefined; 'process.parent.args'?: string[] | undefined; 'process.parent.args_count'?: string | number | undefined; 'process.parent.code_signature.digest_algorithm'?: string | undefined; 'process.parent.code_signature.exists'?: boolean | undefined; 'process.parent.code_signature.signing_id'?: string | undefined; 'process.parent.code_signature.status'?: string | undefined; 'process.parent.code_signature.subject_name'?: string | undefined; 'process.parent.code_signature.team_id'?: string | undefined; 'process.parent.code_signature.timestamp'?: string | number | undefined; 'process.parent.code_signature.trusted'?: boolean | undefined; 'process.parent.code_signature.valid'?: boolean | undefined; 'process.parent.command_line'?: string | undefined; 'process.parent.elf.architecture'?: string | undefined; 'process.parent.elf.byte_order'?: string | undefined; 'process.parent.elf.cpu_type'?: string | undefined; 'process.parent.elf.creation_date'?: string | number | undefined; 'process.parent.elf.exports'?: unknown[] | undefined; 'process.parent.elf.header.abi_version'?: string | undefined; 'process.parent.elf.header.class'?: string | undefined; 'process.parent.elf.header.data'?: string | undefined; 'process.parent.elf.header.entrypoint'?: string | number | undefined; 'process.parent.elf.header.object_version'?: string | undefined; 'process.parent.elf.header.os_abi'?: string | undefined; 'process.parent.elf.header.type'?: string | undefined; 'process.parent.elf.header.version'?: string | undefined; 'process.parent.elf.imports'?: unknown[] | undefined; 'process.parent.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.parent.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.parent.elf.shared_libraries'?: string[] | undefined; 'process.parent.elf.telfhash'?: string | undefined; 'process.parent.end'?: string | number | undefined; 'process.parent.entity_id'?: string | undefined; 'process.parent.executable'?: string | undefined; 'process.parent.exit_code'?: string | number | undefined; 'process.parent.group.id'?: string | undefined; 'process.parent.group.name'?: string | undefined; 'process.parent.group_leader.entity_id'?: string | undefined; 'process.parent.group_leader.pid'?: string | number | undefined; 'process.parent.group_leader.start'?: string | number | undefined; 'process.parent.hash.md5'?: string | undefined; 'process.parent.hash.sha1'?: string | undefined; 'process.parent.hash.sha256'?: string | undefined; 'process.parent.hash.sha384'?: string | undefined; 'process.parent.hash.sha512'?: string | undefined; 'process.parent.hash.ssdeep'?: string | undefined; 'process.parent.hash.tlsh'?: string | undefined; 'process.parent.interactive'?: boolean | undefined; 'process.parent.name'?: string | undefined; 'process.parent.pe.architecture'?: string | undefined; 'process.parent.pe.company'?: string | undefined; 'process.parent.pe.description'?: string | undefined; 'process.parent.pe.file_version'?: string | undefined; 'process.parent.pe.imphash'?: string | undefined; 'process.parent.pe.original_file_name'?: string | undefined; 'process.parent.pe.pehash'?: string | undefined; 'process.parent.pe.product'?: string | undefined; 'process.parent.pgid'?: string | number | undefined; 'process.parent.pid'?: string | number | undefined; 'process.parent.real_group.id'?: string | undefined; 'process.parent.real_group.name'?: string | undefined; 'process.parent.real_user.id'?: string | undefined; 'process.parent.real_user.name'?: string | undefined; 'process.parent.saved_group.id'?: string | undefined; 'process.parent.saved_group.name'?: string | undefined; 'process.parent.saved_user.id'?: string | undefined; 'process.parent.saved_user.name'?: string | undefined; 'process.parent.start'?: string | number | undefined; 'process.parent.supplemental_groups.id'?: string | undefined; 'process.parent.supplemental_groups.name'?: string | undefined; 'process.parent.thread.id'?: string | number | undefined; 'process.parent.thread.name'?: string | undefined; 'process.parent.title'?: string | undefined; 'process.parent.tty'?: unknown; 'process.parent.uptime'?: string | number | undefined; 'process.parent.user.id'?: string | undefined; 'process.parent.user.name'?: string | undefined; 'process.parent.working_directory'?: string | undefined; 'process.pe.architecture'?: string | undefined; 'process.pe.company'?: string | undefined; 'process.pe.description'?: string | undefined; 'process.pe.file_version'?: string | undefined; 'process.pe.imphash'?: string | undefined; 'process.pe.original_file_name'?: string | undefined; 'process.pe.pehash'?: string | undefined; 'process.pe.product'?: string | undefined; 'process.pgid'?: string | number | undefined; 'process.pid'?: string | number | undefined; 'process.previous.args'?: string[] | undefined; 'process.previous.args_count'?: string | number | undefined; 'process.previous.executable'?: string | undefined; 'process.real_group.id'?: string | undefined; 'process.real_group.name'?: string | undefined; 'process.real_user.id'?: string | undefined; 'process.real_user.name'?: string | undefined; 'process.saved_group.id'?: string | undefined; 'process.saved_group.name'?: string | undefined; 'process.saved_user.id'?: string | undefined; 'process.saved_user.name'?: string | undefined; 'process.session_leader.args'?: string[] | undefined; 'process.session_leader.args_count'?: string | number | undefined; 'process.session_leader.command_line'?: string | undefined; 'process.session_leader.entity_id'?: string | undefined; 'process.session_leader.executable'?: string | undefined; 'process.session_leader.group.id'?: string | undefined; 'process.session_leader.group.name'?: string | undefined; 'process.session_leader.interactive'?: boolean | undefined; 'process.session_leader.name'?: string | undefined; 'process.session_leader.parent.entity_id'?: string | undefined; 'process.session_leader.parent.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.entity_id'?: string | undefined; 'process.session_leader.parent.session_leader.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.start'?: string | number | undefined; 'process.session_leader.parent.start'?: string | number | undefined; 'process.session_leader.pid'?: string | number | undefined; 'process.session_leader.real_group.id'?: string | undefined; 'process.session_leader.real_group.name'?: string | undefined; 'process.session_leader.real_user.id'?: string | undefined; 'process.session_leader.real_user.name'?: string | undefined; 'process.session_leader.same_as_process'?: boolean | undefined; 'process.session_leader.saved_group.id'?: string | undefined; 'process.session_leader.saved_group.name'?: string | undefined; 'process.session_leader.saved_user.id'?: string | undefined; 'process.session_leader.saved_user.name'?: string | undefined; 'process.session_leader.start'?: string | number | undefined; 'process.session_leader.supplemental_groups.id'?: string | undefined; 'process.session_leader.supplemental_groups.name'?: string | undefined; 'process.session_leader.tty'?: unknown; 'process.session_leader.user.id'?: string | undefined; 'process.session_leader.user.name'?: string | undefined; 'process.session_leader.working_directory'?: string | undefined; 'process.start'?: string | number | undefined; 'process.supplemental_groups.id'?: string | undefined; 'process.supplemental_groups.name'?: string | undefined; 'process.thread.id'?: string | number | undefined; 'process.thread.name'?: string | undefined; 'process.title'?: string | undefined; 'process.tty'?: unknown; 'process.uptime'?: string | number | undefined; 'process.user.id'?: string | undefined; 'process.user.name'?: string | undefined; 'process.working_directory'?: string | undefined; 'registry.data.bytes'?: string | undefined; 'registry.data.strings'?: string[] | undefined; 'registry.data.type'?: string | undefined; 'registry.hive'?: string | undefined; 'registry.key'?: string | undefined; 'registry.path'?: string | undefined; 'registry.value'?: string | undefined; 'related.hash'?: string[] | undefined; 'related.hosts'?: string[] | undefined; 'related.ip'?: string[] | undefined; 'related.user'?: string[] | undefined; 'rule.author'?: string[] | undefined; 'rule.category'?: string | undefined; 'rule.description'?: string | undefined; 'rule.id'?: string | undefined; 'rule.license'?: string | undefined; 'rule.name'?: string | undefined; 'rule.reference'?: string | undefined; 'rule.ruleset'?: string | undefined; 'rule.uuid'?: string | undefined; 'rule.version'?: string | undefined; 'server.address'?: string | undefined; 'server.as.number'?: string | number | undefined; 'server.as.organization.name'?: string | undefined; 'server.bytes'?: string | number | undefined; 'server.domain'?: string | undefined; 'server.geo.city_name'?: string | undefined; 'server.geo.continent_code'?: string | undefined; 'server.geo.continent_name'?: string | undefined; 'server.geo.country_iso_code'?: string | undefined; 'server.geo.country_name'?: string | undefined; 'server.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'server.geo.name'?: string | undefined; 'server.geo.postal_code'?: string | undefined; 'server.geo.region_iso_code'?: string | undefined; 'server.geo.region_name'?: string | undefined; 'server.geo.timezone'?: string | undefined; 'server.ip'?: string | undefined; 'server.mac'?: string | undefined; 'server.nat.ip'?: string | undefined; 'server.nat.port'?: string | number | undefined; 'server.packets'?: string | number | undefined; 'server.port'?: string | number | undefined; 'server.registered_domain'?: string | undefined; 'server.subdomain'?: string | undefined; 'server.top_level_domain'?: string | undefined; 'server.user.domain'?: string | undefined; 'server.user.email'?: string | undefined; 'server.user.full_name'?: string | undefined; 'server.user.group.domain'?: string | undefined; 'server.user.group.id'?: string | undefined; 'server.user.group.name'?: string | undefined; 'server.user.hash'?: string | undefined; 'server.user.id'?: string | undefined; 'server.user.name'?: string | undefined; 'server.user.roles'?: string[] | undefined; 'service.address'?: string | undefined; 'service.environment'?: string | undefined; 'service.ephemeral_id'?: string | undefined; 'service.id'?: string | undefined; 'service.name'?: string | undefined; 'service.node.name'?: string | undefined; 'service.node.role'?: string | undefined; 'service.node.roles'?: string[] | undefined; 'service.origin.address'?: string | undefined; 'service.origin.environment'?: string | undefined; 'service.origin.ephemeral_id'?: string | undefined; 'service.origin.id'?: string | undefined; 'service.origin.name'?: string | undefined; 'service.origin.node.name'?: string | undefined; 'service.origin.node.role'?: string | undefined; 'service.origin.node.roles'?: string[] | undefined; 'service.origin.state'?: string | undefined; 'service.origin.type'?: string | undefined; 'service.origin.version'?: string | undefined; 'service.state'?: string | undefined; 'service.target.address'?: string | undefined; 'service.target.environment'?: string | undefined; 'service.target.ephemeral_id'?: string | undefined; 'service.target.id'?: string | undefined; 'service.target.name'?: string | undefined; 'service.target.node.name'?: string | undefined; 'service.target.node.role'?: string | undefined; 'service.target.node.roles'?: string[] | undefined; 'service.target.state'?: string | undefined; 'service.target.type'?: string | undefined; 'service.target.version'?: string | undefined; 'service.type'?: string | undefined; 'service.version'?: string | undefined; 'source.address'?: string | undefined; 'source.as.number'?: string | number | undefined; 'source.as.organization.name'?: string | undefined; 'source.bytes'?: string | number | undefined; 'source.domain'?: string | undefined; 'source.geo.city_name'?: string | undefined; 'source.geo.continent_code'?: string | undefined; 'source.geo.continent_name'?: string | undefined; 'source.geo.country_iso_code'?: string | undefined; 'source.geo.country_name'?: string | undefined; 'source.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'source.geo.name'?: string | undefined; 'source.geo.postal_code'?: string | undefined; 'source.geo.region_iso_code'?: string | undefined; 'source.geo.region_name'?: string | undefined; 'source.geo.timezone'?: string | undefined; 'source.ip'?: string | undefined; 'source.mac'?: string | undefined; 'source.nat.ip'?: string | undefined; 'source.nat.port'?: string | number | undefined; 'source.packets'?: string | number | undefined; 'source.port'?: string | number | undefined; 'source.registered_domain'?: string | undefined; 'source.subdomain'?: string | undefined; 'source.top_level_domain'?: string | undefined; 'source.user.domain'?: string | undefined; 'source.user.email'?: string | undefined; 'source.user.full_name'?: string | undefined; 'source.user.group.domain'?: string | undefined; 'source.user.group.id'?: string | undefined; 'source.user.group.name'?: string | undefined; 'source.user.hash'?: string | undefined; 'source.user.id'?: string | undefined; 'source.user.name'?: string | undefined; 'source.user.roles'?: string[] | undefined; 'span.id'?: string | undefined; tags?: string[] | undefined; 'threat.enrichments'?: { indicator?: unknown; 'matched.atomic'?: string | undefined; 'matched.field'?: string | undefined; 'matched.id'?: string | undefined; 'matched.index'?: string | undefined; 'matched.occurred'?: string | number | undefined; 'matched.type'?: string | undefined; }[] | undefined; 'threat.feed.dashboard_id'?: string | undefined; 'threat.feed.description'?: string | undefined; 'threat.feed.name'?: string | undefined; 'threat.feed.reference'?: string | undefined; 'threat.framework'?: string | undefined; 'threat.group.alias'?: string[] | undefined; 'threat.group.id'?: string | undefined; 'threat.group.name'?: string | undefined; 'threat.group.reference'?: string | undefined; 'threat.indicator.as.number'?: string | number | undefined; 'threat.indicator.as.organization.name'?: string | undefined; 'threat.indicator.confidence'?: string | undefined; 'threat.indicator.description'?: string | undefined; 'threat.indicator.email.address'?: string | undefined; 'threat.indicator.file.accessed'?: string | number | undefined; 'threat.indicator.file.attributes'?: string[] | undefined; 'threat.indicator.file.code_signature.digest_algorithm'?: string | undefined; 'threat.indicator.file.code_signature.exists'?: boolean | undefined; 'threat.indicator.file.code_signature.signing_id'?: string | undefined; 'threat.indicator.file.code_signature.status'?: string | undefined; 'threat.indicator.file.code_signature.subject_name'?: string | undefined; 'threat.indicator.file.code_signature.team_id'?: string | undefined; 'threat.indicator.file.code_signature.timestamp'?: string | number | undefined; 'threat.indicator.file.code_signature.trusted'?: boolean | undefined; 'threat.indicator.file.code_signature.valid'?: boolean | undefined; 'threat.indicator.file.created'?: string | number | undefined; 'threat.indicator.file.ctime'?: string | number | undefined; 'threat.indicator.file.device'?: string | undefined; 'threat.indicator.file.directory'?: string | undefined; 'threat.indicator.file.drive_letter'?: string | undefined; 'threat.indicator.file.elf.architecture'?: string | undefined; 'threat.indicator.file.elf.byte_order'?: string | undefined; 'threat.indicator.file.elf.cpu_type'?: string | undefined; 'threat.indicator.file.elf.creation_date'?: string | number | undefined; 'threat.indicator.file.elf.exports'?: unknown[] | undefined; 'threat.indicator.file.elf.header.abi_version'?: string | undefined; 'threat.indicator.file.elf.header.class'?: string | undefined; 'threat.indicator.file.elf.header.data'?: string | undefined; 'threat.indicator.file.elf.header.entrypoint'?: string | number | undefined; 'threat.indicator.file.elf.header.object_version'?: string | undefined; 'threat.indicator.file.elf.header.os_abi'?: string | undefined; 'threat.indicator.file.elf.header.type'?: string | undefined; 'threat.indicator.file.elf.header.version'?: string | undefined; 'threat.indicator.file.elf.imports'?: unknown[] | undefined; 'threat.indicator.file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'threat.indicator.file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'threat.indicator.file.elf.shared_libraries'?: string[] | undefined; 'threat.indicator.file.elf.telfhash'?: string | undefined; 'threat.indicator.file.extension'?: string | undefined; 'threat.indicator.file.fork_name'?: string | undefined; 'threat.indicator.file.gid'?: string | undefined; 'threat.indicator.file.group'?: string | undefined; 'threat.indicator.file.hash.md5'?: string | undefined; 'threat.indicator.file.hash.sha1'?: string | undefined; 'threat.indicator.file.hash.sha256'?: string | undefined; 'threat.indicator.file.hash.sha384'?: string | undefined; 'threat.indicator.file.hash.sha512'?: string | undefined; 'threat.indicator.file.hash.ssdeep'?: string | undefined; 'threat.indicator.file.hash.tlsh'?: string | undefined; 'threat.indicator.file.inode'?: string | undefined; 'threat.indicator.file.mime_type'?: string | undefined; 'threat.indicator.file.mode'?: string | undefined; 'threat.indicator.file.mtime'?: string | number | undefined; 'threat.indicator.file.name'?: string | undefined; 'threat.indicator.file.owner'?: string | undefined; 'threat.indicator.file.path'?: string | undefined; 'threat.indicator.file.pe.architecture'?: string | undefined; 'threat.indicator.file.pe.company'?: string | undefined; 'threat.indicator.file.pe.description'?: string | undefined; 'threat.indicator.file.pe.file_version'?: string | undefined; 'threat.indicator.file.pe.imphash'?: string | undefined; 'threat.indicator.file.pe.original_file_name'?: string | undefined; 'threat.indicator.file.pe.pehash'?: string | undefined; 'threat.indicator.file.pe.product'?: string | undefined; 'threat.indicator.file.size'?: string | number | undefined; 'threat.indicator.file.target_path'?: string | undefined; 'threat.indicator.file.type'?: string | undefined; 'threat.indicator.file.uid'?: string | undefined; 'threat.indicator.file.x509.alternative_names'?: string[] | undefined; 'threat.indicator.file.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.file.x509.issuer.country'?: string[] | undefined; 'threat.indicator.file.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.not_after'?: string | number | undefined; 'threat.indicator.file.x509.not_before'?: string | number | undefined; 'threat.indicator.file.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.file.x509.public_key_curve'?: string | undefined; 'threat.indicator.file.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.file.x509.public_key_size'?: string | number | undefined; 'threat.indicator.file.x509.serial_number'?: string | undefined; 'threat.indicator.file.x509.signature_algorithm'?: string | undefined; 'threat.indicator.file.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.file.x509.subject.country'?: string[] | undefined; 'threat.indicator.file.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.subject.locality'?: string[] | undefined; 'threat.indicator.file.x509.subject.organization'?: string[] | undefined; 'threat.indicator.file.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.version_number'?: string | undefined; 'threat.indicator.first_seen'?: string | number | undefined; 'threat.indicator.geo.city_name'?: string | undefined; 'threat.indicator.geo.continent_code'?: string | undefined; 'threat.indicator.geo.continent_name'?: string | undefined; 'threat.indicator.geo.country_iso_code'?: string | undefined; 'threat.indicator.geo.country_name'?: string | undefined; 'threat.indicator.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'threat.indicator.geo.name'?: string | undefined; 'threat.indicator.geo.postal_code'?: string | undefined; 'threat.indicator.geo.region_iso_code'?: string | undefined; 'threat.indicator.geo.region_name'?: string | undefined; 'threat.indicator.geo.timezone'?: string | undefined; 'threat.indicator.ip'?: string | undefined; 'threat.indicator.last_seen'?: string | number | undefined; 'threat.indicator.marking.tlp'?: string | undefined; 'threat.indicator.marking.tlp_version'?: string | undefined; 'threat.indicator.modified_at'?: string | number | undefined; 'threat.indicator.port'?: string | number | undefined; 'threat.indicator.provider'?: string | undefined; 'threat.indicator.reference'?: string | undefined; 'threat.indicator.registry.data.bytes'?: string | undefined; 'threat.indicator.registry.data.strings'?: string[] | undefined; 'threat.indicator.registry.data.type'?: string | undefined; 'threat.indicator.registry.hive'?: string | undefined; 'threat.indicator.registry.key'?: string | undefined; 'threat.indicator.registry.path'?: string | undefined; 'threat.indicator.registry.value'?: string | undefined; 'threat.indicator.scanner_stats'?: string | number | undefined; 'threat.indicator.sightings'?: string | number | undefined; 'threat.indicator.type'?: string | undefined; 'threat.indicator.url.domain'?: string | undefined; 'threat.indicator.url.extension'?: string | undefined; 'threat.indicator.url.fragment'?: string | undefined; 'threat.indicator.url.full'?: string | undefined; 'threat.indicator.url.original'?: string | undefined; 'threat.indicator.url.password'?: string | undefined; 'threat.indicator.url.path'?: string | undefined; 'threat.indicator.url.port'?: string | number | undefined; 'threat.indicator.url.query'?: string | undefined; 'threat.indicator.url.registered_domain'?: string | undefined; 'threat.indicator.url.scheme'?: string | undefined; 'threat.indicator.url.subdomain'?: string | undefined; 'threat.indicator.url.top_level_domain'?: string | undefined; 'threat.indicator.url.username'?: string | undefined; 'threat.indicator.x509.alternative_names'?: string[] | undefined; 'threat.indicator.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.x509.issuer.country'?: string[] | undefined; 'threat.indicator.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.x509.not_after'?: string | number | undefined; 'threat.indicator.x509.not_before'?: string | number | undefined; 'threat.indicator.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.x509.public_key_curve'?: string | undefined; 'threat.indicator.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.x509.public_key_size'?: string | number | undefined; 'threat.indicator.x509.serial_number'?: string | undefined; 'threat.indicator.x509.signature_algorithm'?: string | undefined; 'threat.indicator.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.x509.subject.country'?: string[] | undefined; 'threat.indicator.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.x509.subject.locality'?: string[] | undefined; 'threat.indicator.x509.subject.organization'?: string[] | undefined; 'threat.indicator.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.x509.version_number'?: string | undefined; 'threat.software.alias'?: string[] | undefined; 'threat.software.id'?: string | undefined; 'threat.software.name'?: string | undefined; 'threat.software.platforms'?: string[] | undefined; 'threat.software.reference'?: string | undefined; 'threat.software.type'?: string | undefined; 'threat.tactic.id'?: string[] | undefined; 'threat.tactic.name'?: string[] | undefined; 'threat.tactic.reference'?: string[] | undefined; 'threat.technique.id'?: string[] | undefined; 'threat.technique.name'?: string[] | undefined; 'threat.technique.reference'?: string[] | undefined; 'threat.technique.subtechnique.id'?: string[] | undefined; 'threat.technique.subtechnique.name'?: string[] | undefined; 'threat.technique.subtechnique.reference'?: string[] | undefined; 'tls.cipher'?: string | undefined; 'tls.client.certificate'?: string | undefined; 'tls.client.certificate_chain'?: string[] | undefined; 'tls.client.hash.md5'?: string | undefined; 'tls.client.hash.sha1'?: string | undefined; 'tls.client.hash.sha256'?: string | undefined; 'tls.client.issuer'?: string | undefined; 'tls.client.ja3'?: string | undefined; 'tls.client.not_after'?: string | number | undefined; 'tls.client.not_before'?: string | number | undefined; 'tls.client.server_name'?: string | undefined; 'tls.client.subject'?: string | undefined; 'tls.client.supported_ciphers'?: string[] | undefined; 'tls.client.x509.alternative_names'?: string[] | undefined; 'tls.client.x509.issuer.common_name'?: string[] | undefined; 'tls.client.x509.issuer.country'?: string[] | undefined; 'tls.client.x509.issuer.distinguished_name'?: string | undefined; 'tls.client.x509.issuer.locality'?: string[] | undefined; 'tls.client.x509.issuer.organization'?: string[] | undefined; 'tls.client.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.client.x509.issuer.state_or_province'?: string[] | undefined; 'tls.client.x509.not_after'?: string | number | undefined; 'tls.client.x509.not_before'?: string | number | undefined; 'tls.client.x509.public_key_algorithm'?: string | undefined; 'tls.client.x509.public_key_curve'?: string | undefined; 'tls.client.x509.public_key_exponent'?: string | number | undefined; 'tls.client.x509.public_key_size'?: string | number | undefined; 'tls.client.x509.serial_number'?: string | undefined; 'tls.client.x509.signature_algorithm'?: string | undefined; 'tls.client.x509.subject.common_name'?: string[] | undefined; 'tls.client.x509.subject.country'?: string[] | undefined; 'tls.client.x509.subject.distinguished_name'?: string | undefined; 'tls.client.x509.subject.locality'?: string[] | undefined; 'tls.client.x509.subject.organization'?: string[] | undefined; 'tls.client.x509.subject.organizational_unit'?: string[] | undefined; 'tls.client.x509.subject.state_or_province'?: string[] | undefined; 'tls.client.x509.version_number'?: string | undefined; 'tls.curve'?: string | undefined; 'tls.established'?: boolean | undefined; 'tls.next_protocol'?: string | undefined; 'tls.resumed'?: boolean | undefined; 'tls.server.certificate'?: string | undefined; 'tls.server.certificate_chain'?: string[] | undefined; 'tls.server.hash.md5'?: string | undefined; 'tls.server.hash.sha1'?: string | undefined; 'tls.server.hash.sha256'?: string | undefined; 'tls.server.issuer'?: string | undefined; 'tls.server.ja3s'?: string | undefined; 'tls.server.not_after'?: string | number | undefined; 'tls.server.not_before'?: string | number | undefined; 'tls.server.subject'?: string | undefined; 'tls.server.x509.alternative_names'?: string[] | undefined; 'tls.server.x509.issuer.common_name'?: string[] | undefined; 'tls.server.x509.issuer.country'?: string[] | undefined; 'tls.server.x509.issuer.distinguished_name'?: string | undefined; 'tls.server.x509.issuer.locality'?: string[] | undefined; 'tls.server.x509.issuer.organization'?: string[] | undefined; 'tls.server.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.server.x509.issuer.state_or_province'?: string[] | undefined; 'tls.server.x509.not_after'?: string | number | undefined; 'tls.server.x509.not_before'?: string | number | undefined; 'tls.server.x509.public_key_algorithm'?: string | undefined; 'tls.server.x509.public_key_curve'?: string | undefined; 'tls.server.x509.public_key_exponent'?: string | number | undefined; 'tls.server.x509.public_key_size'?: string | number | undefined; 'tls.server.x509.serial_number'?: string | undefined; 'tls.server.x509.signature_algorithm'?: string | undefined; 'tls.server.x509.subject.common_name'?: string[] | undefined; 'tls.server.x509.subject.country'?: string[] | undefined; 'tls.server.x509.subject.distinguished_name'?: string | undefined; 'tls.server.x509.subject.locality'?: string[] | undefined; 'tls.server.x509.subject.organization'?: string[] | undefined; 'tls.server.x509.subject.organizational_unit'?: string[] | undefined; 'tls.server.x509.subject.state_or_province'?: string[] | undefined; 'tls.server.x509.version_number'?: string | undefined; 'tls.version'?: string | undefined; 'tls.version_protocol'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.id'?: string | undefined; 'url.domain'?: string | undefined; 'url.extension'?: string | undefined; 'url.fragment'?: string | undefined; 'url.full'?: string | undefined; 'url.original'?: string | undefined; 'url.password'?: string | undefined; 'url.path'?: string | undefined; 'url.port'?: string | number | undefined; 'url.query'?: string | undefined; 'url.registered_domain'?: string | undefined; 'url.scheme'?: string | undefined; 'url.subdomain'?: string | undefined; 'url.top_level_domain'?: string | undefined; 'url.username'?: string | undefined; 'user.changes.domain'?: string | undefined; 'user.changes.email'?: string | undefined; 'user.changes.full_name'?: string | undefined; 'user.changes.group.domain'?: string | undefined; 'user.changes.group.id'?: string | undefined; 'user.changes.group.name'?: string | undefined; 'user.changes.hash'?: string | undefined; 'user.changes.id'?: string | undefined; 'user.changes.name'?: string | undefined; 'user.changes.roles'?: string[] | undefined; 'user.domain'?: string | undefined; 'user.effective.domain'?: string | undefined; 'user.effective.email'?: string | undefined; 'user.effective.full_name'?: string | undefined; 'user.effective.group.domain'?: string | undefined; 'user.effective.group.id'?: string | undefined; 'user.effective.group.name'?: string | undefined; 'user.effective.hash'?: string | undefined; 'user.effective.id'?: string | undefined; 'user.effective.name'?: string | undefined; 'user.effective.roles'?: string[] | undefined; 'user.email'?: string | undefined; 'user.full_name'?: string | undefined; 'user.group.domain'?: string | undefined; 'user.group.id'?: string | undefined; 'user.group.name'?: string | undefined; 'user.hash'?: string | undefined; 'user.id'?: string | undefined; 'user.name'?: string | undefined; 'user.risk.calculated_level'?: string | undefined; 'user.risk.calculated_score'?: number | undefined; 'user.risk.calculated_score_norm'?: number | undefined; 'user.risk.static_level'?: string | undefined; 'user.risk.static_score'?: number | undefined; 'user.risk.static_score_norm'?: number | undefined; 'user.roles'?: string[] | undefined; 'user.target.domain'?: string | undefined; 'user.target.email'?: string | undefined; 'user.target.full_name'?: string | undefined; 'user.target.group.domain'?: string | undefined; 'user.target.group.id'?: string | undefined; 'user.target.group.name'?: string | undefined; 'user.target.hash'?: string | undefined; 'user.target.id'?: string | undefined; 'user.target.name'?: string | undefined; 'user.target.roles'?: string[] | undefined; 'user_agent.device.name'?: string | undefined; 'user_agent.name'?: string | undefined; 'user_agent.original'?: string | undefined; 'user_agent.os.family'?: string | undefined; 'user_agent.os.full'?: string | undefined; 'user_agent.os.kernel'?: string | undefined; 'user_agent.os.name'?: string | undefined; 'user_agent.os.platform'?: string | undefined; 'user_agent.os.type'?: string | undefined; 'user_agent.os.version'?: string | undefined; 'user_agent.version'?: string | undefined; 'vulnerability.category'?: string[] | undefined; 'vulnerability.classification'?: string | undefined; 'vulnerability.description'?: string | undefined; 'vulnerability.enumeration'?: string | undefined; 'vulnerability.id'?: string | undefined; 'vulnerability.reference'?: string | undefined; 'vulnerability.report_id'?: string | undefined; 'vulnerability.scanner.vendor'?: string | undefined; 'vulnerability.score.base'?: number | undefined; 'vulnerability.score.environmental'?: number | undefined; 'vulnerability.score.temporal'?: number | undefined; 'vulnerability.score.version'?: string | undefined; 'vulnerability.severity'?: string | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }" + "{ '@timestamp': string | number; 'kibana.alert.ancestors': { depth: string | number; id: string; index: string; type: string; }[]; 'kibana.alert.depth': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.original_event.action': string; 'kibana.alert.original_event.category': string[]; 'kibana.alert.original_event.created': string | number; 'kibana.alert.original_event.dataset': string; 'kibana.alert.original_event.id': string; 'kibana.alert.original_event.ingested': string | number; 'kibana.alert.original_event.kind': string; 'kibana.alert.original_event.module': string; 'kibana.alert.original_event.original': string; 'kibana.alert.original_event.outcome': string; 'kibana.alert.original_event.provider': string; 'kibana.alert.original_event.sequence': string | number; 'kibana.alert.original_event.type': string[]; 'kibana.alert.original_time': string | number; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.false_positives': string[]; 'kibana.alert.rule.max_signals': (string | number)[]; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.threat.framework': string; 'kibana.alert.rule.threat.tactic.id': string; 'kibana.alert.rule.threat.tactic.name': string; 'kibana.alert.rule.threat.tactic.reference': string; 'kibana.alert.rule.threat.technique.id': string; 'kibana.alert.rule.threat.technique.name': string; 'kibana.alert.rule.threat.technique.reference': string; 'kibana.alert.rule.threat.technique.subtechnique.id': string; 'kibana.alert.rule.threat.technique.subtechnique.name': string; 'kibana.alert.rule.threat.technique.subtechnique.reference': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'ecs.version'?: string | undefined; 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'host.asset.criticality'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.ancestors.rule'?: string | undefined; 'kibana.alert.building_block_type'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.group.id'?: string | undefined; 'kibana.alert.group.index'?: number | undefined; 'kibana.alert.host.criticality_level'?: string | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.new_terms'?: string[] | undefined; 'kibana.alert.original_event.agent_id_status'?: string | undefined; 'kibana.alert.original_event.code'?: string | undefined; 'kibana.alert.original_event.duration'?: string | undefined; 'kibana.alert.original_event.end'?: string | number | undefined; 'kibana.alert.original_event.hash'?: string | undefined; 'kibana.alert.original_event.reason'?: string | undefined; 'kibana.alert.original_event.reference'?: string | undefined; 'kibana.alert.original_event.risk_score'?: number | undefined; 'kibana.alert.original_event.risk_score_norm'?: number | undefined; 'kibana.alert.original_event.severity'?: string | number | undefined; 'kibana.alert.original_event.start'?: string | number | undefined; 'kibana.alert.original_event.timezone'?: string | undefined; 'kibana.alert.original_event.url'?: string | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.building_block_type'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.immutable'?: string[] | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.rule.timeline_id'?: string[] | undefined; 'kibana.alert.rule.timeline_title'?: string[] | undefined; 'kibana.alert.rule.timestamp_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.threshold_result.cardinality'?: unknown; 'kibana.alert.threshold_result.count'?: string | number | undefined; 'kibana.alert.threshold_result.from'?: string | number | undefined; 'kibana.alert.threshold_result.terms'?: { field?: string | undefined; value?: string | undefined; }[] | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.user.criticality_level'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.alert.workflow_user'?: string | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; 'user.asset.criticality'?: string | undefined; } & { '@timestamp': string | number; 'kibana.alert.instance.id': string; 'kibana.alert.rule.category': string; 'kibana.alert.rule.consumer': string; 'kibana.alert.rule.name': string; 'kibana.alert.rule.producer': string; 'kibana.alert.rule.revision': string | number; 'kibana.alert.rule.rule_type_id': string; 'kibana.alert.rule.uuid': string; 'kibana.alert.status': string; 'kibana.alert.uuid': string; 'kibana.space_ids': string[]; } & { 'event.action'?: string | undefined; 'event.kind'?: string | undefined; 'kibana.alert.action_group'?: string | undefined; 'kibana.alert.case_ids'?: string[] | undefined; 'kibana.alert.duration.us'?: string | number | undefined; 'kibana.alert.end'?: string | number | undefined; 'kibana.alert.flapping'?: boolean | undefined; 'kibana.alert.flapping_history'?: boolean[] | undefined; 'kibana.alert.last_detected'?: string | number | undefined; 'kibana.alert.maintenance_window_ids'?: string[] | undefined; 'kibana.alert.reason'?: string | undefined; 'kibana.alert.rule.execution.uuid'?: string | undefined; 'kibana.alert.rule.parameters'?: unknown; 'kibana.alert.rule.tags'?: string[] | undefined; 'kibana.alert.start'?: string | number | undefined; 'kibana.alert.time_range'?: { gte?: string | number | undefined; lte?: string | number | undefined; } | undefined; 'kibana.alert.url'?: string | undefined; 'kibana.alert.workflow_assignee_ids'?: string[] | undefined; 'kibana.alert.workflow_status'?: string | undefined; 'kibana.alert.workflow_tags'?: string[] | undefined; 'kibana.version'?: string | undefined; tags?: string[] | undefined; } & { '@timestamp': string | number; 'ecs.version': string; } & { 'agent.build.original'?: string | undefined; 'agent.ephemeral_id'?: string | undefined; 'agent.id'?: string | undefined; 'agent.name'?: string | undefined; 'agent.type'?: string | undefined; 'agent.version'?: string | undefined; 'client.address'?: string | undefined; 'client.as.number'?: string | number | undefined; 'client.as.organization.name'?: string | undefined; 'client.bytes'?: string | number | undefined; 'client.domain'?: string | undefined; 'client.geo.city_name'?: string | undefined; 'client.geo.continent_code'?: string | undefined; 'client.geo.continent_name'?: string | undefined; 'client.geo.country_iso_code'?: string | undefined; 'client.geo.country_name'?: string | undefined; 'client.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'client.geo.name'?: string | undefined; 'client.geo.postal_code'?: string | undefined; 'client.geo.region_iso_code'?: string | undefined; 'client.geo.region_name'?: string | undefined; 'client.geo.timezone'?: string | undefined; 'client.ip'?: string | undefined; 'client.mac'?: string | undefined; 'client.nat.ip'?: string | undefined; 'client.nat.port'?: string | number | undefined; 'client.packets'?: string | number | undefined; 'client.port'?: string | number | undefined; 'client.registered_domain'?: string | undefined; 'client.subdomain'?: string | undefined; 'client.top_level_domain'?: string | undefined; 'client.user.domain'?: string | undefined; 'client.user.email'?: string | undefined; 'client.user.full_name'?: string | undefined; 'client.user.group.domain'?: string | undefined; 'client.user.group.id'?: string | undefined; 'client.user.group.name'?: string | undefined; 'client.user.hash'?: string | undefined; 'client.user.id'?: string | undefined; 'client.user.name'?: string | undefined; 'client.user.roles'?: string[] | undefined; 'cloud.account.id'?: string | undefined; 'cloud.account.name'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.instance.id'?: string | undefined; 'cloud.instance.name'?: string | undefined; 'cloud.machine.type'?: string | undefined; 'cloud.origin.account.id'?: string | undefined; 'cloud.origin.account.name'?: string | undefined; 'cloud.origin.availability_zone'?: string | undefined; 'cloud.origin.instance.id'?: string | undefined; 'cloud.origin.instance.name'?: string | undefined; 'cloud.origin.machine.type'?: string | undefined; 'cloud.origin.project.id'?: string | undefined; 'cloud.origin.project.name'?: string | undefined; 'cloud.origin.provider'?: string | undefined; 'cloud.origin.region'?: string | undefined; 'cloud.origin.service.name'?: string | undefined; 'cloud.project.id'?: string | undefined; 'cloud.project.name'?: string | undefined; 'cloud.provider'?: string | undefined; 'cloud.region'?: string | undefined; 'cloud.service.name'?: string | undefined; 'cloud.target.account.id'?: string | undefined; 'cloud.target.account.name'?: string | undefined; 'cloud.target.availability_zone'?: string | undefined; 'cloud.target.instance.id'?: string | undefined; 'cloud.target.instance.name'?: string | undefined; 'cloud.target.machine.type'?: string | undefined; 'cloud.target.project.id'?: string | undefined; 'cloud.target.project.name'?: string | undefined; 'cloud.target.provider'?: string | undefined; 'cloud.target.region'?: string | undefined; 'cloud.target.service.name'?: string | undefined; 'container.cpu.usage'?: string | number | undefined; 'container.disk.read.bytes'?: string | number | undefined; 'container.disk.write.bytes'?: string | number | undefined; 'container.id'?: string | undefined; 'container.image.hash.all'?: string[] | undefined; 'container.image.name'?: string | undefined; 'container.image.tag'?: string[] | undefined; 'container.labels'?: unknown; 'container.memory.usage'?: string | number | undefined; 'container.name'?: string | undefined; 'container.network.egress.bytes'?: string | number | undefined; 'container.network.ingress.bytes'?: string | number | undefined; 'container.runtime'?: string | undefined; 'destination.address'?: string | undefined; 'destination.as.number'?: string | number | undefined; 'destination.as.organization.name'?: string | undefined; 'destination.bytes'?: string | number | undefined; 'destination.domain'?: string | undefined; 'destination.geo.city_name'?: string | undefined; 'destination.geo.continent_code'?: string | undefined; 'destination.geo.continent_name'?: string | undefined; 'destination.geo.country_iso_code'?: string | undefined; 'destination.geo.country_name'?: string | undefined; 'destination.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'destination.geo.name'?: string | undefined; 'destination.geo.postal_code'?: string | undefined; 'destination.geo.region_iso_code'?: string | undefined; 'destination.geo.region_name'?: string | undefined; 'destination.geo.timezone'?: string | undefined; 'destination.ip'?: string | undefined; 'destination.mac'?: string | undefined; 'destination.nat.ip'?: string | undefined; 'destination.nat.port'?: string | number | undefined; 'destination.packets'?: string | number | undefined; 'destination.port'?: string | number | undefined; 'destination.registered_domain'?: string | undefined; 'destination.subdomain'?: string | undefined; 'destination.top_level_domain'?: string | undefined; 'destination.user.domain'?: string | undefined; 'destination.user.email'?: string | undefined; 'destination.user.full_name'?: string | undefined; 'destination.user.group.domain'?: string | undefined; 'destination.user.group.id'?: string | undefined; 'destination.user.group.name'?: string | undefined; 'destination.user.hash'?: string | undefined; 'destination.user.id'?: string | undefined; 'destination.user.name'?: string | undefined; 'destination.user.roles'?: string[] | undefined; 'device.id'?: string | undefined; 'device.manufacturer'?: string | undefined; 'device.model.identifier'?: string | undefined; 'device.model.name'?: string | undefined; 'dll.code_signature.digest_algorithm'?: string | undefined; 'dll.code_signature.exists'?: boolean | undefined; 'dll.code_signature.signing_id'?: string | undefined; 'dll.code_signature.status'?: string | undefined; 'dll.code_signature.subject_name'?: string | undefined; 'dll.code_signature.team_id'?: string | undefined; 'dll.code_signature.timestamp'?: string | number | undefined; 'dll.code_signature.trusted'?: boolean | undefined; 'dll.code_signature.valid'?: boolean | undefined; 'dll.hash.md5'?: string | undefined; 'dll.hash.sha1'?: string | undefined; 'dll.hash.sha256'?: string | undefined; 'dll.hash.sha384'?: string | undefined; 'dll.hash.sha512'?: string | undefined; 'dll.hash.ssdeep'?: string | undefined; 'dll.hash.tlsh'?: string | undefined; 'dll.name'?: string | undefined; 'dll.path'?: string | undefined; 'dll.pe.architecture'?: string | undefined; 'dll.pe.company'?: string | undefined; 'dll.pe.description'?: string | undefined; 'dll.pe.file_version'?: string | undefined; 'dll.pe.imphash'?: string | undefined; 'dll.pe.original_file_name'?: string | undefined; 'dll.pe.pehash'?: string | undefined; 'dll.pe.product'?: string | undefined; 'dns.answers'?: { class?: string | undefined; data?: string | undefined; name?: string | undefined; ttl?: string | number | undefined; type?: string | undefined; }[] | undefined; 'dns.header_flags'?: string[] | undefined; 'dns.id'?: string | undefined; 'dns.op_code'?: string | undefined; 'dns.question.class'?: string | undefined; 'dns.question.name'?: string | undefined; 'dns.question.registered_domain'?: string | undefined; 'dns.question.subdomain'?: string | undefined; 'dns.question.top_level_domain'?: string | undefined; 'dns.question.type'?: string | undefined; 'dns.resolved_ip'?: string[] | undefined; 'dns.response_code'?: string | undefined; 'dns.type'?: string | undefined; 'email.attachments'?: { 'file.extension'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.name'?: string | undefined; 'file.size'?: string | number | undefined; }[] | undefined; 'email.bcc.address'?: string[] | undefined; 'email.cc.address'?: string[] | undefined; 'email.content_type'?: string | undefined; 'email.delivery_timestamp'?: string | number | undefined; 'email.direction'?: string | undefined; 'email.from.address'?: string[] | undefined; 'email.local_id'?: string | undefined; 'email.message_id'?: string | undefined; 'email.origination_timestamp'?: string | number | undefined; 'email.reply_to.address'?: string[] | undefined; 'email.sender.address'?: string | undefined; 'email.subject'?: string | undefined; 'email.to.address'?: string[] | undefined; 'email.x_mailer'?: string | undefined; 'error.code'?: string | undefined; 'error.id'?: string | undefined; 'error.message'?: string | undefined; 'error.stack_trace'?: string | undefined; 'error.type'?: string | undefined; 'event.action'?: string | undefined; 'event.agent_id_status'?: string | undefined; 'event.category'?: string[] | undefined; 'event.code'?: string | undefined; 'event.created'?: string | number | undefined; 'event.dataset'?: string | undefined; 'event.duration'?: string | number | undefined; 'event.end'?: string | number | undefined; 'event.hash'?: string | undefined; 'event.id'?: string | undefined; 'event.ingested'?: string | number | undefined; 'event.kind'?: string | undefined; 'event.module'?: string | undefined; 'event.original'?: string | undefined; 'event.outcome'?: string | undefined; 'event.provider'?: string | undefined; 'event.reason'?: string | undefined; 'event.reference'?: string | undefined; 'event.risk_score'?: number | undefined; 'event.risk_score_norm'?: number | undefined; 'event.sequence'?: string | number | undefined; 'event.severity'?: string | number | undefined; 'event.start'?: string | number | undefined; 'event.timezone'?: string | undefined; 'event.type'?: string[] | undefined; 'event.url'?: string | undefined; 'faas.coldstart'?: boolean | undefined; 'faas.execution'?: string | undefined; 'faas.id'?: string | undefined; 'faas.name'?: string | undefined; 'faas.version'?: string | undefined; 'file.accessed'?: string | number | undefined; 'file.attributes'?: string[] | undefined; 'file.code_signature.digest_algorithm'?: string | undefined; 'file.code_signature.exists'?: boolean | undefined; 'file.code_signature.signing_id'?: string | undefined; 'file.code_signature.status'?: string | undefined; 'file.code_signature.subject_name'?: string | undefined; 'file.code_signature.team_id'?: string | undefined; 'file.code_signature.timestamp'?: string | number | undefined; 'file.code_signature.trusted'?: boolean | undefined; 'file.code_signature.valid'?: boolean | undefined; 'file.created'?: string | number | undefined; 'file.ctime'?: string | number | undefined; 'file.device'?: string | undefined; 'file.directory'?: string | undefined; 'file.drive_letter'?: string | undefined; 'file.elf.architecture'?: string | undefined; 'file.elf.byte_order'?: string | undefined; 'file.elf.cpu_type'?: string | undefined; 'file.elf.creation_date'?: string | number | undefined; 'file.elf.exports'?: unknown[] | undefined; 'file.elf.header.abi_version'?: string | undefined; 'file.elf.header.class'?: string | undefined; 'file.elf.header.data'?: string | undefined; 'file.elf.header.entrypoint'?: string | number | undefined; 'file.elf.header.object_version'?: string | undefined; 'file.elf.header.os_abi'?: string | undefined; 'file.elf.header.type'?: string | undefined; 'file.elf.header.version'?: string | undefined; 'file.elf.imports'?: unknown[] | undefined; 'file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'file.elf.shared_libraries'?: string[] | undefined; 'file.elf.telfhash'?: string | undefined; 'file.extension'?: string | undefined; 'file.fork_name'?: string | undefined; 'file.gid'?: string | undefined; 'file.group'?: string | undefined; 'file.hash.md5'?: string | undefined; 'file.hash.sha1'?: string | undefined; 'file.hash.sha256'?: string | undefined; 'file.hash.sha384'?: string | undefined; 'file.hash.sha512'?: string | undefined; 'file.hash.ssdeep'?: string | undefined; 'file.hash.tlsh'?: string | undefined; 'file.inode'?: string | undefined; 'file.mime_type'?: string | undefined; 'file.mode'?: string | undefined; 'file.mtime'?: string | number | undefined; 'file.name'?: string | undefined; 'file.owner'?: string | undefined; 'file.path'?: string | undefined; 'file.pe.architecture'?: string | undefined; 'file.pe.company'?: string | undefined; 'file.pe.description'?: string | undefined; 'file.pe.file_version'?: string | undefined; 'file.pe.imphash'?: string | undefined; 'file.pe.original_file_name'?: string | undefined; 'file.pe.pehash'?: string | undefined; 'file.pe.product'?: string | undefined; 'file.size'?: string | number | undefined; 'file.target_path'?: string | undefined; 'file.type'?: string | undefined; 'file.uid'?: string | undefined; 'file.x509.alternative_names'?: string[] | undefined; 'file.x509.issuer.common_name'?: string[] | undefined; 'file.x509.issuer.country'?: string[] | undefined; 'file.x509.issuer.distinguished_name'?: string | undefined; 'file.x509.issuer.locality'?: string[] | undefined; 'file.x509.issuer.organization'?: string[] | undefined; 'file.x509.issuer.organizational_unit'?: string[] | undefined; 'file.x509.issuer.state_or_province'?: string[] | undefined; 'file.x509.not_after'?: string | number | undefined; 'file.x509.not_before'?: string | number | undefined; 'file.x509.public_key_algorithm'?: string | undefined; 'file.x509.public_key_curve'?: string | undefined; 'file.x509.public_key_exponent'?: string | number | undefined; 'file.x509.public_key_size'?: string | number | undefined; 'file.x509.serial_number'?: string | undefined; 'file.x509.signature_algorithm'?: string | undefined; 'file.x509.subject.common_name'?: string[] | undefined; 'file.x509.subject.country'?: string[] | undefined; 'file.x509.subject.distinguished_name'?: string | undefined; 'file.x509.subject.locality'?: string[] | undefined; 'file.x509.subject.organization'?: string[] | undefined; 'file.x509.subject.organizational_unit'?: string[] | undefined; 'file.x509.subject.state_or_province'?: string[] | undefined; 'file.x509.version_number'?: string | undefined; 'group.domain'?: string | undefined; 'group.id'?: string | undefined; 'group.name'?: string | undefined; 'host.architecture'?: string | undefined; 'host.boot.id'?: string | undefined; 'host.cpu.usage'?: string | number | undefined; 'host.disk.read.bytes'?: string | number | undefined; 'host.disk.write.bytes'?: string | number | undefined; 'host.domain'?: string | undefined; 'host.geo.city_name'?: string | undefined; 'host.geo.continent_code'?: string | undefined; 'host.geo.continent_name'?: string | undefined; 'host.geo.country_iso_code'?: string | undefined; 'host.geo.country_name'?: string | undefined; 'host.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'host.geo.name'?: string | undefined; 'host.geo.postal_code'?: string | undefined; 'host.geo.region_iso_code'?: string | undefined; 'host.geo.region_name'?: string | undefined; 'host.geo.timezone'?: string | undefined; 'host.hostname'?: string | undefined; 'host.id'?: string | undefined; 'host.ip'?: string[] | undefined; 'host.mac'?: string[] | undefined; 'host.name'?: string | undefined; 'host.network.egress.bytes'?: string | number | undefined; 'host.network.egress.packets'?: string | number | undefined; 'host.network.ingress.bytes'?: string | number | undefined; 'host.network.ingress.packets'?: string | number | undefined; 'host.os.family'?: string | undefined; 'host.os.full'?: string | undefined; 'host.os.kernel'?: string | undefined; 'host.os.name'?: string | undefined; 'host.os.platform'?: string | undefined; 'host.os.type'?: string | undefined; 'host.os.version'?: string | undefined; 'host.pid_ns_ino'?: string | undefined; 'host.risk.calculated_level'?: string | undefined; 'host.risk.calculated_score'?: number | undefined; 'host.risk.calculated_score_norm'?: number | undefined; 'host.risk.static_level'?: string | undefined; 'host.risk.static_score'?: number | undefined; 'host.risk.static_score_norm'?: number | undefined; 'host.type'?: string | undefined; 'host.uptime'?: string | number | undefined; 'http.request.body.bytes'?: string | number | undefined; 'http.request.body.content'?: string | undefined; 'http.request.bytes'?: string | number | undefined; 'http.request.id'?: string | undefined; 'http.request.method'?: string | undefined; 'http.request.mime_type'?: string | undefined; 'http.request.referrer'?: string | undefined; 'http.response.body.bytes'?: string | number | undefined; 'http.response.body.content'?: string | undefined; 'http.response.bytes'?: string | number | undefined; 'http.response.mime_type'?: string | undefined; 'http.response.status_code'?: string | number | undefined; 'http.version'?: string | undefined; labels?: unknown; 'log.file.path'?: string | undefined; 'log.level'?: string | undefined; 'log.logger'?: string | undefined; 'log.origin.file.line'?: string | number | undefined; 'log.origin.file.name'?: string | undefined; 'log.origin.function'?: string | undefined; 'log.syslog'?: unknown; message?: string | undefined; 'network.application'?: string | undefined; 'network.bytes'?: string | number | undefined; 'network.community_id'?: string | undefined; 'network.direction'?: string | undefined; 'network.forwarded_ip'?: string | undefined; 'network.iana_number'?: string | undefined; 'network.inner'?: unknown; 'network.name'?: string | undefined; 'network.packets'?: string | number | undefined; 'network.protocol'?: string | undefined; 'network.transport'?: string | undefined; 'network.type'?: string | undefined; 'network.vlan.id'?: string | undefined; 'network.vlan.name'?: string | undefined; 'observer.egress'?: unknown; 'observer.geo.city_name'?: string | undefined; 'observer.geo.continent_code'?: string | undefined; 'observer.geo.continent_name'?: string | undefined; 'observer.geo.country_iso_code'?: string | undefined; 'observer.geo.country_name'?: string | undefined; 'observer.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'observer.geo.name'?: string | undefined; 'observer.geo.postal_code'?: string | undefined; 'observer.geo.region_iso_code'?: string | undefined; 'observer.geo.region_name'?: string | undefined; 'observer.geo.timezone'?: string | undefined; 'observer.hostname'?: string | undefined; 'observer.ingress'?: unknown; 'observer.ip'?: string[] | undefined; 'observer.mac'?: string[] | undefined; 'observer.name'?: string | undefined; 'observer.os.family'?: string | undefined; 'observer.os.full'?: string | undefined; 'observer.os.kernel'?: string | undefined; 'observer.os.name'?: string | undefined; 'observer.os.platform'?: string | undefined; 'observer.os.type'?: string | undefined; 'observer.os.version'?: string | undefined; 'observer.product'?: string | undefined; 'observer.serial_number'?: string | undefined; 'observer.type'?: string | undefined; 'observer.vendor'?: string | undefined; 'observer.version'?: string | undefined; 'orchestrator.api_version'?: string | undefined; 'orchestrator.cluster.id'?: string | undefined; 'orchestrator.cluster.name'?: string | undefined; 'orchestrator.cluster.url'?: string | undefined; 'orchestrator.cluster.version'?: string | undefined; 'orchestrator.namespace'?: string | undefined; 'orchestrator.organization'?: string | undefined; 'orchestrator.resource.id'?: string | undefined; 'orchestrator.resource.ip'?: string[] | undefined; 'orchestrator.resource.name'?: string | undefined; 'orchestrator.resource.parent.type'?: string | undefined; 'orchestrator.resource.type'?: string | undefined; 'orchestrator.type'?: string | undefined; 'organization.id'?: string | undefined; 'organization.name'?: string | undefined; 'package.architecture'?: string | undefined; 'package.build_version'?: string | undefined; 'package.checksum'?: string | undefined; 'package.description'?: string | undefined; 'package.install_scope'?: string | undefined; 'package.installed'?: string | number | undefined; 'package.license'?: string | undefined; 'package.name'?: string | undefined; 'package.path'?: string | undefined; 'package.reference'?: string | undefined; 'package.size'?: string | number | undefined; 'package.type'?: string | undefined; 'package.version'?: string | undefined; 'process.args'?: string[] | undefined; 'process.args_count'?: string | number | undefined; 'process.code_signature.digest_algorithm'?: string | undefined; 'process.code_signature.exists'?: boolean | undefined; 'process.code_signature.signing_id'?: string | undefined; 'process.code_signature.status'?: string | undefined; 'process.code_signature.subject_name'?: string | undefined; 'process.code_signature.team_id'?: string | undefined; 'process.code_signature.timestamp'?: string | number | undefined; 'process.code_signature.trusted'?: boolean | undefined; 'process.code_signature.valid'?: boolean | undefined; 'process.command_line'?: string | undefined; 'process.elf.architecture'?: string | undefined; 'process.elf.byte_order'?: string | undefined; 'process.elf.cpu_type'?: string | undefined; 'process.elf.creation_date'?: string | number | undefined; 'process.elf.exports'?: unknown[] | undefined; 'process.elf.header.abi_version'?: string | undefined; 'process.elf.header.class'?: string | undefined; 'process.elf.header.data'?: string | undefined; 'process.elf.header.entrypoint'?: string | number | undefined; 'process.elf.header.object_version'?: string | undefined; 'process.elf.header.os_abi'?: string | undefined; 'process.elf.header.type'?: string | undefined; 'process.elf.header.version'?: string | undefined; 'process.elf.imports'?: unknown[] | undefined; 'process.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.elf.shared_libraries'?: string[] | undefined; 'process.elf.telfhash'?: string | undefined; 'process.end'?: string | number | undefined; 'process.entity_id'?: string | undefined; 'process.entry_leader.args'?: string[] | undefined; 'process.entry_leader.args_count'?: string | number | undefined; 'process.entry_leader.attested_groups.name'?: string | undefined; 'process.entry_leader.attested_user.id'?: string | undefined; 'process.entry_leader.attested_user.name'?: string | undefined; 'process.entry_leader.command_line'?: string | undefined; 'process.entry_leader.entity_id'?: string | undefined; 'process.entry_leader.entry_meta.source.ip'?: string | undefined; 'process.entry_leader.entry_meta.type'?: string | undefined; 'process.entry_leader.executable'?: string | undefined; 'process.entry_leader.group.id'?: string | undefined; 'process.entry_leader.group.name'?: string | undefined; 'process.entry_leader.interactive'?: boolean | undefined; 'process.entry_leader.name'?: string | undefined; 'process.entry_leader.parent.entity_id'?: string | undefined; 'process.entry_leader.parent.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.entity_id'?: string | undefined; 'process.entry_leader.parent.session_leader.pid'?: string | number | undefined; 'process.entry_leader.parent.session_leader.start'?: string | number | undefined; 'process.entry_leader.parent.start'?: string | number | undefined; 'process.entry_leader.pid'?: string | number | undefined; 'process.entry_leader.real_group.id'?: string | undefined; 'process.entry_leader.real_group.name'?: string | undefined; 'process.entry_leader.real_user.id'?: string | undefined; 'process.entry_leader.real_user.name'?: string | undefined; 'process.entry_leader.same_as_process'?: boolean | undefined; 'process.entry_leader.saved_group.id'?: string | undefined; 'process.entry_leader.saved_group.name'?: string | undefined; 'process.entry_leader.saved_user.id'?: string | undefined; 'process.entry_leader.saved_user.name'?: string | undefined; 'process.entry_leader.start'?: string | number | undefined; 'process.entry_leader.supplemental_groups.id'?: string | undefined; 'process.entry_leader.supplemental_groups.name'?: string | undefined; 'process.entry_leader.tty'?: unknown; 'process.entry_leader.user.id'?: string | undefined; 'process.entry_leader.user.name'?: string | undefined; 'process.entry_leader.working_directory'?: string | undefined; 'process.env_vars'?: string[] | undefined; 'process.executable'?: string | undefined; 'process.exit_code'?: string | number | undefined; 'process.group_leader.args'?: string[] | undefined; 'process.group_leader.args_count'?: string | number | undefined; 'process.group_leader.command_line'?: string | undefined; 'process.group_leader.entity_id'?: string | undefined; 'process.group_leader.executable'?: string | undefined; 'process.group_leader.group.id'?: string | undefined; 'process.group_leader.group.name'?: string | undefined; 'process.group_leader.interactive'?: boolean | undefined; 'process.group_leader.name'?: string | undefined; 'process.group_leader.pid'?: string | number | undefined; 'process.group_leader.real_group.id'?: string | undefined; 'process.group_leader.real_group.name'?: string | undefined; 'process.group_leader.real_user.id'?: string | undefined; 'process.group_leader.real_user.name'?: string | undefined; 'process.group_leader.same_as_process'?: boolean | undefined; 'process.group_leader.saved_group.id'?: string | undefined; 'process.group_leader.saved_group.name'?: string | undefined; 'process.group_leader.saved_user.id'?: string | undefined; 'process.group_leader.saved_user.name'?: string | undefined; 'process.group_leader.start'?: string | number | undefined; 'process.group_leader.supplemental_groups.id'?: string | undefined; 'process.group_leader.supplemental_groups.name'?: string | undefined; 'process.group_leader.tty'?: unknown; 'process.group_leader.user.id'?: string | undefined; 'process.group_leader.user.name'?: string | undefined; 'process.group_leader.working_directory'?: string | undefined; 'process.hash.md5'?: string | undefined; 'process.hash.sha1'?: string | undefined; 'process.hash.sha256'?: string | undefined; 'process.hash.sha384'?: string | undefined; 'process.hash.sha512'?: string | undefined; 'process.hash.ssdeep'?: string | undefined; 'process.hash.tlsh'?: string | undefined; 'process.interactive'?: boolean | undefined; 'process.io'?: unknown; 'process.name'?: string | undefined; 'process.parent.args'?: string[] | undefined; 'process.parent.args_count'?: string | number | undefined; 'process.parent.code_signature.digest_algorithm'?: string | undefined; 'process.parent.code_signature.exists'?: boolean | undefined; 'process.parent.code_signature.signing_id'?: string | undefined; 'process.parent.code_signature.status'?: string | undefined; 'process.parent.code_signature.subject_name'?: string | undefined; 'process.parent.code_signature.team_id'?: string | undefined; 'process.parent.code_signature.timestamp'?: string | number | undefined; 'process.parent.code_signature.trusted'?: boolean | undefined; 'process.parent.code_signature.valid'?: boolean | undefined; 'process.parent.command_line'?: string | undefined; 'process.parent.elf.architecture'?: string | undefined; 'process.parent.elf.byte_order'?: string | undefined; 'process.parent.elf.cpu_type'?: string | undefined; 'process.parent.elf.creation_date'?: string | number | undefined; 'process.parent.elf.exports'?: unknown[] | undefined; 'process.parent.elf.header.abi_version'?: string | undefined; 'process.parent.elf.header.class'?: string | undefined; 'process.parent.elf.header.data'?: string | undefined; 'process.parent.elf.header.entrypoint'?: string | number | undefined; 'process.parent.elf.header.object_version'?: string | undefined; 'process.parent.elf.header.os_abi'?: string | undefined; 'process.parent.elf.header.type'?: string | undefined; 'process.parent.elf.header.version'?: string | undefined; 'process.parent.elf.imports'?: unknown[] | undefined; 'process.parent.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'process.parent.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'process.parent.elf.shared_libraries'?: string[] | undefined; 'process.parent.elf.telfhash'?: string | undefined; 'process.parent.end'?: string | number | undefined; 'process.parent.entity_id'?: string | undefined; 'process.parent.executable'?: string | undefined; 'process.parent.exit_code'?: string | number | undefined; 'process.parent.group.id'?: string | undefined; 'process.parent.group.name'?: string | undefined; 'process.parent.group_leader.entity_id'?: string | undefined; 'process.parent.group_leader.pid'?: string | number | undefined; 'process.parent.group_leader.start'?: string | number | undefined; 'process.parent.hash.md5'?: string | undefined; 'process.parent.hash.sha1'?: string | undefined; 'process.parent.hash.sha256'?: string | undefined; 'process.parent.hash.sha384'?: string | undefined; 'process.parent.hash.sha512'?: string | undefined; 'process.parent.hash.ssdeep'?: string | undefined; 'process.parent.hash.tlsh'?: string | undefined; 'process.parent.interactive'?: boolean | undefined; 'process.parent.name'?: string | undefined; 'process.parent.pe.architecture'?: string | undefined; 'process.parent.pe.company'?: string | undefined; 'process.parent.pe.description'?: string | undefined; 'process.parent.pe.file_version'?: string | undefined; 'process.parent.pe.imphash'?: string | undefined; 'process.parent.pe.original_file_name'?: string | undefined; 'process.parent.pe.pehash'?: string | undefined; 'process.parent.pe.product'?: string | undefined; 'process.parent.pgid'?: string | number | undefined; 'process.parent.pid'?: string | number | undefined; 'process.parent.real_group.id'?: string | undefined; 'process.parent.real_group.name'?: string | undefined; 'process.parent.real_user.id'?: string | undefined; 'process.parent.real_user.name'?: string | undefined; 'process.parent.saved_group.id'?: string | undefined; 'process.parent.saved_group.name'?: string | undefined; 'process.parent.saved_user.id'?: string | undefined; 'process.parent.saved_user.name'?: string | undefined; 'process.parent.start'?: string | number | undefined; 'process.parent.supplemental_groups.id'?: string | undefined; 'process.parent.supplemental_groups.name'?: string | undefined; 'process.parent.thread.id'?: string | number | undefined; 'process.parent.thread.name'?: string | undefined; 'process.parent.title'?: string | undefined; 'process.parent.tty'?: unknown; 'process.parent.uptime'?: string | number | undefined; 'process.parent.user.id'?: string | undefined; 'process.parent.user.name'?: string | undefined; 'process.parent.working_directory'?: string | undefined; 'process.pe.architecture'?: string | undefined; 'process.pe.company'?: string | undefined; 'process.pe.description'?: string | undefined; 'process.pe.file_version'?: string | undefined; 'process.pe.imphash'?: string | undefined; 'process.pe.original_file_name'?: string | undefined; 'process.pe.pehash'?: string | undefined; 'process.pe.product'?: string | undefined; 'process.pgid'?: string | number | undefined; 'process.pid'?: string | number | undefined; 'process.previous.args'?: string[] | undefined; 'process.previous.args_count'?: string | number | undefined; 'process.previous.executable'?: string | undefined; 'process.real_group.id'?: string | undefined; 'process.real_group.name'?: string | undefined; 'process.real_user.id'?: string | undefined; 'process.real_user.name'?: string | undefined; 'process.saved_group.id'?: string | undefined; 'process.saved_group.name'?: string | undefined; 'process.saved_user.id'?: string | undefined; 'process.saved_user.name'?: string | undefined; 'process.session_leader.args'?: string[] | undefined; 'process.session_leader.args_count'?: string | number | undefined; 'process.session_leader.command_line'?: string | undefined; 'process.session_leader.entity_id'?: string | undefined; 'process.session_leader.executable'?: string | undefined; 'process.session_leader.group.id'?: string | undefined; 'process.session_leader.group.name'?: string | undefined; 'process.session_leader.interactive'?: boolean | undefined; 'process.session_leader.name'?: string | undefined; 'process.session_leader.parent.entity_id'?: string | undefined; 'process.session_leader.parent.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.entity_id'?: string | undefined; 'process.session_leader.parent.session_leader.pid'?: string | number | undefined; 'process.session_leader.parent.session_leader.start'?: string | number | undefined; 'process.session_leader.parent.start'?: string | number | undefined; 'process.session_leader.pid'?: string | number | undefined; 'process.session_leader.real_group.id'?: string | undefined; 'process.session_leader.real_group.name'?: string | undefined; 'process.session_leader.real_user.id'?: string | undefined; 'process.session_leader.real_user.name'?: string | undefined; 'process.session_leader.same_as_process'?: boolean | undefined; 'process.session_leader.saved_group.id'?: string | undefined; 'process.session_leader.saved_group.name'?: string | undefined; 'process.session_leader.saved_user.id'?: string | undefined; 'process.session_leader.saved_user.name'?: string | undefined; 'process.session_leader.start'?: string | number | undefined; 'process.session_leader.supplemental_groups.id'?: string | undefined; 'process.session_leader.supplemental_groups.name'?: string | undefined; 'process.session_leader.tty'?: unknown; 'process.session_leader.user.id'?: string | undefined; 'process.session_leader.user.name'?: string | undefined; 'process.session_leader.working_directory'?: string | undefined; 'process.start'?: string | number | undefined; 'process.supplemental_groups.id'?: string | undefined; 'process.supplemental_groups.name'?: string | undefined; 'process.thread.id'?: string | number | undefined; 'process.thread.name'?: string | undefined; 'process.title'?: string | undefined; 'process.tty'?: unknown; 'process.uptime'?: string | number | undefined; 'process.user.id'?: string | undefined; 'process.user.name'?: string | undefined; 'process.working_directory'?: string | undefined; 'registry.data.bytes'?: string | undefined; 'registry.data.strings'?: string[] | undefined; 'registry.data.type'?: string | undefined; 'registry.hive'?: string | undefined; 'registry.key'?: string | undefined; 'registry.path'?: string | undefined; 'registry.value'?: string | undefined; 'related.hash'?: string[] | undefined; 'related.hosts'?: string[] | undefined; 'related.ip'?: string[] | undefined; 'related.user'?: string[] | undefined; 'rule.author'?: string[] | undefined; 'rule.category'?: string | undefined; 'rule.description'?: string | undefined; 'rule.id'?: string | undefined; 'rule.license'?: string | undefined; 'rule.name'?: string | undefined; 'rule.reference'?: string | undefined; 'rule.ruleset'?: string | undefined; 'rule.uuid'?: string | undefined; 'rule.version'?: string | undefined; 'server.address'?: string | undefined; 'server.as.number'?: string | number | undefined; 'server.as.organization.name'?: string | undefined; 'server.bytes'?: string | number | undefined; 'server.domain'?: string | undefined; 'server.geo.city_name'?: string | undefined; 'server.geo.continent_code'?: string | undefined; 'server.geo.continent_name'?: string | undefined; 'server.geo.country_iso_code'?: string | undefined; 'server.geo.country_name'?: string | undefined; 'server.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'server.geo.name'?: string | undefined; 'server.geo.postal_code'?: string | undefined; 'server.geo.region_iso_code'?: string | undefined; 'server.geo.region_name'?: string | undefined; 'server.geo.timezone'?: string | undefined; 'server.ip'?: string | undefined; 'server.mac'?: string | undefined; 'server.nat.ip'?: string | undefined; 'server.nat.port'?: string | number | undefined; 'server.packets'?: string | number | undefined; 'server.port'?: string | number | undefined; 'server.registered_domain'?: string | undefined; 'server.subdomain'?: string | undefined; 'server.top_level_domain'?: string | undefined; 'server.user.domain'?: string | undefined; 'server.user.email'?: string | undefined; 'server.user.full_name'?: string | undefined; 'server.user.group.domain'?: string | undefined; 'server.user.group.id'?: string | undefined; 'server.user.group.name'?: string | undefined; 'server.user.hash'?: string | undefined; 'server.user.id'?: string | undefined; 'server.user.name'?: string | undefined; 'server.user.roles'?: string[] | undefined; 'service.address'?: string | undefined; 'service.environment'?: string | undefined; 'service.ephemeral_id'?: string | undefined; 'service.id'?: string | undefined; 'service.name'?: string | undefined; 'service.node.name'?: string | undefined; 'service.node.role'?: string | undefined; 'service.node.roles'?: string[] | undefined; 'service.origin.address'?: string | undefined; 'service.origin.environment'?: string | undefined; 'service.origin.ephemeral_id'?: string | undefined; 'service.origin.id'?: string | undefined; 'service.origin.name'?: string | undefined; 'service.origin.node.name'?: string | undefined; 'service.origin.node.role'?: string | undefined; 'service.origin.node.roles'?: string[] | undefined; 'service.origin.state'?: string | undefined; 'service.origin.type'?: string | undefined; 'service.origin.version'?: string | undefined; 'service.state'?: string | undefined; 'service.target.address'?: string | undefined; 'service.target.environment'?: string | undefined; 'service.target.ephemeral_id'?: string | undefined; 'service.target.id'?: string | undefined; 'service.target.name'?: string | undefined; 'service.target.node.name'?: string | undefined; 'service.target.node.role'?: string | undefined; 'service.target.node.roles'?: string[] | undefined; 'service.target.state'?: string | undefined; 'service.target.type'?: string | undefined; 'service.target.version'?: string | undefined; 'service.type'?: string | undefined; 'service.version'?: string | undefined; 'source.address'?: string | undefined; 'source.as.number'?: string | number | undefined; 'source.as.organization.name'?: string | undefined; 'source.bytes'?: string | number | undefined; 'source.domain'?: string | undefined; 'source.geo.city_name'?: string | undefined; 'source.geo.continent_code'?: string | undefined; 'source.geo.continent_name'?: string | undefined; 'source.geo.country_iso_code'?: string | undefined; 'source.geo.country_name'?: string | undefined; 'source.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'source.geo.name'?: string | undefined; 'source.geo.postal_code'?: string | undefined; 'source.geo.region_iso_code'?: string | undefined; 'source.geo.region_name'?: string | undefined; 'source.geo.timezone'?: string | undefined; 'source.ip'?: string | undefined; 'source.mac'?: string | undefined; 'source.nat.ip'?: string | undefined; 'source.nat.port'?: string | number | undefined; 'source.packets'?: string | number | undefined; 'source.port'?: string | number | undefined; 'source.registered_domain'?: string | undefined; 'source.subdomain'?: string | undefined; 'source.top_level_domain'?: string | undefined; 'source.user.domain'?: string | undefined; 'source.user.email'?: string | undefined; 'source.user.full_name'?: string | undefined; 'source.user.group.domain'?: string | undefined; 'source.user.group.id'?: string | undefined; 'source.user.group.name'?: string | undefined; 'source.user.hash'?: string | undefined; 'source.user.id'?: string | undefined; 'source.user.name'?: string | undefined; 'source.user.roles'?: string[] | undefined; 'span.id'?: string | undefined; tags?: string[] | undefined; 'threat.enrichments'?: { indicator?: unknown; 'matched.atomic'?: string | undefined; 'matched.field'?: string | undefined; 'matched.id'?: string | undefined; 'matched.index'?: string | undefined; 'matched.occurred'?: string | number | undefined; 'matched.type'?: string | undefined; }[] | undefined; 'threat.feed.dashboard_id'?: string | undefined; 'threat.feed.description'?: string | undefined; 'threat.feed.name'?: string | undefined; 'threat.feed.reference'?: string | undefined; 'threat.framework'?: string | undefined; 'threat.group.alias'?: string[] | undefined; 'threat.group.id'?: string | undefined; 'threat.group.name'?: string | undefined; 'threat.group.reference'?: string | undefined; 'threat.indicator.as.number'?: string | number | undefined; 'threat.indicator.as.organization.name'?: string | undefined; 'threat.indicator.confidence'?: string | undefined; 'threat.indicator.description'?: string | undefined; 'threat.indicator.email.address'?: string | undefined; 'threat.indicator.file.accessed'?: string | number | undefined; 'threat.indicator.file.attributes'?: string[] | undefined; 'threat.indicator.file.code_signature.digest_algorithm'?: string | undefined; 'threat.indicator.file.code_signature.exists'?: boolean | undefined; 'threat.indicator.file.code_signature.signing_id'?: string | undefined; 'threat.indicator.file.code_signature.status'?: string | undefined; 'threat.indicator.file.code_signature.subject_name'?: string | undefined; 'threat.indicator.file.code_signature.team_id'?: string | undefined; 'threat.indicator.file.code_signature.timestamp'?: string | number | undefined; 'threat.indicator.file.code_signature.trusted'?: boolean | undefined; 'threat.indicator.file.code_signature.valid'?: boolean | undefined; 'threat.indicator.file.created'?: string | number | undefined; 'threat.indicator.file.ctime'?: string | number | undefined; 'threat.indicator.file.device'?: string | undefined; 'threat.indicator.file.directory'?: string | undefined; 'threat.indicator.file.drive_letter'?: string | undefined; 'threat.indicator.file.elf.architecture'?: string | undefined; 'threat.indicator.file.elf.byte_order'?: string | undefined; 'threat.indicator.file.elf.cpu_type'?: string | undefined; 'threat.indicator.file.elf.creation_date'?: string | number | undefined; 'threat.indicator.file.elf.exports'?: unknown[] | undefined; 'threat.indicator.file.elf.header.abi_version'?: string | undefined; 'threat.indicator.file.elf.header.class'?: string | undefined; 'threat.indicator.file.elf.header.data'?: string | undefined; 'threat.indicator.file.elf.header.entrypoint'?: string | number | undefined; 'threat.indicator.file.elf.header.object_version'?: string | undefined; 'threat.indicator.file.elf.header.os_abi'?: string | undefined; 'threat.indicator.file.elf.header.type'?: string | undefined; 'threat.indicator.file.elf.header.version'?: string | undefined; 'threat.indicator.file.elf.imports'?: unknown[] | undefined; 'threat.indicator.file.elf.sections'?: { chi2?: string | number | undefined; entropy?: string | number | undefined; flags?: string | undefined; name?: string | undefined; physical_offset?: string | undefined; physical_size?: string | number | undefined; type?: string | undefined; virtual_address?: string | number | undefined; virtual_size?: string | number | undefined; }[] | undefined; 'threat.indicator.file.elf.segments'?: { sections?: string | undefined; type?: string | undefined; }[] | undefined; 'threat.indicator.file.elf.shared_libraries'?: string[] | undefined; 'threat.indicator.file.elf.telfhash'?: string | undefined; 'threat.indicator.file.extension'?: string | undefined; 'threat.indicator.file.fork_name'?: string | undefined; 'threat.indicator.file.gid'?: string | undefined; 'threat.indicator.file.group'?: string | undefined; 'threat.indicator.file.hash.md5'?: string | undefined; 'threat.indicator.file.hash.sha1'?: string | undefined; 'threat.indicator.file.hash.sha256'?: string | undefined; 'threat.indicator.file.hash.sha384'?: string | undefined; 'threat.indicator.file.hash.sha512'?: string | undefined; 'threat.indicator.file.hash.ssdeep'?: string | undefined; 'threat.indicator.file.hash.tlsh'?: string | undefined; 'threat.indicator.file.inode'?: string | undefined; 'threat.indicator.file.mime_type'?: string | undefined; 'threat.indicator.file.mode'?: string | undefined; 'threat.indicator.file.mtime'?: string | number | undefined; 'threat.indicator.file.name'?: string | undefined; 'threat.indicator.file.owner'?: string | undefined; 'threat.indicator.file.path'?: string | undefined; 'threat.indicator.file.pe.architecture'?: string | undefined; 'threat.indicator.file.pe.company'?: string | undefined; 'threat.indicator.file.pe.description'?: string | undefined; 'threat.indicator.file.pe.file_version'?: string | undefined; 'threat.indicator.file.pe.imphash'?: string | undefined; 'threat.indicator.file.pe.original_file_name'?: string | undefined; 'threat.indicator.file.pe.pehash'?: string | undefined; 'threat.indicator.file.pe.product'?: string | undefined; 'threat.indicator.file.size'?: string | number | undefined; 'threat.indicator.file.target_path'?: string | undefined; 'threat.indicator.file.type'?: string | undefined; 'threat.indicator.file.uid'?: string | undefined; 'threat.indicator.file.x509.alternative_names'?: string[] | undefined; 'threat.indicator.file.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.file.x509.issuer.country'?: string[] | undefined; 'threat.indicator.file.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.file.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.not_after'?: string | number | undefined; 'threat.indicator.file.x509.not_before'?: string | number | undefined; 'threat.indicator.file.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.file.x509.public_key_curve'?: string | undefined; 'threat.indicator.file.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.file.x509.public_key_size'?: string | number | undefined; 'threat.indicator.file.x509.serial_number'?: string | undefined; 'threat.indicator.file.x509.signature_algorithm'?: string | undefined; 'threat.indicator.file.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.file.x509.subject.country'?: string[] | undefined; 'threat.indicator.file.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.file.x509.subject.locality'?: string[] | undefined; 'threat.indicator.file.x509.subject.organization'?: string[] | undefined; 'threat.indicator.file.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.file.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.file.x509.version_number'?: string | undefined; 'threat.indicator.first_seen'?: string | number | undefined; 'threat.indicator.geo.city_name'?: string | undefined; 'threat.indicator.geo.continent_code'?: string | undefined; 'threat.indicator.geo.continent_name'?: string | undefined; 'threat.indicator.geo.country_iso_code'?: string | undefined; 'threat.indicator.geo.country_name'?: string | undefined; 'threat.indicator.geo.location'?: string | { type: string; coordinates: number[]; } | { lat: number; lon: number; } | { location: number[]; } | { location: string; } | undefined; 'threat.indicator.geo.name'?: string | undefined; 'threat.indicator.geo.postal_code'?: string | undefined; 'threat.indicator.geo.region_iso_code'?: string | undefined; 'threat.indicator.geo.region_name'?: string | undefined; 'threat.indicator.geo.timezone'?: string | undefined; 'threat.indicator.ip'?: string | undefined; 'threat.indicator.last_seen'?: string | number | undefined; 'threat.indicator.marking.tlp'?: string | undefined; 'threat.indicator.marking.tlp_version'?: string | undefined; 'threat.indicator.modified_at'?: string | number | undefined; 'threat.indicator.port'?: string | number | undefined; 'threat.indicator.provider'?: string | undefined; 'threat.indicator.reference'?: string | undefined; 'threat.indicator.registry.data.bytes'?: string | undefined; 'threat.indicator.registry.data.strings'?: string[] | undefined; 'threat.indicator.registry.data.type'?: string | undefined; 'threat.indicator.registry.hive'?: string | undefined; 'threat.indicator.registry.key'?: string | undefined; 'threat.indicator.registry.path'?: string | undefined; 'threat.indicator.registry.value'?: string | undefined; 'threat.indicator.scanner_stats'?: string | number | undefined; 'threat.indicator.sightings'?: string | number | undefined; 'threat.indicator.type'?: string | undefined; 'threat.indicator.url.domain'?: string | undefined; 'threat.indicator.url.extension'?: string | undefined; 'threat.indicator.url.fragment'?: string | undefined; 'threat.indicator.url.full'?: string | undefined; 'threat.indicator.url.original'?: string | undefined; 'threat.indicator.url.password'?: string | undefined; 'threat.indicator.url.path'?: string | undefined; 'threat.indicator.url.port'?: string | number | undefined; 'threat.indicator.url.query'?: string | undefined; 'threat.indicator.url.registered_domain'?: string | undefined; 'threat.indicator.url.scheme'?: string | undefined; 'threat.indicator.url.subdomain'?: string | undefined; 'threat.indicator.url.top_level_domain'?: string | undefined; 'threat.indicator.url.username'?: string | undefined; 'threat.indicator.x509.alternative_names'?: string[] | undefined; 'threat.indicator.x509.issuer.common_name'?: string[] | undefined; 'threat.indicator.x509.issuer.country'?: string[] | undefined; 'threat.indicator.x509.issuer.distinguished_name'?: string | undefined; 'threat.indicator.x509.issuer.locality'?: string[] | undefined; 'threat.indicator.x509.issuer.organization'?: string[] | undefined; 'threat.indicator.x509.issuer.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.issuer.state_or_province'?: string[] | undefined; 'threat.indicator.x509.not_after'?: string | number | undefined; 'threat.indicator.x509.not_before'?: string | number | undefined; 'threat.indicator.x509.public_key_algorithm'?: string | undefined; 'threat.indicator.x509.public_key_curve'?: string | undefined; 'threat.indicator.x509.public_key_exponent'?: string | number | undefined; 'threat.indicator.x509.public_key_size'?: string | number | undefined; 'threat.indicator.x509.serial_number'?: string | undefined; 'threat.indicator.x509.signature_algorithm'?: string | undefined; 'threat.indicator.x509.subject.common_name'?: string[] | undefined; 'threat.indicator.x509.subject.country'?: string[] | undefined; 'threat.indicator.x509.subject.distinguished_name'?: string | undefined; 'threat.indicator.x509.subject.locality'?: string[] | undefined; 'threat.indicator.x509.subject.organization'?: string[] | undefined; 'threat.indicator.x509.subject.organizational_unit'?: string[] | undefined; 'threat.indicator.x509.subject.state_or_province'?: string[] | undefined; 'threat.indicator.x509.version_number'?: string | undefined; 'threat.software.alias'?: string[] | undefined; 'threat.software.id'?: string | undefined; 'threat.software.name'?: string | undefined; 'threat.software.platforms'?: string[] | undefined; 'threat.software.reference'?: string | undefined; 'threat.software.type'?: string | undefined; 'threat.tactic.id'?: string[] | undefined; 'threat.tactic.name'?: string[] | undefined; 'threat.tactic.reference'?: string[] | undefined; 'threat.technique.id'?: string[] | undefined; 'threat.technique.name'?: string[] | undefined; 'threat.technique.reference'?: string[] | undefined; 'threat.technique.subtechnique.id'?: string[] | undefined; 'threat.technique.subtechnique.name'?: string[] | undefined; 'threat.technique.subtechnique.reference'?: string[] | undefined; 'tls.cipher'?: string | undefined; 'tls.client.certificate'?: string | undefined; 'tls.client.certificate_chain'?: string[] | undefined; 'tls.client.hash.md5'?: string | undefined; 'tls.client.hash.sha1'?: string | undefined; 'tls.client.hash.sha256'?: string | undefined; 'tls.client.issuer'?: string | undefined; 'tls.client.ja3'?: string | undefined; 'tls.client.not_after'?: string | number | undefined; 'tls.client.not_before'?: string | number | undefined; 'tls.client.server_name'?: string | undefined; 'tls.client.subject'?: string | undefined; 'tls.client.supported_ciphers'?: string[] | undefined; 'tls.client.x509.alternative_names'?: string[] | undefined; 'tls.client.x509.issuer.common_name'?: string[] | undefined; 'tls.client.x509.issuer.country'?: string[] | undefined; 'tls.client.x509.issuer.distinguished_name'?: string | undefined; 'tls.client.x509.issuer.locality'?: string[] | undefined; 'tls.client.x509.issuer.organization'?: string[] | undefined; 'tls.client.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.client.x509.issuer.state_or_province'?: string[] | undefined; 'tls.client.x509.not_after'?: string | number | undefined; 'tls.client.x509.not_before'?: string | number | undefined; 'tls.client.x509.public_key_algorithm'?: string | undefined; 'tls.client.x509.public_key_curve'?: string | undefined; 'tls.client.x509.public_key_exponent'?: string | number | undefined; 'tls.client.x509.public_key_size'?: string | number | undefined; 'tls.client.x509.serial_number'?: string | undefined; 'tls.client.x509.signature_algorithm'?: string | undefined; 'tls.client.x509.subject.common_name'?: string[] | undefined; 'tls.client.x509.subject.country'?: string[] | undefined; 'tls.client.x509.subject.distinguished_name'?: string | undefined; 'tls.client.x509.subject.locality'?: string[] | undefined; 'tls.client.x509.subject.organization'?: string[] | undefined; 'tls.client.x509.subject.organizational_unit'?: string[] | undefined; 'tls.client.x509.subject.state_or_province'?: string[] | undefined; 'tls.client.x509.version_number'?: string | undefined; 'tls.curve'?: string | undefined; 'tls.established'?: boolean | undefined; 'tls.next_protocol'?: string | undefined; 'tls.resumed'?: boolean | undefined; 'tls.server.certificate'?: string | undefined; 'tls.server.certificate_chain'?: string[] | undefined; 'tls.server.hash.md5'?: string | undefined; 'tls.server.hash.sha1'?: string | undefined; 'tls.server.hash.sha256'?: string | undefined; 'tls.server.issuer'?: string | undefined; 'tls.server.ja3s'?: string | undefined; 'tls.server.not_after'?: string | number | undefined; 'tls.server.not_before'?: string | number | undefined; 'tls.server.subject'?: string | undefined; 'tls.server.x509.alternative_names'?: string[] | undefined; 'tls.server.x509.issuer.common_name'?: string[] | undefined; 'tls.server.x509.issuer.country'?: string[] | undefined; 'tls.server.x509.issuer.distinguished_name'?: string | undefined; 'tls.server.x509.issuer.locality'?: string[] | undefined; 'tls.server.x509.issuer.organization'?: string[] | undefined; 'tls.server.x509.issuer.organizational_unit'?: string[] | undefined; 'tls.server.x509.issuer.state_or_province'?: string[] | undefined; 'tls.server.x509.not_after'?: string | number | undefined; 'tls.server.x509.not_before'?: string | number | undefined; 'tls.server.x509.public_key_algorithm'?: string | undefined; 'tls.server.x509.public_key_curve'?: string | undefined; 'tls.server.x509.public_key_exponent'?: string | number | undefined; 'tls.server.x509.public_key_size'?: string | number | undefined; 'tls.server.x509.serial_number'?: string | undefined; 'tls.server.x509.signature_algorithm'?: string | undefined; 'tls.server.x509.subject.common_name'?: string[] | undefined; 'tls.server.x509.subject.country'?: string[] | undefined; 'tls.server.x509.subject.distinguished_name'?: string | undefined; 'tls.server.x509.subject.locality'?: string[] | undefined; 'tls.server.x509.subject.organization'?: string[] | undefined; 'tls.server.x509.subject.organizational_unit'?: string[] | undefined; 'tls.server.x509.subject.state_or_province'?: string[] | undefined; 'tls.server.x509.version_number'?: string | undefined; 'tls.version'?: string | undefined; 'tls.version_protocol'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.id'?: string | undefined; 'url.domain'?: string | undefined; 'url.extension'?: string | undefined; 'url.fragment'?: string | undefined; 'url.full'?: string | undefined; 'url.original'?: string | undefined; 'url.password'?: string | undefined; 'url.path'?: string | undefined; 'url.port'?: string | number | undefined; 'url.query'?: string | undefined; 'url.registered_domain'?: string | undefined; 'url.scheme'?: string | undefined; 'url.subdomain'?: string | undefined; 'url.top_level_domain'?: string | undefined; 'url.username'?: string | undefined; 'user.changes.domain'?: string | undefined; 'user.changes.email'?: string | undefined; 'user.changes.full_name'?: string | undefined; 'user.changes.group.domain'?: string | undefined; 'user.changes.group.id'?: string | undefined; 'user.changes.group.name'?: string | undefined; 'user.changes.hash'?: string | undefined; 'user.changes.id'?: string | undefined; 'user.changes.name'?: string | undefined; 'user.changes.roles'?: string[] | undefined; 'user.domain'?: string | undefined; 'user.effective.domain'?: string | undefined; 'user.effective.email'?: string | undefined; 'user.effective.full_name'?: string | undefined; 'user.effective.group.domain'?: string | undefined; 'user.effective.group.id'?: string | undefined; 'user.effective.group.name'?: string | undefined; 'user.effective.hash'?: string | undefined; 'user.effective.id'?: string | undefined; 'user.effective.name'?: string | undefined; 'user.effective.roles'?: string[] | undefined; 'user.email'?: string | undefined; 'user.full_name'?: string | undefined; 'user.group.domain'?: string | undefined; 'user.group.id'?: string | undefined; 'user.group.name'?: string | undefined; 'user.hash'?: string | undefined; 'user.id'?: string | undefined; 'user.name'?: string | undefined; 'user.risk.calculated_level'?: string | undefined; 'user.risk.calculated_score'?: number | undefined; 'user.risk.calculated_score_norm'?: number | undefined; 'user.risk.static_level'?: string | undefined; 'user.risk.static_score'?: number | undefined; 'user.risk.static_score_norm'?: number | undefined; 'user.roles'?: string[] | undefined; 'user.target.domain'?: string | undefined; 'user.target.email'?: string | undefined; 'user.target.full_name'?: string | undefined; 'user.target.group.domain'?: string | undefined; 'user.target.group.id'?: string | undefined; 'user.target.group.name'?: string | undefined; 'user.target.hash'?: string | undefined; 'user.target.id'?: string | undefined; 'user.target.name'?: string | undefined; 'user.target.roles'?: string[] | undefined; 'user_agent.device.name'?: string | undefined; 'user_agent.name'?: string | undefined; 'user_agent.original'?: string | undefined; 'user_agent.os.family'?: string | undefined; 'user_agent.os.full'?: string | undefined; 'user_agent.os.kernel'?: string | undefined; 'user_agent.os.name'?: string | undefined; 'user_agent.os.platform'?: string | undefined; 'user_agent.os.type'?: string | undefined; 'user_agent.os.version'?: string | undefined; 'user_agent.version'?: string | undefined; 'vulnerability.category'?: string[] | undefined; 'vulnerability.classification'?: string | undefined; 'vulnerability.description'?: string | undefined; 'vulnerability.enumeration'?: string | undefined; 'vulnerability.id'?: string | undefined; 'vulnerability.reference'?: string | undefined; 'vulnerability.report_id'?: string | undefined; 'vulnerability.scanner.vendor'?: string | undefined; 'vulnerability.score.base'?: number | undefined; 'vulnerability.score.environmental'?: number | undefined; 'vulnerability.score.temporal'?: number | undefined; 'vulnerability.score.version'?: string | undefined; 'vulnerability.severity'?: string | undefined; } & {} & { 'ecs.version'?: string | undefined; 'kibana.alert.risk_score'?: number | undefined; 'kibana.alert.rule.author'?: string | undefined; 'kibana.alert.rule.created_at'?: string | number | undefined; 'kibana.alert.rule.created_by'?: string | undefined; 'kibana.alert.rule.description'?: string | undefined; 'kibana.alert.rule.enabled'?: string | undefined; 'kibana.alert.rule.from'?: string | undefined; 'kibana.alert.rule.interval'?: string | undefined; 'kibana.alert.rule.license'?: string | undefined; 'kibana.alert.rule.note'?: string | undefined; 'kibana.alert.rule.references'?: string[] | undefined; 'kibana.alert.rule.rule_id'?: string | undefined; 'kibana.alert.rule.rule_name_override'?: string | undefined; 'kibana.alert.rule.to'?: string | undefined; 'kibana.alert.rule.type'?: string | undefined; 'kibana.alert.rule.updated_at'?: string | number | undefined; 'kibana.alert.rule.updated_by'?: string | undefined; 'kibana.alert.rule.version'?: string | undefined; 'kibana.alert.severity'?: string | undefined; 'kibana.alert.suppression.docs_count'?: string | number | undefined; 'kibana.alert.suppression.end'?: string | number | undefined; 'kibana.alert.suppression.start'?: string | number | undefined; 'kibana.alert.suppression.terms.field'?: string[] | undefined; 'kibana.alert.suppression.terms.value'?: string[] | undefined; 'kibana.alert.system_status'?: string | undefined; 'kibana.alert.workflow_reason'?: string | undefined; 'kibana.alert.workflow_status_updated_at'?: string | number | undefined; 'kibana.alert.workflow_user'?: string | undefined; }" ], "path": "packages/kbn-alerts-as-data-utils/src/schemas/generated/security_schema.ts", "deprecated": false, diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 33c97766fbba29..53979fa0093fbd 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: 2024-01-31 +date: 2024-02-05 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 535776073ea4ba..67b9fbffb72e26 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: 2024-01-31 +date: 2024-02-05 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 476d2f7c180427..c09e2d6791be3a 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: 2024-01-31 +date: 2024-02-05 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 cd82320f7d7f53..3cd80ec0616620 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index 96de65e982df62..26bcd8cf3185e8 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.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 c2d999466361d0..4f964b5744bc28 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: 2024-01-31 +date: 2024-02-05 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 dbf0453c090669..5d9128b1f5b997 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: 2024-01-31 +date: 2024-02-05 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 7a208b3b8b11a1..edaed04457277f 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: 2024-01-31 +date: 2024-02-05 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 5f25e6139169af..4e5f9fd551977f 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index f1979024dc4ac9..e918746be1ca88 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: 2024-01-31 +date: 2024-02-05 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 4fd92d0c0f9807..b5870c26be1e0d 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: 2024-01-31 +date: 2024-02-05 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 2e3d2fced01c73..42cff415373d53 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: 2024-01-31 +date: 2024-02-05 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 860c588876470f..6fe9328e1cf071 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: 2024-01-31 +date: 2024-02-05 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 96419db02fd347..5418c9ed0d2838 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index 92118e7115bfc9..63ff33fd37043d 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index 6b23bed5ff3d48..0f78b04ee28d8d 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index f23eabfb8b0a49..5984a997bb2ff8 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index c152d4fc65eb9b..5baa86c9f20899 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: 2024-01-31 +date: 2024-02-05 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 79e2385b776c23..8e9905b1c45deb 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: 2024-01-31 +date: 2024-02-05 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 b076e16380999e..e08c8017692409 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: 2024-01-31 +date: 2024-02-05 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 96248a86c2b47c..0eeadcc2cc1371 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: 2024-01-31 +date: 2024-02-05 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 4d56a3343fdbff..cb5c58847d7068 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: 2024-01-31 +date: 2024-02-05 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 ae097d2dff5295..8619e193c5ba55 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: 2024-01-31 +date: 2024-02-05 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 0f6384e383c6d6..e3345a36fe93a2 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: 2024-01-31 +date: 2024-02-05 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 b6eb8e38845b31..d8cd1780e5baba 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: 2024-01-31 +date: 2024-02-05 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.devdocs.json b/api_docs/kbn_code_editor.devdocs.json index f6bb8617b9148c..876090f16122a3 100644 --- a/api_docs/kbn_code_editor.devdocs.json +++ b/api_docs/kbn_code_editor.devdocs.json @@ -331,6 +331,23 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/code-editor", + "id": "def-common.CodeEditorProps.codeActions", + "type": "Object", + "tags": [], + "label": "codeActions", + "description": [ + "\nCodeAction provider for code actions on markers feedback\nDocumentation for the provider can be found here:\nhttps://microsoft.github.io/monaco-editor/docs.html#interfaces/languages.CodeActionProvider.html" + ], + "signature": [ + "languages", + ".CodeActionProvider | undefined" + ], + "path": "packages/shared-ux/code_editor/impl/code_editor.tsx", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/code-editor", "id": "def-common.CodeEditorProps.editorWillMount", diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 6fc721f91cdb68..57373afbf39921 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.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 | |-------------------|-----------|------------------------|-----------------| -| 35 | 0 | 15 | 0 | +| 36 | 0 | 15 | 0 | ## Common diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index 1fdfe0c4356fa3..0f40b430d78b47 100644 --- a/api_docs/kbn_code_editor_mock.mdx +++ b/api_docs/kbn_code_editor_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock title: "@kbn/code-editor-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mock plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock'] --- import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 832a04c1c673eb..47bb4034f66da1 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 1ea5c68aa7f004..11b1ec5653f509 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: 2024-01-31 +date: 2024-02-05 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 d80748a3f547fd..94fffbef2428f3 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: 2024-01-31 +date: 2024-02-05 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 25b530a255954b..c6f09d76ac318f 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: 2024-01-31 +date: 2024-02-05 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 da1ec235b7bdf5..fcba42083c3900 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: 2024-01-31 +date: 2024-02-05 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 253562776665e5..58c38d680ae32c 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: 2024-01-31 +date: 2024-02-05 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 a3881f6bc4029f..8b3a133c415d3d 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: 2024-01-31 +date: 2024-02-05 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 27f52cc21c28f0..d184fe171f9631 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index c774550320b772..6a9fff2b01fd29 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index b855b72b03b610..aed45d05e0b4bc 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: 2024-01-31 +date: 2024-02-05 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 006e4a85217092..99e2a5e7430fb2 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: 2024-01-31 +date: 2024-02-05 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 9820f4094ca550..085eeba21233c0 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: 2024-01-31 +date: 2024-02-05 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 807061a7a8a7f0..7c3ff42ee47647 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: 2024-01-31 +date: 2024-02-05 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 8b8ad6d6335c48..48fdf002921920 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: 2024-01-31 +date: 2024-02-05 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 68a251e702bf6d..a27df9d7828080 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: 2024-01-31 +date: 2024-02-05 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 b0634e541d2636..99a9281c00401a 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: 2024-01-31 +date: 2024-02-05 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 2314e896b72e1f..0b8f7f88453338 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: 2024-01-31 +date: 2024-02-05 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 44a3936950a92e..13226c267f3504 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: 2024-01-31 +date: 2024-02-05 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 4ef23b90e8bf3b..240fca1cc89021 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: 2024-01-31 +date: 2024-02-05 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 c91f4775b2d2b1..637abcad8169fd 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: 2024-01-31 +date: 2024-02-05 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 752eb3a247cd44..6c4d4049bbd0c4 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: 2024-01-31 +date: 2024-02-05 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 0224539e64b011..669facc03e0df8 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: 2024-01-31 +date: 2024-02-05 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 861b419cdfa157..4b6c9261c339a0 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: 2024-01-31 +date: 2024-02-05 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 769822a9698c3d..70608e957e622d 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: 2024-01-31 +date: 2024-02-05 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 4085e17f1c4b94..1803b3d35cd18b 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: 2024-01-31 +date: 2024-02-05 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 a4a0018f9ab9e6..0d26530acef13d 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: 2024-01-31 +date: 2024-02-05 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 0f4cf32c7f8087..b72ce6afa066e1 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: 2024-01-31 +date: 2024-02-05 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 8bd78d92722977..fa7d37327bd2e3 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: 2024-01-31 +date: 2024-02-05 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 223019dad18217..f420dc4af922e7 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: 2024-01-31 +date: 2024-02-05 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 380f3e175200d1..6df201c482ea0c 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: 2024-01-31 +date: 2024-02-05 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 230790130ff2c9..1cf9f45f60b695 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: 2024-01-31 +date: 2024-02-05 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 372eaf7021c44c..ce2fe344b79e9f 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: 2024-01-31 +date: 2024-02-05 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 fb1e529ec55293..21c4a202f3ecff 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: 2024-01-31 +date: 2024-02-05 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 ee549cb466db6b..d1db64ae3eeb92 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: 2024-01-31 +date: 2024-02-05 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 4e1fcd0f7bbbe0..643ca5297f12c4 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: 2024-01-31 +date: 2024-02-05 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 04c225fb74db25..20c78e358148c6 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: 2024-01-31 +date: 2024-02-05 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 9360f425fb3fd1..709e6ffcc405cd 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: 2024-01-31 +date: 2024-02-05 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 f950163dfbfacd..febfdbce68ee71 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: 2024-01-31 +date: 2024-02-05 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 c8eec4292dfbe7..213ce432ee355f 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: 2024-01-31 +date: 2024-02-05 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 47057af1db19cb..1f1d9f56ac4b55 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: 2024-01-31 +date: 2024-02-05 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 a8ae13eb9c619d..fcce2aac0cd140 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: 2024-01-31 +date: 2024-02-05 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 6a2255991f5061..2f842c86b8d15b 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: 2024-01-31 +date: 2024-02-05 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 49183fed2363f5..c9b4d50c9c1848 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: 2024-01-31 +date: 2024-02-05 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 1883515f550b84..b865e2ed42fe37 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: 2024-01-31 +date: 2024-02-05 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 1ea25d7c195d3b..d9200245f0e24b 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: 2024-01-31 +date: 2024-02-05 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 ab146389f3029c..8eafd0bb2a6211 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: 2024-01-31 +date: 2024-02-05 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 910c203ab9ee7a..9b2e9efece93b3 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: 2024-01-31 +date: 2024-02-05 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 81fa99b5fac742..c58ea72e99d53b 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: 2024-01-31 +date: 2024-02-05 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 da7f913f514db8..b4498f2c5b8034 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: 2024-01-31 +date: 2024-02-05 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 9b4305d1a4b533..5da74c02ad61fd 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: 2024-01-31 +date: 2024-02-05 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 16b181fccdc76c..e381656d84658b 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: 2024-01-31 +date: 2024-02-05 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 913d87132e8aab..0ab40b56a69c80 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: 2024-01-31 +date: 2024-02-05 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 f11861bdec6e15..0ee4592050831e 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: 2024-01-31 +date: 2024-02-05 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 21d42834065c03..1bfdbfb770d345 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: 2024-01-31 +date: 2024-02-05 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 61e1ce8c71ecca..11af9db0eac134 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: 2024-01-31 +date: 2024-02-05 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 a38a8c7b088f70..a6b51fdedbbe88 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: 2024-01-31 +date: 2024-02-05 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 145e7f42c1a028..ae201fca94325e 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: 2024-01-31 +date: 2024-02-05 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 9f4ad8e08c80ba..495af90e7bd6d3 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: 2024-01-31 +date: 2024-02-05 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 fa7c7298cc6e84..503015fe01917a 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: 2024-01-31 +date: 2024-02-05 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 279587b90b2fa9..3d303aee723677 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: 2024-01-31 +date: 2024-02-05 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 8e47ad4ad7f1f0..cb6e6d62bb4245 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: 2024-01-31 +date: 2024-02-05 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 f37da23e84b48c..8ca335a6fdec31 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: 2024-01-31 +date: 2024-02-05 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 fa0700e0fb9952..bee1f05b344d17 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: 2024-01-31 +date: 2024-02-05 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 f7d1b5038b3ff8..63b81da9af1816 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: 2024-01-31 +date: 2024-02-05 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 eb2bbf2c47ce57..1d5b562f4305b7 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: 2024-01-31 +date: 2024-02-05 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 67f0ca8617cc8e..ef26f0992151f4 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: 2024-01-31 +date: 2024-02-05 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 75c06993ff9a3f..07804abbd98956 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: 2024-01-31 +date: 2024-02-05 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 395e547c5164be..8dfd42d325bd85 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: 2024-01-31 +date: 2024-02-05 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 728afb7f49d413..5a58f115239249 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: 2024-01-31 +date: 2024-02-05 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 c3c0fbb4d97713..00a53e7f2f3c0d 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: 2024-01-31 +date: 2024-02-05 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 93ab1153fa2d6f..399d22d78241f8 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: 2024-01-31 +date: 2024-02-05 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 c613b02ec1d2b3..9ce158d8de3882 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: 2024-01-31 +date: 2024-02-05 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 0e5d5569cae07f..e88b5c428fdfe7 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: 2024-01-31 +date: 2024-02-05 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 ab96ccea2a9bd3..048a8e1aada1e6 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: 2024-01-31 +date: 2024-02-05 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 c3e7f42952aadf..463245b05197f3 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: 2024-01-31 +date: 2024-02-05 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 d1d4d7d7deaf47..7f9ae9e9f238df 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: 2024-01-31 +date: 2024-02-05 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 ab4ef9436cd162..cccbe783e8924a 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: 2024-01-31 +date: 2024-02-05 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 e4a9daa6f3325d..89fa3f368d3ab5 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: 2024-01-31 +date: 2024-02-05 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 d5c2376e1c1d24..e70790787af076 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: 2024-01-31 +date: 2024-02-05 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 508b1e38252b24..caf95c21400b8d 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: 2024-01-31 +date: 2024-02-05 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 5e85f5cdf0563c..fa1e35c7da8722 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: 2024-01-31 +date: 2024-02-05 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 30c7373bbc070d..dfcdaf31816269 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: 2024-01-31 +date: 2024-02-05 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 2291f409008d82..570b81aa1004ac 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: 2024-01-31 +date: 2024-02-05 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 22194d20348433..d6aa4262b7c1d8 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: 2024-01-31 +date: 2024-02-05 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 1d5a6de2e0a07d..c66ca8f93bd5ae 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: 2024-01-31 +date: 2024-02-05 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 bd4178b6b6c685..48a3a858e082bc 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: 2024-01-31 +date: 2024-02-05 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 78d2d8092c7cde..c1f320a85ef9f1 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: 2024-01-31 +date: 2024-02-05 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 1a2d2046f8ce3c..b8acd7e28a07b8 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: 2024-01-31 +date: 2024-02-05 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 5ba45eb6090250..30fadd80ee2c2b 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: 2024-01-31 +date: 2024-02-05 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 8ee1c32c6b9fcb..ae167452b9c4bf 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: 2024-01-31 +date: 2024-02-05 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 c93e63133f13b9..859fde44f659e4 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: 2024-01-31 +date: 2024-02-05 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 4684c7d48c03da..a11d89ffdf5256 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: 2024-01-31 +date: 2024-02-05 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 7449a1de2435f2..af87e39c4fb547 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: 2024-01-31 +date: 2024-02-05 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 c6e346aecffbdd..7acdf5d6b67739 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: 2024-01-31 +date: 2024-02-05 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 6ccfb0e474b6e8..85d8b09eaecf16 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: 2024-01-31 +date: 2024-02-05 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 0c072da6f3d816..e71e1227de8e5d 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: 2024-01-31 +date: 2024-02-05 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 922f7453a2a13d..329f56a5b98f22 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: 2024-01-31 +date: 2024-02-05 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 28dbbc6e87ce36..f450aed2704556 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: 2024-01-31 +date: 2024-02-05 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 f8ad568a4ef206..2a382a6869a5df 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: 2024-01-31 +date: 2024-02-05 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 ff24a7d4d56cd8..b5f5923dfdc699 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: 2024-01-31 +date: 2024-02-05 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 14c40a263393d7..69e2f5ae9221d2 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: 2024-01-31 +date: 2024-02-05 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 ff0a2d25513ed5..96311aa2a14f99 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: 2024-01-31 +date: 2024-02-05 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 88d0bfb50ecfaf..bc57b527f09ce1 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: 2024-01-31 +date: 2024-02-05 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 fdc0f7ab871a09..021b70c1572417 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: 2024-01-31 +date: 2024-02-05 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 cad05e94b93d58..5f67b143886eb1 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: 2024-01-31 +date: 2024-02-05 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 be69d8a159c9ae..a43ba543099634 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: 2024-01-31 +date: 2024-02-05 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 a0f401921be03b..ea3aa6a7ac3b82 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: 2024-01-31 +date: 2024-02-05 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 dcde783dfae870..7e6da0c36577f2 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: 2024-01-31 +date: 2024-02-05 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 886d3d59c003fb..f6ad6b2fd39392 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: 2024-01-31 +date: 2024-02-05 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 5e339a3f8657b6..e30615037175d7 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: 2024-01-31 +date: 2024-02-05 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 a49d4be851b118..689f69a72b202f 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: 2024-01-31 +date: 2024-02-05 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 aa98083964194c..8f31edf5464cce 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: 2024-01-31 +date: 2024-02-05 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 ad52b5a57492b8..dadbd95fc3b3c0 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: 2024-01-31 +date: 2024-02-05 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 5f2533699653a7..3830a7288c1893 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: 2024-01-31 +date: 2024-02-05 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 883bd1abc19013..f3ec8886f06f0e 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: 2024-01-31 +date: 2024-02-05 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 5055864bcba149..136881ab4fc049 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: 2024-01-31 +date: 2024-02-05 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 dabcb030c1676d..2c7f9c4e87a7b0 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 74ce6ce55c85bb..4279237d365ec2 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index ec7c864e1abee1..f73413770fdab6 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 17062749f1534e..c02d32dfcbe7db 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: 2024-01-31 +date: 2024-02-05 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 4440edc52c18e0..8dee41696dc885 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: 2024-01-31 +date: 2024-02-05 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 7424ad19825170..471f1c7ca59c8d 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: 2024-01-31 +date: 2024-02-05 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 53f52941a66b67..295750acd22df1 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: 2024-01-31 +date: 2024-02-05 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 2d31d5ef2f997b..8107b69f7a95e4 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: 2024-01-31 +date: 2024-02-05 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 536b88f6123264..43ae0f465cc6c8 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: 2024-01-31 +date: 2024-02-05 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 0710d0de7db147..f54bf8199c7143 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: 2024-01-31 +date: 2024-02-05 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 ff84c6182a2ac5..5802d71e58df65 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: 2024-01-31 +date: 2024-02-05 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 aba750d6dadd7f..a29819e2f6685d 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: 2024-01-31 +date: 2024-02-05 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 1d78520a3ed717..0a08b3a9b8dbec 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: 2024-01-31 +date: 2024-02-05 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 32136afe4148a3..fcfb101ba2166b 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: 2024-01-31 +date: 2024-02-05 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 a5a8f6caa2058b..9a857a32e3c466 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: 2024-01-31 +date: 2024-02-05 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 610301d9c0df25..232c54fbe32a17 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: 2024-01-31 +date: 2024-02-05 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 fc1618ae4b8f86..a21aaeb1e3fd47 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: 2024-01-31 +date: 2024-02-05 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 6b62598c9092c3..f53d958c897361 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: 2024-01-31 +date: 2024-02-05 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 191f799b15445b..1d3c0d9932aa5a 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: 2024-01-31 +date: 2024-02-05 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 f7e8559a26848e..74bd508dcfff6a 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: 2024-01-31 +date: 2024-02-05 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 b7c2976ce30e9a..53b74e285c9b51 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: 2024-01-31 +date: 2024-02-05 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 44dc7343120e18..9f46580197479d 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: 2024-01-31 +date: 2024-02-05 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 2892cbb5ddb717..6c07be3c59204e 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: 2024-01-31 +date: 2024-02-05 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 cd90f0c5ff1628..117f4d14d0b385 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: 2024-01-31 +date: 2024-02-05 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 afc0f84ca3de49..01f35c9cf4dba2 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: 2024-01-31 +date: 2024-02-05 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 91a96990f6525a..96c8759398e3b6 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: 2024-01-31 +date: 2024-02-05 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 d394bbe89555f7..069dc11ac83fa4 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: 2024-01-31 +date: 2024-02-05 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 9724411aaea259..8c6320483cc0d2 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: 2024-01-31 +date: 2024-02-05 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 a7618dec2e7f95..d788071b4e79de 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: 2024-01-31 +date: 2024-02-05 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 1e72332b5fbf16..cf5dbdb9bec10f 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: 2024-01-31 +date: 2024-02-05 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 df1b7846414f86..f96d99b2712c30 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: 2024-01-31 +date: 2024-02-05 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 6c2e631d9be110..1c2687eab4c41f 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: 2024-01-31 +date: 2024-02-05 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 8d0bfc27e0d158..9222a06006bc3d 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: 2024-01-31 +date: 2024-02-05 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 ea45d7db1093ae..b067b518bbb78b 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: 2024-01-31 +date: 2024-02-05 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 2199b09420cfeb..448474357be154 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: 2024-01-31 +date: 2024-02-05 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 c9135727f4e4b0..2a969cdcb97534 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: 2024-01-31 +date: 2024-02-05 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 0a26eb5717232e..69043de162426d 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: 2024-01-31 +date: 2024-02-05 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 f04a87f2a7e3b1..4a93b609ae40b8 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: 2024-01-31 +date: 2024-02-05 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 b29db1f3dbe0a7..220a0ff825f7a0 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: 2024-01-31 +date: 2024-02-05 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 a9fd4e50889710..54d9ccf2433e92 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: 2024-01-31 +date: 2024-02-05 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 3a61b04b4f3913..4aa4d401fcc7c5 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: 2024-01-31 +date: 2024-02-05 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 a6555817244c55..46b1aa5311da1d 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: 2024-01-31 +date: 2024-02-05 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 533e19848a3f33..68f3b406eee226 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: 2024-01-31 +date: 2024-02-05 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 f0bb6d14258e6e..0f2b582737c480 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: 2024-01-31 +date: 2024-02-05 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 ea5b866165a06a..6a145fb5186cea 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: 2024-01-31 +date: 2024-02-05 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 39d688491cd953..aafdb5d85b8c4a 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: 2024-01-31 +date: 2024-02-05 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 4189a5041ba0ca..6ca33ad6ff0ee3 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: 2024-01-31 +date: 2024-02-05 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 3c77253890d882..479fa03376589a 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: 2024-01-31 +date: 2024-02-05 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 40cf742c977514..2c4a4980862e45 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: 2024-01-31 +date: 2024-02-05 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 722863fb4a633e..22f27666a8ff09 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: 2024-01-31 +date: 2024-02-05 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 885b712bdaccda..bf014ccd508ba8 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: 2024-01-31 +date: 2024-02-05 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 66eb39733be262..7d2535d15e6cb9 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: 2024-01-31 +date: 2024-02-05 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 e73c31fcb13c6e..48ee05a7b6c1fa 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: 2024-01-31 +date: 2024-02-05 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 70ff64fe82c8e6..c688af99febd53 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: 2024-01-31 +date: 2024-02-05 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 ea9bed0ea6c4ea..332d853096d5b9 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: 2024-01-31 +date: 2024-02-05 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 ad021e5de8f7d9..4dd86d431f3fa6 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index d902aa26a83050..c824f7d2f2f116 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 64143a482a366d..9c548b1a60feb5 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: 2024-01-31 +date: 2024-02-05 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 4cdbb302060a0f..d822f007fc73bb 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx index 59882cad2f8770..e1bb07cddd1336 100644 --- a/api_docs/kbn_data_forge.mdx +++ b/api_docs/kbn_data_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge title: "@kbn/data-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-forge plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge'] --- import kbnDataForgeObj from './kbn_data_forge.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index a8b29d8f916794..f8e79d936ab3cf 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx index 6f3148d2cea676..401d540c8bd02f 100644 --- a/api_docs/kbn_data_stream_adapter.mdx +++ b/api_docs/kbn_data_stream_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter title: "@kbn/data-stream-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-stream-adapter plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index fc03ed3ccb3de7..4220ddb3ee54a3 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: 2024-01-31 +date: 2024-02-05 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 8ba108bfa7fbdb..fdb92a00c22ae8 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: 2024-01-31 +date: 2024-02-05 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 d13d470f5c44c9..52566968ce5b62 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: 2024-01-31 +date: 2024-02-05 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 9fe880d9db55c6..7d10abdbb4533f 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.devdocs.json b/api_docs/kbn_deeplinks_ml.devdocs.json index 855a0b5a16ee30..3992cac4b2a4da 100644 --- a/api_docs/kbn_deeplinks_ml.devdocs.json +++ b/api_docs/kbn_deeplinks_ml.devdocs.json @@ -45,7 +45,7 @@ "label": "DeepLinkId", "description": [], "signature": [ - "\"ml\" | \"ml:nodes\" | \"ml:notifications\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:singleMetricViewer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:logRateAnalysis\" | \"ml:logPatternAnalysis\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\"" + "\"ml\" | \"ml:nodes\" | \"ml:notifications\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:singleMetricViewer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:logRateAnalysis\" | \"ml:logPatternAnalysis\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\"" ], "path": "packages/deeplinks/ml/deep_links.ts", "deprecated": false, @@ -60,7 +60,7 @@ "label": "LinkId", "description": [], "signature": [ - "\"nodes\" | \"notifications\" | \"overview\" | \"memoryUsage\" | \"settings\" | \"dataVisualizer\" | \"anomalyDetection\" | \"anomalyExplorer\" | \"singleMetricViewer\" | \"dataDrift\" | \"dataFrameAnalytics\" | \"resultExplorer\" | \"analyticsMap\" | \"aiOps\" | \"logRateAnalysis\" | \"logPatternAnalysis\" | \"changePointDetections\" | \"modelManagement\" | \"nodesOverview\" | \"fileUpload\" | \"indexDataVisualizer\" | \"calendarSettings\" | \"filterListsSettings\"" + "\"nodes\" | \"notifications\" | \"overview\" | \"memoryUsage\" | \"settings\" | \"dataVisualizer\" | \"anomalyDetection\" | \"anomalyExplorer\" | \"singleMetricViewer\" | \"dataDrift\" | \"dataFrameAnalytics\" | \"resultExplorer\" | \"analyticsMap\" | \"aiOps\" | \"logRateAnalysis\" | \"logPatternAnalysis\" | \"changePointDetections\" | \"modelManagement\" | \"nodesOverview\" | \"esqlDataVisualizer\" | \"fileUpload\" | \"indexDataVisualizer\" | \"calendarSettings\" | \"filterListsSettings\"" ], "path": "packages/deeplinks/ml/deep_links.ts", "deprecated": false, diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index a6249c86432472..548d2fc22849a5 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: 2024-01-31 +date: 2024-02-05 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 83b03ecdd9689c..e9ee5cc10fe8a4 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: 2024-01-31 +date: 2024-02-05 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 aa9ea0f95e8fa9..04418131486ce6 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: 2024-01-31 +date: 2024-02-05 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 13216ccd2afb58..d3a3a59d1fd871 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: 2024-01-31 +date: 2024-02-05 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 69ed6c26f539e8..b67b78cdc98c99 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: 2024-01-31 +date: 2024-02-05 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 6a790aeb510ef6..41cc7079fc30ea 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: 2024-01-31 +date: 2024-02-05 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.devdocs.json b/api_docs/kbn_default_nav_ml.devdocs.json index 880d8a2e9439d9..fe1e75e737bddb 100644 --- a/api_docs/kbn_default_nav_ml.devdocs.json +++ b/api_docs/kbn_default_nav_ml.devdocs.json @@ -174,6 +174,8 @@ "signature": [ "({ link: \"ml:overview\"; } | { link: \"ml:notifications\"; } | { link: \"ml:memoryUsage\"; } | { title: string; link: \"ml:anomalyDetection\"; renderAs: \"accordion\"; children: ({ title: string; link: \"ml:anomalyDetection\"; breadcrumbStatus: \"hidden\"; } | { link: \"ml:anomalyExplorer\"; } | { link: \"ml:singleMetricViewer\"; } | { link: \"ml:settings\"; })[]; } | { link: \"ml:dataFrameAnalytics\"; title: string; renderAs: \"accordion\"; children: ({ title: string; link: \"ml:dataFrameAnalytics\"; breadcrumbStatus: \"hidden\"; } | { link: \"ml:resultExplorer\"; } | { link: \"ml:analyticsMap\"; })[]; } | { id: \"model_management\"; title: string; renderAs: \"accordion\"; children: ({ link: \"ml:nodesOverview\"; } | { link: \"ml:nodes\"; })[]; } | { id: \"data_visualizer\"; title: string; renderAs: \"accordion\"; children: ({ title: string; link: \"ml:fileUpload\"; } | { title: string; link: \"ml:indexDataVisualizer\"; getIsActive: ({ pathNameSerialized, prepend }: { pathNameSerialized: string; location: ", "Location", + "; prepend: (path: string) => string; }) => boolean; } | { title: string; link: \"ml:esqlDataVisualizer\"; getIsActive: ({ pathNameSerialized, prepend }: { pathNameSerialized: string; location: ", + "Location", "; prepend: (path: string) => string; }) => boolean; } | { title: string; link: \"ml:dataDrift\"; getIsActive: ({ pathNameSerialized, prepend }: { pathNameSerialized: string; location: ", "Location", "; prepend: (path: string) => string; }) => boolean; })[]; } | { id: \"aiops_labs\"; title: string; renderAs: \"accordion\"; children: ({ link: \"ml:logRateAnalysis\"; getIsActive: ({ pathNameSerialized, prepend }: { pathNameSerialized: string; location: ", diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index 86cdebcaef6a2f..dcd583132287b0 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: 2024-01-31 +date: 2024-02-05 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 4cfb37e5dee337..7567dc7b9fce9b 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: 2024-01-31 +date: 2024-02-05 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 dd5624cfe0eafd..870bcdac50390f 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: 2024-01-31 +date: 2024-02-05 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 7e1b068de1fd36..d7c9213994ba22 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: 2024-01-31 +date: 2024-02-05 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 7b420e212a10e6..419ce240c97daf 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: 2024-01-31 +date: 2024-02-05 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 11e99cb478283d..d61a0cdfe035a2 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: 2024-01-31 +date: 2024-02-05 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 bdd2a60d032a1b..c0a97a9c0c4037 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: 2024-01-31 +date: 2024-02-05 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 41e6503b160284..e821f7344268c1 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: 2024-01-31 +date: 2024-02-05 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 36d2dcdca96d67..17dcc241c5add9 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: 2024-01-31 +date: 2024-02-05 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 f8948c530abc41..60771cb52e782f 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: 2024-01-31 +date: 2024-02-05 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 fc13702066dc03..feead00308549d 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: 2024-01-31 +date: 2024-02-05 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 a29c7ecb80309a..b4fc7379d28a9b 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index cd0563317f2a61..61f0c2f65bed2b 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 888d9cf88a210c..d111fb431c57b4 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index 0d710a1c4870c7..ad50dd8bdd40f5 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 40d4cdc525fc6a..e13292205cc444 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.devdocs.json b/api_docs/kbn_es_archiver.devdocs.json index e9b050f6f497b9..8cc6ba9e8958b7 100644 --- a/api_docs/kbn_es_archiver.devdocs.json +++ b/api_docs/kbn_es_archiver.devdocs.json @@ -553,6 +553,9 @@ "tags": [], "label": "batchSize", "description": [], + "signature": [ + "number | undefined" + ], "path": "packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.ts", "deprecated": false, "trackAdoption": false @@ -564,6 +567,9 @@ "tags": [], "label": "concurrency", "description": [], + "signature": [ + "number | undefined" + ], "path": "packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.ts", "deprecated": false, "trackAdoption": false diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 8c177cdba4b2f2..97df4332dbea4e 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: 2024-01-31 +date: 2024-02-05 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 89fa27dad0fd71..fac72218014501 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.devdocs.json b/api_docs/kbn_es_query.devdocs.json index 4b4db9a5d711a3..d1450a687142d5 100644 --- a/api_docs/kbn_es_query.devdocs.json +++ b/api_docs/kbn_es_query.devdocs.json @@ -1616,39 +1616,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/es-query", - "id": "def-common.cleanupESQLQueryForLensSuggestions", - "type": "Function", - "tags": [], - "label": "cleanupESQLQueryForLensSuggestions", - "description": [], - "signature": [ - "(esql: string | undefined) => string" - ], - "path": "packages/kbn-es-query/src/es_query/es_aggregate_query.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/es-query", - "id": "def-common.cleanupESQLQueryForLensSuggestions.$1", - "type": "string", - "tags": [], - "label": "esql", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "packages/kbn-es-query/src/es_query/es_aggregate_query.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/es-query", "id": "def-common.compareFilters", @@ -2716,72 +2683,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/es-query", - "id": "def-common.getIndexPatternFromESQLQuery", - "type": "Function", - "tags": [], - "label": "getIndexPatternFromESQLQuery", - "description": [], - "signature": [ - "(esql: string | undefined) => string" - ], - "path": "packages/kbn-es-query/src/es_query/es_aggregate_query.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/es-query", - "id": "def-common.getIndexPatternFromESQLQuery.$1", - "type": "string", - "tags": [], - "label": "esql", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "packages/kbn-es-query/src/es_query/es_aggregate_query.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/es-query", - "id": "def-common.getIndexPatternFromSQLQuery", - "type": "Function", - "tags": [], - "label": "getIndexPatternFromSQLQuery", - "description": [], - "signature": [ - "(sqlQuery: string | undefined) => string" - ], - "path": "packages/kbn-es-query/src/es_query/es_aggregate_query.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/es-query", - "id": "def-common.getIndexPatternFromSQLQuery.$1", - "type": "string", - "tags": [], - "label": "sqlQuery", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "packages/kbn-es-query/src/es_query/es_aggregate_query.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/es-query", "id": "def-common.getLanguageDisplayName", @@ -2815,39 +2716,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/es-query", - "id": "def-common.getLimitFromESQLQuery", - "type": "Function", - "tags": [], - "label": "getLimitFromESQLQuery", - "description": [], - "signature": [ - "(esql: string) => number" - ], - "path": "packages/kbn-es-query/src/es_query/es_aggregate_query.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/es-query", - "id": "def-common.getLimitFromESQLQuery.$1", - "type": "string", - "tags": [], - "label": "esql", - "description": [], - "signature": [ - "string" - ], - "path": "packages/kbn-es-query/src/es_query/es_aggregate_query.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/es-query", "id": "def-common.isCombinedFilter", diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 23c320f4d3becc..c848550fa8fde2 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 269 | 1 | 209 | 15 | +| 261 | 1 | 201 | 15 | ## Common diff --git a/api_docs/kbn_es_types.devdocs.json b/api_docs/kbn_es_types.devdocs.json index 0f278af4733b8e..91d8256af2de72 100644 --- a/api_docs/kbn_es_types.devdocs.json +++ b/api_docs/kbn_es_types.devdocs.json @@ -235,6 +235,27 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/es-types", + "id": "def-common.ESQLSearchReponse.all_columns", + "type": "Array", + "tags": [], + "label": "all_columns", + "description": [], + "signature": [ + { + "pluginId": "@kbn/es-types", + "scope": "common", + "docId": "kibKbnEsTypesPluginApi", + "section": "def-common.ESQLColumn", + "text": "ESQLColumn" + }, + "[] | undefined" + ], + "path": "packages/kbn-es-types/src/search.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/es-types", "id": "def-common.ESQLSearchReponse.values", diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index a0a022fdbe7f9f..409922791910f4 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 30 | 0 | 30 | 0 | +| 31 | 0 | 31 | 0 | ## Common diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index e7f8386eafe26f..658b183f68ddea 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.devdocs.json b/api_docs/kbn_esql_utils.devdocs.json new file mode 100644 index 00000000000000..2658a321ae1e8b --- /dev/null +++ b/api_docs/kbn_esql_utils.devdocs.json @@ -0,0 +1,230 @@ +{ + "id": "@kbn/esql-utils", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/esql-utils", + "id": "def-common.getESQLAdHocDataview", + "type": "Function", + "tags": [], + "label": "getESQLAdHocDataview", + "description": [], + "signature": [ + "(indexPattern: string, dataViewsService: ", + { + "pluginId": "dataViews", + "scope": "public", + "docId": "kibDataViewsPluginApi", + "section": "def-public.DataViewsServicePublic", + "text": "DataViewsServicePublic" + }, + ") => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ">" + ], + "path": "packages/kbn-esql-utils/src/utils/get_esql_adhoc_dataview.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-utils", + "id": "def-common.getESQLAdHocDataview.$1", + "type": "string", + "tags": [], + "label": "indexPattern", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-utils/src/utils/get_esql_adhoc_dataview.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-utils", + "id": "def-common.getESQLAdHocDataview.$2", + "type": "Object", + "tags": [], + "label": "dataViewsService", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "public", + "docId": "kibDataViewsPluginApi", + "section": "def-public.DataViewsServicePublic", + "text": "DataViewsServicePublic" + } + ], + "path": "packages/kbn-esql-utils/src/utils/get_esql_adhoc_dataview.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-utils", + "id": "def-common.getIndexPatternFromESQLQuery", + "type": "Function", + "tags": [], + "label": "getIndexPatternFromESQLQuery", + "description": [], + "signature": [ + "(esql: string | undefined) => string" + ], + "path": "packages/kbn-esql-utils/src/utils/query_parsing_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-utils", + "id": "def-common.getIndexPatternFromESQLQuery.$1", + "type": "string", + "tags": [], + "label": "esql", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-esql-utils/src/utils/query_parsing_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-utils", + "id": "def-common.getIndexPatternFromSQLQuery", + "type": "Function", + "tags": [], + "label": "getIndexPatternFromSQLQuery", + "description": [], + "signature": [ + "(sqlQuery: string | undefined) => string" + ], + "path": "packages/kbn-esql-utils/src/utils/query_parsing_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-utils", + "id": "def-common.getIndexPatternFromSQLQuery.$1", + "type": "string", + "tags": [], + "label": "sqlQuery", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-esql-utils/src/utils/query_parsing_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-utils", + "id": "def-common.getLimitFromESQLQuery", + "type": "Function", + "tags": [], + "label": "getLimitFromESQLQuery", + "description": [], + "signature": [ + "(esql: string) => number" + ], + "path": "packages/kbn-esql-utils/src/utils/query_parsing_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-utils", + "id": "def-common.getLimitFromESQLQuery.$1", + "type": "string", + "tags": [], + "label": "esql", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-utils/src/utils/query_parsing_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-utils", + "id": "def-common.removeDropCommandsFromESQLQuery", + "type": "Function", + "tags": [], + "label": "removeDropCommandsFromESQLQuery", + "description": [], + "signature": [ + "(esql: string | undefined) => string" + ], + "path": "packages/kbn-esql-utils/src/utils/query_parsing_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-utils", + "id": "def-common.removeDropCommandsFromESQLQuery.$1", + "type": "string", + "tags": [], + "label": "esql", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-esql-utils/src/utils/query_parsing_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx new file mode 100644 index 00000000000000..b7be59e519d0e6 --- /dev/null +++ b/api_docs/kbn_esql_utils.mdx @@ -0,0 +1,30 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnEsqlUtilsPluginApi +slug: /kibana-dev-docs/api/kbn-esql-utils +title: "@kbn/esql-utils" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/esql-utils plugin +date: 2024-02-05 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] +--- +import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; + + + +Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 11 | 0 | 11 | 0 | + +## Common + +### Functions + + diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 72bcc533184e33..a9e03770d43380 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: 2024-01-31 +date: 2024-02-05 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 716caecfe352a0..cdba952222cd3d 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: 2024-01-31 +date: 2024-02-05 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.devdocs.json b/api_docs/kbn_expandable_flyout.devdocs.json index a41652f1a4923e..fda9da45ad6e0f 100644 --- a/api_docs/kbn_expandable_flyout.devdocs.json +++ b/api_docs/kbn_expandable_flyout.devdocs.json @@ -1,27 +1,11 @@ { "id": "@kbn/expandable-flyout", "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { "classes": [], "functions": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyout", + "id": "def-public.ExpandableFlyout", "type": "Function", "tags": [], "label": "ExpandableFlyout", @@ -32,9 +16,9 @@ "{ ({ registeredPanels, ...flyoutProps }: React.PropsWithChildren<", { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.ExpandableFlyoutProps", + "section": "def-public.ExpandableFlyoutProps", "text": "ExpandableFlyoutProps" }, ">): JSX.Element | null; displayName: string | undefined; }" @@ -45,7 +29,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyout.$1", + "id": "def-public.ExpandableFlyout.$1", "type": "CompoundType", "tags": [], "label": "{\n registeredPanels,\n ...flyoutProps\n}", @@ -54,9 +38,9 @@ "React.PropsWithChildren<", { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.ExpandableFlyoutProps", + "section": "def-public.ExpandableFlyoutProps", "text": "ExpandableFlyoutProps" }, ">" @@ -72,7 +56,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutProvider", + "id": "def-public.ExpandableFlyoutProvider", "type": "Function", "tags": [], "label": "ExpandableFlyoutProvider", @@ -88,7 +72,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutProvider.$1", + "id": "def-public.ExpandableFlyoutProvider.$1", "type": "CompoundType", "tags": [], "label": "{\n children,\n storage = 'url',\n}", @@ -107,7 +91,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.useExpandableFlyoutApi", + "id": "def-public.useExpandableFlyoutApi", "type": "Function", "tags": [], "label": "useExpandableFlyoutApi", @@ -115,57 +99,16 @@ "\nThis hook allows you to interact with the flyout, open panels and previews etc." ], "signature": [ - "() => { openFlyout: (panels: { left?: ", - { - "pluginId": "@kbn/expandable-flyout", - "scope": "common", - "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", - "text": "FlyoutPanelProps" - }, - " | undefined; right?: ", - { - "pluginId": "@kbn/expandable-flyout", - "scope": "common", - "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", - "text": "FlyoutPanelProps" - }, - " | undefined; preview?: ", - { - "pluginId": "@kbn/expandable-flyout", - "scope": "common", - "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", - "text": "FlyoutPanelProps" - }, - " | undefined; }) => void; openRightPanel: (panel: ", - { - "pluginId": "@kbn/expandable-flyout", - "scope": "common", - "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", - "text": "FlyoutPanelProps" - }, - ") => void; openLeftPanel: (panel: ", - { - "pluginId": "@kbn/expandable-flyout", - "scope": "common", - "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", - "text": "FlyoutPanelProps" - }, - ") => void; openPreviewPanel: (panel: ", + "() => ", { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", - "text": "FlyoutPanelProps" - }, - ") => void; closeRightPanel: () => void; closeLeftPanel: () => void; closePreviewPanel: () => void; previousPreviewPanel: () => void; closeFlyout: () => void; }" + "section": "def-public.ExpandableFlyoutApi", + "text": "ExpandableFlyoutApi" + } ], - "path": "packages/kbn-expandable-flyout/src/context.tsx", + "path": "packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -174,7 +117,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.useExpandableFlyoutState", + "id": "def-public.useExpandableFlyoutState", "type": "Function", "tags": [], "label": "useExpandableFlyoutState", @@ -185,13 +128,13 @@ "() => ", { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.State", + "section": "def-public.State", "text": "State" } ], - "path": "packages/kbn-expandable-flyout/src/context.tsx", + "path": "packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -202,7 +145,7 @@ "interfaces": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi", + "id": "def-public.ExpandableFlyoutApi", "type": "Interface", "tags": [], "label": "ExpandableFlyoutApi", @@ -213,29 +156,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.panels", - "type": "Object", - "tags": [], - "label": "panels", - "description": [ - "\nRight, left and preview panels" - ], - "signature": [ - { - "pluginId": "@kbn/expandable-flyout", - "scope": "common", - "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.State", - "text": "State" - } - ], - "path": "packages/kbn-expandable-flyout/src/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.openFlyout", + "id": "def-public.ExpandableFlyoutApi.openFlyout", "type": "Function", "tags": [], "label": "openFlyout", @@ -246,25 +167,25 @@ "(panels: { left?: ", { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, " | undefined; right?: ", { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, " | undefined; preview?: ", { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, " | undefined; }) => void" @@ -275,7 +196,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.openFlyout.$1", + "id": "def-public.ExpandableFlyoutApi.openFlyout.$1", "type": "Object", "tags": [], "label": "panels", @@ -286,7 +207,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.openFlyout.$1.left", + "id": "def-public.ExpandableFlyoutApi.openFlyout.$1.left", "type": "Object", "tags": [], "label": "left", @@ -294,9 +215,9 @@ "signature": [ { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, " | undefined" @@ -307,7 +228,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.openFlyout.$1.right", + "id": "def-public.ExpandableFlyoutApi.openFlyout.$1.right", "type": "Object", "tags": [], "label": "right", @@ -315,9 +236,9 @@ "signature": [ { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, " | undefined" @@ -328,7 +249,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.openFlyout.$1.preview", + "id": "def-public.ExpandableFlyoutApi.openFlyout.$1.preview", "type": "Object", "tags": [], "label": "preview", @@ -336,9 +257,9 @@ "signature": [ { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, " | undefined" @@ -354,7 +275,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.openRightPanel", + "id": "def-public.ExpandableFlyoutApi.openRightPanel", "type": "Function", "tags": [], "label": "openRightPanel", @@ -365,9 +286,9 @@ "(panel: ", { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, ") => void" @@ -378,7 +299,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.openRightPanel.$1", + "id": "def-public.ExpandableFlyoutApi.openRightPanel.$1", "type": "Object", "tags": [], "label": "panel", @@ -386,9 +307,9 @@ "signature": [ { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" } ], @@ -402,7 +323,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.openLeftPanel", + "id": "def-public.ExpandableFlyoutApi.openLeftPanel", "type": "Function", "tags": [], "label": "openLeftPanel", @@ -413,9 +334,9 @@ "(panel: ", { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, ") => void" @@ -426,7 +347,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.openLeftPanel.$1", + "id": "def-public.ExpandableFlyoutApi.openLeftPanel.$1", "type": "Object", "tags": [], "label": "panel", @@ -434,9 +355,9 @@ "signature": [ { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" } ], @@ -450,7 +371,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.openPreviewPanel", + "id": "def-public.ExpandableFlyoutApi.openPreviewPanel", "type": "Function", "tags": [], "label": "openPreviewPanel", @@ -461,9 +382,9 @@ "(panel: ", { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, ") => void" @@ -474,7 +395,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.openPreviewPanel.$1", + "id": "def-public.ExpandableFlyoutApi.openPreviewPanel.$1", "type": "Object", "tags": [], "label": "panel", @@ -482,9 +403,9 @@ "signature": [ { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" } ], @@ -498,7 +419,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.closeRightPanel", + "id": "def-public.ExpandableFlyoutApi.closeRightPanel", "type": "Function", "tags": [], "label": "closeRightPanel", @@ -516,7 +437,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.closeLeftPanel", + "id": "def-public.ExpandableFlyoutApi.closeLeftPanel", "type": "Function", "tags": [], "label": "closeLeftPanel", @@ -534,7 +455,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.closePreviewPanel", + "id": "def-public.ExpandableFlyoutApi.closePreviewPanel", "type": "Function", "tags": [], "label": "closePreviewPanel", @@ -552,7 +473,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.previousPreviewPanel", + "id": "def-public.ExpandableFlyoutApi.previousPreviewPanel", "type": "Function", "tags": [], "label": "previousPreviewPanel", @@ -570,7 +491,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutApi.closeFlyout", + "id": "def-public.ExpandableFlyoutApi.closeFlyout", "type": "Function", "tags": [], "label": "closeFlyout", @@ -591,7 +512,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutProps", + "id": "def-public.ExpandableFlyoutProps", "type": "Interface", "tags": [], "label": "ExpandableFlyoutProps", @@ -599,9 +520,9 @@ "signature": [ { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.ExpandableFlyoutProps", + "section": "def-public.ExpandableFlyoutProps", "text": "ExpandableFlyoutProps" }, " extends Omit<", @@ -614,7 +535,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutProps.registeredPanels", + "id": "def-public.ExpandableFlyoutProps.registeredPanels", "type": "Array", "tags": [], "label": "registeredPanels", @@ -634,7 +555,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.FlyoutPanelProps", + "id": "def-public.FlyoutPanelProps", "type": "Interface", "tags": [], "label": "FlyoutPanelProps", @@ -645,7 +566,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.FlyoutPanelProps.id", + "id": "def-public.FlyoutPanelProps.id", "type": "string", "tags": [], "label": "id", @@ -658,7 +579,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.FlyoutPanelProps.params", + "id": "def-public.FlyoutPanelProps.params", "type": "Object", "tags": [], "label": "params", @@ -674,7 +595,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.FlyoutPanelProps.path", + "id": "def-public.FlyoutPanelProps.path", "type": "Object", "tags": [], "label": "path", @@ -684,9 +605,9 @@ "signature": [ { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.PanelPath", + "section": "def-public.PanelPath", "text": "PanelPath" }, " | undefined" @@ -697,7 +618,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.FlyoutPanelProps.state", + "id": "def-public.FlyoutPanelProps.state", "type": "Object", "tags": [], "label": "state", @@ -716,7 +637,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.PanelPath", + "id": "def-public.PanelPath", "type": "Interface", "tags": [], "label": "PanelPath", @@ -727,7 +648,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.PanelPath.tab", + "id": "def-public.PanelPath.tab", "type": "string", "tags": [], "label": "tab", @@ -740,7 +661,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.PanelPath.subTab", + "id": "def-public.PanelPath.subTab", "type": "string", "tags": [], "label": "subTab", @@ -759,7 +680,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.State", + "id": "def-public.State", "type": "Interface", "tags": [], "label": "State", @@ -770,7 +691,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.State.left", + "id": "def-public.State.left", "type": "Object", "tags": [], "label": "left", @@ -780,9 +701,9 @@ "signature": [ { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, " | undefined" @@ -793,7 +714,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.State.right", + "id": "def-public.State.right", "type": "Object", "tags": [], "label": "right", @@ -803,9 +724,9 @@ "signature": [ { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, " | undefined" @@ -816,7 +737,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.State.preview", + "id": "def-public.State.preview", "type": "Array", "tags": [], "label": "preview", @@ -826,9 +747,9 @@ "signature": [ { "pluginId": "@kbn/expandable-flyout", - "scope": "common", + "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-common.FlyoutPanelProps", + "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, "[]" @@ -836,6 +757,22 @@ "path": "packages/kbn-expandable-flyout/src/state.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/expandable-flyout", + "id": "def-public.State.needsSync", + "type": "CompoundType", + "tags": [], + "label": "needsSync", + "description": [ + "\nIs the flyout in sync with external storage (eg. url)?\nThis value can be used in useEffect for example, to control whether we should\ncall an external state sync method." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-expandable-flyout/src/state.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -845,7 +782,7 @@ "misc": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.EXPANDABLE_FLYOUT_URL_KEY", + "id": "def-public.EXPANDABLE_FLYOUT_URL_KEY", "type": "string", "tags": [], "label": "EXPANDABLE_FLYOUT_URL_KEY", @@ -859,22 +796,22 @@ "initialIsOpen": false } ], - "objects": [ - { - "parentPluginId": "@kbn/expandable-flyout", - "id": "def-common.ExpandableFlyoutContext", - "type": "Object", - "tags": [], - "label": "ExpandableFlyoutContext", - "description": [], - "signature": [ - "React.Context" - ], - "path": "packages/kbn-expandable-flyout/src/context.tsx", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - } - ] + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] } } \ No newline at end of file diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index b5b6114af438bf..17a9fbf8269cd8 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; @@ -21,19 +21,16 @@ Contact [@elastic/security-threat-hunting-investigations](https://github.com/org | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 40 | 0 | 16 | 1 | +| 39 | 0 | 15 | 1 | -## Common - -### Objects - +## Client ### Functions - + ### Interfaces - + ### Consts, variables and types - + diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 9b4c578e9862ef..e46a32da4121f3 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.devdocs.json b/api_docs/kbn_field_utils.devdocs.json index 2395c626c01830..f542586f1c4150 100644 --- a/api_docs/kbn_field_utils.devdocs.json +++ b/api_docs/kbn_field_utils.devdocs.json @@ -544,6 +544,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/field-utils", + "id": "def-common.FieldBase.isNull", + "type": "CompoundType", + "tags": [], + "label": "isNull", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-field-utils/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/field-utils", "id": "def-common.FieldBase.conflictDescriptions", diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index f51a1548d1b83f..64f893eea3ae66 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_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 | |-------------------|-----------|------------------------|-----------------| -| 37 | 0 | 29 | 1 | +| 38 | 0 | 30 | 1 | ## Common diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index f1222038a80b97..60993da2458ba7 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: 2024-01-31 +date: 2024-02-05 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 7cef3497dc15fa..a1c72db7b99d9d 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 085def5d07de80..7d82c9051ad270 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 68ea55293ea037..3b621ad02bd121 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: 2024-01-31 +date: 2024-02-05 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 b8a3f88594796f..8f0965e19c06c0 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: 2024-01-31 +date: 2024-02-05 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 4806f3871b58e1..46af496e8f49da 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 458ce29dea08bd..bc9e156d64bbc9 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: 2024-01-31 +date: 2024-02-05 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 30d6ed11788fb1..d9a64fa0ca9049 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: 2024-01-31 +date: 2024-02-05 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 a0c7b5f4ec7bc2..30acafcc924d5b 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: 2024-01-31 +date: 2024-02-05 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 54c059bd2258cf..9266523665abdd 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: 2024-01-31 +date: 2024-02-05 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 1f4639d32a9710..9a9d6d9fec1934 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: 2024-01-31 +date: 2024-02-05 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 18635d3454e5af..8bbc363c8e2983 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: 2024-01-31 +date: 2024-02-05 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 3ec2a6bb99768c..0c0d3cca837757 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: 2024-01-31 +date: 2024-02-05 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 5c707f8fab700b..ec02cec26a25bc 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: 2024-01-31 +date: 2024-02-05 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 93d89c073dad46..6f7d614fe1ddf0 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: 2024-01-31 +date: 2024-02-05 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 e83c51029be1e0..66773958a56271 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: 2024-01-31 +date: 2024-02-05 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 fc2322bc78663e..05f1543be0e018 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: 2024-01-31 +date: 2024-02-05 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 bd4735ac34f926..a270bf93413c78 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: 2024-01-31 +date: 2024-02-05 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 d86130f1ec7252..fbe636d8755373 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: 2024-01-31 +date: 2024-02-05 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 c2b333fa46a7b0..cf153944e5d1b6 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: 2024-01-31 +date: 2024-02-05 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 4b35f39fa05dfc..2873faf48c4341 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: 2024-01-31 +date: 2024-02-05 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 d8edeb4e9dbed7..f51fe26d520ec1 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: 2024-01-31 +date: 2024-02-05 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 4ba4a9b25bc7ae..9cdc26b14d8424 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: 2024-01-31 +date: 2024-02-05 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.devdocs.json b/api_docs/kbn_lens_embeddable_utils.devdocs.json index 0e057402df29ba..60b32a55abdf3a 100644 --- a/api_docs/kbn_lens_embeddable_utils.devdocs.json +++ b/api_docs/kbn_lens_embeddable_utils.devdocs.json @@ -1113,6 +1113,254 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/lens-embeddable-utils", + "id": "def-common.XYByValueAnnotationsLayer", + "type": "Class", + "tags": [], + "label": "XYByValueAnnotationsLayer", + "description": [], + "signature": [ + { + "pluginId": "@kbn/lens-embeddable-utils", + "scope": "common", + "docId": "kibKbnLensEmbeddableUtilsPluginApi", + "section": "def-common.XYByValueAnnotationsLayer", + "text": "XYByValueAnnotationsLayer" + }, + " implements ", + { + "pluginId": "@kbn/lens-embeddable-utils", + "scope": "common", + "docId": "kibKbnLensEmbeddableUtilsPluginApi", + "section": "def-common.ChartLayer", + "text": "ChartLayer" + }, + "<", + "XYByValueAnnotationLayerConfig", + ">" + ], + "path": "packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-embeddable-utils", + "id": "def-common.XYByValueAnnotationsLayer.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-embeddable-utils", + "id": "def-common.XYByValueAnnotationsLayer.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "layerConfig", + "description": [], + "signature": [ + "XYByValueAnnotationsLayerConfig" + ], + "path": "packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/lens-embeddable-utils", + "id": "def-common.XYByValueAnnotationsLayer.getName", + "type": "Function", + "tags": [], + "label": "getName", + "description": [], + "signature": [ + "() => string | undefined" + ], + "path": "packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/lens-embeddable-utils", + "id": "def-common.XYByValueAnnotationsLayer.getLayer", + "type": "Function", + "tags": [], + "label": "getLayer", + "description": [], + "signature": [ + "(layerId: string) => Record>" + ], + "path": "packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-embeddable-utils", + "id": "def-common.XYByValueAnnotationsLayer.getLayer.$1", + "type": "string", + "tags": [], + "label": "layerId", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/lens-embeddable-utils", + "id": "def-common.XYByValueAnnotationsLayer.getReference", + "type": "Function", + "tags": [], + "label": "getReference", + "description": [], + "signature": [ + "(layerId: string, chartDataView: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ") => ", + { + "pluginId": "@kbn/core-saved-objects-common", + "scope": "common", + "docId": "kibKbnCoreSavedObjectsCommonPluginApi", + "section": "def-common.SavedObjectReference", + "text": "SavedObjectReference" + }, + "[]" + ], + "path": "packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-embeddable-utils", + "id": "def-common.XYByValueAnnotationsLayer.getReference.$1", + "type": "string", + "tags": [], + "label": "layerId", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/lens-embeddable-utils", + "id": "def-common.XYByValueAnnotationsLayer.getReference.$2", + "type": "Object", + "tags": [], + "label": "chartDataView", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + } + ], + "path": "packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/lens-embeddable-utils", + "id": "def-common.XYByValueAnnotationsLayer.getLayerConfig", + "type": "Function", + "tags": [], + "label": "getLayerConfig", + "description": [], + "signature": [ + "(layerId: string) => ", + "XYByValueAnnotationLayerConfig" + ], + "path": "packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/lens-embeddable-utils", + "id": "def-common.XYByValueAnnotationsLayer.getLayerConfig.$1", + "type": "string", + "tags": [], + "label": "layerId", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/lens-embeddable-utils", + "id": "def-common.XYByValueAnnotationsLayer.getDataView", + "type": "Function", + "tags": [], + "label": "getDataView", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + " | undefined" + ], + "path": "packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/lens-embeddable-utils", "id": "def-common.XYChart", diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 3840630fec5987..d2309aeb514407 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/te | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 181 | 0 | 178 | 3 | +| 193 | 0 | 190 | 4 | ## Common diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 1c5e3bb4a4cd11..046f2fe235fc74 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 23621eacd6460b..2294b62c010986 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: 2024-01-31 +date: 2024-02-05 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 0f91c93890e243..7c5624b040e0a5 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx index 04ea7afc433256..d46ed305b9e2da 100644 --- a/api_docs/kbn_managed_content_badge.mdx +++ b/api_docs/kbn_managed_content_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge title: "@kbn/managed-content-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-content-badge plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge'] --- import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index d4f7f519373a48..639c239481927d 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: 2024-01-31 +date: 2024-02-05 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 c70d52a5d0dd67..4318cc66c79e5e 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: 2024-01-31 +date: 2024-02-05 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 e8d25e87935dbd..ca549d989d17d3 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: 2024-01-31 +date: 2024-02-05 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 81f1b45ee2abae..fff40da2002918 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: 2024-01-31 +date: 2024-02-05 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 f5ee266d82943b..c1646e99684d36 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: 2024-01-31 +date: 2024-02-05 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 828a4cdeaea292..32875523b7bdfa 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: 2024-01-31 +date: 2024-02-05 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 a30c7329f25190..428320d025a9d8 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: 2024-01-31 +date: 2024-02-05 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 8c59f99161e677..4c930a5e938b7a 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: 2024-01-31 +date: 2024-02-05 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 b88a3b2f60a78a..102de8a5cbfd40 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: 2024-01-31 +date: 2024-02-05 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 46bd2184e70b65..0f5e63dc479b07 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: 2024-01-31 +date: 2024-02-05 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 8e65b7aed39817..472a2f71f079ed 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: 2024-01-31 +date: 2024-02-05 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 833fac8fddc37d..bea4234709f9c5 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: 2024-01-31 +date: 2024-02-05 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 25e10fcda4a22e..e02027a27d53ef 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: 2024-01-31 +date: 2024-02-05 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 68144949ec0417..339a9719bd8c16 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: 2024-01-31 +date: 2024-02-05 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 0e895f803b90e8..6ef1b3797b6fde 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: 2024-01-31 +date: 2024-02-05 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 230118c3c04ec4..bb69c5062e6594 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: 2024-01-31 +date: 2024-02-05 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 f26ff8d353dd77..91f4911c703054 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_cancellable_search.devdocs.json b/api_docs/kbn_ml_cancellable_search.devdocs.json new file mode 100644 index 00000000000000..499b6b7d301916 --- /dev/null +++ b/api_docs/kbn_ml_cancellable_search.devdocs.json @@ -0,0 +1,180 @@ +{ + "id": "@kbn/ml-cancellable-search", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/ml-cancellable-search", + "id": "def-common.useCancellableSearch", + "type": "Function", + "tags": [], + "label": "useCancellableSearch", + "description": [], + "signature": [ + "(data: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataPluginApi", + "section": "def-public.DataPublicPluginStart", + "text": "DataPublicPluginStart" + }, + ") => { runRequest: >(requestBody: RequestBody, options?: {}) => Promise; cancelRequest: () => void; isLoading: boolean; }" + ], + "path": "x-pack/packages/ml/cancellable_search/src/use_cancellable_search.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-cancellable-search", + "id": "def-common.useCancellableSearch.$1", + "type": "Object", + "tags": [], + "label": "data", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataPluginApi", + "section": "def-public.DataPublicPluginStart", + "text": "DataPublicPluginStart" + } + ], + "path": "x-pack/packages/ml/cancellable_search/src/use_cancellable_search.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/ml-cancellable-search", + "id": "def-common.UseCancellableSearch", + "type": "Interface", + "tags": [], + "label": "UseCancellableSearch", + "description": [], + "path": "x-pack/packages/ml/cancellable_search/src/use_cancellable_search.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-cancellable-search", + "id": "def-common.UseCancellableSearch.runRequest", + "type": "Function", + "tags": [], + "label": "runRequest", + "description": [], + "signature": [ + ">(requestBody: RequestBody, options?: object | undefined) => Promise" + ], + "path": "x-pack/packages/ml/cancellable_search/src/use_cancellable_search.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-cancellable-search", + "id": "def-common.UseCancellableSearch.runRequest.$1", + "type": "Uncategorized", + "tags": [], + "label": "requestBody", + "description": [], + "signature": [ + "RequestBody" + ], + "path": "x-pack/packages/ml/cancellable_search/src/use_cancellable_search.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ml-cancellable-search", + "id": "def-common.UseCancellableSearch.runRequest.$2", + "type": "Uncategorized", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "object | undefined" + ], + "path": "x-pack/packages/ml/cancellable_search/src/use_cancellable_search.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ml-cancellable-search", + "id": "def-common.UseCancellableSearch.cancelRequest", + "type": "Function", + "tags": [], + "label": "cancelRequest", + "description": [], + "signature": [ + "() => void" + ], + "path": "x-pack/packages/ml/cancellable_search/src/use_cancellable_search.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ml-cancellable-search", + "id": "def-common.UseCancellableSearch.isLoading", + "type": "boolean", + "tags": [], + "label": "isLoading", + "description": [], + "path": "x-pack/packages/ml/cancellable_search/src/use_cancellable_search.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx new file mode 100644 index 00000000000000..07da0ad688ab85 --- /dev/null +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -0,0 +1,33 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnMlCancellableSearchPluginApi +slug: /kibana-dev-docs/api/kbn-ml-cancellable-search +title: "@kbn/ml-cancellable-search" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/ml-cancellable-search plugin +date: 2024-02-05 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] +--- +import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; + + + +Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 8 | 0 | 8 | 0 | + +## Common + +### Functions + + +### Interfaces + + diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 72bbfa6c4c9ae2..df5f8461e47c4c 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: 2024-01-31 +date: 2024-02-05 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 eb69ef0f065185..c25532ad39e231 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: 2024-01-31 +date: 2024-02-05 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 85d0853f7e40db..d28ef7e5069279 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: 2024-01-31 +date: 2024-02-05 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 6c4f3efce77604..423ee518563ca7 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: 2024-01-31 +date: 2024-02-05 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 823d56c46d1eef..cbce0522f06549 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: 2024-01-31 +date: 2024-02-05 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 16eccdec6a7533..2fba4fa4cecb82 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: 2024-01-31 +date: 2024-02-05 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 503ab56558e995..2609cd6ef08ba8 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: 2024-01-31 +date: 2024-02-05 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 6a24ac8826efa7..c38be23ab9e444 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: 2024-01-31 +date: 2024-02-05 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 e8bd0c206256fb..01686550224c31 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: 2024-01-31 +date: 2024-02-05 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 478f60e9d2f8fb..0da106f0338861 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: 2024-01-31 +date: 2024-02-05 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 cd469c09b8f202..82cd7c4fad548e 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: 2024-01-31 +date: 2024-02-05 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 28ab58699b355f..3aa236fd75dd7d 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: 2024-01-31 +date: 2024-02-05 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 1ebf656eefcce2..4f60ca2821c06d 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: 2024-01-31 +date: 2024-02-05 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 bd657f7376c62b..2fa46f58173303 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: 2024-01-31 +date: 2024-02-05 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 1d26c36b0c20d9..237e6466eee28b 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: 2024-01-31 +date: 2024-02-05 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 b82a2d4a2130c4..9bd3212a1dc49c 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: 2024-01-31 +date: 2024-02-05 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 3be009fc8474e6..ef4859a668a4a0 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: 2024-01-31 +date: 2024-02-05 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 9e00f0f7a51cb5..c55b4b748f9d99 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: 2024-01-31 +date: 2024-02-05 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 4c2be914f1058b..ec7301fd5606a9 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: 2024-01-31 +date: 2024-02-05 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 2a1b2d2703223b..ebd1b266f791fa 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index 7b5bb49720e7f5..75f08091f0737c 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 767a70b5e8b79c..c3ae366184658a 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_mock_idp_utils.mdx b/api_docs/kbn_mock_idp_utils.mdx index 7c86f005a70f6f..d1409e35bd0793 100644 --- a/api_docs/kbn_mock_idp_utils.mdx +++ b/api_docs/kbn_mock_idp_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mock-idp-utils title: "@kbn/mock-idp-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mock-idp-utils plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.devdocs.json b/api_docs/kbn_monaco.devdocs.json index 6bbe792c3aeb6f..0b76ee4395f479 100644 --- a/api_docs/kbn_monaco.devdocs.json +++ b/api_docs/kbn_monaco.devdocs.json @@ -412,6 +412,20 @@ "path": "packages/kbn-monaco/src/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.EditorError.code", + "type": "string", + "tags": [], + "label": "code", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-monaco/src/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -455,6 +469,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.ESQLCallbacks.getMetaFields", + "type": "Function", + "tags": [], + "label": "getMetaFields", + "description": [], + "signature": [ + "CallbackFn<{}, string> | undefined" + ], + "path": "packages/kbn-monaco/src/esql/lib/ast/shared/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/monaco", "id": "def-common.ESQLCallbacks.getPolicies", @@ -760,6 +788,40 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.LanguageProvidersModule.getCodeActionProvider", + "type": "Function", + "tags": [], + "label": "getCodeActionProvider", + "description": [], + "signature": [ + "((callbacks?: Deps | undefined) => ", + "languages", + ".CodeActionProvider) | undefined" + ], + "path": "packages/kbn-monaco/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.LanguageProvidersModule.getCodeActionProvider.$1", + "type": "Uncategorized", + "tags": [], + "label": "callbacks", + "description": [], + "signature": [ + "Deps | undefined" + ], + "path": "packages/kbn-monaco/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] } ], "initialIsOpen": false @@ -1429,6 +1491,55 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.ESQLLang.getCodeActionProvider", + "type": "Function", + "tags": [], + "label": "getCodeActionProvider", + "description": [], + "signature": [ + "(callbacks?: ", + { + "pluginId": "@kbn/monaco", + "scope": "common", + "docId": "kibKbnMonacoPluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined) => ", + "languages", + ".CodeActionProvider" + ], + "path": "packages/kbn-monaco/src/esql/language.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.ESQLLang.getCodeActionProvider.$1", + "type": "Object", + "tags": [], + "label": "callbacks", + "description": [], + "signature": [ + { + "pluginId": "@kbn/monaco", + "scope": "common", + "docId": "kibKbnMonacoPluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined" + ], + "path": "packages/kbn-monaco/src/esql/language.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] } ], "initialIsOpen": false diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 2027c90e145387..1abfb94196fe63 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.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 | |-------------------|-----------|------------------------|-----------------| -| 99 | 0 | 99 | 2 | +| 105 | 0 | 105 | 2 | ## Common diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 010cff2cec554b..1494c7622b48d7 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: 2024-01-31 +date: 2024-02-05 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 5048ccfdc1e6de..546fc39004295f 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 286d8ee59ec1c1..93eb9e79ecc685 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index b33178647525d5..bd9168c43db143 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 596241133c49bf..904a23c47d8bdc 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index a689678c637749..cc1ae8f67e1208 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: 2024-01-31 +date: 2024-02-05 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 df89575c87953f..e0343824e0e565 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: 2024-01-31 +date: 2024-02-05 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 4e6fee3f5c581c..65f74a23ecf923 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: 2024-01-31 +date: 2024-02-05 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 c7da788960af39..7626897bcbfdbd 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: 2024-01-31 +date: 2024-02-05 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_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index 9ff15fd62fbc9c..8d947e024746fb 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index a9743ad36a05a4..ce44f7284370e2 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_check.mdx b/api_docs/kbn_plugin_check.mdx index 4881bdd71a0477..fe1477871bb310 100644 --- a/api_docs/kbn_plugin_check.mdx +++ b/api_docs/kbn_plugin_check.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check title: "@kbn/plugin-check" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-check plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check'] --- import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 8a075737c25e12..2e41f39dd1166c 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: 2024-01-31 +date: 2024-02-05 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 a2470bdb7296b1..f4687a75773280 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.devdocs.json b/api_docs/kbn_presentation_containers.devdocs.json index 2cf16335fe9c2e..333d1d5297a04e 100644 --- a/api_docs/kbn_presentation_containers.devdocs.json +++ b/api_docs/kbn_presentation_containers.devdocs.json @@ -139,6 +139,46 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/presentation-containers", + "id": "def-common.apiPublishesLastSavedState", + "type": "Function", + "tags": [], + "label": "apiPublishesLastSavedState", + "description": [], + "signature": [ + "(api: unknown) => api is ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.PublishesLastSavedState", + "text": "PublishesLastSavedState" + } + ], + "path": "packages/presentation/presentation_containers/interfaces/last_saved_state.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-containers", + "id": "def-common.apiPublishesLastSavedState.$1", + "type": "Unknown", + "tags": [], + "label": "api", + "description": [], + "signature": [ + "unknown" + ], + "path": "packages/presentation/presentation_containers/interfaces/last_saved_state.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/presentation-containers", "id": "def-common.getContainerParentFromAPI", @@ -180,6 +220,93 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/presentation-containers", + "id": "def-common.getLastSavedStateSubjectForChild", + "type": "Function", + "tags": [], + "label": "getLastSavedStateSubjectForChild", + "description": [], + "signature": [ + "(parentApi: unknown, childId: string, deserializer?: ((state: ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.SerializedPanelState", + "text": "SerializedPanelState" + }, + ") => StateType) | undefined) => ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishingSubject", + "text": "PublishingSubject" + }, + " | undefined" + ], + "path": "packages/presentation/presentation_containers/interfaces/last_saved_state.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-containers", + "id": "def-common.getLastSavedStateSubjectForChild.$1", + "type": "Unknown", + "tags": [], + "label": "parentApi", + "description": [], + "signature": [ + "unknown" + ], + "path": "packages/presentation/presentation_containers/interfaces/last_saved_state.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/presentation-containers", + "id": "def-common.getLastSavedStateSubjectForChild.$2", + "type": "string", + "tags": [], + "label": "childId", + "description": [], + "signature": [ + "string" + ], + "path": "packages/presentation/presentation_containers/interfaces/last_saved_state.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/presentation-containers", + "id": "def-common.getLastSavedStateSubjectForChild.$3", + "type": "Function", + "tags": [], + "label": "deserializer", + "description": [], + "signature": [ + "((state: ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.SerializedPanelState", + "text": "SerializedPanelState" + }, + ") => StateType) | undefined" + ], + "path": "packages/presentation/presentation_containers/interfaces/last_saved_state.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/presentation-containers", "id": "def-common.tracksOverlays", @@ -570,141 +697,144 @@ }, { "parentPluginId": "@kbn/presentation-containers", - "id": "def-common.PresentationContainer", + "id": "def-common.PublishesLastSavedState", "type": "Interface", "tags": [], - "label": "PresentationContainer", + "label": "PublishesLastSavedState", "description": [], - "signature": [ - { - "pluginId": "@kbn/presentation-containers", - "scope": "common", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-common.PresentationContainer", - "text": "PresentationContainer" - }, - " extends Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesViewMode", - "text": "PublishesViewMode" - }, - ">" - ], - "path": "packages/presentation/presentation_containers/interfaces/presentation_container.ts", + "path": "packages/presentation/presentation_containers/interfaces/last_saved_state.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/presentation-containers", - "id": "def-common.PresentationContainer.removePanel", + "id": "def-common.PublishesLastSavedState.lastSavedState", + "type": "Object", + "tags": [], + "label": "lastSavedState", + "description": [], + "signature": [ + "Subject", + "" + ], + "path": "packages/presentation/presentation_containers/interfaces/last_saved_state.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/presentation-containers", + "id": "def-common.PublishesLastSavedState.getLastSavedStateForChild", "type": "Function", "tags": [], - "label": "removePanel", + "label": "getLastSavedStateForChild", "description": [], "signature": [ - "(panelId: string) => void" + "(childId: string) => ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.SerializedPanelState", + "text": "SerializedPanelState" + }, + " | undefined" ], - "path": "packages/presentation/presentation_containers/interfaces/presentation_container.ts", + "path": "packages/presentation/presentation_containers/interfaces/last_saved_state.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/presentation-containers", - "id": "def-common.PresentationContainer.removePanel.$1", + "id": "def-common.PublishesLastSavedState.getLastSavedStateForChild.$1", "type": "string", "tags": [], - "label": "panelId", + "label": "childId", "description": [], "signature": [ "string" ], - "path": "packages/presentation/presentation_containers/interfaces/presentation_container.ts", + "path": "packages/presentation/presentation_containers/interfaces/last_saved_state.ts", "deprecated": false, "trackAdoption": false, "isRequired": true } ], "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/presentation-containers", + "id": "def-common.SerializedPanelState", + "type": "Interface", + "tags": [], + "label": "SerializedPanelState", + "description": [ + "\nA package containing the serialized Embeddable state, with references extracted. When saving Embeddables using any\nstrategy, this is the format that should be used." + ], + "signature": [ + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.SerializedPanelState", + "text": "SerializedPanelState" }, + "" + ], + "path": "packages/presentation/presentation_containers/interfaces/serialized_state.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/presentation-containers", - "id": "def-common.PresentationContainer.canRemovePanels", - "type": "Function", + "id": "def-common.SerializedPanelState.references", + "type": "Array", "tags": [], - "label": "canRemovePanels", + "label": "references", "description": [], "signature": [ - "(() => boolean) | undefined" + { + "pluginId": "@kbn/core-saved-objects-common", + "scope": "common", + "docId": "kibKbnCoreSavedObjectsCommonPluginApi", + "section": "def-common.SavedObjectReference", + "text": "SavedObjectReference" + }, + "[] | undefined" ], - "path": "packages/presentation/presentation_containers/interfaces/presentation_container.ts", + "path": "packages/presentation/presentation_containers/interfaces/serialized_state.ts", "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] + "trackAdoption": false }, { "parentPluginId": "@kbn/presentation-containers", - "id": "def-common.PresentationContainer.replacePanel", - "type": "Function", + "id": "def-common.SerializedPanelState.rawState", + "type": "Uncategorized", "tags": [], - "label": "replacePanel", + "label": "rawState", "description": [], "signature": [ - "(idToRemove: string, newPanel: ", - { - "pluginId": "@kbn/presentation-containers", - "scope": "common", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-common.PanelPackage", - "text": "PanelPackage" - }, - ") => Promise" + "RawStateType" ], - "path": "packages/presentation/presentation_containers/interfaces/presentation_container.ts", + "path": "packages/presentation/presentation_containers/interfaces/serialized_state.ts", "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-common.PresentationContainer.replacePanel.$1", - "type": "string", - "tags": [], - "label": "idToRemove", - "description": [], - "signature": [ - "string" - ], - "path": "packages/presentation/presentation_containers/interfaces/presentation_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-common.PresentationContainer.replacePanel.$2", - "type": "Object", - "tags": [], - "label": "newPanel", - "description": [], - "signature": [ - { - "pluginId": "@kbn/presentation-containers", - "scope": "common", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-common.PanelPackage", - "text": "PanelPackage" - } - ], - "path": "packages/presentation/presentation_containers/interfaces/presentation_container.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/presentation-containers", + "id": "def-common.SerializedPanelState.version", + "type": "string", + "tags": [], + "label": "version", + "description": [], + "signature": [ + "string | undefined" ], - "returnComment": [] + "path": "packages/presentation/presentation_containers/interfaces/serialized_state.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -802,7 +932,47 @@ } ], "enums": [], - "misc": [], + "misc": [ + { + "parentPluginId": "@kbn/presentation-containers", + "id": "def-common.PresentationContainer", + "type": "Type", + "tags": [], + "label": "PresentationContainer", + "description": [], + "signature": [ + "Partial<", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesViewMode", + "text": "PublishesViewMode" + }, + "> & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.PublishesLastSavedState", + "text": "PublishesLastSavedState" + }, + " & { registerPanelApi: (panelId: string, panelApi: ApiType) => void; removePanel: (panelId: string) => void; canRemovePanels?: (() => boolean) | undefined; replacePanel: (idToRemove: string, newPanel: ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.PanelPackage", + "text": "PanelPackage" + }, + ") => Promise; }" + ], + "path": "packages/presentation/presentation_containers/interfaces/presentation_container.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], "objects": [] } } \ No newline at end of file diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index c0aa8f7897fc9f..3a74c12dce30e1 100644 --- a/api_docs/kbn_presentation_containers.mdx +++ b/api_docs/kbn_presentation_containers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers title: "@kbn/presentation-containers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-containers plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 34 | 0 | 33 | 0 | +| 42 | 0 | 40 | 0 | ## Common @@ -31,3 +31,6 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib ### Interfaces +### Consts, variables and types + + diff --git a/api_docs/kbn_presentation_library.mdx b/api_docs/kbn_presentation_library.mdx index 483051639f6b30..43a6b018b0a65b 100644 --- a/api_docs/kbn_presentation_library.mdx +++ b/api_docs/kbn_presentation_library.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-library title: "@kbn/presentation-library" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-library plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-library'] --- import kbnPresentationLibraryObj from './kbn_presentation_library.devdocs.json'; diff --git a/api_docs/kbn_presentation_publishing.devdocs.json b/api_docs/kbn_presentation_publishing.devdocs.json index a3087856906363..c6f31a7062c722 100644 --- a/api_docs/kbn_presentation_publishing.devdocs.json +++ b/api_docs/kbn_presentation_publishing.devdocs.json @@ -686,6 +686,46 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.apiPublishesUnsavedChanges", + "type": "Function", + "tags": [], + "label": "apiPublishesUnsavedChanges", + "description": [], + "signature": [ + "(api: unknown) => api is ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesUnsavedChanges", + "text": "PublishesUnsavedChanges" + } + ], + "path": "packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.apiPublishesUnsavedChanges.$1", + "type": "Unknown", + "tags": [], + "label": "api", + "description": [], + "signature": [ + "unknown" + ], + "path": "packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/presentation-publishing", "id": "def-common.apiPublishesViewMode", @@ -1062,7 +1102,11 @@ "\nBatches the latest values of multiple publishing subjects into a single object. Use this to avoid unnecessary re-renders.\nYou should avoid using this hook with subjects that your component pushes values to on user interaction, as it can cause a slight delay." ], "signature": [ - "(subjects: SubjectsType) => PublishingSubjectBatchResult" + "(...subjects_0: SubjectsType) => ", + "UnwrapPublishingSubjectTuple", + "" ], "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts", "deprecated": false, @@ -1071,12 +1115,12 @@ { "parentPluginId": "@kbn/presentation-publishing", "id": "def-common.useBatchedPublishingSubjects.$1", - "type": "Uncategorized", + "type": "Object", "tags": [], "label": "subjects", "description": [], "signature": [ - "SubjectsType" + "[...SubjectsType]" ], "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts", "deprecated": false, @@ -1478,7 +1522,15 @@ "section": "def-common.CanAccessViewMode", "text": "CanAccessViewMode" }, - ">(api: ApiType | undefined) => void" + ">(api: ApiType | undefined) => ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.ViewMode", + "text": "ViewMode" + }, + " | undefined" ], "path": "packages/presentation/presentation_publishing/interfaces/can_access_view_mode.ts", "deprecated": false, @@ -1895,7 +1947,7 @@ "\nDeclares a state variable that is synced with a publishing subject value." ], "signature": [ - " | undefined = ", + " | undefined = ", { "pluginId": "@kbn/presentation-publishing", "scope": "common", @@ -1911,7 +1963,9 @@ "section": "def-common.PublishingSubject", "text": "PublishingSubject" }, - " | undefined>(subject?: SubjectType | undefined) => OptionalIfOptional" + " | undefined>(subject: SubjectType) => ", + "ValueFromPublishingSubject", + "" ], "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts", "deprecated": false, @@ -1927,11 +1981,61 @@ "Publishing subject." ], "signature": [ - "SubjectType | undefined" + "SubjectType" ], "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts", "deprecated": false, "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.useUnsavedChanges", + "type": "Function", + "tags": [], + "label": "useUnsavedChanges", + "description": [ + "\nA hook that gets this API's unsaved changes as a reactive variable which will cause re-renders on change." + ], + "signature": [ + "(api: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesUnsavedChanges", + "text": "PublishesUnsavedChanges" + }, + " | undefined) => object | undefined" + ], + "path": "packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.useUnsavedChanges.$1", + "type": "Object", + "tags": [], + "label": "api", + "description": [], + "signature": [ + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesUnsavedChanges", + "text": "PublishesUnsavedChanges" + }, + " | undefined" + ], + "path": "packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts", + "deprecated": false, + "trackAdoption": false, "isRequired": false } ], @@ -1964,7 +2068,7 @@ "section": "def-common.PublishesViewMode", "text": "PublishesViewMode" }, - ">>(api: ApiType | undefined) => OptionalIfOptional>(api: ApiType | undefined) => ", { "pluginId": "@kbn/presentation-publishing", "scope": "common", @@ -1972,7 +2076,7 @@ "section": "def-common.ViewMode", "text": "ViewMode" }, - ">" + " | undefined" ], "path": "packages/presentation/presentation_publishing/interfaces/publishes_view_mode.ts", "deprecated": false, @@ -5745,6 +5849,200 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.PublishesUnsavedChanges", + "type": "Interface", + "tags": [], + "label": "PublishesUnsavedChanges", + "description": [], + "path": "packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.PublishesUnsavedChanges.unsavedChanges", + "type": "Object", + "tags": [], + "label": "unsavedChanges", + "description": [], + "signature": [ + "{ readonly value: object | undefined; source: ", + "Observable", + " | undefined; error: (err: any) => void; forEach: { (next: (value: object | undefined) => void): Promise; (next: (value: object | undefined) => void, promiseCtor: PromiseConstructorLike): Promise; }; getValue: () => object | undefined; pipe: { (): ", + "Observable", + "; (op1: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + ", op7: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + ", op7: ", + "OperatorFunction", + ", op8: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + ", op7: ", + "OperatorFunction", + ", op8: ", + "OperatorFunction", + ", op9: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + ", op7: ", + "OperatorFunction", + ", op8: ", + "OperatorFunction", + ", op9: ", + "OperatorFunction", + ", ...operations: ", + "OperatorFunction", + "[]): ", + "Observable", + "; }; complete: () => void; closed: boolean; observers: ", + "Observer", + "[]; isStopped: boolean; hasError: boolean; thrownError: any; lift: (operator: ", + "Operator", + ") => ", + "Observable", + "; unsubscribe: () => void; readonly observed: boolean; asObservable: () => ", + "Observable", + "; operator: ", + "Operator", + " | undefined; subscribe: { (observerOrNext?: Partial<", + "Observer", + "> | ((value: object | undefined) => void) | undefined): ", + "Subscription", + "; (next?: ((value: object | undefined) => void) | null | undefined, error?: ((error: any) => void) | null | undefined, complete?: (() => void) | null | undefined): ", + "Subscription", + "; }; toPromise: { (): Promise; (PromiseCtor: PromiseConstructor): Promise; (PromiseCtor: PromiseConstructorLike): Promise; }; }" + ], + "path": "packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.PublishesUnsavedChanges.resetUnsavedChanges", + "type": "Function", + "tags": [], + "label": "resetUnsavedChanges", + "description": [], + "signature": [ + "() => void" + ], + "path": "packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/presentation-publishing", "id": "def-common.PublishesViewMode", @@ -6269,7 +6567,7 @@ "section": "def-common.PublishesPanelTitle", "text": "PublishesPanelTitle" }, - " & { setPanelTitle: (newTitle: string | undefined) => void; setHidePanelTitle: (hide: boolean | undefined) => void; setDefaultPanelTitle?: ((newDefaultTitle: string | undefined) => void) | undefined; }" + " & { setPanelTitle: (newTitle: string | undefined) => void; setHidePanelTitle: (hide: boolean | undefined) => void; }" ], "path": "packages/presentation/presentation_publishing/interfaces/publishes_panel_title.ts", "deprecated": false, @@ -6470,7 +6768,7 @@ "Subscription", "; }; toPromise: { (): Promise; (PromiseCtor: PromiseConstructor): Promise; (PromiseCtor: PromiseConstructorLike): Promise; }; }" ], - "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts", + "path": "packages/presentation/presentation_publishing/publishing_subject/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index d311642fcc51db..24ecc2e55f1faa 100644 --- a/api_docs/kbn_presentation_publishing.mdx +++ b/api_docs/kbn_presentation_publishing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing title: "@kbn/presentation-publishing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-publishing plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 143 | 0 | 109 | 0 | +| 150 | 0 | 115 | 3 | ## Common diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index fe2d2af2839968..05d8e3a4194b79 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: 2024-01-31 +date: 2024-02-05 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 4ef52da35cae68..b37647c10bc3a2 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: 2024-01-31 +date: 2024-02-05 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 220db35d74a8f2..87cd9149698684 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: 2024-01-31 +date: 2024-02-05 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 9953c25af5a369..52f70b319f850a 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: 2024-01-31 +date: 2024-02-05 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 44c29aa11edb3f..f334818958b9ff 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: 2024-01-31 +date: 2024-02-05 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 a8429808c74576..8b6f42715eb149 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: 2024-01-31 +date: 2024-02-05 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 b2ee89160fa104..69a7780bb98a21 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: 2024-01-31 +date: 2024-02-05 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 dd627fb9cfe9c7..53cfede7a0661c 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: 2024-01-31 +date: 2024-02-05 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 dc332c3c4c8816..2db09ede7b702a 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: 2024-01-31 +date: 2024-02-05 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 1142de6be7f018..b07d618f3b5cb5 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: 2024-01-31 +date: 2024-02-05 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 5992fad292958f..bf8381de5f3634 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: 2024-01-31 +date: 2024-02-05 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 310bab60413940..4849e8ba9b4047 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: 2024-01-31 +date: 2024-02-05 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 20188b132ce740..f05c8fc0c3a086 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: 2024-01-31 +date: 2024-02-05 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 628455c60ca83f..a5dc0d9057d21c 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index df8f591c3c4a4b..a41105ea1852fd 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 06162dc6bc19e6..5d9e5bb5b7181d 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index f0aca0219fae77..f3dec9b7c57386 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index e73d098e2c80a2..df58c8ca51f6ca 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index 6c4cdec334be5f..7f910e8cc4e7dd 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 9fdf548fd4508f..2deb4def3bb3fb 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 029c1efadd8f47..1c5da1ac85dbd4 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index 3880105de56952..9210d365f381c4 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 12d9f4cf20450a..9bebedb25020c5 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 81c0dce7172ee1..e64205a7eb1c28 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: 2024-01-31 +date: 2024-02-05 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 ed7ce7c0333ec3..b92d6661e383ca 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 806756c1dc8a58..6a84261820c864 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 9462cc162fd7cb..da600a21264f7d 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: 2024-01-31 +date: 2024-02-05 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 4f39d07f079702..b5d4960e753edb 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: 2024-01-31 +date: 2024-02-05 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 aaf490f6deeb99..bef008fba93490 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: 2024-01-31 +date: 2024-02-05 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 893bdc09fbaf7a..ff21d8a298718f 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: 2024-01-31 +date: 2024-02-05 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.devdocs.json b/api_docs/kbn_search_connectors.devdocs.json index ca29ee312e7c02..8e4485adab1a9d 100644 --- a/api_docs/kbn_search_connectors.devdocs.json +++ b/api_docs/kbn_search_connectors.devdocs.json @@ -542,6 +542,76 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.createConnectorSecret", + "type": "Function", + "tags": [], + "label": "createConnectorSecret", + "description": [], + "signature": [ + "(client: ", + { + "pluginId": "@kbn/core-elasticsearch-server", + "scope": "common", + "docId": "kibKbnCoreElasticsearchServerPluginApi", + "section": "def-common.ElasticsearchClient", + "text": "ElasticsearchClient" + }, + ", value: string) => Promise<", + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.ConnectorSecretCreateResponse", + "text": "ConnectorSecretCreateResponse" + }, + ">" + ], + "path": "packages/kbn-search-connectors/lib/create_connector_secret.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.createConnectorSecret.$1", + "type": "Object", + "tags": [], + "label": "client", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-elasticsearch-server", + "scope": "common", + "docId": "kibKbnCoreElasticsearchServerPluginApi", + "section": "def-common.ElasticsearchClient", + "text": "ElasticsearchClient" + } + ], + "path": "packages/kbn-search-connectors/lib/create_connector_secret.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.createConnectorSecret.$2", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-search-connectors/lib/create_connector_secret.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/search-connectors", "id": "def-common.deleteConnectorById", @@ -856,10 +926,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.fetchSyncJobsByConnectorId", + "id": "def-common.fetchSyncJobs", "type": "Function", "tags": [], - "label": "fetchSyncJobsByConnectorId", + "label": "fetchSyncJobs", "description": [], "signature": [ "(client: ", @@ -870,7 +940,7 @@ "section": "def-common.ElasticsearchClient", "text": "ElasticsearchClient" }, - ", connectorId: string, from: number, size: number, syncJobType?: \"all\" | \"content\" | \"access_control\") => Promise<", + ", connectorId?: string | undefined, from?: number, size?: number, syncJobType?: \"all\" | \"content\" | \"access_control\") => Promise<", { "pluginId": "@kbn/search-connectors", "scope": "common", @@ -894,7 +964,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.fetchSyncJobsByConnectorId.$1", + "id": "def-common.fetchSyncJobs.$1", "type": "Object", "tags": [], "label": "client", @@ -915,22 +985,22 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.fetchSyncJobsByConnectorId.$2", + "id": "def-common.fetchSyncJobs.$2", "type": "string", "tags": [], "label": "connectorId", "description": [], "signature": [ - "string" + "string | undefined" ], "path": "packages/kbn-search-connectors/lib/fetch_sync_jobs.ts", "deprecated": false, "trackAdoption": false, - "isRequired": true + "isRequired": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.fetchSyncJobsByConnectorId.$3", + "id": "def-common.fetchSyncJobs.$3", "type": "number", "tags": [], "label": "from", @@ -945,7 +1015,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.fetchSyncJobsByConnectorId.$4", + "id": "def-common.fetchSyncJobs.$4", "type": "number", "tags": [], "label": "size", @@ -960,7 +1030,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.fetchSyncJobsByConnectorId.$5", + "id": "def-common.fetchSyncJobs.$5", "type": "CompoundType", "tags": [], "label": "syncJobType", @@ -1632,6 +1702,100 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.updateConnectorApiKeyId", + "type": "Function", + "tags": [], + "label": "updateConnectorApiKeyId", + "description": [], + "signature": [ + "(client: ", + { + "pluginId": "@kbn/core-elasticsearch-server", + "scope": "common", + "docId": "kibKbnCoreElasticsearchServerPluginApi", + "section": "def-common.ElasticsearchClient", + "text": "ElasticsearchClient" + }, + ", connectorId: string, apiKeyId: string | null, apiKeySecretId: string | null) => Promise<", + "Result", + ">" + ], + "path": "packages/kbn-search-connectors/lib/update_connector_api_key_id.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.updateConnectorApiKeyId.$1", + "type": "Object", + "tags": [], + "label": "client", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-elasticsearch-server", + "scope": "common", + "docId": "kibKbnCoreElasticsearchServerPluginApi", + "section": "def-common.ElasticsearchClient", + "text": "ElasticsearchClient" + } + ], + "path": "packages/kbn-search-connectors/lib/update_connector_api_key_id.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.updateConnectorApiKeyId.$2", + "type": "string", + "tags": [], + "label": "connectorId", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-search-connectors/lib/update_connector_api_key_id.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.updateConnectorApiKeyId.$3", + "type": "CompoundType", + "tags": [], + "label": "apiKeyId", + "description": [], + "signature": [ + "string | null" + ], + "path": "packages/kbn-search-connectors/lib/update_connector_api_key_id.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.updateConnectorApiKeyId.$4", + "type": "CompoundType", + "tags": [], + "label": "apiKeySecretId", + "description": [], + "signature": [ + "string | null" + ], + "path": "packages/kbn-search-connectors/lib/update_connector_api_key_id.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/search-connectors", "id": "def-common.updateConnectorConfiguration", @@ -2629,6 +2793,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.Connector.api_key_secret_id", + "type": "CompoundType", + "tags": [], + "label": "api_key_secret_id", + "description": [], + "signature": [ + "string | null" + ], + "path": "packages/kbn-search-connectors/types/connectors.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/search-connectors", "id": "def-common.Connector.configuration", @@ -3348,6 +3526,52 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.ConnectorsAPISyncJobResponse", + "type": "Interface", + "tags": [], + "label": "ConnectorsAPISyncJobResponse", + "description": [], + "path": "packages/kbn-search-connectors/types/connectors_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.ConnectorsAPISyncJobResponse.count", + "type": "number", + "tags": [], + "label": "count", + "description": [], + "path": "packages/kbn-search-connectors/types/connectors_api.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.ConnectorsAPISyncJobResponse.results", + "type": "Array", + "tags": [], + "label": "results", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.ConnectorSyncJob", + "text": "ConnectorSyncJob" + }, + "[]" + ], + "path": "packages/kbn-search-connectors/types/connectors_api.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/search-connectors", "id": "def-common.ConnectorsAPIUpdateResponse", @@ -3412,6 +3636,31 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.ConnectorSecretCreateResponse", + "type": "Interface", + "tags": [], + "label": "ConnectorSecretCreateResponse", + "description": [], + "path": "packages/kbn-search-connectors/types/connectors_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.ConnectorSecretCreateResponse.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "packages/kbn-search-connectors/types/connectors_api.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/search-connectors", "id": "def-common.ConnectorServerSideDefinition", @@ -4972,7 +5221,7 @@ "section": "def-common.IngestPipelineParams", "text": "IngestPipelineParams" }, - " | null | undefined; api_key_id: string | null; custom_scheduling: ", + " | null | undefined; api_key_id: string | null; api_key_secret_id: string | null; custom_scheduling: ", { "pluginId": "@kbn/search-connectors", "scope": "common", @@ -7462,10 +7711,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username", "type": "Object", "tags": [], - "label": "account_email", + "label": "data_center_username", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -7473,7 +7722,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -7487,7 +7736,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -7501,7 +7750,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.display", "type": "string", "tags": [], "label": "display", @@ -7522,7 +7771,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.label", "type": "string", "tags": [], "label": "label", @@ -7533,7 +7782,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.options", "type": "Array", "tags": [], "label": "options", @@ -7547,7 +7796,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.order", "type": "number", "tags": [], "label": "order", @@ -7558,18 +7807,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.placeholder", - "type": "string", - "tags": [], - "label": "placeholder", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.required", "type": "boolean", "tags": [], "label": "required", @@ -7583,7 +7821,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -7597,7 +7835,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -7611,7 +7849,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.type", "type": "string", "tags": [], "label": "type", @@ -7632,7 +7870,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -7646,7 +7884,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.validations", "type": "Array", "tags": [], "label": "validations", @@ -7660,7 +7898,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_username.value", "type": "string", "tags": [], "label": "value", @@ -7673,10 +7911,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password", "type": "Object", "tags": [], - "label": "api_token", + "label": "data_center_password", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -7684,7 +7922,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -7698,7 +7936,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -7712,7 +7950,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.display", "type": "string", "tags": [], "label": "display", @@ -7733,7 +7971,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.label", "type": "string", "tags": [], "label": "label", @@ -7744,7 +7982,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.options", "type": "Array", "tags": [], "label": "options", @@ -7758,7 +7996,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.order", "type": "number", "tags": [], "label": "order", @@ -7769,7 +8007,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.required", "type": "boolean", "tags": [], "label": "required", @@ -7783,7 +8021,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -7797,7 +8035,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -7811,7 +8049,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.type", "type": "string", "tags": [], "label": "type", @@ -7832,7 +8070,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -7846,7 +8084,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.validations", "type": "Array", "tags": [], "label": "validations", @@ -7860,7 +8098,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.data_center_password.value", "type": "string", "tags": [], "label": "value", @@ -7873,10 +8111,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email", "type": "Object", "tags": [], - "label": "confluence_url", + "label": "account_email", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -7884,7 +8122,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -7898,13 +8136,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -7912,7 +8150,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.display", "type": "string", "tags": [], "label": "display", @@ -7933,7 +8171,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.label", "type": "string", "tags": [], "label": "label", @@ -7944,7 +8182,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.options", "type": "Array", "tags": [], "label": "options", @@ -7958,7 +8196,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.order", "type": "number", "tags": [], "label": "order", @@ -7969,7 +8207,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.placeholder", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.placeholder", "type": "string", "tags": [], "label": "placeholder", @@ -7980,7 +8218,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.required", "type": "boolean", "tags": [], "label": "required", @@ -7994,7 +8232,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -8008,7 +8246,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -8022,7 +8260,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.type", "type": "string", "tags": [], "label": "type", @@ -8043,7 +8281,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -8057,7 +8295,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.validations", "type": "Array", "tags": [], "label": "validations", @@ -8071,7 +8309,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.account_email.value", "type": "string", "tags": [], "label": "value", @@ -8084,10 +8322,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token", "type": "Object", "tags": [], - "label": "spaces", + "label": "api_token", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8095,7 +8333,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -8109,13 +8347,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8123,7 +8361,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.display", "type": "string", "tags": [], "label": "display", @@ -8136,7 +8374,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTAREA" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8144,7 +8382,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.label", "type": "string", "tags": [], "label": "label", @@ -8155,7 +8393,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.options", "type": "Array", "tags": [], "label": "options", @@ -8169,7 +8407,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.order", "type": "number", "tags": [], "label": "order", @@ -8180,7 +8418,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.required", "type": "boolean", "tags": [], "label": "required", @@ -8194,13 +8432,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8208,18 +8446,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.type", "type": "string", "tags": [], "label": "type", @@ -8232,7 +8473,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".LIST" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8240,7 +8481,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -8254,7 +8495,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.validations", "type": "Array", "tags": [], "label": "validations", @@ -8268,7 +8509,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.api_token.value", "type": "string", "tags": [], "label": "value", @@ -8281,10 +8522,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url", "type": "Object", "tags": [], - "label": "ssl_enabled", + "label": "confluence_url", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8292,7 +8533,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -8306,7 +8547,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -8320,7 +8561,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.display", "type": "string", "tags": [], "label": "display", @@ -8333,7 +8574,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8341,7 +8582,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.label", "type": "string", "tags": [], "label": "label", @@ -8352,7 +8593,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.options", "type": "Array", "tags": [], "label": "options", @@ -8366,7 +8607,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.order", "type": "number", "tags": [], "label": "order", @@ -8377,7 +8618,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.placeholder", + "type": "string", + "tags": [], + "label": "placeholder", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.required", "type": "boolean", "tags": [], "label": "required", @@ -8391,7 +8643,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -8405,7 +8657,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -8419,7 +8671,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.type", "type": "string", "tags": [], "label": "type", @@ -8432,7 +8684,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8440,7 +8692,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -8454,7 +8706,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.validations", "type": "Array", "tags": [], "label": "validations", @@ -8468,14 +8720,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.confluence_url.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -8484,10 +8733,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces", "type": "Object", "tags": [], - "label": "ssl_ca", + "label": "spaces", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8495,7 +8744,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -8509,13 +8758,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: true; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8523,7 +8772,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.display", "type": "string", "tags": [], "label": "display", @@ -8536,7 +8785,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TEXTAREA" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8544,7 +8793,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.label", "type": "string", "tags": [], "label": "label", @@ -8555,7 +8804,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.options", "type": "Array", "tags": [], "label": "options", @@ -8569,7 +8818,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.order", "type": "number", "tags": [], "label": "order", @@ -8580,7 +8829,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.required", "type": "boolean", "tags": [], "label": "required", @@ -8594,7 +8843,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -8608,21 +8857,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.type", "type": "string", "tags": [], "label": "type", @@ -8635,7 +8881,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".LIST" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8643,7 +8889,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -8657,7 +8903,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.validations", "type": "Array", "tags": [], "label": "validations", @@ -8671,7 +8917,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.spaces.value", "type": "string", "tags": [], "label": "value", @@ -8684,10 +8930,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled", "type": "Object", "tags": [], - "label": "retry_count", + "label": "ssl_enabled", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8695,18 +8941,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -8720,7 +8969,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.display", "type": "string", "tags": [], "label": "display", @@ -8733,7 +8982,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8741,7 +8990,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.label", "type": "string", "tags": [], "label": "label", @@ -8752,7 +9001,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.options", "type": "Array", "tags": [], "label": "options", @@ -8766,7 +9015,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.order", "type": "number", "tags": [], "label": "order", @@ -8777,13 +9026,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8791,7 +9040,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -8805,7 +9054,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -8819,7 +9068,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.type", "type": "string", "tags": [], "label": "type", @@ -8832,7 +9081,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8840,13 +9089,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8854,7 +9103,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.validations", "type": "Array", "tags": [], "label": "validations", @@ -8868,11 +9117,14 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_enabled.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -8881,10 +9133,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca", "type": "Object", "tags": [], - "label": "concurrent_downloads", + "label": "ssl_ca", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8892,24 +9144,27 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: true; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8917,7 +9172,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.display", "type": "string", "tags": [], "label": "display", @@ -8930,7 +9185,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8938,7 +9193,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.label", "type": "string", "tags": [], "label": "label", @@ -8949,7 +9204,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.options", "type": "Array", "tags": [], "label": "options", @@ -8963,7 +9218,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.order", "type": "number", "tags": [], "label": "order", @@ -8974,13 +9229,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -8988,7 +9243,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -9002,7 +9257,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -9016,7 +9271,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.type", "type": "string", "tags": [], "label": "type", @@ -9029,7 +9284,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9037,13 +9292,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9051,13 +9306,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "{ constraint: number; type: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9065,8 +9320,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.ssl_ca.value", + "type": "string", "tags": [], "label": "value", "description": [], @@ -9078,10 +9333,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count", "type": "Object", "tags": [], - "label": "use_document_level_security", + "label": "retry_count", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9089,27 +9344,24 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9117,7 +9369,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.display", "type": "string", "tags": [], "label": "display", @@ -9130,7 +9382,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9138,7 +9390,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.label", "type": "string", "tags": [], "label": "label", @@ -9149,7 +9401,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.options", "type": "Array", "tags": [], "label": "options", @@ -9163,7 +9415,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.order", "type": "number", "tags": [], "label": "order", @@ -9174,13 +9426,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9188,7 +9440,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -9202,18 +9454,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.type", "type": "string", "tags": [], "label": "type", @@ -9226,7 +9481,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9234,13 +9489,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9248,7 +9503,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.validations", "type": "Array", "tags": [], "label": "validations", @@ -9262,14 +9517,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.retry_count.value", + "type": "number", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -9278,10 +9530,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads", "type": "Object", "tags": [], - "label": "use_text_extraction_service", + "label": "concurrent_downloads", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9289,21 +9541,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.default_value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -9317,7 +9566,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.display", "type": "string", "tags": [], "label": "display", @@ -9330,7 +9579,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9338,7 +9587,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.label", "type": "string", "tags": [], "label": "label", @@ -9349,7 +9598,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.options", "type": "Array", "tags": [], "label": "options", @@ -9363,7 +9612,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.order", "type": "number", "tags": [], "label": "order", @@ -9374,13 +9623,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9388,7 +9637,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -9402,18 +9651,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.type", "type": "string", "tags": [], "label": "type", @@ -9426,7 +9678,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9434,7 +9686,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -9448,13 +9700,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "never[]" + "{ constraint: number; type: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9462,39 +9714,23 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.concurrent_downloads.value", + "type": "number", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.SYNC_RULES", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security", "type": "Object", "tags": [], - "label": "[FeatureName.SYNC_RULES]", + "label": "use_document_level_security", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9502,97 +9738,510 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.SYNC_RULES.advanced", - "type": "Object", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.default_value", + "type": "Uncategorized", "tags": [], - "label": "advanced", + "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.SYNC_RULES.advanced.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] + "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.SYNC_RULES.basic", - "type": "Object", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.depends_on", + "type": "Array", "tags": [], - "label": "basic", + "label": "depends_on", "description": [], + "signature": [ + "{ field: string; value: string; }[]" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, - "trackAdoption": false, - "children": [ + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.SYNC_RULES.basic.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.DOCUMENT_LEVEL_SECURITY", - "type": "Object", - "tags": [], - "label": "[FeatureName.DOCUMENT_LEVEL_SECURITY]", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TOGGLE" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.DOCUMENT_LEVEL_SECURITY.enabled", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.label", + "type": "string", "tags": [], - "label": "enabled", + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.options", + "type": "Array", + "tags": [], + "label": "options", "description": [], "signature": [ - "true" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false - } - ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".BOOLEAN" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_document_level_security.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service", + "type": "Object", + "tags": [], + "label": "use_text_extraction_service", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.default_value", + "type": "boolean", + "tags": [], + "label": "default_value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TOGGLE" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".BOOLEAN" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.configuration.use_text_extraction_service.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.SYNC_RULES", + "type": "Object", + "tags": [], + "label": "[FeatureName.SYNC_RULES]", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.SYNC_RULES.advanced", + "type": "Object", + "tags": [], + "label": "advanced", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.SYNC_RULES.advanced.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.SYNC_RULES.basic", + "type": "Object", + "tags": [], + "label": "basic", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.SYNC_RULES.basic.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.DOCUMENT_LEVEL_SECURITY", + "type": "Object", + "tags": [], + "label": "[FeatureName.DOCUMENT_LEVEL_SECURITY]", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.features.FeatureName.DOCUMENT_LEVEL_SECURITY.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.confluence.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, @@ -9633,10 +10282,207 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path", + "type": "Object", + "tags": [], + "label": "path", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.default_value", + "type": "Uncategorized", + "tags": [], + "label": "default_value", + "description": [], + "signature": [ + "null" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTBOX" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".STRING" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key", "type": "Object", "tags": [], - "label": "path", + "label": "app_key", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9644,7 +10490,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -9658,7 +10504,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -9672,7 +10518,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.display", "type": "string", "tags": [], "label": "display", @@ -9693,7 +10539,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.label", "type": "string", "tags": [], "label": "label", @@ -9704,7 +10550,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.options", "type": "Array", "tags": [], "label": "options", @@ -9718,7 +10564,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.order", "type": "number", "tags": [], "label": "order", @@ -9729,13 +10575,24 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.placeholder", + "type": "string", + "tags": [], + "label": "placeholder", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9743,13 +10600,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9757,18 +10614,221 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.tooltip", + "type": "Uncategorized", + "tags": [], + "label": "tooltip", + "description": [], + "signature": [ + "null" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".STRING" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret", + "type": "Object", + "tags": [], + "label": "app_secret", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.default_value", + "type": "Uncategorized", + "tags": [], + "label": "default_value", + "description": [], + "signature": [ + "null" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTBOX" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.label", "type": "string", "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.tooltip", + "type": "Uncategorized", + "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.type", "type": "string", "tags": [], "label": "type", @@ -9789,7 +10849,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -9803,7 +10863,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.validations", "type": "Array", "tags": [], "label": "validations", @@ -9817,7 +10877,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.path.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.value", "type": "string", "tags": [], "label": "value", @@ -9830,10 +10890,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token", "type": "Object", "tags": [], - "label": "app_key", + "label": "refresh_token", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -9841,7 +10901,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -9855,7 +10915,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -9869,7 +10929,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.display", "type": "string", "tags": [], "label": "display", @@ -9890,7 +10950,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.label", "type": "string", "tags": [], "label": "label", @@ -9901,7 +10961,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.options", "type": "Array", "tags": [], "label": "options", @@ -9915,7 +10975,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.order", "type": "number", "tags": [], "label": "order", @@ -9926,18 +10986,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.placeholder", - "type": "string", - "tags": [], - "label": "placeholder", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.required", "type": "boolean", "tags": [], "label": "required", @@ -9951,7 +11000,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -9965,7 +11014,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -9979,7 +11028,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.type", "type": "string", "tags": [], "label": "type", @@ -10000,7 +11049,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -10014,7 +11063,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.validations", "type": "Array", "tags": [], "label": "validations", @@ -10028,7 +11077,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_key.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.value", "type": "string", "tags": [], "label": "value", @@ -10041,10 +11090,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count", "type": "Object", "tags": [], - "label": "app_secret", + "label": "retry_count", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10052,21 +11101,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -10080,7 +11126,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.display", "type": "string", "tags": [], "label": "display", @@ -10093,7 +11139,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10101,7 +11147,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.label", "type": "string", "tags": [], "label": "label", @@ -10112,7 +11158,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.options", "type": "Array", "tags": [], "label": "options", @@ -10126,7 +11172,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.order", "type": "number", "tags": [], "label": "order", @@ -10137,13 +11183,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10151,13 +11197,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10165,7 +11211,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -10179,7 +11225,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.type", "type": "string", "tags": [], "label": "type", @@ -10192,7 +11238,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10200,13 +11246,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10214,7 +11260,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.validations", "type": "Array", "tags": [], "label": "validations", @@ -10228,8 +11274,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.app_secret.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.value", + "type": "number", "tags": [], "label": "value", "description": [], @@ -10241,10 +11287,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads", "type": "Object", "tags": [], - "label": "refresh_token", + "label": "concurrent_downloads", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10252,21 +11298,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -10280,7 +11323,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.display", "type": "string", "tags": [], "label": "display", @@ -10293,7 +11336,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10301,7 +11344,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.label", "type": "string", "tags": [], "label": "label", @@ -10312,7 +11355,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.options", "type": "Array", "tags": [], "label": "options", @@ -10326,7 +11369,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.order", "type": "number", "tags": [], "label": "order", @@ -10337,13 +11380,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10351,13 +11394,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10365,7 +11408,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -10379,7 +11422,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.type", "type": "string", "tags": [], "label": "type", @@ -10392,7 +11435,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10400,13 +11443,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10414,7 +11457,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.validations", "type": "Array", "tags": [], "label": "validations", @@ -10428,8 +11471,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.refresh_token.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.value", + "type": "number", "tags": [], "label": "value", "description": [], @@ -10441,10 +11484,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service", "type": "Object", "tags": [], - "label": "retry_count", + "label": "use_text_extraction_service", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10452,18 +11495,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.default_value", + "type": "boolean", "tags": [], "label": "default_value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -10477,7 +11523,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.display", "type": "string", "tags": [], "label": "display", @@ -10490,7 +11536,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10498,7 +11544,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.label", "type": "string", "tags": [], "label": "label", @@ -10509,7 +11555,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.options", "type": "Array", "tags": [], "label": "options", @@ -10523,7 +11569,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.order", "type": "number", "tags": [], "label": "order", @@ -10534,13 +11580,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10548,7 +11594,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -10562,21 +11608,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.type", "type": "string", "tags": [], "label": "type", @@ -10589,7 +11632,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10597,7 +11640,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -10611,7 +11654,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.validations", "type": "Array", "tags": [], "label": "validations", @@ -10625,23 +11668,154 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.retry_count.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.features.FeatureName.SYNC_RULES", + "type": "Object", + "tags": [], + "label": "[FeatureName.SYNC_RULES]", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.features.FeatureName.SYNC_RULES.advanced", + "type": "Object", + "tags": [], + "label": "advanced", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.features.FeatureName.SYNC_RULES.advanced.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.features.FeatureName.SYNC_RULES.basic", + "type": "Object", "tags": [], - "label": "value", + "label": "basic", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, - "trackAdoption": false + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.features.FeatureName.SYNC_RULES.basic.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] } ] - }, + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github", + "type": "Object", + "tags": [], + "label": "github", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source", "type": "Object", "tags": [], - "label": "concurrent_downloads", + "label": "data_source", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10649,18 +11823,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -10674,7 +11851,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.display", "type": "string", "tags": [], "label": "display", @@ -10687,7 +11864,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".DROPDOWN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10695,7 +11872,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.label", "type": "string", "tags": [], "label": "label", @@ -10706,13 +11883,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.options", "type": "Array", "tags": [], "label": "options", "description": [], "signature": [ - "never[]" + "{ label: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10720,7 +11897,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.order", "type": "number", "tags": [], "label": "order", @@ -10731,13 +11908,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10745,7 +11922,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -10759,7 +11936,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -10773,7 +11950,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.type", "type": "string", "tags": [], "label": "type", @@ -10786,7 +11963,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10794,13 +11971,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10808,7 +11985,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.validations", "type": "Array", "tags": [], "label": "validations", @@ -10822,8 +11999,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.concurrent_downloads.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.value", + "type": "string", "tags": [], "label": "value", "description": [], @@ -10835,10 +12012,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host", "type": "Object", "tags": [], - "label": "use_text_extraction_service", + "label": "host", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10846,13 +12023,13 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.default_value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], "signature": [ - "false" + "null" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10860,13 +12037,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10874,7 +12051,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.display", "type": "string", "tags": [], "label": "display", @@ -10887,7 +12064,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10895,7 +12072,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.label", "type": "string", "tags": [], "label": "label", @@ -10906,7 +12083,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.options", "type": "Array", "tags": [], "label": "options", @@ -10920,7 +12097,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.order", "type": "number", "tags": [], "label": "order", @@ -10931,7 +12108,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.required", "type": "boolean", "tags": [], "label": "required", @@ -10945,7 +12122,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -10959,18 +12136,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.type", "type": "string", "tags": [], "label": "type", @@ -10983,7 +12163,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -10991,13 +12171,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11005,7 +12185,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.validations", "type": "Array", "tags": [], "label": "validations", @@ -11019,154 +12199,23 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.configuration.use_text_extraction_service.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.features.FeatureName.SYNC_RULES", - "type": "Object", - "tags": [], - "label": "[FeatureName.SYNC_RULES]", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.features.FeatureName.SYNC_RULES.advanced", - "type": "Object", - "tags": [], - "label": "advanced", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.features.FeatureName.SYNC_RULES.advanced.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.features.FeatureName.SYNC_RULES.basic", - "type": "Object", - "tags": [], - "label": "basic", - "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.features.FeatureName.SYNC_RULES.basic.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] + "deprecated": false, + "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.dropbox.serviceType", - "type": "string", - "tags": [], - "label": "serviceType", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github", - "type": "Object", - "tags": [], - "label": "github", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration", - "type": "Object", - "tags": [], - "label": "configuration", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token", "type": "Object", "tags": [], - "label": "data_source", + "label": "token", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11174,7 +12223,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -11188,7 +12237,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -11202,7 +12251,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.display", "type": "string", "tags": [], "label": "display", @@ -11215,7 +12264,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".DROPDOWN" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11223,7 +12272,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.label", "type": "string", "tags": [], "label": "label", @@ -11234,13 +12283,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.options", "type": "Array", "tags": [], "label": "options", "description": [], "signature": [ - "{ label: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11248,7 +12297,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.order", "type": "number", "tags": [], "label": "order", @@ -11259,7 +12308,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.required", "type": "boolean", "tags": [], "label": "required", @@ -11273,13 +12322,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11287,7 +12336,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -11301,7 +12350,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.type", "type": "string", "tags": [], "label": "type", @@ -11322,7 +12371,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -11336,7 +12385,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.validations", "type": "Array", "tags": [], "label": "validations", @@ -11350,7 +12399,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.data_source.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.value", "type": "string", "tags": [], "label": "value", @@ -11363,10 +12412,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type", "type": "Object", "tags": [], - "label": "host", + "label": "repo_type", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11374,7 +12423,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -11388,13 +12437,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11402,7 +12451,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.display", "type": "string", "tags": [], "label": "display", @@ -11415,7 +12464,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".DROPDOWN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11423,7 +12472,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.label", "type": "string", "tags": [], "label": "label", @@ -11434,13 +12483,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.options", "type": "Array", "tags": [], "label": "options", "description": [], "signature": [ - "never[]" + "{ label: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11448,7 +12497,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.order", "type": "number", "tags": [], "label": "order", @@ -11459,7 +12508,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.required", "type": "boolean", "tags": [], "label": "required", @@ -11473,7 +12522,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -11487,21 +12536,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.type", "type": "string", "tags": [], "label": "type", @@ -11522,7 +12568,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -11536,7 +12582,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.validations", "type": "Array", "tags": [], "label": "validations", @@ -11550,7 +12596,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.host.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.value", "type": "string", "tags": [], "label": "value", @@ -11563,10 +12609,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name", "type": "Object", "tags": [], - "label": "token", + "label": "org_name", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11574,7 +12620,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -11588,13 +12634,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11602,7 +12648,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.display", "type": "string", "tags": [], "label": "display", @@ -11623,7 +12669,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.label", "type": "string", "tags": [], "label": "label", @@ -11634,7 +12680,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.options", "type": "Array", "tags": [], "label": "options", @@ -11648,7 +12694,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.order", "type": "number", "tags": [], "label": "order", @@ -11659,7 +12705,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.required", "type": "boolean", "tags": [], "label": "required", @@ -11673,13 +12719,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11687,7 +12733,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -11701,7 +12747,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.type", "type": "string", "tags": [], "label": "type", @@ -11722,7 +12768,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -11736,7 +12782,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.validations", "type": "Array", "tags": [], "label": "validations", @@ -11750,7 +12796,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.token.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.value", "type": "string", "tags": [], "label": "value", @@ -11763,10 +12809,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories", "type": "Object", "tags": [], - "label": "repo_type", + "label": "repositories", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11774,7 +12820,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -11788,7 +12834,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -11802,7 +12848,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.display", "type": "string", "tags": [], "label": "display", @@ -11815,7 +12861,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".DROPDOWN" + ".TEXTAREA" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11823,7 +12869,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.label", "type": "string", "tags": [], "label": "label", @@ -11834,13 +12880,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.options", "type": "Array", "tags": [], "label": "options", "description": [], "signature": [ - "{ label: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11848,7 +12894,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.order", "type": "number", "tags": [], "label": "order", @@ -11859,7 +12905,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.required", "type": "boolean", "tags": [], "label": "required", @@ -11873,7 +12919,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -11887,7 +12933,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -11898,7 +12944,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.type", "type": "string", "tags": [], "label": "type", @@ -11911,7 +12957,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".LIST" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11919,7 +12965,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -11933,7 +12979,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.validations", "type": "Array", "tags": [], "label": "validations", @@ -11947,7 +12993,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repo_type.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.value", "type": "string", "tags": [], "label": "value", @@ -11960,10 +13006,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled", "type": "Object", "tags": [], - "label": "org_name", + "label": "ssl_enabled", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11971,7 +13017,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -11985,13 +13031,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -11999,7 +13045,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.display", "type": "string", "tags": [], "label": "display", @@ -12012,7 +13058,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12020,7 +13066,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.label", "type": "string", "tags": [], "label": "label", @@ -12031,7 +13077,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.options", "type": "Array", "tags": [], "label": "options", @@ -12045,7 +13091,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.order", "type": "number", "tags": [], "label": "order", @@ -12056,7 +13102,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.required", "type": "boolean", "tags": [], "label": "required", @@ -12070,7 +13116,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -12084,7 +13130,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -12098,7 +13144,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.type", "type": "string", "tags": [], "label": "type", @@ -12111,7 +13157,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12119,7 +13165,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -12133,7 +13179,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.validations", "type": "Array", "tags": [], "label": "validations", @@ -12147,11 +13193,14 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.org_name.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -12160,10 +13209,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca", "type": "Object", "tags": [], - "label": "repositories", + "label": "ssl_ca", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12171,7 +13220,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -12185,13 +13234,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: true; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12199,7 +13248,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.display", "type": "string", "tags": [], "label": "display", @@ -12212,7 +13261,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTAREA" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12220,7 +13269,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.label", "type": "string", "tags": [], "label": "label", @@ -12231,7 +13280,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.options", "type": "Array", "tags": [], "label": "options", @@ -12245,7 +13294,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.order", "type": "number", "tags": [], "label": "order", @@ -12256,7 +13305,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.required", "type": "boolean", "tags": [], "label": "required", @@ -12270,7 +13319,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -12284,18 +13333,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.type", "type": "string", "tags": [], "label": "type", @@ -12308,7 +13360,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".LIST" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12316,7 +13368,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -12330,7 +13382,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.validations", "type": "Array", "tags": [], "label": "validations", @@ -12344,7 +13396,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.repositories.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.value", "type": "string", "tags": [], "label": "value", @@ -12357,10 +13409,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count", "type": "Object", "tags": [], - "label": "ssl_enabled", + "label": "retry_count", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12368,7 +13420,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -12382,7 +13434,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -12396,7 +13448,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.display", "type": "string", "tags": [], "label": "display", @@ -12409,7 +13461,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12417,7 +13469,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.label", "type": "string", "tags": [], "label": "label", @@ -12428,7 +13480,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.options", "type": "Array", "tags": [], "label": "options", @@ -12442,7 +13494,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.order", "type": "number", "tags": [], "label": "order", @@ -12453,13 +13505,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12467,7 +13519,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -12481,7 +13533,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -12495,7 +13547,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.type", "type": "string", "tags": [], "label": "type", @@ -12508,7 +13560,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12516,13 +13568,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12530,7 +13582,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.validations", "type": "Array", "tags": [], "label": "validations", @@ -12544,14 +13596,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_enabled.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.value", + "type": "number", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -12560,10 +13609,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service", "type": "Object", "tags": [], - "label": "ssl_ca", + "label": "use_text_extraction_service", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12571,7 +13620,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -12585,13 +13634,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: true; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12599,7 +13648,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.display", "type": "string", "tags": [], "label": "display", @@ -12612,7 +13661,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12620,7 +13669,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.label", "type": "string", "tags": [], "label": "label", @@ -12631,7 +13680,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.options", "type": "Array", "tags": [], "label": "options", @@ -12645,7 +13694,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.order", "type": "number", "tags": [], "label": "order", @@ -12656,7 +13705,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.required", "type": "boolean", "tags": [], "label": "required", @@ -12670,7 +13719,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -12684,21 +13733,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.type", "type": "string", "tags": [], "label": "type", @@ -12711,7 +13757,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12719,13 +13765,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12733,7 +13779,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.validations", "type": "Array", "tags": [], "label": "validations", @@ -12747,11 +13793,14 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.ssl_ca.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -12760,10 +13809,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security", "type": "Object", "tags": [], - "label": "retry_count", + "label": "use_document_level_security", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12771,7 +13820,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -12785,13 +13834,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12799,7 +13848,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.display", "type": "string", "tags": [], "label": "display", @@ -12812,7 +13861,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12820,7 +13869,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.label", "type": "string", "tags": [], "label": "label", @@ -12831,7 +13880,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.options", "type": "Array", "tags": [], "label": "options", @@ -12845,7 +13894,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.order", "type": "number", "tags": [], "label": "order", @@ -12856,13 +13905,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12870,7 +13919,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -12884,21 +13933,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.type", "type": "string", "tags": [], "label": "type", @@ -12911,7 +13957,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12919,13 +13965,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12933,7 +13979,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.validations", "type": "Array", "tags": [], "label": "validations", @@ -12947,23 +13993,98 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.retry_count.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - }, + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage", + "type": "Object", + "tags": [], + "label": "google_cloud_storage", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets", "type": "Object", "tags": [], - "label": "use_text_extraction_service", + "label": "buckets", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -12971,7 +14092,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -12985,7 +14106,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -12999,7 +14120,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.display", "type": "string", "tags": [], "label": "display", @@ -13012,7 +14133,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTAREA" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13020,7 +14141,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.label", "type": "string", "tags": [], "label": "label", @@ -13031,7 +14152,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.options", "type": "Array", "tags": [], "label": "options", @@ -13045,7 +14166,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.order", "type": "number", "tags": [], "label": "order", @@ -13056,7 +14177,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.required", "type": "boolean", "tags": [], "label": "required", @@ -13070,7 +14191,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -13084,18 +14205,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.type", "type": "string", "tags": [], "label": "type", @@ -13108,7 +14232,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".LIST" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13116,13 +14240,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13130,7 +14254,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.validations", "type": "Array", "tags": [], "label": "validations", @@ -13144,14 +14268,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_text_extraction_service.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -13160,10 +14281,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials", "type": "Object", "tags": [], - "label": "use_document_level_security", + "label": "service_account_credentials", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13171,7 +14292,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -13185,13 +14306,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13199,7 +14320,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.display", "type": "string", "tags": [], "label": "display", @@ -13212,7 +14333,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTAREA" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13220,7 +14341,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.label", "type": "string", "tags": [], "label": "label", @@ -13231,7 +14352,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.options", "type": "Array", "tags": [], "label": "options", @@ -13245,7 +14366,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.order", "type": "number", "tags": [], "label": "order", @@ -13256,7 +14377,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.required", "type": "boolean", "tags": [], "label": "required", @@ -13270,13 +14391,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13284,18 +14405,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.type", "type": "string", "tags": [], "label": "type", @@ -13308,7 +14432,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13316,7 +14440,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -13330,7 +14454,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.validations", "type": "Array", "tags": [], "label": "validations", @@ -13344,98 +14468,23 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.configuration.use_document_level_security.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.github.serviceType", - "type": "string", - "tags": [], - "label": "serviceType", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage", - "type": "Object", - "tags": [], - "label": "google_cloud_storage", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration", - "type": "Object", - "tags": [], - "label": "configuration", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count", "type": "Object", "tags": [], - "label": "buckets", + "label": "retry_count", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13443,21 +14492,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -13471,7 +14517,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.display", "type": "string", "tags": [], "label": "display", @@ -13484,7 +14530,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTAREA" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13492,7 +14538,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.label", "type": "string", "tags": [], "label": "label", @@ -13503,7 +14549,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.options", "type": "Array", "tags": [], "label": "options", @@ -13517,7 +14563,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.order", "type": "number", "tags": [], "label": "order", @@ -13528,13 +14574,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13542,7 +14588,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -13556,7 +14602,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -13570,7 +14616,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.type", "type": "string", "tags": [], "label": "type", @@ -13583,7 +14629,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".LIST" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13591,13 +14637,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13605,7 +14651,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.validations", "type": "Array", "tags": [], "label": "validations", @@ -13619,7 +14665,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.value", "type": "string", "tags": [], "label": "value", @@ -13632,10 +14678,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service", "type": "Object", "tags": [], - "label": "service_account_credentials", + "label": "use_text_extraction_service", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13643,7 +14689,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -13657,7 +14703,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -13671,7 +14717,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.display", "type": "string", "tags": [], "label": "display", @@ -13684,7 +14730,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTAREA" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13692,7 +14738,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.label", "type": "string", "tags": [], "label": "label", @@ -13703,7 +14749,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.options", "type": "Array", "tags": [], "label": "options", @@ -13717,7 +14763,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.order", "type": "number", "tags": [], "label": "order", @@ -13728,7 +14774,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.required", "type": "boolean", "tags": [], "label": "required", @@ -13742,13 +14788,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13756,21 +14802,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.type", "type": "string", "tags": [], "label": "type", @@ -13783,7 +14826,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13791,13 +14834,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13805,7 +14848,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.validations", "type": "Array", "tags": [], "label": "validations", @@ -13819,23 +14862,74 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - }, + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive", + "type": "Object", + "tags": [], + "label": "google_drive", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials", "type": "Object", "tags": [], - "label": "retry_count", + "label": "service_account_credentials", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13843,18 +14937,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -13868,7 +14965,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.display", "type": "string", "tags": [], "label": "display", @@ -13881,7 +14978,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTAREA" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13889,7 +14986,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.label", "type": "string", "tags": [], "label": "label", @@ -13900,7 +14997,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.options", "type": "Array", "tags": [], "label": "options", @@ -13914,7 +15011,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.order", "type": "number", "tags": [], "label": "order", @@ -13925,13 +15022,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13939,13 +15036,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13953,21 +15050,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.type", "type": "string", "tags": [], "label": "type", @@ -13980,7 +15074,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -13988,13 +15082,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14002,7 +15096,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.validations", "type": "Array", "tags": [], "label": "validations", @@ -14016,7 +15110,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.value", "type": "string", "tags": [], "label": "value", @@ -14029,10 +15123,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync", "type": "Object", "tags": [], - "label": "use_text_extraction_service", + "label": "use_domain_wide_delegation_for_sync", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14040,7 +15134,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -14054,7 +15148,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -14068,7 +15162,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.display", "type": "string", "tags": [], "label": "display", @@ -14089,7 +15183,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.label", "type": "string", "tags": [], "label": "label", @@ -14100,7 +15194,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.options", "type": "Array", "tags": [], "label": "options", @@ -14114,7 +15208,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.order", "type": "number", "tags": [], "label": "order", @@ -14125,7 +15219,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.required", "type": "boolean", "tags": [], "label": "required", @@ -14139,7 +15233,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -14153,7 +15247,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -14164,7 +15258,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.type", "type": "string", "tags": [], "label": "type", @@ -14185,13 +15279,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14199,7 +15293,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.validations", "type": "Array", "tags": [], "label": "validations", @@ -14213,7 +15307,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.value", "type": "boolean", "tags": [], "label": "value", @@ -14226,61 +15320,13 @@ "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.serviceType", - "type": "string", - "tags": [], - "label": "serviceType", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive", - "type": "Object", - "tags": [], - "label": "google_drive", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration", - "type": "Object", - "tags": [], - "label": "configuration", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync", "type": "Object", "tags": [], - "label": "service_account_credentials", + "label": "google_workspace_admin_email_for_data_sync", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14288,7 +15334,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -14302,13 +15348,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: true; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14316,7 +15362,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.display", "type": "string", "tags": [], "label": "display", @@ -14329,7 +15375,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTAREA" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14337,7 +15383,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.label", "type": "string", "tags": [], "label": "label", @@ -14348,7 +15394,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.options", "type": "Array", "tags": [], "label": "options", @@ -14362,7 +15408,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.order", "type": "number", "tags": [], "label": "order", @@ -14373,7 +15419,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.required", "type": "boolean", "tags": [], "label": "required", @@ -14387,13 +15433,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14401,7 +15447,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -14412,7 +15458,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.type", "type": "string", "tags": [], "label": "type", @@ -14433,7 +15479,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -14447,13 +15493,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "never[]" + "{ type: string; constraint: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14461,7 +15507,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.value", "type": "string", "tags": [], "label": "value", @@ -14474,10 +15520,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync", "type": "Object", "tags": [], - "label": "use_domain_wide_delegation_for_sync", + "label": "google_workspace_email_for_shared_drives_sync", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14485,7 +15531,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -14499,13 +15545,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: true; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14513,7 +15559,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.display", "type": "string", "tags": [], "label": "display", @@ -14526,7 +15572,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14534,7 +15580,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.label", "type": "string", "tags": [], "label": "label", @@ -14545,7 +15591,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.options", "type": "Array", "tags": [], "label": "options", @@ -14559,7 +15605,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.order", "type": "number", "tags": [], "label": "order", @@ -14570,7 +15616,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.required", "type": "boolean", "tags": [], "label": "required", @@ -14584,7 +15630,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -14598,7 +15644,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -14609,7 +15655,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.type", "type": "string", "tags": [], "label": "type", @@ -14622,7 +15668,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14630,7 +15676,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -14644,13 +15690,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "never[]" + "{ type: string; constraint: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14658,14 +15704,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -14674,10 +15717,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security", "type": "Object", "tags": [], - "label": "google_workspace_admin_email_for_data_sync", + "label": "use_document_level_security", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14685,7 +15728,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -14699,13 +15742,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: true; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14713,7 +15756,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.display", "type": "string", "tags": [], "label": "display", @@ -14726,7 +15769,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14734,7 +15777,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.label", "type": "string", "tags": [], "label": "label", @@ -14745,7 +15788,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.options", "type": "Array", "tags": [], "label": "options", @@ -14759,7 +15802,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.order", "type": "number", "tags": [], "label": "order", @@ -14770,7 +15813,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.required", "type": "boolean", "tags": [], "label": "required", @@ -14784,7 +15827,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -14798,7 +15841,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -14809,7 +15852,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.type", "type": "string", "tags": [], "label": "type", @@ -14822,7 +15865,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14830,7 +15873,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -14844,13 +15887,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "{ type: string; constraint: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14858,11 +15901,14 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -14871,10 +15917,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email", "type": "Object", "tags": [], - "label": "google_workspace_email_for_shared_drives_sync", + "label": "google_workspace_admin_email", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14882,7 +15928,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -14896,13 +15942,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: true; }[]" + "({ field: string; value: true; } | { field: string; value: false; })[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14910,7 +15956,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.display", "type": "string", "tags": [], "label": "display", @@ -14931,7 +15977,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.label", "type": "string", "tags": [], "label": "label", @@ -14942,7 +15988,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.options", "type": "Array", "tags": [], "label": "options", @@ -14956,7 +16002,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.order", "type": "number", "tags": [], "label": "order", @@ -14967,7 +16013,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.required", "type": "boolean", "tags": [], "label": "required", @@ -14981,7 +16027,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -14995,7 +16041,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -15006,7 +16052,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.type", "type": "string", "tags": [], "label": "type", @@ -15027,7 +16073,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -15041,7 +16087,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.validations", "type": "Array", "tags": [], "label": "validations", @@ -15055,7 +16101,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.value", "type": "string", "tags": [], "label": "value", @@ -15068,10 +16114,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency", "type": "Object", "tags": [], - "label": "use_document_level_security", + "label": "max_concurrency", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15079,21 +16125,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -15107,7 +16150,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.display", "type": "string", "tags": [], "label": "display", @@ -15120,7 +16163,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15128,7 +16171,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.label", "type": "string", "tags": [], "label": "label", @@ -15139,7 +16182,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.options", "type": "Array", "tags": [], "label": "options", @@ -15153,7 +16196,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.order", "type": "number", "tags": [], "label": "order", @@ -15164,13 +16207,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15178,7 +16221,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -15192,7 +16235,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -15203,7 +16246,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.type", "type": "string", "tags": [], "label": "type", @@ -15216,7 +16259,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15224,13 +16267,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15238,13 +16281,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "never[]" + "{ type: string; constraint: number; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15252,14 +16295,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -15268,10 +16308,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service", "type": "Object", "tags": [], - "label": "google_workspace_admin_email", + "label": "use_text_extraction_service", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15279,7 +16319,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -15293,13 +16333,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "({ field: string; value: true; } | { field: string; value: false; })[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15307,7 +16347,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.display", "type": "string", "tags": [], "label": "display", @@ -15320,7 +16360,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15328,7 +16368,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.label", "type": "string", "tags": [], "label": "label", @@ -15339,7 +16379,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.options", "type": "Array", "tags": [], "label": "options", @@ -15353,7 +16393,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.order", "type": "number", "tags": [], "label": "order", @@ -15364,7 +16404,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.required", "type": "boolean", "tags": [], "label": "required", @@ -15378,7 +16418,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -15392,7 +16432,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -15403,7 +16443,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.type", "type": "string", "tags": [], "label": "type", @@ -15416,7 +16456,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15424,13 +16464,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15438,13 +16478,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "{ type: string; constraint: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15452,23 +16492,114 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - }, + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.features.FeatureName.DOCUMENT_LEVEL_SECURITY", + "type": "Object", + "tags": [], + "label": "[FeatureName.DOCUMENT_LEVEL_SECURITY]", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.features.FeatureName.DOCUMENT_LEVEL_SECURITY.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira", + "type": "Object", + "tags": [], + "label": "jira", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source", "type": "Object", "tags": [], - "label": "max_concurrency", + "label": "data_source", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15476,18 +16607,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -15501,7 +16635,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.display", "type": "string", "tags": [], "label": "display", @@ -15514,7 +16648,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".DROPDOWN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15522,7 +16656,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.label", "type": "string", "tags": [], "label": "label", @@ -15533,13 +16667,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.options", "type": "Array", "tags": [], "label": "options", "description": [], "signature": [ - "never[]" + "{ label: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15547,7 +16681,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.order", "type": "number", "tags": [], "label": "order", @@ -15558,13 +16692,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15572,7 +16706,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -15586,18 +16720,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.type", "type": "string", "tags": [], "label": "type", @@ -15610,7 +16747,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15618,13 +16755,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15632,13 +16769,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "{ type: string; constraint: number; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15646,7 +16783,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.value", "type": "string", "tags": [], "label": "value", @@ -15659,10 +16796,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username", "type": "Object", "tags": [], - "label": "use_text_extraction_service", + "label": "username", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15670,7 +16807,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -15684,13 +16821,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15698,7 +16835,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.display", "type": "string", "tags": [], "label": "display", @@ -15711,7 +16848,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15719,7 +16856,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.label", "type": "string", "tags": [], "label": "label", @@ -15730,7 +16867,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.options", "type": "Array", "tags": [], "label": "options", @@ -15744,7 +16881,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.order", "type": "number", "tags": [], "label": "order", @@ -15755,7 +16892,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.required", "type": "boolean", "tags": [], "label": "required", @@ -15769,7 +16906,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -15783,18 +16920,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.type", "type": "string", "tags": [], "label": "type", @@ -15807,7 +16947,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15815,13 +16955,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15829,7 +16969,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.validations", "type": "Array", "tags": [], "label": "validations", @@ -15843,114 +16983,23 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.features.FeatureName.DOCUMENT_LEVEL_SECURITY", - "type": "Object", - "tags": [], - "label": "[FeatureName.DOCUMENT_LEVEL_SECURITY]", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.features.FeatureName.DOCUMENT_LEVEL_SECURITY.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.serviceType", - "type": "string", - "tags": [], - "label": "serviceType", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira", - "type": "Object", - "tags": [], - "label": "jira", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration", - "type": "Object", - "tags": [], - "label": "configuration", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password", "type": "Object", "tags": [], - "label": "data_source", + "label": "password", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15958,7 +17007,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -15972,13 +17021,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15986,7 +17035,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.display", "type": "string", "tags": [], "label": "display", @@ -15999,7 +17048,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".DROPDOWN" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16007,7 +17056,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.label", "type": "string", "tags": [], "label": "label", @@ -16018,13 +17067,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.options", "type": "Array", "tags": [], "label": "options", "description": [], "signature": [ - "{ label: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16032,7 +17081,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.order", "type": "number", "tags": [], "label": "order", @@ -16043,7 +17092,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.required", "type": "boolean", "tags": [], "label": "required", @@ -16057,13 +17106,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16071,7 +17120,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -16085,7 +17134,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.type", "type": "string", "tags": [], "label": "type", @@ -16106,7 +17155,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -16120,7 +17169,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.validations", "type": "Array", "tags": [], "label": "validations", @@ -16134,7 +17183,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.value", "type": "string", "tags": [], "label": "value", @@ -16147,10 +17196,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username", "type": "Object", "tags": [], - "label": "username", + "label": "data_center_username", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16158,7 +17207,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -16172,7 +17221,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -16186,7 +17235,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.display", "type": "string", "tags": [], "label": "display", @@ -16207,7 +17256,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.label", "type": "string", "tags": [], "label": "label", @@ -16218,7 +17267,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.options", "type": "Array", "tags": [], "label": "options", @@ -16232,7 +17281,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.order", "type": "number", "tags": [], "label": "order", @@ -16243,7 +17292,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.required", "type": "boolean", "tags": [], "label": "required", @@ -16257,7 +17306,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -16271,7 +17320,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -16285,7 +17334,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.type", "type": "string", "tags": [], "label": "type", @@ -16306,7 +17355,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -16320,7 +17369,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.validations", "type": "Array", "tags": [], "label": "validations", @@ -16334,7 +17383,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.value", "type": "string", "tags": [], "label": "value", @@ -16347,10 +17396,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password", "type": "Object", "tags": [], - "label": "password", + "label": "data_center_password", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16358,7 +17407,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -16372,7 +17421,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -16386,7 +17435,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.display", "type": "string", "tags": [], "label": "display", @@ -16407,7 +17456,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.label", "type": "string", "tags": [], "label": "label", @@ -16418,7 +17467,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.options", "type": "Array", "tags": [], "label": "options", @@ -16432,7 +17481,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.order", "type": "number", "tags": [], "label": "order", @@ -16443,7 +17492,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.required", "type": "boolean", "tags": [], "label": "required", @@ -16457,7 +17506,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -16471,7 +17520,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -16485,7 +17534,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.type", "type": "string", "tags": [], "label": "type", @@ -16506,7 +17555,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -16520,7 +17569,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.validations", "type": "Array", "tags": [], "label": "validations", @@ -16534,7 +17583,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.value", "type": "string", "tags": [], "label": "value", diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index fee9ddcb3772d6..07e39017a4bc7c 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/te | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2735 | 0 | 2735 | 0 | +| 2805 | 0 | 2805 | 0 | ## Common diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 82d267f2a682ca..ce42067d7bbb35 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index 9ad994768c843d..ef3f0695583921 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index b93a95889a781a..4affbc620650e2 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: 2024-01-31 +date: 2024-02-05 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_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index 8f84c0cd52749f..c160d8827cbb40 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index afaf4d102621fe..d01b28f9afc74a 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 0bb3857ad29213..766705e251dec9 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 1f9d3ff668842b..fa0158fb3cf5a7 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: 2024-01-31 +date: 2024-02-05 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 7029b517a81cde..33079370fb9ff7 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: 2024-01-31 +date: 2024-02-05 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 7507454d859e5b..3421ecfa7c8772 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: 2024-01-31 +date: 2024-02-05 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 ddecd8e1af2e51..9f1697ad96fa52 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: 2024-01-31 +date: 2024-02-05 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 ad8544d330f2f6..7e2354735e66a4 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: 2024-01-31 +date: 2024-02-05 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 83eba86e7b2e38..db18493c50b0e7 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: 2024-01-31 +date: 2024-02-05 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 83dfd6edefa0f9..35d8e7f3c598fa 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: 2024-01-31 +date: 2024-02-05 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 0267e48301c5ae..ec112c294386e7 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.devdocs.json b/api_docs/kbn_securitysolution_exception_list_components.devdocs.json index 641f77f998bfb5..3206c032c083db 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.devdocs.json +++ b/api_docs/kbn_securitysolution_exception_list_components.devdocs.json @@ -834,7 +834,7 @@ "label": "formattedDateComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"source\" | \"desc\" | \"filter\" | \"text\" | \"map\" | \"head\" | \"slot\" | \"style\" | \"title\" | \"meta\" | \"data\" | \"pattern\" | \"summary\" | \"template\" | \"span\" | \"main\" | \"path\" | \"form\" | \"body\" | \"q\" | \"label\" | \"progress\" | \"article\" | \"image\" | \"menu\" | \"stop\" | \"base\" | React.ComponentType | \"s\" | \"legend\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"canvas\" | \"svg\" | \"select\" | \"output\" | \"view\" | \"script\" | \"time\" | \"mask\" | \"input\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"aside\" | \"audio\" | \"b\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"caption\" | \"cite\" | \"code\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"header\" | \"hgroup\" | \"hr\" | \"html\" | \"i\" | \"iframe\" | \"img\" | \"ins\" | \"kbd\" | \"keygen\" | \"li\" | \"mark\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"param\" | \"picture\" | \"pre\" | \"rp\" | \"rt\" | \"ruby\" | \"samp\" | \"section\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"line\" | \"linearGradient\" | \"marker\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\"" + "\"symbol\" | \"object\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"source\" | \"desc\" | \"filter\" | \"text\" | \"map\" | \"head\" | \"slot\" | \"style\" | \"title\" | \"meta\" | \"data\" | \"pattern\" | \"summary\" | \"template\" | \"span\" | \"main\" | \"path\" | \"form\" | \"body\" | \"q\" | \"label\" | \"progress\" | \"article\" | \"image\" | \"menu\" | \"stop\" | \"base\" | React.ComponentType | \"s\" | \"legend\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"canvas\" | \"svg\" | \"select\" | \"output\" | \"view\" | \"script\" | \"time\" | \"mask\" | \"input\" | \"table\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"aside\" | \"audio\" | \"b\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"caption\" | \"cite\" | \"code\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"header\" | \"hgroup\" | \"hr\" | \"html\" | \"i\" | \"iframe\" | \"img\" | \"ins\" | \"kbd\" | \"keygen\" | \"li\" | \"mark\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"param\" | \"picture\" | \"pre\" | \"rp\" | \"rt\" | \"ruby\" | \"samp\" | \"section\" | \"strong\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"line\" | \"linearGradient\" | \"marker\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\"" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/meta/index.tsx", "deprecated": false, @@ -848,7 +848,7 @@ "label": "securityLinkAnchorComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"source\" | \"desc\" | \"filter\" | \"text\" | \"map\" | \"head\" | \"slot\" | \"style\" | \"title\" | \"meta\" | \"data\" | \"pattern\" | \"summary\" | \"template\" | \"span\" | \"main\" | \"path\" | \"form\" | \"body\" | \"q\" | \"label\" | \"progress\" | \"article\" | \"image\" | \"menu\" | \"stop\" | \"base\" | React.ComponentType | \"s\" | \"legend\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"canvas\" | \"svg\" | \"select\" | \"output\" | \"view\" | \"script\" | \"time\" | \"mask\" | \"input\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"aside\" | \"audio\" | \"b\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"caption\" | \"cite\" | \"code\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"header\" | \"hgroup\" | \"hr\" | \"html\" | \"i\" | \"iframe\" | \"img\" | \"ins\" | \"kbd\" | \"keygen\" | \"li\" | \"mark\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"param\" | \"picture\" | \"pre\" | \"rp\" | \"rt\" | \"ruby\" | \"samp\" | \"section\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"line\" | \"linearGradient\" | \"marker\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\"" + "\"symbol\" | \"object\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"source\" | \"desc\" | \"filter\" | \"text\" | \"map\" | \"head\" | \"slot\" | \"style\" | \"title\" | \"meta\" | \"data\" | \"pattern\" | \"summary\" | \"template\" | \"span\" | \"main\" | \"path\" | \"form\" | \"body\" | \"q\" | \"label\" | \"progress\" | \"article\" | \"image\" | \"menu\" | \"stop\" | \"base\" | React.ComponentType | \"s\" | \"legend\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"canvas\" | \"svg\" | \"select\" | \"output\" | \"view\" | \"script\" | \"time\" | \"mask\" | \"input\" | \"table\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"aside\" | \"audio\" | \"b\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"caption\" | \"cite\" | \"code\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"header\" | \"hgroup\" | \"hr\" | \"html\" | \"i\" | \"iframe\" | \"img\" | \"ins\" | \"kbd\" | \"keygen\" | \"li\" | \"mark\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"param\" | \"picture\" | \"pre\" | \"rp\" | \"rt\" | \"ruby\" | \"samp\" | \"section\" | \"strong\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"line\" | \"linearGradient\" | \"marker\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\"" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/meta/index.tsx", "deprecated": false, @@ -987,7 +987,7 @@ "label": "securityLinkAnchorComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"source\" | \"desc\" | \"filter\" | \"text\" | \"map\" | \"head\" | \"slot\" | \"style\" | \"title\" | \"meta\" | \"data\" | \"pattern\" | \"summary\" | \"template\" | \"span\" | \"main\" | \"path\" | \"form\" | \"body\" | \"q\" | \"label\" | \"progress\" | \"article\" | \"image\" | \"menu\" | \"stop\" | \"base\" | React.ComponentType | \"s\" | \"legend\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"canvas\" | \"svg\" | \"select\" | \"output\" | \"view\" | \"script\" | \"time\" | \"mask\" | \"input\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"aside\" | \"audio\" | \"b\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"caption\" | \"cite\" | \"code\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"header\" | \"hgroup\" | \"hr\" | \"html\" | \"i\" | \"iframe\" | \"img\" | \"ins\" | \"kbd\" | \"keygen\" | \"li\" | \"mark\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"param\" | \"picture\" | \"pre\" | \"rp\" | \"rt\" | \"ruby\" | \"samp\" | \"section\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"line\" | \"linearGradient\" | \"marker\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\"" + "\"symbol\" | \"object\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"source\" | \"desc\" | \"filter\" | \"text\" | \"map\" | \"head\" | \"slot\" | \"style\" | \"title\" | \"meta\" | \"data\" | \"pattern\" | \"summary\" | \"template\" | \"span\" | \"main\" | \"path\" | \"form\" | \"body\" | \"q\" | \"label\" | \"progress\" | \"article\" | \"image\" | \"menu\" | \"stop\" | \"base\" | React.ComponentType | \"s\" | \"legend\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"canvas\" | \"svg\" | \"select\" | \"output\" | \"view\" | \"script\" | \"time\" | \"mask\" | \"input\" | \"table\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"aside\" | \"audio\" | \"b\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"caption\" | \"cite\" | \"code\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"header\" | \"hgroup\" | \"hr\" | \"html\" | \"i\" | \"iframe\" | \"img\" | \"ins\" | \"kbd\" | \"keygen\" | \"li\" | \"mark\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"param\" | \"picture\" | \"pre\" | \"rp\" | \"rt\" | \"ruby\" | \"samp\" | \"section\" | \"strong\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"line\" | \"linearGradient\" | \"marker\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\"" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/exception_item_card.tsx", "deprecated": false, @@ -1001,7 +1001,7 @@ "label": "formattedDateComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"source\" | \"desc\" | \"filter\" | \"text\" | \"map\" | \"head\" | \"slot\" | \"style\" | \"title\" | \"meta\" | \"data\" | \"pattern\" | \"summary\" | \"template\" | \"span\" | \"main\" | \"path\" | \"form\" | \"body\" | \"q\" | \"label\" | \"progress\" | \"article\" | \"image\" | \"menu\" | \"stop\" | \"base\" | React.ComponentType | \"s\" | \"legend\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"canvas\" | \"svg\" | \"select\" | \"output\" | \"view\" | \"script\" | \"time\" | \"mask\" | \"input\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"aside\" | \"audio\" | \"b\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"caption\" | \"cite\" | \"code\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"header\" | \"hgroup\" | \"hr\" | \"html\" | \"i\" | \"iframe\" | \"img\" | \"ins\" | \"kbd\" | \"keygen\" | \"li\" | \"mark\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"param\" | \"picture\" | \"pre\" | \"rp\" | \"rt\" | \"ruby\" | \"samp\" | \"section\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"line\" | \"linearGradient\" | \"marker\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\"" + "\"symbol\" | \"object\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"source\" | \"desc\" | \"filter\" | \"text\" | \"map\" | \"head\" | \"slot\" | \"style\" | \"title\" | \"meta\" | \"data\" | \"pattern\" | \"summary\" | \"template\" | \"span\" | \"main\" | \"path\" | \"form\" | \"body\" | \"q\" | \"label\" | \"progress\" | \"article\" | \"image\" | \"menu\" | \"stop\" | \"base\" | React.ComponentType | \"s\" | \"legend\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"canvas\" | \"svg\" | \"select\" | \"output\" | \"view\" | \"script\" | \"time\" | \"mask\" | \"input\" | \"table\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"aside\" | \"audio\" | \"b\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"caption\" | \"cite\" | \"code\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"header\" | \"hgroup\" | \"hr\" | \"html\" | \"i\" | \"iframe\" | \"img\" | \"ins\" | \"kbd\" | \"keygen\" | \"li\" | \"mark\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"param\" | \"picture\" | \"pre\" | \"rp\" | \"rt\" | \"ruby\" | \"samp\" | \"section\" | \"strong\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"line\" | \"linearGradient\" | \"marker\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\"" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/exception_item_card.tsx", "deprecated": false, diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index 866ed7081722a6..6713cdef9ee350 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: 2024-01-31 +date: 2024-02-05 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 c79149dd273ea8..cc5139d59fdcfb 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: 2024-01-31 +date: 2024-02-05 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 ce206e1c9a509e..b406728b023a44 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: 2024-01-31 +date: 2024-02-05 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 977ae4a35925ee..deb73eb28c3ad5 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: 2024-01-31 +date: 2024-02-05 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 ba14cb164078db..687af293090a18 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: 2024-01-31 +date: 2024-02-05 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 bff691169e658a..b1f194bdaac1a3 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: 2024-01-31 +date: 2024-02-05 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 1d65de70bdda27..ea292c439b63a0 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: 2024-01-31 +date: 2024-02-05 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 d25383c3ab0b9d..86f1c89ccddc3e 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: 2024-01-31 +date: 2024-02-05 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 9d7db6320aa651..f735ff2e5b6cef 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: 2024-01-31 +date: 2024-02-05 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 d8f6b7bef32b78..b089e1c588a9a0 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: 2024-01-31 +date: 2024-02-05 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 fe8cf5a77290c4..ee832f01ad89aa 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: 2024-01-31 +date: 2024-02-05 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 575a06c3126855..046fd85fad669a 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: 2024-01-31 +date: 2024-02-05 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 8c3fc5989a9db7..8c6e45cf67bd31 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: 2024-01-31 +date: 2024-02-05 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 f926ae5430aceb..b364c393761082 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: 2024-01-31 +date: 2024-02-05 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 f3dcff85f5187b..bf5639c0870864 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: 2024-01-31 +date: 2024-02-05 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 44243da4e998f1..1fb2abd893413d 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: 2024-01-31 +date: 2024-02-05 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 e181b3c54b21c3..50840a858c9c3f 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: 2024-01-31 +date: 2024-02-05 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 3a457e4b2fc250..0e2f4154c73d43 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: 2024-01-31 +date: 2024-02-05 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 5cda73ab545044..f76daa0799b6c0 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: 2024-01-31 +date: 2024-02-05 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 82c9626b3cd2c4..41fd6e762d44eb 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: 2024-01-31 +date: 2024-02-05 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 3e5d76f415aa1a..960730bdc84f05 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: 2024-01-31 +date: 2024-02-05 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 6e7c8b382b5ae6..87ee3c14792139 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: 2024-01-31 +date: 2024-02-05 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 907816b9aef17c..0e20db8ecb8ce1 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: 2024-01-31 +date: 2024-02-05 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 d720df95271eba..793b8a1d174c4e 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 720546828acbb9..4a327e7ec6760d 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index af624611ac4d38..e304a71ca241da 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: 2024-01-31 +date: 2024-02-05 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 a244e22635ac0e..3159c5425faf6e 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: 2024-01-31 +date: 2024-02-05 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 c0091b06f525ee..7cd3572e57c820 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: 2024-01-31 +date: 2024-02-05 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 d9b4d5962e2e6c..d822131e2b7123 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 4094316ec0c75a..9042e089529489 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index a84cfeb3b3ff9b..6248d6f9d3655d 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: 2024-01-31 +date: 2024-02-05 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 3253f6322eaba1..25a1f68ea5acdf 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: 2024-01-31 +date: 2024-02-05 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 a254b50e5d03ca..36f5d8de23f2bb 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: 2024-01-31 +date: 2024-02-05 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 122c53be589567..66dae6568a47bb 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: 2024-01-31 +date: 2024-02-05 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 77e7c0743d7d89..3ae48587851515 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: 2024-01-31 +date: 2024-02-05 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 e81f5a9e897a5d..09cba02bd3a9f3 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: 2024-01-31 +date: 2024-02-05 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 0b521e687ec0bc..d32ff91404ecd4 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: 2024-01-31 +date: 2024-02-05 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 6e559f0abd75d2..c430ef97932938 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: 2024-01-31 +date: 2024-02-05 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 80e12d91435170..fff04e9aeb6d04 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: 2024-01-31 +date: 2024-02-05 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 fff725a768ddfb..6859779a1328ef 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: 2024-01-31 +date: 2024-02-05 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 b2e8f2c53b7543..c0d297a05c8268 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: 2024-01-31 +date: 2024-02-05 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 d0d6b353544892..e2f1477091d116 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: 2024-01-31 +date: 2024-02-05 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 94df6d43c03bea..34e394dcedebbc 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: 2024-01-31 +date: 2024-02-05 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 07cc4420cc55ea..2778fe43ba1d0b 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: 2024-01-31 +date: 2024-02-05 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 03a718b98a735b..56e4da86cbbc02 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: 2024-01-31 +date: 2024-02-05 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 7975c3c5e5bed3..d4a056d4bd05b3 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: 2024-01-31 +date: 2024-02-05 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 9735f1a2423650..c025a28e083b78 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: 2024-01-31 +date: 2024-02-05 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 f2c83952c02d0d..4d9fa62723f6a3 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: 2024-01-31 +date: 2024-02-05 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 3fd29e167d3b0a..c5848bfb7a3376 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: 2024-01-31 +date: 2024-02-05 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 12a77f5ab20498..d3a6be09a35a5a 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: 2024-01-31 +date: 2024-02-05 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 273bb548c497e3..34cc0c20aaffc9 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: 2024-01-31 +date: 2024-02-05 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 b68348608763d4..2e144e0a35780d 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: 2024-01-31 +date: 2024-02-05 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 feb4767d5497ad..5b368de1fad2fd 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: 2024-01-31 +date: 2024-02-05 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 1e0ff3b9792158..026f5a0dac7764 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: 2024-01-31 +date: 2024-02-05 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 69f0aa05ebca88..e51f5269e39908 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: 2024-01-31 +date: 2024-02-05 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 9d850cf4357d5d..26e45c2cecefcf 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: 2024-01-31 +date: 2024-02-05 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 906d4bc589a4de..2a70adc4a8c0a9 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: 2024-01-31 +date: 2024-02-05 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 0e1d91c307c9fe..7e292a9b51041c 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: 2024-01-31 +date: 2024-02-05 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 2d0dec7f8b8871..129774d7c27a19 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: 2024-01-31 +date: 2024-02-05 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 f78e254fb8d998..8c99349366ce42 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: 2024-01-31 +date: 2024-02-05 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 69f5773f1955c8..8acd92437f48bc 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: 2024-01-31 +date: 2024-02-05 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 e38dea2eab00a7..87f6d2d5f1a8a5 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: 2024-01-31 +date: 2024-02-05 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 03da54287508e5..6b62fdb36a6cd5 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx index 6a61c66f268d09..170dd855f1d518 100644 --- a/api_docs/kbn_sort_predicates.mdx +++ b/api_docs/kbn_sort_predicates.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates title: "@kbn/sort-predicates" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-predicates plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates'] --- import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index c72ff20fcad22f..8a1dca67c96eb3 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: 2024-01-31 +date: 2024-02-05 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 f00791ff7c4a18..d365a5e134de7e 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: 2024-01-31 +date: 2024-02-05 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.devdocs.json b/api_docs/kbn_storybook.devdocs.json index 0b37611887506f..0363ba87fde6fd 100644 --- a/api_docs/kbn_storybook.devdocs.json +++ b/api_docs/kbn_storybook.devdocs.json @@ -617,9 +617,7 @@ "Options", ".Optimization | undefined; infrastructureLogging?: ", "Options", - ".InfrastructureLogging | undefined; devServer?: ", - "Configuration", - " | undefined; }" + ".InfrastructureLogging | undefined; }" ], "path": "packages/kbn-storybook/src/lib/default_config.ts", "deprecated": false, @@ -697,9 +695,7 @@ "(config: ", "Configuration", ") => ", - "Configuration", - " & ", - "ConfigurationMergeFunction" + "Configuration" ], "path": "packages/kbn-storybook/src/lib/default_config.ts", "deprecated": false, diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index f46aca8b5b8c5c..fa2c216c98b131 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index d4fa47b6673614..53510f17825dcf 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: 2024-01-31 +date: 2024-02-05 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 e5ab38ddf7a77c..60fb864f4cb549 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx index a3c567384cfb06..0b76ef1aef88fc 100644 --- a/api_docs/kbn_test_eui_helpers.mdx +++ b/api_docs/kbn_test_eui_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers title: "@kbn/test-eui-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-eui-helpers plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers'] --- import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 283972b5f986a1..e43d09877f4ea7 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: 2024-01-31 +date: 2024-02-05 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 d3ae475ea3be0b..5415e26f533082 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: 2024-01-31 +date: 2024-02-05 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 683fbcbe7739b3..e80040095d8c27 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: 2024-01-31 +date: 2024-02-05 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 d736e9e4a7a263..ee0e514f8bc2f2 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index d630416c52ffde..8136ad8cc11b8d 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index f66977917f7cd6..7f152b686cf664 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: 2024-01-31 +date: 2024-02-05 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 35b679f61b508c..82a3a0cc338bf1 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: 2024-01-31 +date: 2024-02-05 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 0010b5ee43ae74..0b0be11ed048ea 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: 2024-01-31 +date: 2024-02-05 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 57da3604588039..cdf477f221753e 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: 2024-01-31 +date: 2024-02-05 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 45d7fb7175f545..45167bedaab44c 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: 2024-01-31 +date: 2024-02-05 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 f55ee7578418b7..eb16539c4681bc 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: 2024-01-31 +date: 2024-02-05 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 63f86f119191f7..0b36748a628f76 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: 2024-01-31 +date: 2024-02-05 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 935aba001c906b..b843a24b2054ed 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index 8e012a2f74bd78..057cc182a4879d 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_url_state.devdocs.json b/api_docs/kbn_url_state.devdocs.json deleted file mode 100644 index 1671e9104db27d..00000000000000 --- a/api_docs/kbn_url_state.devdocs.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "id": "@kbn/url-state", - "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { - "classes": [], - "functions": [ - { - "parentPluginId": "@kbn/url-state", - "id": "def-common.useUrlState", - "type": "Function", - "tags": [], - "label": "useUrlState", - "description": [ - "\nThis hook stores state in the URL, but with a namespace to avoid collisions with other values in the URL.\nIt also batches updates to the URL to avoid excessive history entries.\nWith it, you can store state in the URL and have it persist across page refreshes.\nThe state is stored in the URL as a Rison encoded object.\n\nExample: when called like this `const [value, setValue] = useUrlState('myNamespace', 'myKey');`\nthe state will be stored in the URL like this: `?myNamespace=(myKey:!n)`\n\nState is not cleared from the URL when the hook is unmounted and this is by design.\nIf you want it to be cleared, you can do it manually by calling `setValue(undefined)`.\n" - ], - "signature": [ - "(urlNamespace: string, key: string) => readonly [T | undefined, (newValue: T | undefined) => void]" - ], - "path": "packages/kbn-url-state/index.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/url-state", - "id": "def-common.useUrlState.$1", - "type": "string", - "tags": [], - "label": "urlNamespace", - "description": [ - "actual top level query param key" - ], - "signature": [ - "string" - ], - "path": "packages/kbn-url-state/index.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/url-state", - "id": "def-common.useUrlState.$2", - "type": "string", - "tags": [], - "label": "key", - "description": [ - "sub key of the query param" - ], - "signature": [ - "string" - ], - "path": "packages/kbn-url-state/index.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - } - ], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - } -} \ No newline at end of file diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx deleted file mode 100644 index 96f199fa13f98d..00000000000000 --- a/api_docs/kbn_url_state.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -#### -#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. -#### Reach out in #docs-engineering for more info. -#### -id: kibKbnUrlStatePluginApi -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: 2024-01-31 -tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] ---- -import kbnUrlStateObj from './kbn_url_state.devdocs.json'; - - - -Contact [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) for questions regarding this plugin. - -**Code health stats** - -| Public API count | Any count | Items lacking comments | Missing exports | -|-------------------|-----------|------------------------|-----------------| -| 3 | 0 | 0 | 0 | - -## Common - -### Functions - - diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 9b8077562545fc..8e6d18d6d684c2 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: 2024-01-31 +date: 2024-02-05 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 d2389fe123afd0..7789f32b0a6a4b 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: 2024-01-31 +date: 2024-02-05 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 4ce9d22ace60f3..8e3f1d0e2b069f 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: 2024-01-31 +date: 2024-02-05 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 f82078385fad2c..6f7e6188f26a46 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: 2024-01-31 +date: 2024-02-05 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 156d1ec99a1c1f..11ba59baede2a3 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: 2024-01-31 +date: 2024-02-05 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 02d239620b9498..47f2d7bf1398f9 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index c65c81d48648ed..b2ad2ce8b607f0 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index 5359862738241c..3c3ed3087ef698 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: 2024-01-31 +date: 2024-02-05 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 60a6673cd2234a..50d1f11f8456f0 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index fbf73f617eb901..04466570443045 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 6a4fa3db21298a..0352d8c730c512 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: 2024-01-31 +date: 2024-02-05 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 9eb38ccd81bfe2..4a28f6ea95df36 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: 2024-01-31 +date: 2024-02-05 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 89ccef47339b99..d64864c18bfbde 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: 2024-01-31 +date: 2024-02-05 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 079da9ced63041..5868eba6dbcee4 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: 2024-01-31 +date: 2024-02-05 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 0414f69bddd35f..b32a83969e5c1f 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: 2024-01-31 +date: 2024-02-05 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 080914241f88b8..a10c19ced4f100 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: 2024-01-31 +date: 2024-02-05 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 90cf3afc10870d..81da5801426f27 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: 2024-01-31 +date: 2024-02-05 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 984ea88a4e7b67..30daa1fb630b49 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: 2024-01-31 +date: 2024-02-05 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 c8f113363e4b1b..5e52241220caf0 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: 2024-01-31 +date: 2024-02-05 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 71c35b3b3efc99..918e6884c7714e 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/logs_explorer.mdx b/api_docs/logs_explorer.mdx index 4f2eb6d770c969..ad5a77572388a7 100644 --- a/api_docs/logs_explorer.mdx +++ b/api_docs/logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsExplorer title: "logsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logsExplorer plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsExplorer'] --- import logsExplorerObj from './logs_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.devdocs.json b/api_docs/logs_shared.devdocs.json index d24e8baf6dac31..e1e789c745ebaa 100644 --- a/api_docs/logs_shared.devdocs.json +++ b/api_docs/logs_shared.devdocs.json @@ -6409,7 +6409,7 @@ "section": "def-common.SerializableRecord", "text": "SerializableRecord" }, - "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", + "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; isNull?: boolean | undefined; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", { "pluginId": "dataViews", "scope": "common", diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index d986fddd750470..ab4e8e52539e99 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: 2024-01-31 +date: 2024-02-05 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 ccd3935a0b221f..01f293fa836bef 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: 2024-01-31 +date: 2024-02-05 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 8f8876107c4e16..e8dad4c71b9953 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: 2024-01-31 +date: 2024-02-05 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 381b29411b0b47..7ebb8524dfa953 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: 2024-01-31 +date: 2024-02-05 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 dfb980ada57008..19574e0646a513 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.devdocs.json b/api_docs/ml.devdocs.json index f503a76429cf03..db72af477ed0c1 100644 --- a/api_docs/ml.devdocs.json +++ b/api_docs/ml.devdocs.json @@ -1045,7 +1045,7 @@ "label": "ML_PAGES", "description": [], "signature": [ - "{ readonly ANOMALY_DETECTION_JOBS_MANAGE: \"jobs\"; readonly ANOMALY_EXPLORER: \"explorer\"; readonly SINGLE_METRIC_VIEWER: \"timeseriesexplorer\"; readonly DATA_FRAME_ANALYTICS_JOBS_MANAGE: \"data_frame_analytics\"; readonly DATA_FRAME_ANALYTICS_SOURCE_SELECTION: \"data_frame_analytics/source_selection\"; readonly DATA_FRAME_ANALYTICS_CREATE_JOB: \"data_frame_analytics/new_job\"; readonly TRAINED_MODELS_MANAGE: \"trained_models\"; readonly DATA_DRIFT_INDEX_SELECT: \"data_drift_index_select\"; readonly DATA_DRIFT_CUSTOM: \"data_drift_custom\"; readonly DATA_DRIFT: \"data_drift\"; readonly NODES: \"nodes\"; readonly MEMORY_USAGE: \"memory_usage\"; readonly DATA_FRAME_ANALYTICS_EXPLORATION: \"data_frame_analytics/exploration\"; readonly DATA_FRAME_ANALYTICS_MAP: \"data_frame_analytics/map\"; readonly DATA_VISUALIZER: \"datavisualizer\"; readonly DATA_VISUALIZER_INDEX_SELECT: \"datavisualizer_index_select\"; readonly DATA_VISUALIZER_FILE: \"filedatavisualizer\"; readonly DATA_VISUALIZER_INDEX_VIEWER: \"jobs/new_job/datavisualizer\"; readonly ANOMALY_DETECTION_CREATE_JOB: \"jobs/new_job\"; readonly ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER: \"jobs/new_job/recognize\"; readonly ANOMALY_DETECTION_CREATE_JOB_SINGLE_METRIC: \"jobs/new_job/single_metric\"; readonly ANOMALY_DETECTION_CREATE_JOB_MULTI_METRIC: \"jobs/new_job/multi_metric\"; readonly ANOMALY_DETECTION_CREATE_JOB_CONVERT_TO_MULTI_METRIC: \"jobs/new_job/convert_to_multi_metric\"; readonly ANOMALY_DETECTION_CREATE_JOB_ADVANCED: \"jobs/new_job/advanced\"; readonly ANOMALY_DETECTION_CREATE_JOB_POPULATION: \"jobs/new_job/population\"; readonly ANOMALY_DETECTION_CREATE_JOB_CATEGORIZATION: \"jobs/new_job/categorization\"; readonly ANOMALY_DETECTION_CREATE_JOB_RARE: \"jobs/new_job/rare\"; readonly ANOMALY_DETECTION_CREATE_JOB_GEO: \"jobs/new_job/geo\"; readonly ANOMALY_DETECTION_CREATE_JOB_CONVERT_TO_ADVANCED: \"jobs/new_job/convert_to_advanced\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE: \"jobs/new_job/step/job_type\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_INDEX: \"jobs/new_job/step/index_or_search\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_LENS: \"jobs/new_job/from_lens\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_PATTERN_ANALYSIS: \"jobs/new_job/from_pattern_analysis\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_MAP: \"jobs/new_job/from_map\"; readonly ANOMALY_DETECTION_MODULES_VIEW_OR_CREATE: \"modules/check_view_or_create\"; readonly SETTINGS: \"settings\"; readonly CALENDARS_MANAGE: \"settings/calendars_list\"; readonly CALENDARS_NEW: \"settings/calendars_list/new_calendar\"; readonly CALENDARS_EDIT: \"settings/calendars_list/edit_calendar\"; readonly FILTER_LISTS_MANAGE: \"settings/filter_lists\"; readonly FILTER_LISTS_NEW: \"settings/filter_lists/new_filter_list\"; readonly FILTER_LISTS_EDIT: \"settings/filter_lists/edit_filter_list\"; readonly OVERVIEW: \"overview\"; readonly NOTIFICATIONS: \"notifications\"; readonly AIOPS: \"aiops\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES: \"aiops/explain_log_rate_spikes\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT: \"aiops/explain_log_rate_spikes_index_select\"; readonly AIOPS_LOG_RATE_ANALYSIS: \"aiops/log_rate_analysis\"; readonly AIOPS_LOG_RATE_ANALYSIS_INDEX_SELECT: \"aiops/log_rate_analysis_index_select\"; readonly AIOPS_LOG_CATEGORIZATION: \"aiops/log_categorization\"; readonly AIOPS_LOG_CATEGORIZATION_INDEX_SELECT: \"aiops/log_categorization_index_select\"; readonly AIOPS_CHANGE_POINT_DETECTION: \"aiops/change_point_detection\"; readonly AIOPS_CHANGE_POINT_DETECTION_INDEX_SELECT: \"aiops/change_point_detection_index_select\"; }" + "{ readonly ANOMALY_DETECTION_JOBS_MANAGE: \"jobs\"; readonly ANOMALY_EXPLORER: \"explorer\"; readonly SINGLE_METRIC_VIEWER: \"timeseriesexplorer\"; readonly DATA_FRAME_ANALYTICS_JOBS_MANAGE: \"data_frame_analytics\"; readonly DATA_FRAME_ANALYTICS_SOURCE_SELECTION: \"data_frame_analytics/source_selection\"; readonly DATA_FRAME_ANALYTICS_CREATE_JOB: \"data_frame_analytics/new_job\"; readonly TRAINED_MODELS_MANAGE: \"trained_models\"; readonly DATA_DRIFT_INDEX_SELECT: \"data_drift_index_select\"; readonly DATA_DRIFT_CUSTOM: \"data_drift_custom\"; readonly DATA_DRIFT: \"data_drift\"; readonly NODES: \"nodes\"; readonly MEMORY_USAGE: \"memory_usage\"; readonly DATA_FRAME_ANALYTICS_EXPLORATION: \"data_frame_analytics/exploration\"; readonly DATA_FRAME_ANALYTICS_MAP: \"data_frame_analytics/map\"; readonly DATA_VISUALIZER: \"datavisualizer\"; readonly DATA_VISUALIZER_INDEX_SELECT: \"datavisualizer_index_select\"; readonly DATA_VISUALIZER_FILE: \"filedatavisualizer\"; readonly DATA_VISUALIZER_ESQL: \"datavisualizer/esql\"; readonly DATA_VISUALIZER_INDEX_VIEWER: \"jobs/new_job/datavisualizer\"; readonly ANOMALY_DETECTION_CREATE_JOB: \"jobs/new_job\"; readonly ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER: \"jobs/new_job/recognize\"; readonly ANOMALY_DETECTION_CREATE_JOB_SINGLE_METRIC: \"jobs/new_job/single_metric\"; readonly ANOMALY_DETECTION_CREATE_JOB_MULTI_METRIC: \"jobs/new_job/multi_metric\"; readonly ANOMALY_DETECTION_CREATE_JOB_CONVERT_TO_MULTI_METRIC: \"jobs/new_job/convert_to_multi_metric\"; readonly ANOMALY_DETECTION_CREATE_JOB_ADVANCED: \"jobs/new_job/advanced\"; readonly ANOMALY_DETECTION_CREATE_JOB_POPULATION: \"jobs/new_job/population\"; readonly ANOMALY_DETECTION_CREATE_JOB_CATEGORIZATION: \"jobs/new_job/categorization\"; readonly ANOMALY_DETECTION_CREATE_JOB_RARE: \"jobs/new_job/rare\"; readonly ANOMALY_DETECTION_CREATE_JOB_GEO: \"jobs/new_job/geo\"; readonly ANOMALY_DETECTION_CREATE_JOB_CONVERT_TO_ADVANCED: \"jobs/new_job/convert_to_advanced\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE: \"jobs/new_job/step/job_type\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_INDEX: \"jobs/new_job/step/index_or_search\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_LENS: \"jobs/new_job/from_lens\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_PATTERN_ANALYSIS: \"jobs/new_job/from_pattern_analysis\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_MAP: \"jobs/new_job/from_map\"; readonly ANOMALY_DETECTION_MODULES_VIEW_OR_CREATE: \"modules/check_view_or_create\"; readonly SETTINGS: \"settings\"; readonly CALENDARS_MANAGE: \"settings/calendars_list\"; readonly CALENDARS_NEW: \"settings/calendars_list/new_calendar\"; readonly CALENDARS_EDIT: \"settings/calendars_list/edit_calendar\"; readonly FILTER_LISTS_MANAGE: \"settings/filter_lists\"; readonly FILTER_LISTS_NEW: \"settings/filter_lists/new_filter_list\"; readonly FILTER_LISTS_EDIT: \"settings/filter_lists/edit_filter_list\"; readonly OVERVIEW: \"overview\"; readonly NOTIFICATIONS: \"notifications\"; readonly AIOPS: \"aiops\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES: \"aiops/explain_log_rate_spikes\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT: \"aiops/explain_log_rate_spikes_index_select\"; readonly AIOPS_LOG_RATE_ANALYSIS: \"aiops/log_rate_analysis\"; readonly AIOPS_LOG_RATE_ANALYSIS_INDEX_SELECT: \"aiops/log_rate_analysis_index_select\"; readonly AIOPS_LOG_CATEGORIZATION: \"aiops/log_categorization\"; readonly AIOPS_LOG_CATEGORIZATION_INDEX_SELECT: \"aiops/log_categorization_index_select\"; readonly AIOPS_CHANGE_POINT_DETECTION: \"aiops/change_point_detection\"; readonly AIOPS_CHANGE_POINT_DETECTION_INDEX_SELECT: \"aiops/change_point_detection_index_select\"; }" ], "path": "x-pack/plugins/ml/common/constants/locator.ts", "deprecated": false, @@ -1375,7 +1375,7 @@ "CombinedJobWithStats", "[]>; groups(): Promise<", "Group", - "[]>; updateGroups(updatedJobs: { jobId: string; groups: string[]; }[]): Promise; forceStartDatafeeds(datafeedIds: string[], start: string, end: string): Promise; stopDatafeeds(datafeedIds: string[]): Promise; deleteJobs(jobIds: string[], deleteUserAnnotations?: boolean | undefined): Promise; closeJobs(jobIds: string[]): Promise; resetJobs(jobIds: string[], deleteUserAnnotations?: boolean | undefined): Promise<", + "[]>; updateGroups(updatedJobs: { jobId: string; groups: string[]; }[]): Promise; forceStartDatafeeds(datafeedIds: string[], start: string, end: string): Promise; stopDatafeeds(datafeedIds: string[]): Promise; deleteJobs(jobIds: string[], deleteUserAnnotations?: boolean | undefined, deleteAlertingRules?: boolean | undefined): Promise; closeJobs(jobIds: string[]): Promise; resetJobs(jobIds: string[], deleteUserAnnotations?: boolean | undefined): Promise<", "ResetJobsResponse", ">; forceStopAndCloseJob(jobId: string): Promise<{ success: boolean; }>; jobAuditMessages({ jobId, from, start, end, }: { jobId: string; from?: number | undefined; start?: string | undefined; end?: string | undefined; }): Promise<{ messages: ", "JobMessage", diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index b50ccf299e8e96..e64524225744c7 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index 7753ae513ecd50..1f480159632d99 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index a6c2883f18176b..1326e0cb2783b5 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: 2024-01-31 +date: 2024-02-05 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 714999b93a8146..e44390e85d1352 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: 2024-01-31 +date: 2024-02-05 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 c9f18f099f6b88..d82a308f85ed25 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: 2024-01-31 +date: 2024-02-05 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 392fe4540d8268..7f56ed7f803985 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: 2024-01-31 +date: 2024-02-05 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 1ccf176cfce54a..46e954bdedbf9d 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: 2024-01-31 +date: 2024-02-05 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 50db9cf355c956..0e0437b7d60ae2 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: 2024-01-31 +date: 2024-02-05 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 652eb9422ceba2..326dc0dbe6dd28 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.devdocs.json b/api_docs/observability_a_i_assistant.devdocs.json index 78ec525b7157ee..43245640d1a3d7 100644 --- a/api_docs/observability_a_i_assistant.devdocs.json +++ b/api_docs/observability_a_i_assistant.devdocs.json @@ -227,7 +227,7 @@ "label": "labels", "description": [], "signature": [ - "{ [x: string]: string; }" + "Record | undefined" ], "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", "deprecated": false, @@ -588,7 +588,7 @@ }, ">>; }>, ", "PartialC", - "<{ contexts: ", + "<{ categories: ", "ArrayC", "<", "StringC", @@ -604,7 +604,7 @@ "section": "def-common.NonEmptyStringBrand", "text": "NonEmptyStringBrand" }, - ">[]; } & { contexts?: string[] | undefined; }; }; }) => Promise<{ entries: ", + ">[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", "RecalledEntry", "[]; }>; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -1084,7 +1084,7 @@ }, ">>; }>, ", "PartialC", - "<{ contexts: ", + "<{ categories: ", "ArrayC", "<", "StringC", @@ -1100,7 +1100,7 @@ "section": "def-common.NonEmptyStringBrand", "text": "NonEmptyStringBrand" }, - ">[]; } & { contexts?: string[] | undefined; }; }; }) => Promise<{ entries: ", + ">[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", "RecalledEntry", "[]; }>; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -1820,7 +1820,7 @@ }, ">>; }>, ", "PartialC", - "<{ contexts: ", + "<{ categories: ", "ArrayC", "<", "StringC", @@ -1836,7 +1836,7 @@ "section": "def-common.NonEmptyStringBrand", "text": "NonEmptyStringBrand" }, - ">[]; } & { contexts?: string[] | undefined; }; }; }) => Promise<{ entries: ", + ">[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", "RecalledEntry", "[]; }>; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -2325,7 +2325,7 @@ }, ">>; }>, ", "PartialC", - "<{ contexts: ", + "<{ categories: ", "ArrayC", "<", "StringC", @@ -2341,7 +2341,7 @@ "section": "def-common.NonEmptyStringBrand", "text": "NonEmptyStringBrand" }, - ">[]; } & { contexts?: string[] | undefined; }; }; }) => Promise<{ entries: ", + ">[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", "RecalledEntry", "[]; }>; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -2974,7 +2974,7 @@ }, ">>; }>, ", "PartialC", - "<{ contexts: ", + "<{ categories: ", "ArrayC", "<", "StringC", @@ -2990,7 +2990,7 @@ "section": "def-common.NonEmptyStringBrand", "text": "NonEmptyStringBrand" }, - ">[]; } & { contexts?: string[] | undefined; }; }; }) => Promise<{ entries: ", + ">[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", "RecalledEntry", "[]; }>; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -3543,7 +3543,7 @@ "label": "labels", "description": [], "signature": [ - "{ [x: string]: string; }" + "Record | undefined" ], "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", "deprecated": false, diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 8c9f1561cb54d7..f737c49722bfa8 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.devdocs.json b/api_docs/observability_logs_explorer.devdocs.json index b77b6ab973f906..d82d633baa66e1 100644 --- a/api_docs/observability_logs_explorer.devdocs.json +++ b/api_docs/observability_logs_explorer.devdocs.json @@ -394,6 +394,21 @@ ], "enums": [], "misc": [ + { + "parentPluginId": "observabilityLogsExplorer", + "id": "def-common.OBSERVABILITY_DATASET_QUALITY_URL_STATE_KEY", + "type": "string", + "tags": [], + "label": "OBSERVABILITY_DATASET_QUALITY_URL_STATE_KEY", + "description": [], + "signature": [ + "\"pageState\"" + ], + "path": "x-pack/plugins/observability_solution/observability_logs_explorer/common/url_schema/common.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "observabilityLogsExplorer", "id": "def-common.OBSERVABILITY_LOGS_EXPLORER_URL_STATE_KEY", diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index 9e7a241616ef4a..021b6a08c30a4a 100644 --- a/api_docs/observability_logs_explorer.mdx +++ b/api_docs/observability_logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer title: "observabilityLogsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogsExplorer plugin -date: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 18 | 0 | 18 | 1 | +| 19 | 0 | 19 | 1 | ## Common diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 1567a600bedcc2..05983dd0d2d610 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.devdocs.json b/api_docs/observability_shared.devdocs.json index db095afe494166..bdb4333fe1c11d 100644 --- a/api_docs/observability_shared.devdocs.json +++ b/api_docs/observability_shared.devdocs.json @@ -3123,7 +3123,7 @@ "EuiPageSectionProps", " | undefined; bottomBar?: React.ReactNode; bottomBarProps?: ", "_EuiPageBottomBarProps", - " | undefined; }" + " | undefined; topSearchBar?: React.ReactNode; }" ], "path": "x-pack/plugins/observability_shared/public/components/page_template/page_template.tsx", "deprecated": false, @@ -3192,7 +3192,7 @@ "EuiPageSectionProps", " | undefined; bottomBar?: React.ReactNode; bottomBarProps?: ", "_EuiPageBottomBarProps", - " | undefined; }" + " | undefined; topSearchBar?: React.ReactNode; }" ], "path": "x-pack/plugins/observability_shared/public/components/page_template/page_template.tsx", "deprecated": false, diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index bd3f72c735bf90..3b5e0ec45aef60 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: 2024-01-31 +date: 2024-02-05 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 76f4e355962ed4..c6268b34f1045a 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: 2024-01-31 +date: 2024-02-05 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 3d67017cec38da..ecd718cbb97995 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: 2024-01-31 +date: 2024-02-05 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 38f8c05e0a2291..0e8edf24d362a3 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,19 +15,19 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 749 | 641 | 40 | +| 750 | 642 | 40 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 79459 | 229 | 68044 | 1713 | +| 79642 | 229 | 68220 | 1727 | ## Plugin Directory | Plugin name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 276 | 0 | 270 | 31 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 279 | 0 | 273 | 31 | | | [@elastic/appex-sharedux @elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 2 | 0 | 2 | 0 | @@ -51,25 +51,25 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | The cloud security posture plugin | 14 | 0 | 2 | 2 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 29 | 0 | 23 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Content management app | 149 | 0 | 126 | 6 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Controls Plugin contains embeddable components intended to create a simple query interface for end users, and a powerful editing suite that allows dashboard authors to build controls | 317 | 0 | 309 | 16 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Controls Plugin contains embeddable components intended to create a simple query interface for end users, and a powerful editing suite that allows dashboard authors to build controls | 323 | 0 | 315 | 16 | | crossClusterReplication | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | | customBranding | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Enables customization of Kibana | 0 | 0 | 0 | 0 | | | [@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 | 108 | 0 | 105 | 12 | | | [@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. | 3234 | 31 | 2583 | 23 | +| | [@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. | 3235 | 31 | 2583 | 23 | | | [@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. | 938 | 0 | 273 | 4 | +| | [@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. | 940 | 0 | 273 | 4 | | | [@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/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin introduces the concept of dataset quality, where users can easily get an overview on the datasets they have. | 8 | 0 | 8 | 2 | +| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin introduces the concept of dataset quality, where users can easily get an overview on the datasets they have. | 10 | 0 | 10 | 5 | | | [@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. | 141 | 0 | 95 | 22 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 37 | 0 | 35 | 2 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | APIs used to assess the quality of data in Elasticsearch indexes | 2 | 0 | 0 | 0 | | | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | Server APIs for the Elastic AI Assistant | 41 | 0 | 27 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 521 | 1 | 421 | 8 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 564 | 1 | 459 | 8 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Extends embeddable plugin with more functionality | 14 | 0 | 14 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 53 | 0 | 46 | 1 | | | [@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 | @@ -91,13 +91,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds 'shape' function and renderer to expressions | 148 | 0 | 146 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Expression Tagcloud plugin adds a `tagcloud` renderer and function to the expression plugin. The renderer will display the `Wordcloud` chart. | 6 | 0 | 6 | 2 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Expression XY plugin adds a `xy` renderer and function to the expression plugin. The renderer will display the `xy` chart. | 177 | 0 | 167 | 13 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Adds expression runtime to Kibana | 2219 | 17 | 1757 | 5 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Adds expression runtime to Kibana | 2222 | 17 | 1760 | 5 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 235 | 0 | 99 | 2 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Index pattern fields and ambiguous values formatters | 292 | 5 | 253 | 3 | -| | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 76 | 0 | 76 | 4 | +| | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 84 | 0 | 84 | 8 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | File upload, download, sharing, and serving over HTTP implementation in Kibana. | 240 | 0 | 24 | 9 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Simple UI for managing files in Kibana | 2 | 0 | 2 | 0 | -| | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1222 | 3 | 1104 | 48 | +| | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1221 | 3 | 1104 | 51 | | ftrApis | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 68 | 0 | 14 | 5 | | globalSearchBar | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 0 | 0 | 0 | 0 | @@ -142,7 +142,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 619 | 2 | 610 | 17 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 75 | 0 | 73 | 13 | -| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 18 | 0 | 18 | 1 | +| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 19 | 0 | 19 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 14 | 0 | 14 | 0 | | | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 321 | 1 | 316 | 19 | | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 23 | 0 | 23 | 7 | @@ -214,7 +214,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Registers the vega visualization. Is the elastic version of vega and vega-lite libraries. | 2 | 0 | 2 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the vislib visualizations. These are the classical area/line/bar, gauge/goal and heatmap charts. We want to replace them with elastic-charts. | 1 | 0 | 1 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the new xy-axis chart using the elastic-charts library, which will eventually replace the vislib xy-axis charts including bar, area, and line. | 52 | 0 | 50 | 5 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 839 | 12 | 808 | 19 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 841 | 12 | 810 | 19 | | watcher | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | ## Package Directory @@ -253,7 +253,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 3 | 0 | 3 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 62 | 0 | 17 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 2 | 0 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 35 | 0 | 15 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 36 | 0 | 15 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 | | | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 8 | 0 | 4 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 206 | 0 | 169 | 8 | @@ -461,14 +461,15 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 52 | 0 | 37 | 7 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 32 | 0 | 19 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 7 | 0 | 3 | 0 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 269 | 1 | 209 | 15 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 30 | 0 | 30 | 0 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 261 | 1 | 201 | 15 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 31 | 0 | 31 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 11 | 0 | 11 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 39 | 0 | 39 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 52 | 0 | 52 | 1 | -| | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 40 | 0 | 16 | 1 | +| | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 39 | 0 | 15 | 1 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 20 | 0 | 16 | 0 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 37 | 0 | 29 | 1 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 38 | 0 | 30 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 0 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 31 | 0 | 31 | 1 | | | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 550 | 6 | 510 | 2 | @@ -492,7 +493,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 41 | 2 | 35 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 108 | 0 | 107 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 7 | 0 | 5 | 0 | -| | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 181 | 0 | 178 | 3 | +| | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 193 | 0 | 190 | 4 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 172 | 0 | 172 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 27 | 0 | 1 | 2 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 8 | 0 | 8 | 0 | @@ -514,6 +515,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 2 | 0 | 2 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 95 | 2 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 206 | 3 | 1 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 8 | 0 | 8 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 37 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 12 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 152 | 1 | 0 | 0 | @@ -537,7 +539,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 18 | 0 | 18 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 31 | 1 | 24 | 1 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 22 | 0 | 16 | 0 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 99 | 0 | 99 | 2 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 105 | 0 | 105 | 2 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 55 | 1 | 50 | 0 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 10 | 0 | 10 | 2 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 99 | 1 | 99 | 0 | @@ -552,9 +554,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 1 | 0 | 0 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 34 | 0 | 33 | 0 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 42 | 0 | 40 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 10 | 0 | 10 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 143 | 0 | 109 | 0 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 150 | 0 | 115 | 3 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 156 | 0 | 45 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 13 | 0 | 7 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 22 | 0 | 9 | 0 | @@ -585,7 +587,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 120 | 0 | 117 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 75 | 0 | 75 | 0 | -| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 2735 | 0 | 2735 | 0 | +| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 2805 | 0 | 2805 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 18 | 1 | 17 | 1 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 25 | 0 | 25 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 20 | 0 | 18 | 1 | @@ -684,7 +686,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 14 | 0 | 13 | 6 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Contains functionality for the field list and field stats which can be integrated into apps | 291 | 0 | 267 | 10 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 13 | 0 | 9 | 0 | -| | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 3 | 0 | 0 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 3 | 0 | 2 | 1 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 80 | 1 | 21 | 2 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 37 | 0 | 16 | 1 | diff --git a/api_docs/presentation_panel.devdocs.json b/api_docs/presentation_panel.devdocs.json index a318a1c0b97e47..6368a6e57bc19b 100644 --- a/api_docs/presentation_panel.devdocs.json +++ b/api_docs/presentation_panel.devdocs.json @@ -85,15 +85,31 @@ "section": "def-common.HasParentApi", "text": "HasParentApi" }, - "<", + " & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.PublishesLastSavedState", + "text": "PublishesLastSavedState" + }, + " & { registerPanelApi: (panelId: string, panelApi: ApiType) => void; removePanel: (panelId: string) => void; canRemovePanels?: (() => boolean) | undefined; replacePanel: (idToRemove: string, newPanel: ", { "pluginId": "@kbn/presentation-containers", "scope": "common", "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-common.PresentationContainer", - "text": "PresentationContainer" + "section": "def-common.PanelPackage", + "text": "PanelPackage" }, - " & Partial Promise; } & Partial & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.PublishesLastSavedState", + "text": "PublishesLastSavedState" + }, + " & { registerPanelApi: (panelId: string, panelApi: ApiType) => void; removePanel: (panelId: string) => void; canRemovePanels?: (() => boolean) | undefined; replacePanel: (idToRemove: string, newPanel: ", { "pluginId": "@kbn/presentation-containers", "scope": "common", "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-common.PresentationContainer", - "text": "PresentationContainer" + "section": "def-common.PanelPackage", + "text": "PanelPackage" }, - " & Partial Promise; } & Partial & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.PublishesLastSavedState", + "text": "PublishesLastSavedState" + }, + " & { registerPanelApi: (panelId: string, panelApi: ApiType) => void; removePanel: (panelId: string) => void; canRemovePanels?: (() => boolean) | undefined; replacePanel: (idToRemove: string, newPanel: ", { "pluginId": "@kbn/presentation-containers", "scope": "common", "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-common.PresentationContainer", - "text": "PresentationContainer" + "section": "def-common.PanelPackage", + "text": "PanelPackage" }, - " & Partial Promise; } & Partial & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.PublishesLastSavedState", + "text": "PublishesLastSavedState" + }, + " & { registerPanelApi: (panelId: string, panelApi: ApiType) => void; removePanel: (panelId: string) => void; canRemovePanels?: (() => boolean) | undefined; replacePanel: (idToRemove: string, newPanel: ", { "pluginId": "@kbn/presentation-containers", "scope": "common", "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-common.PresentationContainer", - "text": "PresentationContainer" + "section": "def-common.PanelPackage", + "text": "PanelPackage" }, - " & Partial Promise; } & Partial | undefined; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; className?: string | undefined; contentEditable?: Booleanish | \"inherit\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; hidden?: boolean | undefined; lang?: string | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; title?: string | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; color?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"search\" | \"none\" | \"text\" | \"url\" | \"email\" | \"tel\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: Booleanish | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"both\" | \"inline\" | undefined; 'aria-busy'?: Booleanish | undefined; 'aria-checked'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"page\" | \"date\" | \"location\" | \"true\" | \"false\" | \"time\" | \"step\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: Booleanish | undefined; 'aria-dropeffect'?: \"execute\" | \"link\" | \"none\" | \"copy\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: Booleanish | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: Booleanish | undefined; 'aria-haspopup'?: boolean | \"true\" | \"false\" | \"grid\" | \"menu\" | \"dialog\" | \"listbox\" | \"tree\" | undefined; 'aria-hidden'?: Booleanish | undefined; 'aria-invalid'?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: Booleanish | undefined; 'aria-multiline'?: Booleanish | undefined; 'aria-multiselectable'?: Booleanish | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-readonly'?: Booleanish | undefined; 'aria-relevant'?: \"text\" | \"all\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; 'aria-required'?: Booleanish | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: Booleanish | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"other\" | \"ascending\" | \"descending\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; children?: React.ReactNode; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onError?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerEnterCapture?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerLeaveCapture?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; 'data-test-subj'?: string | undefined; css?: ", + "{ prefix?: string | undefined; scope?: string | undefined; id?: string | undefined; defaultValue?: string | number | readonly string[] | undefined; name: React.ReactNode; security?: string | undefined; onChange?: React.FormEventHandler | undefined; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; className?: string | undefined; contentEditable?: Booleanish | \"inherit\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; hidden?: boolean | undefined; lang?: string | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; title?: string | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; color?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"search\" | \"none\" | \"text\" | \"url\" | \"email\" | \"tel\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: Booleanish | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"both\" | \"inline\" | undefined; 'aria-busy'?: Booleanish | undefined; 'aria-checked'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"page\" | \"date\" | \"location\" | \"true\" | \"false\" | \"step\" | \"time\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: Booleanish | undefined; 'aria-dropeffect'?: \"execute\" | \"link\" | \"none\" | \"copy\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: Booleanish | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: Booleanish | undefined; 'aria-haspopup'?: boolean | \"true\" | \"false\" | \"grid\" | \"menu\" | \"dialog\" | \"listbox\" | \"tree\" | undefined; 'aria-hidden'?: Booleanish | undefined; 'aria-invalid'?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: Booleanish | undefined; 'aria-multiline'?: Booleanish | undefined; 'aria-multiselectable'?: Booleanish | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; 'aria-readonly'?: Booleanish | undefined; 'aria-relevant'?: \"text\" | \"all\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; 'aria-required'?: Booleanish | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: Booleanish | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"other\" | \"ascending\" | \"descending\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; children?: React.ReactNode; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onError?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerEnterCapture?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerLeaveCapture?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; 'data-test-subj'?: string | undefined; css?: ", "Interpolation", "<", "Theme", diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 9f79b0c37fd8b7..d4af0e10ca07b3 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: 2024-01-31 +date: 2024-02-05 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 47e70d2db27150..1cf23439fab3d0 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: 2024-01-31 +date: 2024-02-05 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 8338b94c5dfdef..368afebe73f327 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: 2024-01-31 +date: 2024-02-05 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 71ad01e65a983b..463cf927ecc05c 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: 2024-01-31 +date: 2024-02-05 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 a14dc5dc986e63..83c48b41c7a7f9 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: 2024-01-31 +date: 2024-02-05 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 677596ce3aaaea..582f3280a80da4 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: 2024-01-31 +date: 2024-02-05 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 352b6856b7f018..e067a9dca2c906 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: 2024-01-31 +date: 2024-02-05 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 db477a53cde51d..15386516e9d859 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: 2024-01-31 +date: 2024-02-05 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 2042e4ab114962..92288996d22d60 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: 2024-01-31 +date: 2024-02-05 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 11cfd2cb56a32c..6ff3a97c535117 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: 2024-01-31 +date: 2024-02-05 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 620c0322492cec..004d5c9f4da1b3 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: 2024-01-31 +date: 2024-02-05 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 8064112c1bb91f..0d44ac6bac6238 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: 2024-01-31 +date: 2024-02-05 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 f0bd8808d3909f..295e87f526d219 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: 2024-01-31 +date: 2024-02-05 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 c5218b22085658..f80dd8a8dc5398 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: 2024-01-31 +date: 2024-02-05 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 db6085a73c3c71..d793c3c32e4bee 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: 2024-01-31 +date: 2024-02-05 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 bb3535452accab..fd1f16c7024e66 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: 2024-01-31 +date: 2024-02-05 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 389ad5fad1f497..9b4177ea6037f2 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: 2024-01-31 +date: 2024-02-05 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 7c8c1283b0c37c..af3f1a9d914b45 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: 2024-01-31 +date: 2024-02-05 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 027d4685fe1720..2041de6f2ff23e 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: 2024-01-31 +date: 2024-02-05 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 3f8291eec2d0de..48bdf988ba6d72 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: 2024-01-31 +date: 2024-02-05 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 0702cda8f2b0d1..5ce42d6dfa4235 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: 2024-01-31 +date: 2024-02-05 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 d1240b776a05db..0b20d3fad7ed4e 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: 2024-01-31 +date: 2024-02-05 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 c58e210e817ce6..efc2465cfc0b67 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: 2024-01-31 +date: 2024-02-05 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 7bbf3160a88057..23c5024489c173 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: 2024-01-31 +date: 2024-02-05 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 ce7d2c105bc85a..5733dd60f7ee37 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: 2024-01-31 +date: 2024-02-05 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 f99caee374b493..a28189ee06ba4b 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: 2024-01-31 +date: 2024-02-05 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 222caf0ec19598..963693efffd803 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: 2024-01-31 +date: 2024-02-05 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 08e86398a60f58..c069ee5e2440d0 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: 2024-01-31 +date: 2024-02-05 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 096aa8230932a7..30d4d96c7cefc5 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: 2024-01-31 +date: 2024-02-05 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 27e85f5c3751d1..b9601a550aa6a7 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: 2024-01-31 +date: 2024-02-05 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 4cce19dba419d0..15e8df37caf2a8 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: 2024-01-31 +date: 2024-02-05 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 41eb88f5a95666..a85f8d9cda7794 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: 2024-01-31 +date: 2024-02-05 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 3e03d239c014e4..a3f277f5d7b610 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: 2024-01-31 +date: 2024-02-05 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 fb6c29b97275b6..2e4d4230f75827 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: 2024-01-31 +date: 2024-02-05 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 4b98c27f645f26..446b0abc15a847 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: 2024-01-31 +date: 2024-02-05 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 512023d5120cdc..a94c80643f0696 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: 2024-01-31 +date: 2024-02-05 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 7506532afd971e..4ff4cc8a184fa2 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: 2024-01-31 +date: 2024-02-05 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 3f3e100c1d3f4d..7dcf5712cc5ddb 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: 2024-01-31 +date: 2024-02-05 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 8cf3b13aa59b8d..35b4b006c375fe 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: 2024-01-31 +date: 2024-02-05 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 f7cebb5f791541..321b8385bd7be2 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: 2024-01-31 +date: 2024-02-05 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 4dcccfe0c5c31b..6232f137596b74 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: 2024-01-31 +date: 2024-02-05 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 5af231d2191d41..dc97a3354e3062 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: 2024-01-31 +date: 2024-02-05 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 d761fe9c81dbca..dbcc79270641b0 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: 2024-01-31 +date: 2024-02-05 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 20da11a3e03154..74f35b0bcdea03 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: 2024-01-31 +date: 2024-02-05 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 fe72530c8c9181..bc6d7b389525c0 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: 2024-01-31 +date: 2024-02-05 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 ce671d04ff394c..8a1011b8f36f68 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: 2024-01-31 +date: 2024-02-05 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 08a3970c6ec9e6..3c8fee32184d90 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: 2024-01-31 +date: 2024-02-05 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 576d1df35044a0..ff3d38e2554e9d 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: 2024-01-31 +date: 2024-02-05 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 b6f8e415e45abf..039e7ec3c4d2fd 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: 2024-01-31 +date: 2024-02-05 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.devdocs.json b/api_docs/visualizations.devdocs.json index 2870a94ced6147..99bc35c9bf1e2d 100644 --- a/api_docs/visualizations.devdocs.json +++ b/api_docs/visualizations.devdocs.json @@ -2280,7 +2280,7 @@ "section": "def-common.SerializableRecord", "text": "SerializableRecord" }, - " | undefined; }; id: string; name: string; }[]; type: \"datatable\"; meta?: ", + " | undefined; }; id: string; name: string; isNull?: boolean | undefined; }[]; type: \"datatable\"; meta?: ", "DatatableMeta", " | undefined; rows: ", { @@ -4223,6 +4223,17 @@ "path": "src/plugins/visualizations/public/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "visualizations", + "id": "def-public.VisSavedObject.managed", + "type": "boolean", + "tags": [], + "label": "managed", + "description": [], + "path": "src/plugins/visualizations/public/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -6821,15 +6832,31 @@ "section": "def-common.PublishingSubject", "text": "PublishingSubject" }, - "; parentApi: (", + "; parentApi: (Partial<", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesViewMode", + "text": "PublishesViewMode" + }, + "> & ", { "pluginId": "@kbn/presentation-containers", "scope": "common", "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-common.PresentationContainer", - "text": "PresentationContainer" + "section": "def-common.PublishesLastSavedState", + "text": "PublishesLastSavedState" }, - " & Partial(panelId: string, panelApi: ApiType) => void; removePanel: (panelId: string) => void; canRemovePanels?: (() => boolean) | undefined; replacePanel: (idToRemove: string, newPanel: ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "common", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-common.PanelPackage", + "text": "PanelPackage" + }, + ") => Promise; } & Partial> * <> * <> * <> @@ -58,6 +59,51 @@ Review important information about the {kib} 8.x releases. * <> -- +[[release-notes-8.12.1]] +== {kib} 8.12.1 + +The 8.12.1 release includes the following enhancements and bug fixes. + +[float] +[[enhancement-v8.12.1]] +=== Enhancements + +Elastic Security:: +For the Elastic Security 8.12.1 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_]. +Observability:: +* Adds `defer_validation: true` to transforms on creation to stop errors when the destination index doesn't exist yet ({kibana-pull}174463[#174463]). + +[float] +[[fixes-v8.12.1]] +=== Bug Fixes +Alerting:: +* Fixes context variables not being passed in to the action parameters when an alert- as-data document is available ({kibana-pull}175682[#175682]). +* Fixes the Rules page loosing user selections when navigating back ({kibana-pull}174954[#174954]). +* Fixes the custom threshold rendering in the create rule flyout ({kibana-pull}174982[#174982]). +APM:: +* Fixes a transactions error link for mobile ({kibana-pull}174655[#174655]). +* Increases the number of maximum function calls from 3 to 5 ({kibana-pull}175588[#175588]). +Dashboard:: +* Fixes a caching issue that caused problems updating dashboard information ({kibana-pull}175635[#175635]). +Elastic Security:: +For the Elastic Security 8.12.1 release information, refer to {security-guide}/release-notes.html[_Elastic Security Solution Release Notes_]. +Fleet:: +* Fixes the display of category label on the Integration overview page ({kibana-pull}176141[#176141]). +* Fixes conflicting dynamic template mappings for intermediate objects ({kibana-pull}175970[#175970]). +* Fixes reserved keys for Elasticsearch output YAML box ({kibana-pull}175901[#175901]). +* Prevent deletion of agent policies with inactive agents from UI ({kibana-pull}175815[#175815]). +* Fixes incorrect count of agents in bulk actions ({kibana-pull}175318[#175318]). +* Fixes a custom integrations not displaying on the Installed integrations page ({kibana-pull}174804[#174804]). +Lens & Visualizations:: +* Fixes a validation error for invalid formula and math columns in *Lens* ({kibana-pull}175644[#175644]). +Machine Learning:: +* Fixes Allocation rendering for failed deployments ({kibana-pull}174882[#174882]). +* Fixes an issue where a user could create an anomaly rule but couldn't see it or interact with the rule via stack management ({kibana-pull}174791[#174791]). +Security:: +* Fixes API Key table sorting ({kibana-pull}175813[#175813]). +* Ensures all API Keys have a defined name ({kibana-pull}175721[#175721]). +* Fixes an issue with `@kbn-handlebars`, where nested inputs were not being escaped properly ({kibana-pull}175490[#175490]). + [[release-notes-8.12.0]] == {kib} 8.12.0 diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index b2a1823e87443b..3eccd4beaedab8 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -648,7 +648,7 @@ using the CURL scripts in the scripts folder. |{kib-repo}blob/{branch}/x-pack/plugins/observability_solution/logs_explorer/README.md[logsExplorer] -|This plugin is home to the component and related types. It implements several of the underlying concepts that the Observability Logs Explorer app builds upon. +|This plugin is home to the component and related types. It implements several of the underlying concepts that the Observability Logs Explorer app builds upon. |{kib-repo}blob/{branch}/x-pack/plugins/logs_shared/README.md[logsShared] @@ -693,7 +693,7 @@ Elastic. |{kib-repo}blob/{branch}/x-pack/plugins/observability_solution/observability_logs_explorer/README.md[observabilityLogsExplorer] -|This plugin provides an app based on the LogExplorer component from the logs_explorer plugin, but adds observability-specific affordances. +|This plugin provides an app based on the LogsExplorer component from the logs_explorer plugin, but adds observability-specific affordances. |{kib-repo}blob/{branch}/x-pack/plugins/observability_onboarding/README.md[observabilityOnboarding] diff --git a/docs/management/action-types.asciidoc b/docs/management/action-types.asciidoc index a8a6409ec49ba0..ae9a887481406c 100644 --- a/docs/management/action-types.asciidoc +++ b/docs/management/action-types.asciidoc @@ -47,6 +47,10 @@ a| <> | Send an event in PagerDuty. +a| <> + +| Send a request to SentinelOne. + a| <> | Add a message to a Kibana log. diff --git a/docs/management/connectors/action-types/sentinelone.asciidoc b/docs/management/connectors/action-types/sentinelone.asciidoc new file mode 100644 index 00000000000000..4fbc16ba5aafa1 --- /dev/null +++ b/docs/management/connectors/action-types/sentinelone.asciidoc @@ -0,0 +1,39 @@ +[[sentinelone-action-type]] +== SentinelOne connector +++++ +SentinelOne +++++ +:frontmatter-description: Add a connector that can use the SentinelOne API to send actions. +:frontmatter-tags-products: [kibana] +:frontmatter-tags-content-type: [how-to] +:frontmatter-tags-user-goals: [configure] + +preview::[] + +The SentinelOne connector communicates with SentinelOne Management Console via REST API. + +[float] +[[define-sentinelone-ui]] +=== Create connectors in {kib} + +You can create connectors in *{stack-manage-app} > {connectors-ui}*. For example: + +[role="screenshot"] +image::management/connectors/images/sentinelone-connector.png[SentinelOne connector] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. + +[float] +[[sentinelone-connector-configuration]] +==== Connector configuration + +SentinelOne connectors have the following configuration properties: + +API token:: A SentinelOne API token created by the user. +URL:: The SentinelOne tenant URL. If you are using the <> setting, make sure the hostname is added to the allowed hosts. + + +[float] +[[sentinelone-action-parameters]] +=== Test connectors + +At this time, you cannot test the SentinelOne connector. diff --git a/docs/management/connectors/images/sentinelone-connector.png b/docs/management/connectors/images/sentinelone-connector.png new file mode 100644 index 00000000000000..17559091f91810 Binary files /dev/null and b/docs/management/connectors/images/sentinelone-connector.png differ diff --git a/docs/management/connectors/images/sentinelone-params-test.png b/docs/management/connectors/images/sentinelone-params-test.png new file mode 100644 index 00000000000000..ef09b62e9e22cb Binary files /dev/null and b/docs/management/connectors/images/sentinelone-params-test.png differ diff --git a/docs/management/connectors/index.asciidoc b/docs/management/connectors/index.asciidoc index 14cfd57fd3c80a..1acba0863b07d1 100644 --- a/docs/management/connectors/index.asciidoc +++ b/docs/management/connectors/index.asciidoc @@ -8,6 +8,7 @@ include::action-types/teams.asciidoc[leveloffset=+1] include::action-types/openai.asciidoc[leveloffset=+1] include::action-types/opsgenie.asciidoc[leveloffset=+1] include::action-types/pagerduty.asciidoc[leveloffset=+1] +include::action-types/sentinelone.asciidoc[leveloffset=+1] include::action-types/server-log.asciidoc[leveloffset=+1] include::action-types/servicenow.asciidoc[leveloffset=+1] include::action-types/servicenow-sir.asciidoc[leveloffset=+1] diff --git a/docs/management/connectors/pre-configured-connectors.asciidoc b/docs/management/connectors/pre-configured-connectors.asciidoc index 74f18d02836437..b7293b6232190c 100644 --- a/docs/management/connectors/pre-configured-connectors.asciidoc +++ b/docs/management/connectors/pre-configured-connectors.asciidoc @@ -147,7 +147,7 @@ xpack.actions.preconfigured: name: preconfigured-bedrock-connector-type actionTypeId: .bedrock config: - apiUrl: https://bedrock.us-east-1.amazonaws.com <1> + apiUrl: https://bedrock-runtime.us-east-1.amazonaws.com <1> defaultModel: anthropic.claude-v2 <2> secrets: accessKey: key-value <3> diff --git a/docs/maps/asset-tracking-tutorial.asciidoc b/docs/maps/asset-tracking-tutorial.asciidoc index 235d9dd92ffb7e..32ab099575c920 100644 --- a/docs/maps/asset-tracking-tutorial.asciidoc +++ b/docs/maps/asset-tracking-tutorial.asciidoc @@ -1,6 +1,5 @@ :ems-asset-index-name: TriMet Positions - [role="xpack"] [[asset-tracking-tutorial]] == Track, visualize, and alert on assets in real time @@ -37,7 +36,7 @@ To get to the fun of visualizing and alerting on Portland public transport vehic ==== Step 1: Set up an Elasticsearch index . In Kibana, open the main menu, then click *Dev Tools*. -. In *Console*, create the `tri_met_tracks` index lifecyle policy. This policy will keep the events in the hot data phase for 7 days. The data then moves to the warm phase. After 365 days in the warm phase, the data is deleted. +. In *Console*, create the `tri_met_tracks` index lifecyle policy. This policy will keep the events in the hot data phase for 7 days. The data then moves to the warm phase. After 365 days in the warm phase, the data is deleted. + .ILM policy definition [%collapsible%open] @@ -46,42 +45,42 @@ To get to the fun of visualizing and alerting on Portland public transport vehic ---------------------------------- PUT _ilm/policy/tri_met_tracks { - "policy": { - "phases": { - "hot": { - "min_age": "0ms", - "actions": { - "rollover": { - "max_primary_shard_size": "50gb", - "max_age": "7d" - }, - "set_priority": { - "priority": 100 - } - } - }, - "warm": { - "min_age": "0d", - "actions": { - "set_priority": { - "priority": 50 - } - } - }, - "delete": { - "min_age": "365d", - "actions": { - "delete": { - "delete_searchable_snapshot": true - } - } - } - } - } + "policy": { + "phases": { + "hot": { + "min_age": "0ms", + "actions": { + "rollover": { + "max_primary_shard_size": "50gb", + "max_age": "7d" + }, + "set_priority": { + "priority": 100 + } + } + }, + "warm": { + "min_age": "0d", + "actions": { + "set_priority": { + "priority": 50 + } + } + }, + "delete": { + "min_age": "365d", + "actions": { + "delete": { + "delete_searchable_snapshot": true + } + } + } + } + } } ---------------------------------- ==== -. In **Console**, add the `tri_met_tracks_for_elastic_agent` ingest pipeline. +. In **Console**, add the `tri_met_tracks_for_elastic_agent` ingest pipeline. + .Ingest policy definition [%collapsible%open] @@ -90,57 +89,57 @@ PUT _ilm/policy/tri_met_tracks ---------------------------------- PUT _ingest/pipeline/tri_met_tracks_for_elastic_agent { - "processors": [ - { - "set": { - "field": "trimet.inCongestion", - "value": "false", - "if": "ctx?.trimet?.inCongestion == null" - } - }, - { - "convert": { - "field": "trimet.bearing", - "type": "float" - } - }, - { - "convert": { - "field": "trimet.inCongestion", - "type": "boolean" - } - }, - { - "script": { - "source": """ - double lat=Math.round(ctx['trimet']['latitude']*1e6)/1e6; - double lon=Math.round(ctx['trimet']['longitude']*1e6)/1e6; - ctx['trimet']['location'] = lat + "," + lon - """, - "description": "Generate the geometry rounding to six decimals" - } - }, - { - "script": { - "source": """ctx['_id'] = ctx['trimet']['vehicleID'] + "_" + ctx['trimet']['time']""", - "description": "Generate documentID" - } - }, - { - "remove": { - "field": [ - "message", - "input", - "agent", - "ecs", - "host", - "event", - "trimet.longitude", - "trimet.latitude" - ] - } - } - ] + "processors": [ + { + "set": { + "field": "trimet.inCongestion", + "value": "false", + "if": "ctx?.trimet?.inCongestion == null" + } + }, + { + "convert": { + "field": "trimet.bearing", + "type": "float" + } + }, + { + "convert": { + "field": "trimet.inCongestion", + "type": "boolean" + } + }, + { + "script": { + "source": """ + double lat=Math.round(ctx['trimet']['latitude']*1e6)/1e6; + double lon=Math.round(ctx['trimet']['longitude']*1e6)/1e6; + ctx['trimet']['location'] = lat + "," + lon + """, + "description": "Generate the geometry rounding to six decimals" + } + }, + { + "script": { + "source": """ctx['_id'] = ctx['trimet']['vehicleID'] + "_" + ctx['trimet']['time']""", + "description": "Generate documentID" + } + }, + { + "remove": { + "field": [ + "message", + "input", + "agent", + "ecs", + "host", + "event", + "trimet.longitude", + "trimet.latitude" + ] + } + } + ] } ---------------------------------- ==== @@ -153,182 +152,182 @@ PUT _ingest/pipeline/tri_met_tracks_for_elastic_agent ---------------------------------- PUT _component_template/logs-httpjson.trimet@package { - "template": { - "settings": { - "index": { - "lifecycle": { - "name": "tri_met_tracks" - }, - "codec": "best_compression", - "default_pipeline": "tri_met_tracks_for_elastic_agent" - } - }, - "mappings": { - "_routing": { - "required": false - }, - "numeric_detection": false, - "dynamic_date_formats": [ - "strict_date_optional_time", - "yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z" - ], - "dynamic": true, - "_source": { - "excludes": [], - "includes": [], - "enabled": true - }, - "dynamic_templates": [], - "date_detection": true, - "properties": { - "input": { - "properties": { - "type": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "@timestamp": { - "ignore_malformed": false, - "type": "date" - }, - "ecs": { - "properties": { - "version": { - "ignore_above": 1024, - "type": "keyword" - } - } - }, - "data_stream": { - "properties": { - "namespace": { - "type": "constant_keyword" - }, - "type": { - "type": "constant_keyword" - }, - "dataset": { - "type": "constant_keyword" - } - } - }, - "event": { - "properties": { - "created": { - "type": "date" - }, - "module": { - "type": "constant_keyword", - "value": "httpjson" - }, - "dataset": { - "type": "constant_keyword", - "value": "httpjson.trimet" - } - } - }, - "message": { - "type": "match_only_text" - }, - "tags": { - "ignore_above": 1024, - "type": "keyword" - }, - "trimet": { - "type": "object", - "properties": { - "expires": { - "type": "date" - }, - "signMessage": { - "type": "text" - }, - "serviceDate": { - "type": "date" - }, - "loadPercentage": { - "type": "float" - }, - "nextStopSeq": { - "type": "integer" - }, - "source": { - "type": "keyword" - }, - "type": { - "type": "keyword" - }, - "blockID": { - "type": "integer" - }, - "signMessageLong": { - "type": "text" - }, - "lastLocID": { - "type": "keyword" - }, - "nextLocID": { - "type": "keyword" - }, - "locationInScheduleDay": { - "type": "integer" - }, - "newTrip": { - "type": "boolean" - }, - "direction": { - "type": "integer" - }, - "inCongestion": { - "type": "boolean" - }, - "routeNumber": { - "type": "integer" - }, - "bearing": { - "type": "integer" - }, - "garage": { - "type": "keyword" - }, - "tripID": { - "type": "keyword" - }, - "delay": { - "type": "integer" - }, - "extraBlockID": { - "type": "keyword" - }, - "messageCode": { - "type": "integer" - }, - "lastStopSeq": { - "type": "integer" - }, - "location": { - "type": "geo_point" - }, - "time": { - "index": true, - "ignore_malformed": false, - "store": false, - "type": "date", - "doc_values": true - }, - "vehicleID": { - "type": "keyword" - }, - "offRoute": { - "type": "boolean" - } - } - } - } - } - } + "template": { + "settings": { + "index": { + "lifecycle": { + "name": "tri_met_tracks" + }, + "codec": "best_compression", + "default_pipeline": "tri_met_tracks_for_elastic_agent" + } + }, + "mappings": { + "_routing": { + "required": false + }, + "numeric_detection": false, + "dynamic_date_formats": [ + "strict_date_optional_time", + "yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z" + ], + "dynamic": true, + "_source": { + "excludes": [], + "includes": [], + "enabled": true + }, + "dynamic_templates": [], + "date_detection": true, + "properties": { + "input": { + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "@timestamp": { + "ignore_malformed": false, + "type": "date" + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "data_stream": { + "properties": { + "namespace": { + "type": "constant_keyword" + }, + "type": { + "type": "constant_keyword" + }, + "dataset": { + "type": "constant_keyword" + } + } + }, + "event": { + "properties": { + "created": { + "type": "date" + }, + "module": { + "type": "constant_keyword", + "value": "httpjson" + }, + "dataset": { + "type": "constant_keyword", + "value": "httpjson.trimet" + } + } + }, + "message": { + "type": "match_only_text" + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "trimet": { + "type": "object", + "properties": { + "expires": { + "type": "date" + }, + "signMessage": { + "type": "text" + }, + "serviceDate": { + "type": "date" + }, + "loadPercentage": { + "type": "float" + }, + "nextStopSeq": { + "type": "integer" + }, + "source": { + "type": "keyword" + }, + "type": { + "type": "keyword" + }, + "blockID": { + "type": "integer" + }, + "signMessageLong": { + "type": "text" + }, + "lastLocID": { + "type": "keyword" + }, + "nextLocID": { + "type": "keyword" + }, + "locationInScheduleDay": { + "type": "integer" + }, + "newTrip": { + "type": "boolean" + }, + "direction": { + "type": "integer" + }, + "inCongestion": { + "type": "boolean" + }, + "routeNumber": { + "type": "integer" + }, + "bearing": { + "type": "integer" + }, + "garage": { + "type": "keyword" + }, + "tripID": { + "type": "keyword" + }, + "delay": { + "type": "integer" + }, + "extraBlockID": { + "type": "keyword" + }, + "messageCode": { + "type": "integer" + }, + "lastStopSeq": { + "type": "integer" + }, + "location": { + "type": "geo_point" + }, + "time": { + "index": true, + "ignore_malformed": false, + "store": false, + "type": "date", + "doc_values": true + }, + "vehicleID": { + "type": "keyword" + }, + "offRoute": { + "type": "boolean" + } + } + } + } + } + } } ---------------------------------- ==== @@ -340,89 +339,94 @@ PUT _component_template/logs-httpjson.trimet@package ---------------------------------- PUT _index_template/logs-httpjson.trimet { - "index_patterns": [ - "logs-httpjson.trimet-*" - ], - "composed_of": [ - "logs-httpjson.trimet@package", - ".fleet_globals-1", - ".fleet_agent_id_verification-1" - ], - "priority": 200, - "data_stream": { - "hidden": false, - "allow_custom_routing": false - } + "index_patterns": [ + "logs-httpjson.trimet-*" + ], + "composed_of": [ + "logs-httpjson.trimet@package", + ".fleet_globals-1", + ".fleet_agent_id_verification-1" + ], + "priority": 200, + "data_stream": { + "hidden": false, + "allow_custom_routing": false + } } ---------------------------------- ==== - [float] ==== Step 2: Configure {agent} + ++++
-
- - -
-
+
+ + +
+
++++ If you already have an agent policy, get its identifier from the `View policy` action fly out + [role="screenshot"] image::maps/images/asset-tracking-tutorial/agent-policy-id.png[] + [role="screenshot"] image::maps/images/asset-tracking-tutorial/policy_id.png[] ++++ -
- + +
++++ + Execute the following request from the **Console** to install a new Custom API integration. Put the corresponding values for the `policy_id` and `tri_met_app_id`. + .Create a new Custom API integration [%collapsible%open] ==== @@ -430,40 +434,41 @@ Execute the following request from the **Console** to install a new Custom API i ---------------------------------- POST kbn:/api/fleet/package_policies { - "policy_id": "", <1> - "package": { - "name": "httpjson", - "version": "1.18.0" - }, - "name": "httpjson-trimet", - "description": "TriMet data upload", - "namespace": "default", - "inputs": { - "generic-httpjson": { - "enabled": true, - "streams": { - "httpjson.generic": { - "enabled": true, - "vars": { - "data_stream.dataset": "httpjson.trimet", - "request_url": "https://developer.trimet.org/ws/v2/vehicles?appID=", <2> - "request_interval": "1m", <3> - "request_method": "GET", - "response_split": "target: body.resultSet.vehicle", - "request_redirect_headers_ban_list": [], - "oauth_scopes": [], - "processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"trimet\"\n", - "tags": [ - "trimet" - ] - } - } - } - } - } + "policy_id": "", <1> + "package": { + "name": "httpjson", + "version": "1.18.0" + }, + "name": "httpjson-trimet", + "description": "TriMet data upload", + "namespace": "default", + "inputs": { + "generic-httpjson": { + "enabled": true, + "streams": { + "httpjson.generic": { + "enabled": true, + "vars": { + "data_stream.dataset": "httpjson.trimet", + "request_url": "https://developer.trimet.org/ws/v2/vehicles?appID=", <2> + "request_interval": "1m", <3> + "request_method": "GET", + "response_split": "target: body.resultSet.vehicle", + "request_redirect_headers_ban_list": [], + "oauth_scopes": [], + "processors": "- decode_json_fields:\n fields: [\"message\"]\n target: \"trimet\"\n", + "tags": [ + "trimet" + ] + } + } + } + } + } } ---------------------------------- + <1> Agent policy identifier <2> TriMet application identifier <3> Retrieve vehicle positions every minute @@ -471,7 +476,6 @@ POST kbn:/api/fleet/package_policies This request will configure the integration to make requests to the TriMet REST API every minute, splitting the API response into one message per vehicle into the `httpjson.trimet` data stream, and encoding the vehicle's data into the `trimet` field. The rest of the data management will be handled by the ingest policy defined in the first step. - [float] ==== Step 3: Create a data view for the tri_met_tracks {es} index @@ -481,11 +485,11 @@ In **Console** execute this request to create a new {kib} Data View called {ems- ---------------------------------- POST kbn:/api/data_views/data_view { - "data_view": { - "title": "logs-httpjson.trimet-*", - "name": "{ems-asset-index-name}", - "timeFieldName": "trimet.time" - } + "data_view": { + "title": "logs-httpjson.trimet-*", + "name": "{ems-asset-index-name}", + "timeFieldName": "trimet.time" + } } ---------------------------------- @@ -504,23 +508,28 @@ TIP: You may want to tweak this Data View to adjust the field names and number o . Open the <>, and set the time range to the last 15 minutes. . Expand a document and explore some of the fields that you will use later in this tutorial: `trimet.bearing`, `trimet.inCongestion`, `trimet.location`, and `trimet.vehicleID`. + [role="screenshot"] image::maps/images/asset-tracking-tutorial/discover.png[] + [float] === Part 2: Build an operational map It's hard to get an overview of Portland vehicles by looking at individual events. Let's create a map to show the routes and current location for each vehicle, along with the direction they are heading. + [float] ==== Step 1: Create your map Create your map and set the theme for the default layer to dark mode. + . Open the main menu, and click *Maps*. . Click *Create map*. . In the *Layers* list, click *Road map*, and then click *Edit layer settings*. . Open the *Tile service* dropdown, and select *Road map - dark*. . Click *Keep changes*. + [float] ==== Step 2. Add a tracks layer @@ -581,15 +590,18 @@ Your map should automatically refresh every 10 seconds to show the latest vehicl [role="screenshot"] image::maps/images/asset-tracking-tutorial/tracks_and_top_hits.png[] + [float] === Part 3: Setup geo-fencing alerts Let's make TriMet Portland data actionable and alert when vehicles enter construction zones. + [float] ==== Step 1. Add a construction zone Add a layer for construction zones, which you will draw on the map. The construction zones will be used as your geofence boundary or threshold that serves as the basis for triggering alerts. + . Click *Add layer*. . Click *Create index*. . Set *Index name* to `trimet_construction_zones`. @@ -614,14 +626,14 @@ Your map is now complete for now, congratulations! [role="screenshot"] image::maps/images/asset-tracking-tutorial/construction_zones.png[] - [float] ==== Step 2. Configure an alert -Create a new alert by defining a rule and a connector. The rule includes the conditions that will trigger the alert, and the connector defines what action takes place once the alert is triggered. In this case, each alert will insert a new document into an {es} index. +Create a new alert by defining a rule and a connector. The rule includes the conditions that will trigger the alert, and the connector defines what action takes place once the alert is triggered. In this case, each alert will insert a new document into an {es} index. NOTE: For this example, you will set the rule to check every minute. However, when running in production this value may need to be adjusted to a higher check interval to avoid performance issues. Refer to <> for more information. + . In the {kib} **Console** create a new index and Data view + .Create an index and Data View for the alerts @@ -632,31 +644,32 @@ NOTE: For this example, you will set the rule to check every minute. However, wh # Create the alerts index PUT trimet_alerts { - "settings": { - "number_of_replicas": 1, - "number_of_shards": 1 - }, - "mappings": { - "properties": { - "vehicleId": {"type": "keyword"}, - "documentId": {"type": "text"}, - "vehicleTime": {"type": "date"}, - "detectionTime": {"type": "date"}, - "location": {"type": "geo_point"}, - "boundaryId": {"type": "keyword"}, - "message": {"type": "text"} - } - } + "settings": { + "number_of_replicas": 1, + "number_of_shards": 1 + }, + "mappings": { + "properties": { + "vehicleId": {"type": "keyword"}, + "documentId": {"type": "text"}, + "vehicleTime": {"type": "date"}, + "detectionTime": {"type": "date"}, + "location": {"type": "geo_point"}, + "boundaryId": {"type": "keyword"}, + "message": {"type": "text"} + } + } } + # Create the alerts index data view POST kbn:/api/data_views/data_view { - "data_view": { - "title": "trimet_alerts", - "name": "TriMet Alerts", - "timeFieldName": "detectionTime" - } + "data_view": { + "title": "trimet_alerts", + "name": "TriMet Alerts", + "timeFieldName": "detectionTime" + } } ---------------------------------- ==== @@ -670,7 +683,7 @@ POST kbn:/api/data_views/data_view .. Select `trimet.location` as the *location field* .. Select `trimet.vehicleID` as the *entity field* . In the *Boundaries* block -.. Select the *trimet_construction_zones* Data View +.. Select the *trimet_construction_zones* Data View .. Select `coordinates` as the *location field* .. Leave the *Display name* and *Filter* empty . Select the rule to check every minute @@ -690,12 +703,12 @@ image::maps/images/asset-tracking-tutorial/rule_configuration.png[] [source,js] ---------------------------------- { - "vehicleId": "{{context.entityId}}", - "vehicleTime": "{{context.entityDateTime}}", - "documentId": "{{context.entityDocumentId}}", - "detectionTime": "{{context.detectionDateTime}}", - "location": "{{context.entityLocation}}", - "boundaryId": "{{context.containingBoundaryId}}" + "vehicleId": "{{context.entityId}}", + "vehicleTime": "{{context.entityDateTime}}", + "documentId": "{{context.entityDocumentId}}", + "detectionTime": "{{context.detectionDateTime}}", + "location": "{{context.entityLocation}}", + "boundaryId": "{{context.containingBoundaryId}}" } ---------------------------------- + @@ -703,9 +716,8 @@ image::maps/images/asset-tracking-tutorial/rule_configuration.png[] image::maps/images/asset-tracking-tutorial/alert_connector.png[] . Click *Save*. -The *TriMet Alerts connector* is added to the *{connectors-ui}* page. For more information on common connectors, refer to the <> and <> connectors. - +The *TriMet Alerts connector* is added to the *{connectors-ui}* page. For more information on common connectors, refer to the <> and <> connectors. [float] ==== Step 3. View alerts in real time diff --git a/docs/maps/clean-data.asciidoc b/docs/maps/clean-data.asciidoc new file mode 100644 index 00000000000000..538e84be535179 --- /dev/null +++ b/docs/maps/clean-data.asciidoc @@ -0,0 +1,183 @@ +[role="xpack"] +[[maps-clean-your-data]] +=== Clean your data + +// https://github.com/elastic/kibana/issues/135319 + +Geospatial fields in {es} have certain restrictions that need to be addressed before upload. On this section a few recipes will be presented to help troubleshooting common issues on this type of data. + +[float] +==== Convert to GeoJSON or Shapefile + +Use https://gdal.org/programs/ogr2ogr.html[ogr2ogr] (part of the https://gdal.org[GDAL/OGR] suite) to convert datasets into a GeoJSON or Esri Shapefile. For example, use the following commands to convert a GPX file into JSON: + +[source,sh] +---- +# Example GPX file from https://www.topografix.com/gpx_sample_files.asp +# +# Convert the GPX waypoints layer into a GeoJSON file +$ ogr2ogr \ + -f GeoJSON "waypoints.geo.json" \ # Output format and file name + "fells_loop.gpx" \ # Input File Name + "waypoints" # Input Layer (usually same as file name) + +# Extract the routes layer into a GeoJSON file +$ ogr2ogr -f "GeoJSON" "routes.geo.json" "fells_loop.gpx" "routes" +---- + +[float] +==== Convert to WGS84 Coordinate Reference System + +{es} only supports WGS84 Coordinate Reference System. Use `ogr2ogr` to convert from other coordinate systems to WGS84. + +On the following example, `ogr2ogr` transforms a shapefile from https://epsg.org/crs_4269/NAD83.html[NAD83] to https://epsg.org/crs_4326/WGS-84.html[WGS84]. The input CRS is detected automatically thanks to the `.prj` sidecar file in the source dataset. + +[source,sh] +---- +# Example NAD83 file from https://www2.census.gov/geo/tiger/GENZ2018/shp/cb_2018_us_county_5m.zip +# +# Convert the Census Counties shapefile to WGS84 (EPSG:4326) +$ ogr2ogr -f "Esri Shapefile" \ + "cb_2018_us_county_5m.4326.shp" \ # Output file + -t_srs "EPSG:4326" \ # EPSG:4326 is the code for WGS84 + "cb_2018_us_county_5m.shp" \ # Input file + "cb_2018_us_county_5m" # Input layer +---- + +[float] +==== Improve performance by breaking out complex geometries into one geometry per document + +Sometimes geospatial datasets are composed by a small amount of geometries that contain a very large amount of individual part geometries. A good example of this situation is on detailed world country boundaries datasets where records for countries like Canada or Philippines have hundreds of small island geometries. Depending on the final usage of a dataset, you may want to break out this type of dataset to keep one geometry per document, considerably increasing the performance of your index. + +[source,sh] +---- +# Example NAD83 file from www12.statcan.gc.ca/census-recensement/2011/geo/bound-limit/files-fichiers/2016/ler_000b16a_e.zip +# +# Check the number of input features +$ ogrinfo -summary ler_000b16a_e.shp ler_000b16a_e \ + | grep "Feature Count" +Feature Count: 76 + +# Convert to WGS84 exploding the multiple geometries +$ ogr2ogr \ + -f "Esri Shapefile" \ + "ler_000b16a_e.4326-parts.shp" \ # Output file + -explodecollections \ # Convert multiparts into single records + -t_srs "EPSG:4326" \ # Transform to WGS84 + "ler_000b16a_e.shp" \ # Input file + "ler_000b16a_e" # Input layer + +# Check the number of geometries in the output file +# to confirm the 76 records are exploded into 27 thousand rows +$ ogrinfo -summary ler_000b16a_e.4326-parts.shp ler_000b16a_e.4326 \ + | grep "Feature Count" +Feature Count: 27059 +---- + +[WARNING] +==== +A dataset containing records with a very large amount of parts as the one from the example above may even hang in {kib} Maps file uploader. +==== + +[float] +==== Reduce the precision + +Some machine generated datasets are stored with more decimals than are strictly necessary. For reference, the GeoJSON RFC 7946 https://datatracker.ietf.org/doc/html/rfc7946#section-11.2[coordinate precision section] specifies six digits to be a common default to around 10 centimeters on the ground. The file uploader in the Maps application will automatically reduce the precision to 6 decimals but for big datasets it is better to do this before uploading. + +`ogr2ogr` generates GeoJSON files with 7 decimal degrees when requesting `RFC7946` compliant files but using the `COORDINATE_PRECISION` https://gdal.org/drivers/vector/geojson.html#layer-creation-options[GeoJSON layer creation option] it can be downsized even more if that is OK for the usage of the data. + +[source,sh] +---- +# Example NAD83 file from https://www2.census.gov/geo/tiger/GENZ2018/shp/cb_2018_us_county_5m.zip +# +# Generate a 2008 GeoJSON file +$ ogr2ogr \ + -f GeoJSON \ + "cb_2018_us_county_5m.4326.geo.json" \ # Output file + -t_srs "EPSG:4326" \ # Convert to WGS84 + -lco "RFC7946=NO" \ # Request a 2008 GeoJSON file + "cb_2018_us_county_5m.shp" \ + "cb_2018_us_county_5m" + +# Generate a RFC7946 GeoJSON file +$ ogr2ogr \ + -f GeoJSON \ + "cb_2018_us_county_5m.4326.RFC7946.geo.json" \ # Output file + -t_srs "EPSG:4326" \ # Convert to WGS84 + -lco "RFC7946=YES" \ # Request a RFC7946 GeoJSON file + "cb_2018_us_county_5m.shp" \ + "cb_2018_us_county_5m" + +# Generate a RFC7946 GeoJSON file with just 5 decimal figures +$ ogr2ogr \ + -f GeoJSON \ + "cb_2018_us_county_5m.4326.RFC7946_mini.geo.json" \ # Output file + -t_srs "EPSG:4326" \ # Convert to WGS84 + -lco "RFC7946=YES" \ # Request a RFC7946 GeoJSON file + -lco "COORDINATE_PRECISION=5" \ # Downsize to just 5 decimal positions + "cb_2018_us_county_5m.shp" \ + "cb_2018_us_county_5m" + +# Compare the disk size of the three output files +$ du -h cb_2018_us_county_5m.4326*.geo.json +7,4M cb_2018_us_county_5m.4326.geo.json +6,7M cb_2018_us_county_5m.4326.RFC7946.geo.json +6,1M cb_2018_us_county_5m.4326.RFC7946_mini.geo.json +---- + + +[float] +==== Simplifying region datasets + +Region datasets are polygon datasets where the boundaries of the documents don't overlap. This is common for administrative boundaries, land usage, and other continuous datasets. This type of datasets has the special feature that any geospatial operation modifying the lines of the polygons needs to be applied in the same way to the common sides of the polygons to avoid the generation of thin gap and overlap artifacts. + +https://github.com/mbloch/mapshaper[`mapshaper`] is an excellent tool to work with this type of datasets as it understands datasets of this nature and works with them accordingly. + +Depending on the usage of a region dataset, different geospatial precisions may be adequate. A world countries dataset that is displayed for the entire planet does not need the same precision as a map of the countries in the South Asian continent. + +`mapshaper` offers a https://github.com/mbloch/mapshaper/wiki/Command-Reference#-simplify[`simplify`] command that accepts percentages, resolutions, and different simplification algorithms. + +[source,sh] +---- +# Example NAD83 file from https://www2.census.gov/geo/tiger/GENZ2018/shp/cb_2018_us_county_5m.zip +# +# Generate a baseline GeoJSON file from OGR +$ ogr2ogr \ + -f GeoJSON "cb_2018_us_county_5m.ogr.geo.json" \ + -t_srs "EPSG:4326" \ + -lco RFC7946=YES \ + "cb_2018_us_county_5m.shp" \ + "cb_2018_us_county_5m" + +# Simplify at different percentages with mapshaper +$ for pct in 10 50 75 99; do \ + mapshaper \ + -i "cb_2018_us_county_5m.shp" \ # Input file + -proj "EPSG:4326" \ # Output projection + -simplify "${pct}%" \ # Simplification + -o cb_2018_us_county_5m.mapshaper_${pct}.geo.json; \ # Output file + done + +# Compare the size of the output files +$ du -h cb_2018_us_county_5m*.geo.json +2,0M cb_2018_us_county_5m.mapshaper_10.geo.json +4,1M cb_2018_us_county_5m.mapshaper_50.geo.json +5,3M cb_2018_us_county_5m.mapshaper_75.geo.json +6,7M cb_2018_us_county_5m.mapshaper_99.geo.json +6,7M cb_2018_us_county_5m.ogr.geo.json +---- + + +[float] +==== Fixing incorrect geometries + +The Maps application expects valid GeoJSON or Shapefile datasets. Apart from the mentioned CRS requirement, geometries need to be valid. Both `ogr2ogr` and `mapshaper` have options to try to fix invalid geometries: + +* OGR https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-makevalid[`-makevalid`] option +* Mapshaper https://github.com/mbloch/mapshaper/wiki/Command-Reference#-clean[`-clean`] command + + +[float] +==== And so much more + +`ogr2ogr` and `mapshaper` are excellent geospatial ETL (Extract Transform and Load) utilities that can do much more than viewed here. Reading the documentation in detail is worth investment to improve the quality of the datasets by removing unwanted fields, refining data types, validating value domains, etc. Finally, being command line utilities, both can be automated and added to QA pipelines. diff --git a/docs/maps/index.asciidoc b/docs/maps/index.asciidoc index f924e60cce9e6e..6023cbef8a91da 100644 --- a/docs/maps/index.asciidoc +++ b/docs/maps/index.asciidoc @@ -64,5 +64,6 @@ include::search.asciidoc[] include::map-settings.asciidoc[] include::connect-to-ems.asciidoc[] include::import-geospatial-data.asciidoc[] +include::clean-data.asciidoc[] include::indexing-geojson-data-tutorial.asciidoc[] include::trouble-shooting.asciidoc[] diff --git a/docs/maps/trouble-shooting.asciidoc b/docs/maps/trouble-shooting.asciidoc index 3e4a6dfb42dc1a..ebb7ec2a65aa8d 100644 --- a/docs/maps/trouble-shooting.asciidoc +++ b/docs/maps/trouble-shooting.asciidoc @@ -53,4 +53,4 @@ Increase <> for large data views. [float] ==== Custom tiles are not displayed * When using a custom tile service, ensure your tile server has configured https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS[Cross-Origin Resource Sharing (CORS)] so tile requests from your {kib} domain have permission to access your tile server domain. -* Ensure custom vector and tile services have the required coordinate system. Vector data must use EPSG:4326 and tiles must use EPSG:3857. \ No newline at end of file +* Ensure custom vector and tile services have the required coordinate system. Vector data must use EPSG:4326 and tiles must use EPSG:3857. diff --git a/docs/settings/alert-action-settings.asciidoc b/docs/settings/alert-action-settings.asciidoc index 0c66deac68c0d9..b7d7e8d344a32a 100644 --- a/docs/settings/alert-action-settings.asciidoc +++ b/docs/settings/alert-action-settings.asciidoc @@ -142,6 +142,15 @@ A list of action types that are enabled. It defaults to `["*"]`, enabling all ty + Disabled action types will not appear as an option when creating new connectors, but existing connectors and actions of that type will remain in {kib} and will not function. +`xpack.actions.microsoftExchangeUrl`:: +The URL for the Microsoft Azure Active Directory endpoint to use for MS Exchange email authentication. Default: `https://login.microsoftonline.com`. + +`xpack.actions.microsoftGraphApiUrl`:: +The URL for the Microsoft Graph API endpoint to use for MS Exchange email authentication. Default: `https://graph.microsoft.com/v1.0`. + +`xpack.actions.microsoftGraphApiScope`:: +The URL for the Microsoft Graph API scope endpoint to use for MS Exchange email authentication. Default: `https://graph.microsoft.com/.default`. + `xpack.actions.proxyUrl` {ess-icon}:: Specifies the proxy URL to use, if using a proxy for actions. By default, no proxy is used. + diff --git a/docs/settings/fleet-settings.asciidoc b/docs/settings/fleet-settings.asciidoc index 468cef7ad90f99..f20094837b3e7d 100644 --- a/docs/settings/fleet-settings.asciidoc +++ b/docs/settings/fleet-settings.asciidoc @@ -269,6 +269,8 @@ List of {fleet-server} hosts that are configured when the {fleet} app starts. ===== `is_default`::: Whether or not this host should be the default to use for {fleet-server}. + `is_internal`::: + If `true` the host will not appear in the UI, and can only be managed through `kibana.yml` or the {fleet} API. `proxy_id`::: Unique ID of the proxy to access the {fleet-server} host. ===== diff --git a/examples/embeddable_examples/public/plugin.ts b/examples/embeddable_examples/public/plugin.ts index e990458531e1ad..12e24526d2eb2d 100644 --- a/examples/embeddable_examples/public/plugin.ts +++ b/examples/embeddable_examples/public/plugin.ts @@ -31,6 +31,7 @@ import { FilterDebuggerEmbeddableFactory, FilterDebuggerEmbeddableFactoryDefinition, } from './filter_debugger'; +import { registerMarkdownEditorEmbeddable } from './react_embeddables/eui_markdown_react_embeddable'; export interface EmbeddableExamplesSetupDependencies { embeddable: EmbeddableSetup; @@ -53,6 +54,8 @@ export interface EmbeddableExamplesStart { factories: ExampleEmbeddableFactories; } +registerMarkdownEditorEmbeddable(); + export class EmbeddableExamplesPlugin implements Plugin< diff --git a/examples/embeddable_examples/public/react_embeddables/eui_markdown_react_embeddable.tsx b/examples/embeddable_examples/public/react_embeddables/eui_markdown_react_embeddable.tsx new file mode 100644 index 00000000000000..b525181f307a9b --- /dev/null +++ b/examples/embeddable_examples/public/react_embeddables/eui_markdown_react_embeddable.tsx @@ -0,0 +1,143 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { EuiMarkdownEditor, EuiMarkdownFormat } from '@elastic/eui'; +import { css } from '@emotion/react'; +import { euiThemeVars } from '@kbn/ui-theme'; +import { + ReactEmbeddableFactory, + RegisterReactEmbeddable, + registerReactEmbeddableFactory, + useReactEmbeddableApiHandle, + initializeReactEmbeddableUuid, + initializeReactEmbeddableTitles, + SerializedReactEmbeddableTitles, + DefaultEmbeddableApi, + useReactEmbeddableUnsavedChanges, +} from '@kbn/embeddable-plugin/public'; +import { i18n } from '@kbn/i18n'; +import { useInheritedViewMode, useStateFromPublishingSubject } from '@kbn/presentation-publishing'; +import React from 'react'; +import { BehaviorSubject } from 'rxjs'; + +// ----------------------------------------------------------------------------- +// Types for this embeddable +// ----------------------------------------------------------------------------- +type MarkdownEditorSerializedState = SerializedReactEmbeddableTitles & { + content: string; +}; + +type MarkdownEditorApi = DefaultEmbeddableApi; + +const type = 'euiMarkdown'; + +// ----------------------------------------------------------------------------- +// Define the Embeddable Factory +// ----------------------------------------------------------------------------- +const markdownEmbeddableFactory: ReactEmbeddableFactory< + MarkdownEditorSerializedState, + MarkdownEditorApi +> = { + // ----------------------------------------------------------------------------- + // Deserialize function + // ----------------------------------------------------------------------------- + deserializeState: (state) => { + // We could run migrations here. + // We should inject references here. References are given as state.references + + return state.rawState as MarkdownEditorSerializedState; + }, + + // ----------------------------------------------------------------------------- + // Register the Embeddable component + // ----------------------------------------------------------------------------- + getComponent: async (state, maybeId) => { + /** + * initialize state (source of truth) + */ + const uuid = initializeReactEmbeddableUuid(maybeId); + const { titlesApi, titleComparators, serializeTitles } = initializeReactEmbeddableTitles(state); + const contentSubject = new BehaviorSubject(state.content); + + /** + * getComponent is async so you can async import the component or load a saved object here. + * the loading will be handed gracefully by the Presentation Container. + */ + + return RegisterReactEmbeddable((apiRef) => { + /** + * Unsaved changes logic is handled automatically by this hook. You only need to provide + * a subject, setter, and optional state comparator for each key in your state type. + */ + const { unsavedChanges, resetUnsavedChanges } = useReactEmbeddableUnsavedChanges( + uuid, + markdownEmbeddableFactory, + { + content: [contentSubject, (value) => contentSubject.next(value)], + ...titleComparators, + } + ); + + /** + * Publish the API. This is what gets forwarded to the Actions framework, and to whatever the + * parent of this embeddable is. + */ + const thisApi = useReactEmbeddableApiHandle( + { + ...titlesApi, + unsavedChanges, + resetUnsavedChanges, + serializeState: async () => { + return { + rawState: { + ...serializeTitles(), + content: contentSubject.getValue(), + }, + }; + }, + }, + apiRef, + uuid + ); + + // get state for rendering + const content = useStateFromPublishingSubject(contentSubject); + const viewMode = useInheritedViewMode(thisApi) ?? 'view'; + + return viewMode === 'edit' ? ( + contentSubject.next(value)} + aria-label={i18n.translate('dashboard.test.markdownEditor.ariaLabel', { + defaultMessage: 'Dashboard markdown editor', + })} + height="full" + /> + ) : ( + + {content ?? ''} + + ); + }); + }, +}; + +// ----------------------------------------------------------------------------- +// Register the defined Embeddable Factory - notice that this isn't defined +// on the plugin. Instead, it's a simple imported function. I.E to register an +// Embeddable, you only need the embeddable plugin in your requiredBundles +// ----------------------------------------------------------------------------- +export const registerMarkdownEditorEmbeddable = () => + registerReactEmbeddableFactory(type, markdownEmbeddableFactory); diff --git a/examples/embeddable_examples/tsconfig.json b/examples/embeddable_examples/tsconfig.json index 22a42db537daf4..0f22cccc944834 100644 --- a/examples/embeddable_examples/tsconfig.json +++ b/examples/embeddable_examples/tsconfig.json @@ -11,15 +11,15 @@ "server/**/*.ts", "../../typings/**/*" ], - "exclude": [ - "target/**/*", - ], + "exclude": ["target/**/*"], "kbn_references": [ "@kbn/core", "@kbn/kibana-utils-plugin", "@kbn/ui-actions-plugin", "@kbn/embeddable-plugin", + "@kbn/presentation-publishing", + "@kbn/ui-theme", "@kbn/i18n", - "@kbn/es-query", + "@kbn/es-query" ] } diff --git a/package.json b/package.json index 79ab0211e902f6..be309ee1bb96b5 100644 --- a/package.json +++ b/package.json @@ -832,7 +832,6 @@ "@kbn/uptime-plugin": "link:x-pack/plugins/uptime", "@kbn/url-drilldown-plugin": "link:x-pack/plugins/drilldowns/url_drilldown", "@kbn/url-forwarding-plugin": "link:src/plugins/url_forwarding", - "@kbn/url-state": "link:packages/kbn-url-state", "@kbn/usage-collection-plugin": "link:src/plugins/usage_collection", "@kbn/usage-collection-test-plugin": "link:test/plugin_functional/plugins/usage_collection", "@kbn/use-tracked-promise": "link:packages/kbn-use-tracked-promise", @@ -927,7 +926,7 @@ "css-box-model": "^1.2.1", "css.escape": "^1.5.1", "cuid": "^2.1.8", - "cypress-data-session": "^2.7.0", + "cypress-data-session": "^2.8.0", "cytoscape": "^3.10.0", "cytoscape-dagre": "^2.2.2", "d3": "3.5.17", @@ -1159,10 +1158,10 @@ "@babel/types": "^7.21.2", "@bazel/ibazel": "^0.16.2", "@bazel/typescript": "4.6.2", - "@cypress/code-coverage": "^3.10.0", - "@cypress/grep": "^3.1.5", + "@cypress/code-coverage": "^3.12.18", + "@cypress/grep": "^4.0.1", "@cypress/snapshot": "^2.1.7", - "@cypress/webpack-preprocessor": "^5.12.2", + "@cypress/webpack-preprocessor": "^6.0.1", "@elastic/eslint-plugin-eui": "0.0.2", "@elastic/makelogs": "^6.1.1", "@elastic/synthetics": "^1.5.0", @@ -1520,7 +1519,7 @@ "blob-polyfill": "^7.0.20220408", "callsites": "^3.1.0", "chance": "1.0.18", - "chromedriver": "^120.0.0", + "chromedriver": "^121.0.0", "clean-webpack-plugin": "^3.0.0", "cli-progress": "^3.12.0", "cli-table3": "^0.6.1", @@ -1530,11 +1529,11 @@ "cssnano": "^5.1.12", "cssnano-preset-default": "^5.2.12", "csstype": "^3.0.2", - "cypress": "^13.3.0", + "cypress": "^13.6.3", "cypress-axe": "^1.5.0", "cypress-file-upload": "^5.0.8", - "cypress-multi-reporters": "^1.6.3", - "cypress-real-events": "^1.10.3", + "cypress-multi-reporters": "^1.6.4", + "cypress-real-events": "^1.11.0", "cypress-recurse": "^1.35.2", "date-fns": "^2.29.3", "debug": "^2.6.9", @@ -1548,7 +1547,7 @@ "eslint-config-prettier": "^9.0.0", "eslint-module-utils": "^2.8.0", "eslint-plugin-ban": "^1.6.0", - "eslint-plugin-cypress": "^2.14.0", + "eslint-plugin-cypress": "^2.15.1", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.28.0", "eslint-plugin-jest": "^27.2.3", @@ -1567,7 +1566,7 @@ "faker": "^5.1.0", "fetch-mock": "^7.3.9", "file-loader": "^4.2.0", - "find-cypress-specs": "^1.35.1", + "find-cypress-specs": "^1.41.4", "form-data": "^4.0.0", "geckodriver": "^4.3.0", "gulp-brotli": "^3.0.0", diff --git a/packages/core/test-helpers/core-test-helpers-kbn-server/src/create_serverless_root.ts b/packages/core/test-helpers/core-test-helpers-kbn-server/src/create_serverless_root.ts index 4e46b164398d0d..4542c686453acf 100644 --- a/packages/core/test-helpers/core-test-helpers-kbn-server/src/create_serverless_root.ts +++ b/packages/core/test-helpers/core-test-helpers-kbn-server/src/create_serverless_root.ts @@ -9,7 +9,7 @@ import Path from 'path'; import { defaultsDeep } from 'lodash'; import { Client, HttpConnection } from '@elastic/elasticsearch'; -import { Cluster } from '@kbn/es'; +import { Cluster, ServerlessProjectType } from '@kbn/es'; import { REPO_ROOT } from '@kbn/repo-info'; import { ToolingLog } from '@kbn/tooling-log'; import { esTestConfig } from '@kbn/test'; @@ -28,6 +28,8 @@ export interface TestServerlessUtils { const ES_BASE_PATH_DIR = Path.join(REPO_ROOT, '.es/es_test_serverless'); +const projectType: ServerlessProjectType = 'es'; + /** * See docs in {@link TestUtils}. This function provides the same utilities but * configured for serverless. @@ -79,6 +81,7 @@ function createServerlessES() { es, start: async () => { await es.runServerless({ + projectType, basePath: ES_BASE_PATH_DIR, port: esPort, background: true, diff --git a/packages/core/ui-settings/core-ui-settings-server-internal/src/clients/base_ui_settings_client.ts b/packages/core/ui-settings/core-ui-settings-server-internal/src/clients/base_ui_settings_client.ts index 90205f8afa643b..3f65973c7ec2f9 100644 --- a/packages/core/ui-settings/core-ui-settings-server-internal/src/clients/base_ui_settings_client.ts +++ b/packages/core/ui-settings/core-ui-settings-server-internal/src/clients/base_ui_settings_client.ts @@ -74,7 +74,7 @@ export abstract class BaseUiSettingsClient implements IUiSettingsClient { } async validate(key: string, value: unknown) { - if (!value) { + if (value == null) { throw new ValidationBadValueError(); } const definition = this.defaults[key]; diff --git a/packages/deeplinks/analytics/constants.ts b/packages/deeplinks/analytics/constants.ts index 81d8646cfa074b..9793f7bb1864fe 100644 --- a/packages/deeplinks/analytics/constants.ts +++ b/packages/deeplinks/analytics/constants.ts @@ -11,3 +11,5 @@ export const DISCOVER_APP_ID = 'discover'; export const DASHBOARD_APP_ID = 'dashboards'; export const VISUALIZE_APP_ID = 'visualize'; + +export const DISCOVER_ESQL_LOCATOR = 'DISCOVER_ESQL_LOCATOR'; diff --git a/packages/deeplinks/analytics/deep_links.ts b/packages/deeplinks/analytics/deep_links.ts index e2a19ee30b80d5..048b8217cda74c 100644 --- a/packages/deeplinks/analytics/deep_links.ts +++ b/packages/deeplinks/analytics/deep_links.ts @@ -6,8 +6,15 @@ * Side Public License, v 1. */ -import { DASHBOARD_APP_ID, DISCOVER_APP_ID, VISUALIZE_APP_ID } from './constants'; +import { + DASHBOARD_APP_ID, + DISCOVER_APP_ID, + DISCOVER_ESQL_LOCATOR, + VISUALIZE_APP_ID, +} from './constants'; export type AppId = typeof DISCOVER_APP_ID | typeof DASHBOARD_APP_ID | typeof VISUALIZE_APP_ID; export type DeepLinkId = AppId; + +export type LocatorId = typeof DISCOVER_ESQL_LOCATOR; diff --git a/packages/deeplinks/analytics/index.ts b/packages/deeplinks/analytics/index.ts index e2d605988231a5..aa01b0036a52d7 100644 --- a/packages/deeplinks/analytics/index.ts +++ b/packages/deeplinks/analytics/index.ts @@ -6,6 +6,11 @@ * Side Public License, v 1. */ -export { DASHBOARD_APP_ID, DISCOVER_APP_ID, VISUALIZE_APP_ID } from './constants'; +export { + DASHBOARD_APP_ID, + DISCOVER_APP_ID, + VISUALIZE_APP_ID, + DISCOVER_ESQL_LOCATOR, +} from './constants'; export type { AppId, DeepLinkId } from './deep_links'; diff --git a/packages/deeplinks/observability/deep_links.ts b/packages/deeplinks/observability/deep_links.ts index 3a4d9e4248f7d6..2a682a352cb46e 100644 --- a/packages/deeplinks/observability/deep_links.ts +++ b/packages/deeplinks/observability/deep_links.ts @@ -17,7 +17,7 @@ import { } from './constants'; type LogsApp = typeof LOGS_APP_ID; -type ObservabilityLogExplorerApp = typeof OBSERVABILITY_LOGS_EXPLORER_APP_ID; +type ObservabilityLogsExplorerApp = typeof OBSERVABILITY_LOGS_EXPLORER_APP_ID; type ObservabilityOverviewApp = typeof OBSERVABILITY_OVERVIEW_APP_ID; type MetricsApp = typeof METRICS_APP_ID; type ApmApp = typeof APM_APP_ID; @@ -26,7 +26,7 @@ type ObservabilityOnboardingApp = typeof OBSERVABILITY_ONBOARDING_APP_ID; export type AppId = | LogsApp - | ObservabilityLogExplorerApp + | ObservabilityLogsExplorerApp | ObservabilityOverviewApp | ObservabilityOnboardingApp | ApmApp diff --git a/packages/deeplinks/observability/locators/index.ts b/packages/deeplinks/observability/locators/index.ts index 8761b00b7a159b..1dedf5e2a40838 100644 --- a/packages/deeplinks/observability/locators/index.ts +++ b/packages/deeplinks/observability/locators/index.ts @@ -6,6 +6,6 @@ * Side Public License, v 1. */ -export * from './log_explorer'; -export * from './observability_log_explorer'; +export * from './logs_explorer'; +export * from './observability_logs_explorer'; export * from './observability_onboarding'; diff --git a/packages/deeplinks/observability/locators/log_explorer.ts b/packages/deeplinks/observability/locators/logs_explorer.ts similarity index 87% rename from packages/deeplinks/observability/locators/log_explorer.ts rename to packages/deeplinks/observability/locators/logs_explorer.ts index d20c36e73917de..13ecd801652170 100644 --- a/packages/deeplinks/observability/locators/log_explorer.ts +++ b/packages/deeplinks/observability/locators/logs_explorer.ts @@ -25,9 +25,9 @@ export type ListFilterControl = { values: string[]; }; -export const LOG_EXPLORER_LOCATOR_ID = 'LOG_EXPLORER_LOCATOR'; +export const LOGS_EXPLORER_LOCATOR_ID = 'LOGS_EXPLORER_LOCATOR'; -export interface LogExplorerNavigationParams extends SerializableRecord { +export interface LogsExplorerNavigationParams extends SerializableRecord { /** * Optionally set the time range in the time picker. */ @@ -54,7 +54,7 @@ export interface LogExplorerNavigationParams extends SerializableRecord { filterControls?: FilterControls; } -export interface LogExplorerLocatorParams extends LogExplorerNavigationParams { +export interface LogsExplorerLocatorParams extends LogsExplorerNavigationParams { /** * Dataset name to be selected. */ diff --git a/packages/deeplinks/observability/locators/observability_log_explorer.ts b/packages/deeplinks/observability/locators/observability_logs_explorer.ts similarity index 79% rename from packages/deeplinks/observability/locators/observability_log_explorer.ts rename to packages/deeplinks/observability/locators/observability_logs_explorer.ts index 37bbf75f122f2f..85efc95e363129 100644 --- a/packages/deeplinks/observability/locators/observability_log_explorer.ts +++ b/packages/deeplinks/observability/locators/observability_logs_explorer.ts @@ -7,17 +7,17 @@ */ import { SerializableRecord } from '@kbn/utility-types'; -import { LogExplorerNavigationParams } from './log_explorer'; +import { LogsExplorerNavigationParams } from './logs_explorer'; // Will become a union once we have more origins -export interface ObservabilityLogExplorerLocationState extends SerializableRecord { +export interface ObservabilityLogsExplorerLocationState extends SerializableRecord { origin?: { id: 'application-log-onboarding'; }; } -export type DatasetLocatorParams = LogExplorerNavigationParams & - ObservabilityLogExplorerLocationState; +export type DatasetLocatorParams = LogsExplorerNavigationParams & + ObservabilityLogsExplorerLocationState; // All datasets locator export const ALL_DATASETS_LOCATOR_ID = 'ALL_DATASETS_LOCATOR'; diff --git a/packages/kbn-check-mappings-update-cli/current_fields.json b/packages/kbn-check-mappings-update-cli/current_fields.json index 6a8b8c989ac70d..56308a980cc566 100644 --- a/packages/kbn-check-mappings-update-cli/current_fields.json +++ b/packages/kbn-check-mappings-update-cli/current_fields.json @@ -632,6 +632,7 @@ "fleet-fleet-server-host": [ "host_urls", "is_default", + "is_internal", "is_preconfigured", "name", "proxy_id" diff --git a/packages/kbn-check-mappings-update-cli/current_mappings.json b/packages/kbn-check-mappings-update-cli/current_mappings.json index 7a75cdcecc790d..4768e2605bb0bc 100644 --- a/packages/kbn-check-mappings-update-cli/current_mappings.json +++ b/packages/kbn-check-mappings-update-cli/current_mappings.json @@ -2091,6 +2091,10 @@ "is_default": { "type": "boolean" }, + "is_internal": { + "type": "boolean", + "index": false + }, "host_urls": { "type": "keyword", "index": false diff --git a/packages/kbn-es-archiver/src/cli.ts b/packages/kbn-es-archiver/src/cli.ts index d1204f1a4facb5..949bc9b7efdcf8 100644 --- a/packages/kbn-es-archiver/src/cli.ts +++ b/packages/kbn-es-archiver/src/cli.ts @@ -18,11 +18,10 @@ import readline from 'readline'; import Fs from 'fs'; import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { RunWithCommands } from '@kbn/dev-cli-runner'; +import { FlagsReader, RunWithCommands } from '@kbn/dev-cli-runner'; import { createFlagError } from '@kbn/dev-cli-errors'; import { readConfigFile, KbnClient, EsVersion } from '@kbn/test'; import { Client, HttpConnection } from '@elastic/elasticsearch'; - import { EsArchiver } from './es_archiver'; const resolveConfigPath = (v: string) => Path.resolve(process.cwd(), v); @@ -202,12 +201,20 @@ export function runCli() { WARNING: If the indices exist already they will be deleted! $ node scripts/es_archiver load my_test_data --config ../config.js + + The same with overrides for batch size and concurrency default values: + + $ node scripts/es_archiver load my_test_data --config ../config.js --batch-size 300 --concurrency 2 + `, flags: { boolean: ['use-create', 'docs-only'], + string: ['batch-size', 'concurrency'], help: ` --use-create use create instead of index for loading documents --docs-only load only documents, not indices + --batch-size the "high water mark"; the number of records processed per bulk request + --concurrency number of bulk requests made by the api `, }, async run({ flags, esArchiver, statsMeta }) { @@ -221,17 +228,16 @@ export function runCli() { statsMeta.set('esArchiverPath', path); - const useCreate = flags['use-create']; - if (typeof useCreate !== 'boolean') { - throw createFlagError('--use-create does not take a value'); - } - - const docsOnly = flags['docs-only']; - if (typeof docsOnly !== 'boolean') { - throw createFlagError('--docs-only does not take a value'); - } + const flagsReader = new FlagsReader(flags); - await esArchiver.load(path, { useCreate, docsOnly }); + await esArchiver.load(path, { + useCreate: flagsReader.boolean('use-create'), + docsOnly: flagsReader.boolean('docs-only'), + performance: { + batchSize: flagsReader.number('batch-size'), + concurrency: flagsReader.number('concurrency'), + }, + }); }, }) .command({ diff --git a/packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.ts b/packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.ts index cbac8421043db4..c421f554ca2275 100644 --- a/packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.ts +++ b/packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.ts @@ -96,8 +96,8 @@ export function createIndexDocRecordsStream( } export interface LoadActionPerfOptions { - batchSize: number; - concurrency: number; + batchSize?: number; + concurrency?: number; } const DEFAULT_PERFORMANCE_OPTIONS: LoadActionPerfOptions = { diff --git a/packages/kbn-es-query/index.ts b/packages/kbn-es-query/index.ts index 51cbebb5470349..5a7e55b73a75f5 100644 --- a/packages/kbn-es-query/index.ts +++ b/packages/kbn-es-query/index.ts @@ -51,13 +51,10 @@ export { migrateFilter, fromCombinedFilter, isOfQueryType, + isOfEsqlQueryType, isOfAggregateQueryType, getAggregateQueryMode, - getIndexPatternFromSQLQuery, - getIndexPatternFromESQLQuery, - getLimitFromESQLQuery, getLanguageDisplayName, - cleanupESQLQueryForLensSuggestions, } from './src/es_query'; export { diff --git a/packages/kbn-es-query/src/es_query/es_aggregate_query.test.ts b/packages/kbn-es-query/src/es_query/es_aggregate_query.test.ts index f223d3964be246..59f2de6daa820a 100644 --- a/packages/kbn-es-query/src/es_query/es_aggregate_query.test.ts +++ b/packages/kbn-es-query/src/es_query/es_aggregate_query.test.ts @@ -6,15 +6,7 @@ * Side Public License, v 1. */ -import { - isOfQueryType, - isOfAggregateQueryType, - getAggregateQueryMode, - getIndexPatternFromSQLQuery, - getIndexPatternFromESQLQuery, - getLimitFromESQLQuery, - cleanupESQLQueryForLensSuggestions, -} from './es_aggregate_query'; +import { isOfQueryType, isOfAggregateQueryType, getAggregateQueryMode } from './es_aggregate_query'; describe('sql query helpers', () => { describe('isOfQueryType', () => { @@ -57,105 +49,4 @@ describe('sql query helpers', () => { expect(mode).toBe('esql'); }); }); - - describe('getIndexPatternFromSQLQuery', () => { - it('should return the index pattern string from sql queries', () => { - const idxPattern1 = getIndexPatternFromSQLQuery('SELECT * FROM foo'); - expect(idxPattern1).toBe('foo'); - - const idxPattern2 = getIndexPatternFromSQLQuery('SELECT woof, meow FROM "foo"'); - expect(idxPattern2).toBe('foo'); - - const idxPattern3 = getIndexPatternFromSQLQuery('SELECT woof, meow FROM "the_index_pattern"'); - expect(idxPattern3).toBe('the_index_pattern'); - - const idxPattern4 = getIndexPatternFromSQLQuery('SELECT woof, meow FROM "the-index-pattern"'); - expect(idxPattern4).toBe('the-index-pattern'); - - const idxPattern5 = getIndexPatternFromSQLQuery('SELECT woof, meow from "the-index-pattern"'); - expect(idxPattern5).toBe('the-index-pattern'); - - const idxPattern6 = getIndexPatternFromSQLQuery('SELECT woof, meow from "logstash-*"'); - expect(idxPattern6).toBe('logstash-*'); - - const idxPattern7 = getIndexPatternFromSQLQuery( - 'SELECT woof, meow from logstash-1234! WHERE field > 100' - ); - expect(idxPattern7).toBe('logstash-1234!'); - - const idxPattern8 = getIndexPatternFromSQLQuery( - 'SELECT * FROM (SELECT woof, miaou FROM "logstash-1234!" GROUP BY woof)' - ); - expect(idxPattern8).toBe('logstash-1234!'); - }); - }); - - describe('getIndexPatternFromESQLQuery', () => { - it('should return the index pattern string from esql queries', () => { - const idxPattern1 = getIndexPatternFromESQLQuery('FROM foo'); - expect(idxPattern1).toBe('foo'); - - const idxPattern3 = getIndexPatternFromESQLQuery('from foo | project abc, def'); - expect(idxPattern3).toBe('foo'); - - const idxPattern4 = getIndexPatternFromESQLQuery('from foo | project a | limit 2'); - expect(idxPattern4).toBe('foo'); - - const idxPattern5 = getIndexPatternFromESQLQuery('from foo | limit 2'); - expect(idxPattern5).toBe('foo'); - - const idxPattern6 = getIndexPatternFromESQLQuery('from foo-1,foo-2 | limit 2'); - expect(idxPattern6).toBe('foo-1,foo-2'); - - const idxPattern7 = getIndexPatternFromESQLQuery('from foo-1, foo-2 | limit 2'); - expect(idxPattern7).toBe('foo-1, foo-2'); - - const idxPattern8 = getIndexPatternFromESQLQuery('FROM foo-1, foo-2'); - expect(idxPattern8).toBe('foo-1, foo-2'); - - const idxPattern9 = getIndexPatternFromESQLQuery('FROM foo-1, foo-2 [metadata _id]'); - expect(idxPattern9).toBe('foo-1, foo-2'); - }); - }); - - describe('getLimitFromESQLQuery', () => { - it('should return default limit when ES|QL query is empty', () => { - const limit = getLimitFromESQLQuery(''); - expect(limit).toBe(500); - }); - - it('should return default limit when ES|QL query does not contain LIMIT command', () => { - const limit = getLimitFromESQLQuery('FROM foo'); - expect(limit).toBe(500); - }); - - it('should return default limit when ES|QL query contains invalid LIMIT command', () => { - const limit = getLimitFromESQLQuery('FROM foo | LIMIT iAmNotANumber'); - expect(limit).toBe(500); - }); - - it('should return limit when ES|QL query contains LIMIT command', () => { - const limit = getLimitFromESQLQuery('FROM foo | LIMIT 10000 | KEEP myField'); - expect(limit).toBe(10000); - }); - - it('should return last limit when ES|QL query contains multiple LIMIT command', () => { - const limit = getLimitFromESQLQuery('FROM foo | LIMIT 200 | LIMIT 0'); - expect(limit).toBe(0); - }); - }); - - describe('cleanupESQLQueryForLensSuggestions', () => { - it('should not remove anything if a drop command is not present', () => { - expect(cleanupESQLQueryForLensSuggestions('from a | eval b = 1')).toBe('from a | eval b = 1'); - }); - - it('should remove multiple drop statement if present', () => { - expect( - cleanupESQLQueryForLensSuggestions( - 'from a | drop @timestamp | drop a | drop b | keep c | drop d' - ) - ).toBe('from a | keep c '); - }); - }); }); diff --git a/packages/kbn-es-query/src/es_query/es_aggregate_query.ts b/packages/kbn-es-query/src/es_query/es_aggregate_query.ts index ea39ee4ef749e3..ba3e67be19cee6 100644 --- a/packages/kbn-es-query/src/es_query/es_aggregate_query.ts +++ b/packages/kbn-es-query/src/es_query/es_aggregate_query.ts @@ -10,8 +10,6 @@ import type { Query, AggregateQuery } from '../filters'; type Language = keyof AggregateQuery; -const DEFAULT_ESQL_LIMIT = 500; - // Checks if the query is of type Query export function isOfQueryType(arg?: Query | AggregateQuery): arg is Query { return Boolean(arg && 'query' in arg); @@ -26,6 +24,15 @@ export function isOfAggregateQueryType( return Boolean(query && ('sql' in query || 'esql' in query)); } +/** + * True if the query is of type AggregateQuery and is of type esql, false otherwise. + */ +export function isOfEsqlQueryType( + query?: AggregateQuery | Query | { [key: string]: any } +): query is { esql: string } { + return Boolean(query && 'esql' in query && !('sql' in query)); +} + // returns the language of the aggregate Query, sql, esql etc export function getAggregateQueryMode(query: AggregateQuery): Language { return Object.keys(query)[0] as Language; @@ -35,53 +42,3 @@ export function getLanguageDisplayName(language?: string): string { const displayName = language && language === 'esql' ? 'es|ql' : language ?? 'es|ql'; return displayName.toUpperCase(); } - -// retrieves the index pattern from the aggregate query for SQL -export function getIndexPatternFromSQLQuery(sqlQuery?: string): string { - let sql = sqlQuery?.replaceAll('"', '').replaceAll("'", ''); - const splitFroms = sql?.split(new RegExp(/FROM\s/, 'ig')); - const fromsLength = splitFroms?.length ?? 0; - if (splitFroms && splitFroms?.length > 2) { - sql = `${splitFroms[fromsLength - 2]} FROM ${splitFroms[fromsLength - 1]}`; - } - // case insensitive match for the index pattern - const regex = new RegExp(/FROM\s+([\w*-.!@$^()~;]+)/, 'i'); - const matches = sql?.match(regex); - if (matches) { - return matches[1]; - } - return ''; -} - -// retrieves the index pattern from the aggregate query for ES|QL -export function getIndexPatternFromESQLQuery(esql?: string): string { - const splitFroms = esql?.split(new RegExp(/FROM\s/, 'ig')); - const fromsLength = splitFroms?.length ?? 0; - if (splitFroms && splitFroms?.length > 2) { - esql = `${splitFroms[fromsLength - 2]} FROM ${splitFroms[fromsLength - 1]}`; - } - const parsedString = esql?.replaceAll('`', ''); - // case insensitive match for the index pattern - const regex = new RegExp(/FROM\s+([\w*-.!@$^()~;\s]+)/, 'i'); - const matches = parsedString?.match(regex); - if (matches) { - return matches[1]?.trim(); - } - return ''; -} - -export function getLimitFromESQLQuery(esql: string): number { - const limitCommands = esql.match(new RegExp(/LIMIT\s[0-9]+/, 'ig')); - if (!limitCommands) { - return DEFAULT_ESQL_LIMIT; - } - - const lastIndex = limitCommands.length - 1; - const split = limitCommands[lastIndex].split(' '); - return parseInt(split[1], 10); -} - -export function cleanupESQLQueryForLensSuggestions(esql?: string): string { - const pipes = (esql || '').split('|'); - return pipes.filter((statement) => !/DROP\s/i.test(statement)).join('|'); -} diff --git a/packages/kbn-es-query/src/es_query/index.ts b/packages/kbn-es-query/src/es_query/index.ts index 71e8078b7bfaba..887ad2ea3214f8 100644 --- a/packages/kbn-es-query/src/es_query/index.ts +++ b/packages/kbn-es-query/src/es_query/index.ts @@ -16,12 +16,9 @@ export { decorateQuery } from './decorate_query'; export { isOfQueryType, isOfAggregateQueryType, + isOfEsqlQueryType, getAggregateQueryMode, - getIndexPatternFromSQLQuery, getLanguageDisplayName, - getIndexPatternFromESQLQuery, - getLimitFromESQLQuery, - cleanupESQLQueryForLensSuggestions, } from './es_aggregate_query'; export { fromCombinedFilter } from './from_combined_filter'; export type { diff --git a/packages/kbn-es-types/src/search.ts b/packages/kbn-es-types/src/search.ts index 56e2cb56c8f712..461a32f1498429 100644 --- a/packages/kbn-es-types/src/search.ts +++ b/packages/kbn-es-types/src/search.ts @@ -663,6 +663,10 @@ export type ESQLRow = unknown[]; export interface ESQLSearchReponse { columns: ESQLColumn[]; + // In case of ?drop_null_columns in the query, then + // all_columns will have available and empty fields + // while columns only the available ones (non nulls) + all_columns?: ESQLColumn[]; values: ESQLRow[]; } diff --git a/packages/kbn-es/src/cli.ts b/packages/kbn-es/src/cli.ts index d58a485f45f68a..bbabe52057f017 100644 --- a/packages/kbn-es/src/cli.ts +++ b/packages/kbn-es/src/cli.ts @@ -29,6 +29,12 @@ function help() { ${availableCommands.join('\n ')} + To start a serverless instance use the 'serverless' command with + '--projectType' flag or use the '--serverless=' + shortcut, for example: + + es --serverless=es + Global options: --help @@ -46,7 +52,16 @@ export async function run(defaults = {}) { default: defaults, }); const args = options._; - const commandName = args[0]; + let commandName = args[0]; + + // Converting --serverless flag to command + // `es --serverless=` is just a shortcut for + // `es serverless --projectType=` + if (options.serverless) { + const projectType: string = options.serverless; + commandName = 'serverless'; + args.push('--projectType', projectType); + } if (args.length === 0 || (!commandName && options.help)) { help(); diff --git a/packages/kbn-es/src/cli_commands/serverless.ts b/packages/kbn-es/src/cli_commands/serverless.ts index 0743cf2e7b5b69..dabd6906cebbf3 100644 --- a/packages/kbn-es/src/cli_commands/serverless.ts +++ b/packages/kbn-es/src/cli_commands/serverless.ts @@ -19,8 +19,13 @@ import { ES_SERVERLESS_DEFAULT_IMAGE, DEFAULT_PORT, ServerlessOptions, + isServerlessProjectType, + serverlessProjectTypes, } from '../utils'; import { Command } from './types'; +import { createCliError } from '../errors'; + +const supportedProjectTypesStr = Array.from(serverlessProjectTypes).join(' | ').trim(); export const serverless: Command = { description: 'Run Serverless Elasticsearch through Docker', @@ -29,6 +34,7 @@ export const serverless: Command = { return dedent` Options: + --projectType Serverless project type: ${supportedProjectTypesStr} --tag Image tag of ES serverless to run from ${ES_SERVERLESS_REPO_ELASTICSEARCH} --image Full path of ES serverless image to run, has precedence over tag. [default: ${ES_SERVERLESS_DEFAULT_IMAGE}] --background Start ES serverless without attaching to the first node's logs @@ -54,8 +60,8 @@ export const serverless: Command = { Examples: - es serverless --tag git-fec36430fba2-x86_64 # loads ${ES_SERVERLESS_REPO_ELASTICSEARCH}:git-fec36430fba2-x86_64 - es serverless --image docker.elastic.co/kibana-ci/elasticsearch-serverless:latest-verified + es serverless --projectType es --tag git-fec36430fba2-x86_64 # loads ${ES_SERVERLESS_REPO_ELASTICSEARCH}:git-fec36430fba2-x86_64 + es serverless --projectType oblt --image docker.elastic.co/kibana-ci/elasticsearch-serverless:latest-verified `; }, run: async (defaults = {}) => { @@ -66,20 +72,41 @@ export const serverless: Command = { }); const reportTime = getTimeReporter(log, 'scripts/es serverless'); + // replacing --serverless with --projectType when flag is passed from 'scripts/es' + // `es --serverless=` is just a shortcut for + // `es serverless --projectType=` const argv = process.argv.slice(2); + if (argv[0].startsWith('--serverless')) { + const projectTypeArg = argv[0].replace('--serverless', '--projectType'); + argv[0] = projectTypeArg; + } + const options = getopts(argv, { alias: { basePath: 'base-path', esArgs: 'E', files: 'F', + projectType: 'project-type', }, - string: ['tag', 'image', 'basePath', 'resources', 'host', 'kibanaUrl'], + string: ['projectType', 'tag', 'image', 'basePath', 'resources', 'host', 'kibanaUrl'], boolean: ['clean', 'ssl', 'kill', 'background', 'skipTeardown', 'waitForReady'], default: defaults, }) as unknown as ServerlessOptions; + if (!options.projectType) { + throw createCliError( + `--projectType flag is required and must be a string: ${supportedProjectTypesStr}` + ); + } + + if (!isServerlessProjectType(options.projectType)) { + throw createCliError( + `Invalid projectPype '${options.projectType}', supported values: ${supportedProjectTypesStr}` + ); + } + /* * The nodes will be killed immediately if background = true and skipTeardown = false * because the CLI process exits after starting the nodes. We handle this here instead of diff --git a/packages/kbn-es/src/integration_tests/cluster.test.ts b/packages/kbn-es/src/integration_tests/cluster.test.ts index cf6bba5df669b6..e8246558732c01 100644 --- a/packages/kbn-es/src/integration_tests/cluster.test.ts +++ b/packages/kbn-es/src/integration_tests/cluster.test.ts @@ -723,12 +723,16 @@ describe('#kill()', () => { }); describe('#runServerless()', () => { + const defaultOptions = { + projectType: 'es' as dockerUtils.ServerlessProjectType, + basePath: installPath, + }; test(`rejects if #start() was called before`, async () => { mockEsBin({ start: true }); const cluster = new Cluster({ log }); await cluster.start(installPath, esClusterExecOptions); - await expect(cluster.runServerless({ basePath: installPath })).rejects.toThrowError( + await expect(cluster.runServerless(defaultOptions)).rejects.toThrowError( 'ES stateful cluster has already been started' ); }); @@ -738,7 +742,7 @@ describe('#runServerless()', () => { const cluster = new Cluster({ log }); await cluster.run(installPath, esClusterExecOptions); - await expect(cluster.runServerless({ basePath: installPath })).rejects.toThrowError( + await expect(cluster.runServerless(defaultOptions)).rejects.toThrowError( 'ES stateful cluster has already been started' ); }); @@ -756,7 +760,7 @@ describe('#runServerless()', () => { ); const cluster = new Cluster({ log }); - const promise = cluster.runServerless({ basePath: installPath }); + const promise = cluster.runServerless(defaultOptions); await ensureNoResolve(promise); resolveRunServerlessCluster!(); await expect(ensureResolve(promise, 'runServerless()')).resolves.toEqual(nodeNames); @@ -767,8 +771,8 @@ describe('#runServerless()', () => { runServerlessClusterMock.mockResolvedValueOnce(nodeNames); const cluster = new Cluster({ log }); - await cluster.runServerless({ basePath: installPath }); - await expect(cluster.runServerless({ basePath: installPath })).rejects.toThrowError( + await cluster.runServerless(defaultOptions); + await expect(cluster.runServerless(defaultOptions)).rejects.toThrowError( 'ES serverless docker cluster has already been started' ); }); @@ -776,7 +780,7 @@ describe('#runServerless()', () => { test('rejects if #runServerlessCluster() rejects', async () => { runServerlessClusterMock.mockRejectedValueOnce(new Error('foo')); const cluster = new Cluster({ log }); - await expect(cluster.runServerless({ basePath: installPath })).rejects.toThrowError('foo'); + await expect(cluster.runServerless(defaultOptions)).rejects.toThrowError('foo'); }); test('passes through all options+log to #runServerlessCluster()', async () => { @@ -785,6 +789,7 @@ describe('#runServerless()', () => { const cluster = new Cluster({ log }); const serverlessOptions = { + projectType: 'es' as dockerUtils.ServerlessProjectType, clean: true, basePath: installPath, teardown: true, diff --git a/packages/kbn-es/src/utils/docker.test.ts b/packages/kbn-es/src/utils/docker.test.ts index 31121d90ff639f..33b02d7df0d8ea 100644 --- a/packages/kbn-es/src/utils/docker.test.ts +++ b/packages/kbn-es/src/utils/docker.test.ts @@ -29,6 +29,7 @@ import { verifyDockerInstalled, getESp12Volume, ServerlessOptions, + ServerlessProjectType, } from './docker'; import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log'; import { CA_CERT_PATH, ES_P12_PATH } from '@kbn/dev-utils'; @@ -66,6 +67,7 @@ const logWriter = new ToolingLogCollectingWriter(); log.setWriters([logWriter]); const KIBANA_ROOT = process.cwd(); +const projectType: ServerlessProjectType = 'es'; const baseEsPath = `${KIBANA_ROOT}/.es`; const serverlessDir = 'stateless'; const serverlessObjectStorePath = `${baseEsPath}/${serverlessDir}`; @@ -504,7 +506,10 @@ describe('setupServerlessVolumes()', () => { [baseEsPath]: {}, }); - const volumeCmd = await setupServerlessVolumes(log, { basePath: baseEsPath }); + const volumeCmd = await setupServerlessVolumes(log, { + projectType, + basePath: baseEsPath, + }); volumeCmdTest(volumeCmd); await expect(Fsp.access(serverlessObjectStorePath)).resolves.not.toThrow(); @@ -513,7 +518,7 @@ describe('setupServerlessVolumes()', () => { test('should use an existing object store', async () => { mockFs(existingObjectStore); - const volumeCmd = await setupServerlessVolumes(log, { basePath: baseEsPath }); + const volumeCmd = await setupServerlessVolumes(log, { projectType, basePath: baseEsPath }); volumeCmdTest(volumeCmd); await expect( @@ -524,7 +529,11 @@ describe('setupServerlessVolumes()', () => { test('should remove an existing object store when clean is passed', async () => { mockFs(existingObjectStore); - const volumeCmd = await setupServerlessVolumes(log, { basePath: baseEsPath, clean: true }); + const volumeCmd = await setupServerlessVolumes(log, { + projectType, + basePath: baseEsPath, + clean: true, + }); volumeCmdTest(volumeCmd); await expect( @@ -537,6 +546,7 @@ describe('setupServerlessVolumes()', () => { createMockIdpMetadataMock.mockResolvedValue(''); const volumeCmd = await setupServerlessVolumes(log, { + projectType, basePath: baseEsPath, ssl: true, kibanaUrl: 'https://localhost:5603/', @@ -561,6 +571,7 @@ describe('setupServerlessVolumes()', () => { test('should use resource overrides', async () => { mockFs(existingObjectStore); const volumeCmd = await setupServerlessVolumes(log, { + projectType, basePath: baseEsPath, resources: ['./relative/path/users', '/absolute/path/users_roles'], }); @@ -578,6 +589,7 @@ describe('setupServerlessVolumes()', () => { await expect(async () => { await setupServerlessVolumes(log, { + projectType, basePath: baseEsPath, resources: ['/absolute/path/invalid'], }); @@ -626,7 +638,7 @@ describe('runServerlessCluster()', () => { }); execa.mockImplementation(() => Promise.resolve({ stdout: '' })); - await runServerlessCluster(log, { basePath: baseEsPath }); + await runServerlessCluster(log, { projectType, basePath: baseEsPath }); // setupDocker execa calls then run three nodes and attach logger expect(execa.mock.calls).toHaveLength(8); @@ -639,7 +651,7 @@ describe('runServerlessCluster()', () => { }); execa.mockImplementation(() => Promise.resolve({ stdout: '' })); - await runServerlessCluster(log, { basePath: baseEsPath, waitForReady: true }); + await runServerlessCluster(log, { projectType, basePath: baseEsPath, waitForReady: true }); expect(waitUntilClusterReadyMock).toHaveBeenCalledTimes(1); expect(waitUntilClusterReadyMock.mock.calls[0][0].expectedStatus).toEqual('green'); expect(waitUntilClusterReadyMock.mock.calls[0][0].readyTimeout).toEqual(undefined); @@ -655,6 +667,7 @@ describe('runServerlessCluster()', () => { createMockIdpMetadataMock.mockResolvedValue(''); await runServerlessCluster(log, { + projectType, basePath: baseEsPath, waitForReady: true, ssl: true, @@ -672,7 +685,7 @@ describe('runServerlessCluster()', () => { }); execa.mockImplementation(() => Promise.resolve({ stdout: '' })); - await runServerlessCluster(log, { basePath: baseEsPath, waitForReady: true }); + await runServerlessCluster(log, { projectType, basePath: baseEsPath, waitForReady: true }); expect(waitForSecurityIndexMock).toHaveBeenCalledTimes(1); expect(waitForSecurityIndexMock.mock.calls[0][0].readyTimeout).toEqual(undefined); }); @@ -685,6 +698,7 @@ describe('runServerlessCluster()', () => { execa.mockImplementation(() => Promise.resolve({ stdout: '' })); await runServerlessCluster(log, { + projectType, basePath: baseEsPath, waitForReady: true, esArgs: ['xpack.security.enabled=false'], @@ -708,7 +722,7 @@ describe('stopServerlessCluster()', () => { }); describe('teardownServerlessClusterSync()', () => { - const defaultOptions = { basePath: 'foo/bar' }; + const defaultOptions = { projectType, basePath: 'foo/bar' }; test('should kill running serverless nodes', () => { const nodes = ['es01', 'es02', 'es03']; diff --git a/packages/kbn-es/src/utils/docker.ts b/packages/kbn-es/src/utils/docker.ts index 4f9538528f4d27..c263ac686fc842 100644 --- a/packages/kbn-es/src/utils/docker.ts +++ b/packages/kbn-es/src/utils/docker.ts @@ -59,8 +59,8 @@ interface BaseOptions extends ImageOptions { files?: string | string[]; } -const serverlessProjectTypes = new Set(['es', 'oblt', 'security']); -const isServerlessProjectType = (value: string): value is ServerlessProjectType => { +export const serverlessProjectTypes = new Set(['es', 'oblt', 'security']); +export const isServerlessProjectType = (value: string): value is ServerlessProjectType => { return serverlessProjectTypes.has(value); }; @@ -74,7 +74,7 @@ export interface ServerlessOptions extends EsClusterExecOptions, BaseOptions { /** Publish ES docker container on additional host IP */ host?: string; /** Serverless project type */ - projectType?: ServerlessProjectType; + projectType: ServerlessProjectType; /** Clean (or delete) all data created by the ES cluster after it is stopped */ clean?: boolean; /** Path to the directory where the ES cluster will store data */ @@ -599,16 +599,8 @@ export async function setupServerlessVolumes(log: ToolingLog, options: Serverles }, {} as Record) : {}; - // Check if projectType is valid - if (projectType && !isServerlessProjectType(projectType)) { - throw new Error( - `Incorrect serverless project type: ${projectType}, use one of ${Array.from( - serverlessProjectTypes - ).join(', ')}` - ); - } - // Read roles for the specified projectType, 'es' if it is not defined - const rolesResourcePath = resolve(SERVERLESS_ROLES_ROOT_PATH, projectType ?? 'es', 'roles.yml'); + // Read roles for the specified projectType + const rolesResourcePath = resolve(SERVERLESS_ROLES_ROOT_PATH, projectType, 'roles.yml'); const resourcesPaths = [...SERVERLESS_RESOURCES_PATHS, rolesResourcePath]; diff --git a/packages/kbn-esql-utils/README.md b/packages/kbn-esql-utils/README.md index 694c90b3416bd5..b1cbf685d66b80 100644 --- a/packages/kbn-esql-utils/README.md +++ b/packages/kbn-esql-utils/README.md @@ -2,3 +2,8 @@ This package contains utilities for ES|QL. +- *getESQLAdHocDataview*: Use this function to get correctly an adHoc dataview for your query. +- *getIndexPatternFromESQLQuery*: Use this to retrieve the index pattern from the `from` command. +- *getLimitFromESQLQuery*: Use this function to get the limit for a given query. The limit can be either set from the `limit` command or can be a default value set in ES. +- *removeDropCommandsFromESQLQuery*: Use this function to remove all the occurences of the `drop` command from the query. + diff --git a/packages/kbn-esql-utils/index.ts b/packages/kbn-esql-utils/index.ts index e478dbbf32d95b..d9b57701801b7f 100644 --- a/packages/kbn-esql-utils/index.ts +++ b/packages/kbn-esql-utils/index.ts @@ -6,4 +6,11 @@ * Side Public License, v 1. */ -export { getESQLAdHocDataview } from './src'; +export { + getESQLAdHocDataview, + getIndexPatternFromSQLQuery, + getIndexPatternFromESQLQuery, + getLimitFromESQLQuery, + removeDropCommandsFromESQLQuery, + getIndexForESQLQuery, +} from './src'; diff --git a/packages/kbn-esql-utils/src/index.ts b/packages/kbn-esql-utils/src/index.ts index a50ff5c59e7986..33f35c213c7397 100644 --- a/packages/kbn-esql-utils/src/index.ts +++ b/packages/kbn-esql-utils/src/index.ts @@ -6,4 +6,10 @@ * Side Public License, v 1. */ -export * from './utils'; +export { getESQLAdHocDataview, getIndexForESQLQuery } from './utils/get_esql_adhoc_dataview'; +export { + getIndexPatternFromSQLQuery, + getIndexPatternFromESQLQuery, + getLimitFromESQLQuery, + removeDropCommandsFromESQLQuery, +} from './utils/query_parsing_helpers'; diff --git a/packages/kbn-esql-utils/src/utils/index.ts b/packages/kbn-esql-utils/src/utils/get_esql_adhoc_dataview.ts similarity index 60% rename from packages/kbn-esql-utils/src/utils/index.ts rename to packages/kbn-esql-utils/src/utils/get_esql_adhoc_dataview.ts index 7ac96e272fcf7a..a1866526742cc1 100644 --- a/packages/kbn-esql-utils/src/utils/index.ts +++ b/packages/kbn-esql-utils/src/utils/get_esql_adhoc_dataview.ts @@ -25,7 +25,7 @@ async function sha256(str: string) { // This is a helper to create one. The id is constructed from the indexpattern. // As there are no runtime fields or field formatters or default time fields // the same adhoc dataview can be constructed/used. This comes with great advantages such -// as solving the problem descibed here https://github.com/elastic/kibana/issues/168131 +// as solving the problem described here https://github.com/elastic/kibana/issues/168131 export async function getESQLAdHocDataview( indexPattern: string, dataViewsService: DataViewsPublicPluginStart @@ -35,3 +35,31 @@ export async function getESQLAdHocDataview( id: await sha256(`esql-${indexPattern}`), }); } + +/** + * This can be used to get an initial index for a default ES|QL query. + * Could be used during onboarding when data views to get a better index are not yet available. + * Can be used in combination with {@link getESQLAdHocDataview} to create a dataview for the index. + */ +export async function getIndexForESQLQuery(deps: { + dataViews: { getIndices: DataViewsPublicPluginStart['getIndices'] }; +}): Promise { + const indices = ( + await deps.dataViews.getIndices({ + showAllIndices: false, + pattern: '*', + isRollupIndex: () => false, + }) + ) + .filter((index) => !index.name.startsWith('.')) + .map((index) => index.name); + + let indexName = indices[0]; + if (indices.length > 0) { + if (indices.find((index) => index.startsWith('logs'))) { + indexName = 'logs*'; + } + } + + return indexName ?? null; +} diff --git a/packages/kbn-esql-utils/src/utils/query_parsing_helpers.test.ts b/packages/kbn-esql-utils/src/utils/query_parsing_helpers.test.ts new file mode 100644 index 00000000000000..8390e059b4db8a --- /dev/null +++ b/packages/kbn-esql-utils/src/utils/query_parsing_helpers.test.ts @@ -0,0 +1,117 @@ +/* + * Copyright 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 { + getIndexPatternFromSQLQuery, + getIndexPatternFromESQLQuery, + getLimitFromESQLQuery, + removeDropCommandsFromESQLQuery, +} from './query_parsing_helpers'; + +describe('sql/esql query helpers', () => { + describe('getIndexPatternFromSQLQuery', () => { + it('should return the index pattern string from sql queries', () => { + const idxPattern1 = getIndexPatternFromSQLQuery('SELECT * FROM foo'); + expect(idxPattern1).toBe('foo'); + + const idxPattern2 = getIndexPatternFromSQLQuery('SELECT woof, meow FROM "foo"'); + expect(idxPattern2).toBe('foo'); + + const idxPattern3 = getIndexPatternFromSQLQuery('SELECT woof, meow FROM "the_index_pattern"'); + expect(idxPattern3).toBe('the_index_pattern'); + + const idxPattern4 = getIndexPatternFromSQLQuery('SELECT woof, meow FROM "the-index-pattern"'); + expect(idxPattern4).toBe('the-index-pattern'); + + const idxPattern5 = getIndexPatternFromSQLQuery('SELECT woof, meow from "the-index-pattern"'); + expect(idxPattern5).toBe('the-index-pattern'); + + const idxPattern6 = getIndexPatternFromSQLQuery('SELECT woof, meow from "logstash-*"'); + expect(idxPattern6).toBe('logstash-*'); + + const idxPattern7 = getIndexPatternFromSQLQuery( + 'SELECT woof, meow from logstash-1234! WHERE field > 100' + ); + expect(idxPattern7).toBe('logstash-1234!'); + + const idxPattern8 = getIndexPatternFromSQLQuery( + 'SELECT * FROM (SELECT woof, miaou FROM "logstash-1234!" GROUP BY woof)' + ); + expect(idxPattern8).toBe('logstash-1234!'); + }); + }); + + describe('getIndexPatternFromESQLQuery', () => { + it('should return the index pattern string from esql queries', () => { + const idxPattern1 = getIndexPatternFromESQLQuery('FROM foo'); + expect(idxPattern1).toBe('foo'); + + const idxPattern3 = getIndexPatternFromESQLQuery('from foo | project abc, def'); + expect(idxPattern3).toBe('foo'); + + const idxPattern4 = getIndexPatternFromESQLQuery('from foo | project a | limit 2'); + expect(idxPattern4).toBe('foo'); + + const idxPattern5 = getIndexPatternFromESQLQuery('from foo | limit 2'); + expect(idxPattern5).toBe('foo'); + + const idxPattern6 = getIndexPatternFromESQLQuery('from foo-1,foo-2 | limit 2'); + expect(idxPattern6).toBe('foo-1,foo-2'); + + const idxPattern7 = getIndexPatternFromESQLQuery('from foo-1, foo-2 | limit 2'); + expect(idxPattern7).toBe('foo-1, foo-2'); + + const idxPattern8 = getIndexPatternFromESQLQuery('FROM foo-1, foo-2'); + expect(idxPattern8).toBe('foo-1, foo-2'); + + const idxPattern9 = getIndexPatternFromESQLQuery('FROM foo-1, foo-2 [metadata _id]'); + expect(idxPattern9).toBe('foo-1, foo-2'); + }); + }); + + describe('getLimitFromESQLQuery', () => { + it('should return default limit when ES|QL query is empty', () => { + const limit = getLimitFromESQLQuery(''); + expect(limit).toBe(500); + }); + + it('should return default limit when ES|QL query does not contain LIMIT command', () => { + const limit = getLimitFromESQLQuery('FROM foo'); + expect(limit).toBe(500); + }); + + it('should return default limit when ES|QL query contains invalid LIMIT command', () => { + const limit = getLimitFromESQLQuery('FROM foo | LIMIT iAmNotANumber'); + expect(limit).toBe(500); + }); + + it('should return limit when ES|QL query contains LIMIT command', () => { + const limit = getLimitFromESQLQuery('FROM foo | LIMIT 10000 | KEEP myField'); + expect(limit).toBe(10000); + }); + + it('should return last limit when ES|QL query contains multiple LIMIT command', () => { + const limit = getLimitFromESQLQuery('FROM foo | LIMIT 200 | LIMIT 0'); + expect(limit).toBe(0); + }); + }); + + describe('removeDropCommandsFromESQLQuery', () => { + it('should not remove anything if a drop command is not present', () => { + expect(removeDropCommandsFromESQLQuery('from a | eval b = 1')).toBe('from a | eval b = 1'); + }); + + it('should remove multiple drop statement if present', () => { + expect( + removeDropCommandsFromESQLQuery( + 'from a | drop @timestamp | drop a | drop b | keep c | drop d' + ) + ).toBe('from a | keep c '); + }); + }); +}); diff --git a/packages/kbn-esql-utils/src/utils/query_parsing_helpers.ts b/packages/kbn-esql-utils/src/utils/query_parsing_helpers.ts new file mode 100644 index 00000000000000..93e7ddbb6ffe97 --- /dev/null +++ b/packages/kbn-esql-utils/src/utils/query_parsing_helpers.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +const DEFAULT_ESQL_LIMIT = 500; + +// retrieves the index pattern from the aggregate query for SQL +export function getIndexPatternFromSQLQuery(sqlQuery?: string): string { + let sql = sqlQuery?.replaceAll('"', '').replaceAll("'", ''); + const splitFroms = sql?.split(new RegExp(/FROM\s/, 'ig')); + const fromsLength = splitFroms?.length ?? 0; + if (splitFroms && splitFroms?.length > 2) { + sql = `${splitFroms[fromsLength - 2]} FROM ${splitFroms[fromsLength - 1]}`; + } + // case insensitive match for the index pattern + const regex = new RegExp(/FROM\s+([\w*-.!@$^()~;]+)/, 'i'); + const matches = sql?.match(regex); + if (matches) { + return matches[1]; + } + return ''; +} + +// retrieves the index pattern from the aggregate query for ES|QL +export function getIndexPatternFromESQLQuery(esql?: string): string { + const splitFroms = esql?.split(new RegExp(/FROM\s/, 'ig')); + const fromsLength = splitFroms?.length ?? 0; + if (splitFroms && splitFroms?.length > 2) { + esql = `${splitFroms[fromsLength - 2]} FROM ${splitFroms[fromsLength - 1]}`; + } + const parsedString = esql?.replaceAll('`', ''); + // case insensitive match for the index pattern + const regex = new RegExp(/FROM\s+([\w*-.!@$^()~;\s]+)/, 'i'); + const matches = parsedString?.match(regex); + if (matches) { + return matches[1]?.trim(); + } + return ''; +} + +export function getLimitFromESQLQuery(esql: string): number { + const limitCommands = esql.match(new RegExp(/LIMIT\s[0-9]+/, 'ig')); + if (!limitCommands) { + return DEFAULT_ESQL_LIMIT; + } + + const lastIndex = limitCommands.length - 1; + const split = limitCommands[lastIndex].split(' '); + return parseInt(split[1], 10); +} + +export function removeDropCommandsFromESQLQuery(esql?: string): string { + const pipes = (esql || '').split('|'); + return pipes.filter((statement) => !/DROP\s/i.test(statement)).join('|'); +} diff --git a/packages/kbn-expandable-flyout/README.md b/packages/kbn-expandable-flyout/README.md index 0f07b0679c94ad..ceac69e20722f9 100644 --- a/packages/kbn-expandable-flyout/README.md +++ b/packages/kbn-expandable-flyout/README.md @@ -27,7 +27,11 @@ The expandable-flyout is making some strict UI design decisions: 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 [hooks](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/context.tsx) expose the state and the following api: +To retrieve the flyout's layout (left, right and preview panels), you can utilize [useExpandableFlyoutState](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts). + +To control (or mutate) flyout's layout, you can utilize [useExpandableFlyoutApi](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts). + +**Expandable Flyout API** exposes the following methods: - **openFlyout**: open the flyout with a set of panels - **openRightPanel**: open a right panel - **openLeftPanel**: open a left panel @@ -38,10 +42,6 @@ The ExpandableFlyout [hooks](https://github.com/elastic/kibana/blob/main/package - **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 **useExpandableFlyoutState** from the same [React context](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/context.tsx). - -To control (or mutate) flyout's layout, you can use the **useExpandableFlyoutApi** 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](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/context.tsx) at a high enough level as follows: diff --git a/packages/kbn-expandable-flyout/index.ts b/packages/kbn-expandable-flyout/index.ts index 90849391fe4a67..d4299d676667f9 100644 --- a/packages/kbn-expandable-flyout/index.ts +++ b/packages/kbn-expandable-flyout/index.ts @@ -8,11 +8,8 @@ export { ExpandableFlyout } from './src'; -export { - type ExpandableFlyoutContext, - useExpandableFlyoutState, - useExpandableFlyoutApi, -} from './src/context'; +export { useExpandableFlyoutApi } from './src/hooks/use_expandable_flyout_api'; +export { useExpandableFlyoutState } from './src/hooks/use_expandable_flyout_state'; export { type State as ExpandableFlyoutState } from './src/state'; diff --git a/packages/kbn-expandable-flyout/kibana.jsonc b/packages/kbn-expandable-flyout/kibana.jsonc index b4f63cca6bf918..ae15fc604a1d8c 100644 --- a/packages/kbn-expandable-flyout/kibana.jsonc +++ b/packages/kbn-expandable-flyout/kibana.jsonc @@ -1,5 +1,5 @@ { - "type": "shared-common", + "type": "shared-browser", "id": "@kbn/expandable-flyout", "owner": "@elastic/security-threat-hunting-investigations" } diff --git a/packages/kbn-expandable-flyout/src/actions.ts b/packages/kbn-expandable-flyout/src/actions.ts index ce3dd7e208b4c3..56b6317032bc6d 100644 --- a/packages/kbn-expandable-flyout/src/actions.ts +++ b/packages/kbn-expandable-flyout/src/actions.ts @@ -19,6 +19,7 @@ export enum ActionType { closePreviewPanel = 'close_preview_panel', previousPreviewPanel = 'previous_preview_panel', closeFlyout = 'close_flyout', + urlChanged = 'urlChanged', } export const openPanelsAction = createAction<{ @@ -37,3 +38,9 @@ export const closeLeftPanelAction = createAction(ActionType.closeLeftPanel); export const closePreviewPanelAction = createAction(ActionType.closePreviewPanel); export const previousPreviewPanelAction = createAction(ActionType.previousPreviewPanel); + +export const urlChangedAction = createAction<{ + right?: FlyoutPanelProps; + left?: FlyoutPanelProps; + preview?: FlyoutPanelProps; +}>(ActionType.urlChanged); 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 d3bd510266084a..223d73fa5cf432 100644 --- a/packages/kbn-expandable-flyout/src/components/preview_section.test.tsx +++ b/packages/kbn-expandable-flyout/src/components/preview_section.test.tsx @@ -14,21 +14,19 @@ import { PREVIEW_SECTION_CLOSE_BUTTON_TEST_ID, PREVIEW_SECTION_TEST_ID, } from './test_ids'; -import { ExpandableFlyoutContextValue } from '../context'; import { TestProvider } from '../test/provider'; +import { State } from '../state'; describe('PreviewSection', () => { const context = { - panels: { - right: {}, - left: {}, - preview: [ - { - id: 'key', - }, - ], - }, - } as unknown as ExpandableFlyoutContextValue; + right: {}, + left: {}, + preview: [ + { + id: 'key', + }, + ], + } as unknown as State; const component =
{'component'}
; const left = 500; @@ -37,7 +35,7 @@ describe('PreviewSection', () => { const showBackButton = false; const { getByTestId } = render( - + ); @@ -49,7 +47,7 @@ describe('PreviewSection', () => { const showBackButton = true; const { getByTestId } = render( - + ); @@ -67,7 +65,7 @@ describe('PreviewSection', () => { }; const { getByTestId, getByText } = render( - + ( - undefined -); - -/** - * Retrieve Flyout's api and state - * @deprecated - */ -export const useExpandableFlyoutContext = (): ExpandableFlyoutApi => { - const contextValue = useContext(ExpandableFlyoutContext); - - if (!contextValue) { - throw new Error( - 'ExpandableFlyoutContext can only be used within ExpandableFlyoutContext provider' - ); - } - - const memoryState = useFlyoutMemoryState(); - const urlState = useFlyoutUrlState(); - - return contextValue === 'memory' ? memoryState : urlState; -}; - -/** - * This hook allows you to interact with the flyout, open panels and previews etc. - */ -export const useExpandableFlyoutApi = () => { - const { panels, ...api } = useExpandableFlyoutContext(); - - return api; -}; - -/** - * This hook allows you to access the flyout state, read open panels and previews. - */ -export const useExpandableFlyoutState = () => { - const expandableFlyoutApiAndState = useExpandableFlyoutContext(); - - return expandableFlyoutApiAndState.panels; -}; diff --git a/packages/kbn-expandable-flyout/src/context/url_state_provider.tsx b/packages/kbn-expandable-flyout/src/context/url_state_provider.tsx deleted file mode 100644 index c26525cf0e5946..00000000000000 --- a/packages/kbn-expandable-flyout/src/context/url_state_provider.tsx +++ /dev/null @@ -1,109 +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 { useCallback, useMemo } from 'react'; -import { FlyoutPanelProps, ExpandableFlyoutApi } from '../types'; -import { useRightPanel } from '../hooks/use_right_panel'; -import { useLeftPanel } from '../hooks/use_left_panel'; -import { usePreviewPanel } from '../hooks/use_preview_panel'; -import { State } from '../state'; - -export const useFlyoutUrlState = (): ExpandableFlyoutApi => { - const { setRightPanelState, rightPanelState } = useRightPanel(); - const { setLeftPanelState, leftPanelState } = useLeftPanel(); - const { previewState, setPreviewState } = usePreviewPanel(); - - const panels: State = useMemo( - () => ({ - left: leftPanelState, - right: rightPanelState, - preview: previewState || [], - }), - [leftPanelState, previewState, rightPanelState] - ); - - const openPanels = useCallback( - ({ - right, - left, - preview, - }: { - right?: FlyoutPanelProps; - left?: FlyoutPanelProps; - preview?: FlyoutPanelProps; - }) => { - setRightPanelState(right); - setLeftPanelState(left); - setPreviewState(preview ? [preview] : []); - }, - [setRightPanelState, setLeftPanelState, setPreviewState] - ); - - const openRightPanel = useCallback( - (panel: FlyoutPanelProps) => { - setRightPanelState(panel); - }, - [setRightPanelState] - ); - - const openLeftPanel = useCallback( - (panel: FlyoutPanelProps) => setLeftPanelState(panel), - [setLeftPanelState] - ); - - const openPreviewPanel = useCallback( - (panel: FlyoutPanelProps) => setPreviewState([...(previewState ?? []), panel]), - [previewState, setPreviewState] - ); - - const closeRightPanel = useCallback(() => setRightPanelState(undefined), [setRightPanelState]); - - const closeLeftPanel = useCallback(() => setLeftPanelState(undefined), [setLeftPanelState]); - - const closePreviewPanel = useCallback(() => setPreviewState([]), [setPreviewState]); - - const previousPreviewPanel = useCallback( - () => setPreviewState(previewState?.slice(0, previewState.length - 1)), - [previewState, setPreviewState] - ); - - const closePanels = useCallback(() => { - setRightPanelState(undefined); - setLeftPanelState(undefined); - setPreviewState([]); - }, [setRightPanelState, setLeftPanelState, setPreviewState]); - - const contextValue: ExpandableFlyoutApi = useMemo( - () => ({ - panels, - openFlyout: openPanels, - openRightPanel, - openLeftPanel, - openPreviewPanel, - closeRightPanel, - closeLeftPanel, - closePreviewPanel, - closeFlyout: closePanels, - previousPreviewPanel, - }), - [ - panels, - openPanels, - openRightPanel, - openLeftPanel, - openPreviewPanel, - closeRightPanel, - closeLeftPanel, - closePreviewPanel, - closePanels, - previousPreviewPanel, - ] - ); - - return contextValue; -}; diff --git a/packages/kbn-expandable-flyout/src/context/memory_state_provider.tsx b/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts similarity index 66% rename from packages/kbn-expandable-flyout/src/context/memory_state_provider.tsx rename to packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts index a4981c5a2122b6..9f42870a31c0ff 100644 --- a/packages/kbn-expandable-flyout/src/context/memory_state_provider.tsx +++ b/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts @@ -6,18 +6,7 @@ * Side Public License, v 1. */ -import React, { createContext, FC, useCallback, useMemo } from 'react'; -import { - createDispatchHook, - createSelectorHook, - Provider as ReduxProvider, - ReactReduxContextValue, -} from 'react-redux'; -import { configureStore } from '@reduxjs/toolkit'; - -import { reducer } from '../reducer'; -import { initialState, State } from '../state'; -import type { ExpandableFlyoutApi, FlyoutPanelProps } from '../types'; +import { useCallback, useMemo } from 'react'; import { closeLeftPanelAction, closePanelsAction, @@ -29,24 +18,15 @@ import { openRightPanelAction, previousPreviewPanelAction, } from '../actions'; +import { useDispatch } from '../redux'; +import { FlyoutPanelProps, type ExpandableFlyoutApi } from '../types'; -export const store = configureStore({ - reducer, - devTools: process.env.NODE_ENV !== 'production', - preloadedState: {}, - enhancers: [], -}); - -export const Context = createContext>({ - store, - storeState: initialState, -}); +export type { ExpandableFlyoutApi }; -const useDispatch = createDispatchHook(Context); -const useSelector = createSelectorHook(Context); - -export const useFlyoutMemoryState = (): ExpandableFlyoutApi => { - const state = useSelector((s) => s); +/** + * This hook allows you to interact with the flyout, open panels and previews etc. + */ +export const useExpandableFlyoutApi = () => { const dispatch = useDispatch(); const openPanels = useCallback( @@ -94,7 +74,6 @@ export const useFlyoutMemoryState = (): ExpandableFlyoutApi => { const api: ExpandableFlyoutApi = useMemo( () => ({ - panels: state, openFlyout: openPanels, openRightPanel, openLeftPanel, @@ -106,7 +85,6 @@ export const useFlyoutMemoryState = (): ExpandableFlyoutApi => { previousPreviewPanel, }), [ - state, openPanels, openRightPanel, openLeftPanel, @@ -121,15 +99,3 @@ export const useFlyoutMemoryState = (): ExpandableFlyoutApi => { return api; }; - -/** - * In-memory state provider for the expandable flyout, for cases when we don't want changes to be persisted - * in the url. - */ -export const MemoryStateProvider: FC = ({ children }) => { - return ( - - {children} - - ); -}; diff --git a/src/plugins/content_management/server/utils.ts b/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts similarity index 57% rename from src/plugins/content_management/server/utils.ts rename to packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts index cd001f77350a26..3ae9d69c4d0bc6 100644 --- a/src/plugins/content_management/server/utils.ts +++ b/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts @@ -6,13 +6,11 @@ * Side Public License, v 1. */ -import { Type, ValidationError } from '@kbn/config-schema'; +import { stateSelector, useSelector } from '../redux'; -export const validate = (input: unknown, schema: Type): ValidationError | null => { - try { - schema.validate(input); - return null; - } catch (e: any) { - return e as ValidationError; - } +/** + * This hook allows you to access the flyout state, read open panels and previews. + */ +export const useExpandableFlyoutState = () => { + return useSelector(stateSelector); }; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_left_panel.ts b/packages/kbn-expandable-flyout/src/hooks/use_left_panel.ts deleted file mode 100644 index 2a3e4212a06fe4..00000000000000 --- a/packages/kbn-expandable-flyout/src/hooks/use_left_panel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { useUrlState } from '@kbn/url-state'; -import { EXPANDABLE_FLYOUT_URL_KEY } from '../constants'; -import { FlyoutPanelProps } from '../types'; - -/** - * This hook stores state in the URL - */ -export const useLeftPanel = () => { - const [leftPanelState, setLeftPanelState] = useUrlState( - EXPANDABLE_FLYOUT_URL_KEY, - 'leftPanel' - ); - - return { leftPanelState, setLeftPanelState } as const; -}; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_preview_panel.ts b/packages/kbn-expandable-flyout/src/hooks/use_preview_panel.ts deleted file mode 100644 index 5e9cfddb93ba4b..00000000000000 --- a/packages/kbn-expandable-flyout/src/hooks/use_preview_panel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { useUrlState } from '@kbn/url-state'; -import { EXPANDABLE_FLYOUT_URL_KEY } from '../constants'; -import { FlyoutPanelProps } from '../types'; - -/** - * This hook stores state in the URL - */ -export const usePreviewPanel = () => { - const [previewState, setPreviewState] = useUrlState( - EXPANDABLE_FLYOUT_URL_KEY, - 'preview' - ); - - return { previewState, setPreviewState } as const; -}; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_right_panel.ts b/packages/kbn-expandable-flyout/src/hooks/use_right_panel.ts deleted file mode 100644 index 2bce75d65f23e0..00000000000000 --- a/packages/kbn-expandable-flyout/src/hooks/use_right_panel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { useUrlState } from '@kbn/url-state'; -import { EXPANDABLE_FLYOUT_URL_KEY } from '../constants'; -import { FlyoutPanelProps } from '../types'; - -/** - * This hook stores state in the URL - */ -export const useRightPanel = () => { - const [rightPanelState, setRightPanelState] = useUrlState( - EXPANDABLE_FLYOUT_URL_KEY, - 'rightPanel' - ); - - return { rightPanelState, setRightPanelState } as const; -}; diff --git a/packages/kbn-expandable-flyout/src/index.stories.tsx b/packages/kbn-expandable-flyout/src/index.stories.tsx index 8c6bacb20adf69..e02e3de8b791ae 100644 --- a/packages/kbn-expandable-flyout/src/index.stories.tsx +++ b/packages/kbn-expandable-flyout/src/index.stories.tsx @@ -19,8 +19,8 @@ import { EuiTitle, } from '@elastic/eui'; import { ExpandableFlyout } from '.'; -import { ExpandableFlyoutContextValue } from './context'; import { TestProvider } from './test/provider'; +import { State } from './state'; export default { component: ExpandableFlyout, @@ -101,89 +101,81 @@ const registeredPanels = [ ]; export const Right: Story = () => { - const context = { - panels: { - right: { - id: 'right', - }, - left: {}, - preview: [], + const state = { + right: { + id: 'right', }, - } as unknown as ExpandableFlyoutContextValue; + left: {}, + preview: [], + } as unknown as State; return ( - + ); }; export const Left: Story = () => { - const context = { - panels: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: [], + const state = { + right: { + id: 'right', }, - } as unknown as ExpandableFlyoutContextValue; + left: { + id: 'left', + }, + preview: [], + } as unknown as State; return ( - + ); }; export const Preview: Story = () => { - const context = { - panels: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: [ - { - id: 'preview1', - }, - ], + const state = { + right: { + id: 'right', }, - } as unknown as ExpandableFlyoutContextValue; + left: { + id: 'left', + }, + preview: [ + { + id: 'preview1', + }, + ], + } as unknown as State; return ( - + ); }; export const MultiplePreviews: Story = () => { - const context = { - panels: { - right: { - id: 'right', + const state = { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: [ + { + id: 'preview1', }, - left: { - id: 'left', + { + id: 'preview2', }, - preview: [ - { - id: 'preview1', - }, - { - id: 'preview2', - }, - ], - }, - } as unknown as ExpandableFlyoutContextValue; + ], + } as unknown as State; return ( - + ); diff --git a/packages/kbn-expandable-flyout/src/index.test.tsx b/packages/kbn-expandable-flyout/src/index.test.tsx index a2265adfa5eead..0b8b62ce7187a4 100644 --- a/packages/kbn-expandable-flyout/src/index.test.tsx +++ b/packages/kbn-expandable-flyout/src/index.test.tsx @@ -18,7 +18,6 @@ import { } from './components/test_ids'; import { type State } from './state'; import { TestProvider } from './test/provider'; -jest.mock('./context/url_state_provider'); const registeredPanels: Panel[] = [ { diff --git a/packages/kbn-expandable-flyout/src/index.tsx b/packages/kbn-expandable-flyout/src/index.tsx index e7f6c3fcafb233..28dd6a92ff9524 100644 --- a/packages/kbn-expandable-flyout/src/index.tsx +++ b/packages/kbn-expandable-flyout/src/index.tsx @@ -11,7 +11,8 @@ import { EuiFlyoutProps } from '@elastic/eui'; import { EuiFlexGroup, EuiFlyout } from '@elastic/eui'; import { useSectionSizes } from './hooks/use_sections_sizes'; import { useWindowSize } from './hooks/use_window_size'; -import { useExpandableFlyoutContext } from './context'; +import { useExpandableFlyoutState } from './hooks/use_expandable_flyout_state'; +import { useExpandableFlyoutApi } from './hooks/use_expandable_flyout_api'; import { PreviewSection } from './components/preview_section'; import { RightSection } from './components/right_section'; import type { FlyoutPanelProps, Panel } from './types'; @@ -40,9 +41,8 @@ export const ExpandableFlyout: React.FC = ({ }) => { const windowWidth = useWindowSize(); - const { closeFlyout, panels } = useExpandableFlyoutContext(); - - const { left, right, preview } = panels; + const { left, right, preview } = useExpandableFlyoutState(); + const { closeFlyout } = useExpandableFlyoutApi(); const leftSection = useMemo( () => registeredPanels.find((panel) => panel.key === left?.id), diff --git a/packages/kbn-expandable-flyout/src/provider.tsx b/packages/kbn-expandable-flyout/src/provider.tsx index 63c8aec6b9bf4d..ba18bd189f6e43 100644 --- a/packages/kbn-expandable-flyout/src/provider.tsx +++ b/packages/kbn-expandable-flyout/src/provider.tsx @@ -6,16 +6,70 @@ * Side Public License, v 1. */ -import React, { FC, PropsWithChildren } from 'react'; -import { ExpandableFlyoutContext } from './context'; -import { MemoryStateProvider } from './context/memory_state_provider'; +import { createKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; +import React, { FC, PropsWithChildren, useEffect, useMemo } from 'react'; +import { Provider as ReduxProvider } from 'react-redux'; + +import { useHistory } from 'react-router-dom'; +import { State } from './state'; +import { useExpandableFlyoutState } from './hooks/use_expandable_flyout_state'; +import { EXPANDABLE_FLYOUT_URL_KEY } from './constants'; +import { Context, store, useDispatch } from './redux'; +import { urlChangedAction } from './actions'; + +export type ExpandableFlyoutStorageMode = 'memory' | 'url'; + +/** + * Dispatches actions when url state changes and initializes the state when the app is loaded with flyout url parameters + */ +const UrlSynchronizer = () => { + const state = useExpandableFlyoutState(); + const dispatch = useDispatch(); + + const history = useHistory(); + + const urlStorage = useMemo( + () => + createKbnUrlStateStorage({ + history, + useHash: false, + useHashQuery: false, + }), + [history] + ); + + useEffect(() => { + const currentValue = urlStorage.get(EXPANDABLE_FLYOUT_URL_KEY); + + // Dispatch current value to redux store as it does not happen automatically + if (currentValue) { + dispatch(urlChangedAction({ ...currentValue, preview: currentValue?.preview[0] })); + } + + const subscription = urlStorage.change$(EXPANDABLE_FLYOUT_URL_KEY).subscribe((value) => { + dispatch(urlChangedAction({ ...value, preview: value?.preview?.[0] })); + }); + + return () => subscription.unsubscribe(); + }, [dispatch, urlStorage]); + + useEffect(() => { + const { needsSync, ...stateToSync } = state; + + if (needsSync) { + urlStorage.set(EXPANDABLE_FLYOUT_URL_KEY, stateToSync); + } + }, [urlStorage, state]); + + return null; +}; interface ExpandableFlyoutProviderProps { /** * This allows the user to choose how the flyout storage is handled. * Url storage syncs current values straight to the browser query string. */ - storage?: 'url' | 'memory'; + storage?: ExpandableFlyoutStorageMode; } /** @@ -30,8 +84,11 @@ export const ExpandableFlyoutProvider: FC { return ( - - {children} - + + <> + {storage === 'url' ? : null} + {children} + + ); }; diff --git a/packages/kbn-expandable-flyout/src/reducer.test.ts b/packages/kbn-expandable-flyout/src/reducer.test.ts index 92a9d2d8309e57..db18fbee3e2d78 100644 --- a/packages/kbn-expandable-flyout/src/reducer.test.ts +++ b/packages/kbn-expandable-flyout/src/reducer.test.ts @@ -61,6 +61,7 @@ describe('reducer', () => { left: leftPanel1, right: rightPanel1, preview: [previewPanel1], + needsSync: true, }); }); @@ -81,6 +82,7 @@ describe('reducer', () => { left: leftPanel2, right: rightPanel2, preview: [previewPanel2], + needsSync: true, }); }); @@ -99,6 +101,7 @@ describe('reducer', () => { left: undefined, right: rightPanel2, preview: [], + needsSync: true, }); }); }); @@ -113,6 +116,7 @@ describe('reducer', () => { left: undefined, right: rightPanel1, preview: [], + needsSync: true, }); }); @@ -129,6 +133,7 @@ describe('reducer', () => { left: leftPanel1, right: rightPanel2, preview: [previewPanel1], + needsSync: true, }); }); }); @@ -143,6 +148,7 @@ describe('reducer', () => { left: leftPanel1, right: undefined, preview: [], + needsSync: true, }); }); @@ -159,6 +165,7 @@ describe('reducer', () => { left: leftPanel2, right: rightPanel1, preview: [previewPanel1], + needsSync: true, }); }); }); @@ -173,6 +180,7 @@ describe('reducer', () => { left: undefined, right: undefined, preview: [previewPanel1], + needsSync: true, }); }); @@ -189,6 +197,7 @@ describe('reducer', () => { left: leftPanel1, right: rightPanel1, preview: [previewPanel1, previewPanel2], + needsSync: true, }); }); }); @@ -199,7 +208,7 @@ describe('reducer', () => { const action = closeRightPanelAction(); const newState: State = reducer(state, action); - expect(newState).toEqual(state); + expect(newState).toEqual({ ...state, needsSync: true }); }); it(`should return unmodified state when removing right panel when no right panel exist`, () => { @@ -207,6 +216,7 @@ describe('reducer', () => { left: leftPanel1, right: undefined, preview: [previewPanel1], + needsSync: true, }; const action = closeRightPanelAction(); const newState: State = reducer(state, action); @@ -228,6 +238,7 @@ describe('reducer', () => { left: leftPanel1, right: undefined, preview: [previewPanel1], + needsSync: true, }); }); }); @@ -238,7 +249,7 @@ describe('reducer', () => { const action = closeLeftPanelAction(); const newState: State = reducer(state, action); - expect(newState).toEqual(state); + expect(newState).toEqual({ ...state, needsSync: true }); }); it(`should return unmodified state when removing left panel when no left panel exist`, () => { @@ -246,6 +257,7 @@ describe('reducer', () => { left: undefined, right: rightPanel1, preview: [], + needsSync: true, }; const action = closeLeftPanelAction(); const newState: State = reducer(state, action); @@ -266,13 +278,14 @@ describe('reducer', () => { left: undefined, right: rightPanel1, preview: [previewPanel1], + needsSync: true, }); }); }); describe('should handle closePreviewPanel action', () => { it('should return empty state when removing preview panel on empty state', () => { - const state: State = initialState; + const state: State = { ...initialState, needsSync: true }; const action = closePreviewPanelAction(); const newState: State = reducer(state, action); @@ -288,7 +301,7 @@ describe('reducer', () => { const action = closePreviewPanelAction(); const newState: State = reducer(state, action); - expect(newState).toEqual(state); + expect(newState).toEqual({ ...state, needsSync: true }); }); it('should remove all preview panels', () => { @@ -304,6 +317,7 @@ describe('reducer', () => { left: rightPanel1, right: leftPanel1, preview: [], + needsSync: true, }); }); }); @@ -314,7 +328,7 @@ describe('reducer', () => { const action = previousPreviewPanelAction(); const newState: State = reducer(state, action); - expect(newState).toEqual(state); + expect(newState).toEqual({ ...initialState, needsSync: true }); }); it(`should return unmodified state when previous preview panel when no preview panel exist`, () => { @@ -322,6 +336,7 @@ describe('reducer', () => { left: leftPanel1, right: rightPanel1, preview: [], + needsSync: true, }; const action = previousPreviewPanelAction(); const newState: State = reducer(state, action); @@ -342,6 +357,7 @@ describe('reducer', () => { left: leftPanel1, right: rightPanel1, preview: [previewPanel1], + needsSync: true, }); }); }); @@ -352,7 +368,7 @@ describe('reducer', () => { const action = closePanelsAction(); const newState: State = reducer(state, action); - expect(newState).toEqual(initialState); + expect(newState).toEqual({ ...initialState, needsSync: true }); }); it('should remove all panels', () => { @@ -368,6 +384,7 @@ describe('reducer', () => { left: undefined, right: undefined, preview: [], + needsSync: true, }); }); }); diff --git a/packages/kbn-expandable-flyout/src/reducer.ts b/packages/kbn-expandable-flyout/src/reducer.ts index fe3d40ce9a797e..198f99d2785a63 100644 --- a/packages/kbn-expandable-flyout/src/reducer.ts +++ b/packages/kbn-expandable-flyout/src/reducer.ts @@ -17,6 +17,7 @@ import { closeRightPanelAction, previousPreviewPanelAction, openPreviewPanelAction, + urlChangedAction, } from './actions'; import { initialState } from './state'; @@ -25,39 +26,57 @@ export const reducer = createReducer(initialState, (builder) => { state.preview = preview ? [preview] : []; state.right = right; state.left = left; + state.needsSync = true; }); builder.addCase(openLeftPanelAction, (state, { payload }) => { state.left = payload; + state.needsSync = true; }); builder.addCase(openRightPanelAction, (state, { payload }) => { state.right = payload; + state.needsSync = true; }); builder.addCase(openPreviewPanelAction, (state, { payload }) => { state.preview.push(payload); + state.needsSync = true; }); builder.addCase(previousPreviewPanelAction, (state) => { state.preview.pop(); + state.needsSync = true; }); builder.addCase(closePanelsAction, (state) => { state.preview = []; state.right = undefined; state.left = undefined; + state.needsSync = true; }); builder.addCase(closeLeftPanelAction, (state) => { state.left = undefined; + state.needsSync = true; }); builder.addCase(closeRightPanelAction, (state) => { state.right = undefined; + state.needsSync = true; }); builder.addCase(closePreviewPanelAction, (state) => { state.preview = []; + state.needsSync = true; + }); + + builder.addCase(urlChangedAction, (state, { payload: { preview, left, right } }) => { + state.needsSync = false; + state.preview = preview ? [preview] : []; + state.left = left; + state.right = right; + + return state; }); }); diff --git a/packages/kbn-expandable-flyout/src/redux.ts b/packages/kbn-expandable-flyout/src/redux.ts new file mode 100644 index 00000000000000..d1f9d63c8a1a78 --- /dev/null +++ b/packages/kbn-expandable-flyout/src/redux.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { createContext } from 'react'; +import { createDispatchHook, createSelectorHook, ReactReduxContextValue } from 'react-redux'; +import { configureStore } from '@reduxjs/toolkit'; +import { reducer } from './reducer'; +import { initialState, State } from './state'; + +export const store = configureStore({ + reducer, + devTools: process.env.NODE_ENV !== 'production', + enhancers: [], +}); + +export const Context = createContext>({ + store, + storeState: initialState, +}); + +export const useDispatch = createDispatchHook(Context); +export const useSelector = createSelectorHook(Context); + +export const stateSelector = (state: State) => state; diff --git a/packages/kbn-expandable-flyout/src/state.ts b/packages/kbn-expandable-flyout/src/state.ts index 75f8269a82962a..2724194759b2b0 100644 --- a/packages/kbn-expandable-flyout/src/state.ts +++ b/packages/kbn-expandable-flyout/src/state.ts @@ -21,10 +21,18 @@ export interface State { * Panels to render in the preview section */ preview: FlyoutPanelProps[]; + + /** + * Is the flyout in sync with external storage (eg. url)? + * This value can be used in useEffect for example, to control whether we should + * call an external state sync method. + */ + needsSync?: boolean; } export const initialState: State = { left: undefined, right: undefined, preview: [], + needsSync: false, }; diff --git a/packages/kbn-expandable-flyout/src/test/provider.tsx b/packages/kbn-expandable-flyout/src/test/provider.tsx index eab1d94fc0bbd4..448b36e0b3d305 100644 --- a/packages/kbn-expandable-flyout/src/test/provider.tsx +++ b/packages/kbn-expandable-flyout/src/test/provider.tsx @@ -10,8 +10,7 @@ import { Provider as ReduxProvider } from 'react-redux'; import { configureStore } from '@reduxjs/toolkit'; import React, { FC, PropsWithChildren } from 'react'; import { reducer } from '../reducer'; -import { Context } from '../context/memory_state_provider'; -import { ExpandableFlyoutContext } from '../context'; +import { Context } from '../redux'; import { initialState, State } from '../state'; interface TestProviderProps { @@ -30,10 +29,8 @@ export const TestProvider: FC> = ({ }); return ( - - - {children} - - + + {children} + ); }; diff --git a/packages/kbn-expandable-flyout/src/types.ts b/packages/kbn-expandable-flyout/src/types.ts index 2d95426abddec0..33b9701ba88317 100644 --- a/packages/kbn-expandable-flyout/src/types.ts +++ b/packages/kbn-expandable-flyout/src/types.ts @@ -7,14 +7,8 @@ */ import React from 'react'; -import { State } from './state'; export interface ExpandableFlyoutApi { - /** - * Right, left and preview panels - */ - panels: State; - /** * Open the flyout with left, right and/or preview panels */ diff --git a/packages/kbn-expandable-flyout/tsconfig.json b/packages/kbn-expandable-flyout/tsconfig.json index 9a5dcbaf03048d..2b6e5180168710 100644 --- a/packages/kbn-expandable-flyout/tsconfig.json +++ b/packages/kbn-expandable-flyout/tsconfig.json @@ -20,6 +20,6 @@ ], "kbn_references": [ "@kbn/i18n", - "@kbn/url-state" + "@kbn/kibana-utils-plugin" ] } diff --git a/packages/kbn-field-utils/src/types.ts b/packages/kbn-field-utils/src/types.ts index a0044975499814..43b790ec9326be 100644 --- a/packages/kbn-field-utils/src/types.ts +++ b/packages/kbn-field-utils/src/types.ts @@ -21,6 +21,7 @@ export interface FieldBase { timeSeriesMetric?: DataViewField['timeSeriesMetric']; esTypes?: DataViewField['esTypes']; scripted?: DataViewField['scripted']; + isNull?: DataViewField['isNull']; conflictDescriptions?: Record; } diff --git a/packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/constants.ts b/packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/constants.ts index f2d6a056c09db3..0f71486ac65f2c 100644 --- a/packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/constants.ts +++ b/packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/constants.ts @@ -11,4 +11,5 @@ export const METRIC_ID = 'lnsMetric'; export const METRIC_TREND_LINE_ID = 'metricTrendline'; export const XY_REFERENCE_LINE_ID = 'referenceLine'; +export const XY_ANNOTATIONS_ID = 'annotations'; export const XY_DATA_ID = 'data'; diff --git a/packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/index.ts b/packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/index.ts index 2620d7639f5fff..ed7dd2fd971c15 100644 --- a/packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/index.ts +++ b/packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/index.ts @@ -12,6 +12,9 @@ export { XYReferenceLinesLayer, type XYReferenceLinesLayerConfig, } from './xy_reference_lines_layer'; - +export { + XYByValueAnnotationsLayer, + type XYByValueAnnotationsLayerConfig, +} from './xy_by_value_annotation_layer'; export { FormulaColumn } from './columns/formula'; export { StaticColumn } from './columns/static'; diff --git a/packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts b/packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts new file mode 100644 index 00000000000000..41e62caab9a231 --- /dev/null +++ b/packages/kbn-lens-embeddable-utils/attribute_builder/visualization_types/layers/xy_by_value_annotation_layer.ts @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { SavedObjectReference } from '@kbn/core/server'; +import type { DataView } from '@kbn/data-views-plugin/common'; +import { EventAnnotationConfig } from '@kbn/event-annotation-common'; +import type { FormBasedPersistedState, PersistedIndexPatternLayer } from '@kbn/lens-plugin/public'; +import type { XYByValueAnnotationLayerConfig } from '@kbn/lens-plugin/public/visualizations/xy/types'; +import type { ChartLayer } from '../../types'; +import { getDefaultReferences } from '../../utils'; +import { XY_ANNOTATIONS_ID } from '../constants'; + +export interface XYByValueAnnotationsLayerConfig { + annotations: EventAnnotationConfig[]; + layerType?: typeof XY_ANNOTATIONS_ID; + /** + * It is possible to define a specific dataView for the layer. It will override the global chart one + **/ + dataView?: DataView; + ignoreGlobalFilters?: boolean; +} + +export class XYByValueAnnotationsLayer implements ChartLayer { + private layerConfig: XYByValueAnnotationsLayerConfig; + + constructor(layerConfig: XYByValueAnnotationsLayerConfig) { + this.layerConfig = { + ...layerConfig, + layerType: layerConfig.layerType ?? 'annotations', + }; + } + + getName(): string | undefined { + return this.layerConfig.annotations[0].label; + } + + getLayer(layerId: string): FormBasedPersistedState['layers'] { + const baseLayer = { columnOrder: [], columns: {} } as PersistedIndexPatternLayer; + return { + [`${layerId}_annotation`]: baseLayer, + }; + } + + getReference(layerId: string, chartDataView: DataView): SavedObjectReference[] { + return getDefaultReferences(this.layerConfig.dataView ?? chartDataView, `${layerId}_reference`); + } + + getLayerConfig(layerId: string): XYByValueAnnotationLayerConfig { + return { + layerId: `${layerId}_annotation`, + layerType: 'annotations', + annotations: this.layerConfig.annotations, + ignoreGlobalFilters: this.layerConfig.ignoreGlobalFilters || false, + indexPatternId: this.layerConfig.dataView?.id || '', + }; + } + + getDataView(): DataView | undefined { + return this.layerConfig.dataView; + } +} diff --git a/packages/kbn-lens-embeddable-utils/config_builder/utils.ts b/packages/kbn-lens-embeddable-utils/config_builder/utils.ts index 44e3fdd31d2b45..6f6be44c9c8bc9 100644 --- a/packages/kbn-lens-embeddable-utils/config_builder/utils.ts +++ b/packages/kbn-lens-embeddable-utils/config_builder/utils.ts @@ -22,7 +22,8 @@ import type { TextBasedLayerColumn, TextBasedPersistedState, } from '@kbn/lens-plugin/public/datasources/text_based/types'; -import { AggregateQuery, getIndexPatternFromESQLQuery } from '@kbn/es-query'; +import type { AggregateQuery } from '@kbn/es-query'; +import { getIndexPatternFromESQLQuery } from '@kbn/esql-utils'; import { FormulaValueConfig, LensAnnotationLayer, diff --git a/packages/kbn-lens-embeddable-utils/index.ts b/packages/kbn-lens-embeddable-utils/index.ts index ffe9d4e87d7888..45d324c41fa2cf 100644 --- a/packages/kbn-lens-embeddable-utils/index.ts +++ b/packages/kbn-lens-embeddable-utils/index.ts @@ -30,6 +30,7 @@ export { XYChart, XYDataLayer, XYReferenceLinesLayer, + XYByValueAnnotationsLayer, METRIC_ID, METRIC_TREND_LINE_ID, XY_ID, diff --git a/packages/kbn-lens-embeddable-utils/tsconfig.json b/packages/kbn-lens-embeddable-utils/tsconfig.json index 9569d336b77662..fbc6a3dcc64c9c 100644 --- a/packages/kbn-lens-embeddable-utils/tsconfig.json +++ b/packages/kbn-lens-embeddable-utils/tsconfig.json @@ -17,5 +17,6 @@ "@kbn/expressions-plugin", "@kbn/visualizations-plugin", "@kbn/core-saved-objects-common", + "@kbn/esql-utils", ] } diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts index 8cc206cbd29379..724e1d5bb0f782 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts @@ -120,8 +120,7 @@ export class AstListener implements ESQLParserListener { if (metadataContext) { const option = createOption(metadataContext.METADATA().text.toLowerCase(), metadataContext); commandAst.args.push(option); - // skip for the moment as there's no easy way to get meta fields right now - // option.args.push(...collectAllColumnIdentifiers(metadataContext)); + option.args.push(...collectAllColumnIdentifiers(metadataContext)); } } @@ -142,8 +141,14 @@ export class AstListener implements ESQLParserListener { exitStatsCommand(ctx: StatsCommandContext) { const command = createCommand('stats', ctx); this.ast.push(command); - const [statsExpr, byExpr] = ctx.fields(); - command.args.push(...collectAllFieldsStatements(statsExpr), ...visitByOption(ctx, byExpr)); + const fields = ctx.fields(); + // STATS expression is optional + if (ctx._stats) { + command.args.push(...collectAllFieldsStatements(fields[0])); + } + if (ctx._grouping) { + command.args.push(...visitByOption(ctx, ctx._stats ? fields[1] : fields[0])); + } } /** diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts index 8c9682a24f202d..73fd877f307bdb 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts @@ -100,7 +100,7 @@ export function createLiteralString(token: Token): ESQLLiteral { }; } -function isMissingText(text: string) { +export function isMissingText(text: string) { return / 0); // get max location navigating in depth keeping the right/last arg location.max = walkFunctionStructure(fn.args, location, 'max', (args) => args.length - 1); + // in case of empty array as last arg, bump the max location by 3 chars (empty brackets) + if ( + Array.isArray(fn.args[fn.args.length - 1]) && + !(fn.args[fn.args.length - 1] as ESQLAstItem[]).length + ) { + location.max += 3; + } } return location; } diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts index 0a5bffa5a30671..00a84dd3d32145 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts @@ -76,6 +76,7 @@ import { createPolicy, createSettingTuple, createLiteralString, + isMissingText, } from './ast_helpers'; import { getPosition } from './ast_position_utils'; import type { @@ -206,11 +207,16 @@ function visitLogicalAndsOrs(ctx: LogicalBinaryContext) { function visitLogicalIns(ctx: LogicalInContext) { const fn = createFunction(ctx.NOT() ? 'not_in' : 'in', ctx); const [left, ...list] = ctx.valueExpression(); - const values = [visitValueExpression(left), list.map((ve) => visitValueExpression(ve))]; - for (const arg of values) { - if (arg) { - const filteredArgs = Array.isArray(arg) ? arg.filter(nonNullable) : [arg]; - fn.args.push(filteredArgs); + const leftArg = visitValueExpression(left); + if (leftArg) { + fn.args.push(...(Array.isArray(leftArg) ? leftArg : [leftArg])); + const values = list.map((ve) => visitValueExpression(ve)); + const listArgs = values + .filter(nonNullable) + .flatMap((arg) => (Array.isArray(arg) ? arg.filter(nonNullable) : arg)); + // distinguish between missing brackets (missing text error) and an empty list + if (!isMissingText(ctx.text)) { + fn.args.push(listArgs); } } // update the location of the assign based on arguments @@ -244,6 +250,9 @@ function getComparisonName(ctx: ComparisonOperatorContext) { } function visitValueExpression(ctx: ValueExpressionContext) { + if (isMissingText(ctx.text)) { + return []; + } if (ctx instanceof ValueExpressionDefaultContext) { return visitOperatorExpression(ctx.operatorExpression()); } @@ -268,7 +277,7 @@ function visitOperatorExpression( if (ctx instanceof ArithmeticUnaryContext) { const arg = visitOperatorExpression(ctx.operatorExpression()); // this is a number sign thing - const fn = createFunction('multiply', ctx); + const fn = createFunction('*', ctx); fn.args.push(createFakeMultiplyLiteral(ctx)); if (arg) { fn.args.push(arg); @@ -434,7 +443,7 @@ function collectIsNullExpression(ctx: BooleanExpressionContext) { return []; } const negate = ctx.NOT(); - const fnName = `${negate ? 'not_' : ''}is_null`; + const fnName = `is${negate ? ' not ' : ' '}null`; const fn = createFunction(fnName, ctx); const arg = visitValueExpression(ctx.valueExpression()); if (arg) { @@ -538,16 +547,18 @@ export function visitDissect(ctx: DissectCommandContext) { const pattern = ctx.string().tryGetToken(esql_parser.STRING, 0); return [ visitPrimaryExpression(ctx.primaryExpression()), - createLiteral('string', pattern), - ...visitDissectOptions(ctx.commandOptions()), + ...(pattern && !isMissingText(pattern.text) + ? [createLiteral('string', pattern), ...visitDissectOptions(ctx.commandOptions())] + : []), ].filter(nonNullable); } export function visitGrok(ctx: GrokCommandContext) { const pattern = ctx.string().tryGetToken(esql_parser.STRING, 0); - return [visitPrimaryExpression(ctx.primaryExpression()), createLiteral('string', pattern)].filter( - nonNullable - ); + return [ + visitPrimaryExpression(ctx.primaryExpression()), + ...(pattern && !isMissingText(pattern.text) ? [createLiteral('string', pattern)] : []), + ].filter(nonNullable); } function visitDissectOptions(ctx: CommandOptionsContext | undefined) { diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts index c3597ba00c4e22..55caf36f04c595 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts @@ -17,6 +17,7 @@ import { builtinFunctions } from '../definitions/builtin'; import { statsAggregationFunctionDefinitions } from '../definitions/aggs'; import { chronoLiterals, timeLiterals } from '../definitions/literals'; import { commandDefinitions } from '../definitions/commands'; +import { TRIGGER_SUGGESTION_COMMAND } from './factories'; const triggerCharacters = [',', '(', '=', ' ']; @@ -25,12 +26,8 @@ const fields: Array<{ name: string; type: string; suggestedAs?: string }> = [ name: `${type}Field`, type, })), - { name: 'any#Char$ field', type: 'number', suggestedAs: '`any#Char$ field`' }, + { name: 'any#Char$Field', type: 'number', suggestedAs: '`any#Char$Field`' }, { name: 'kubernetes.something.something', type: 'number' }, - { - name: `listField`, - type: `list`, - }, ]; const indexes = ( @@ -77,7 +74,14 @@ const policies = [ function getFunctionSignaturesByReturnType( command: string, expectedReturnType: string, - { agg, evalMath, builtin }: { agg?: boolean; evalMath?: boolean; builtin?: boolean } = {}, + { + agg, + evalMath, + builtin, + // skipAssign here is used to communicate to not propose an assignment if it's not possible + // within the current context (the actual logic has it, but here we want a shortcut) + skipAssign, + }: { agg?: boolean; evalMath?: boolean; builtin?: boolean; skipAssign?: boolean } = {}, paramsTypes?: string[], ignored?: string[] ) { @@ -90,27 +94,33 @@ function getFunctionSignaturesByReturnType( list.push(...evalFunctionsDefinitions); } if (builtin) { - list.push(...builtinFunctions); + list.push(...builtinFunctions.filter(({ name }) => (skipAssign ? name !== '=' : true))); } return list - .filter(({ signatures, ignoreAsSuggestion, supportedCommands }) => { + .filter(({ signatures, ignoreAsSuggestion, supportedCommands, name }) => { if (ignoreAsSuggestion) { return false; } if (!supportedCommands.includes(command)) { return false; } - const filteredByReturnType = signatures.some( + const filteredByReturnType = signatures.filter( ({ returnType }) => expectedReturnType === 'any' || returnType === expectedReturnType ); - if (!filteredByReturnType) { + if (!filteredByReturnType.length) { return false; } if (paramsTypes?.length) { - return signatures.some(({ params }) => - paramsTypes.every( - (expectedType, i) => expectedType === 'any' || expectedType === params[i].type - ) + return filteredByReturnType.some( + ({ params }) => + !params.length || + (paramsTypes.length <= params.length && + paramsTypes.every( + (expectedType, i) => + expectedType === 'any' || + params[i].type === 'any' || + expectedType === params[i].type + )) ); } return true; @@ -121,9 +131,12 @@ function getFunctionSignaturesByReturnType( } return true; }) - .map(({ type, name, signatures, ...defRest }) => - type === 'builtin' ? `${name} $0` : `${name}($0)` - ); + .map(({ type, name, signatures }) => { + if (type === 'builtin') { + return signatures.some(({ params }) => params.length > 1) ? `${name} $0` : name; + } + return `${name}($0)`; + }); } function getFieldNamesByType(requestedType: string) { @@ -162,6 +175,7 @@ function createCustomCallbackMocks( getFieldsFor: jest.fn(async () => finalFields), getSources: jest.fn(async () => finalSources), getPolicies: jest.fn(async () => finalPolicies), + getMetaFields: jest.fn(async () => ['_index', '_score']), }; } @@ -277,30 +291,33 @@ describe('autocomplete', () => { const sourceCommands = ['row', 'from', 'show']; describe('New command', () => { - testSuggestions(' ', sourceCommands); + testSuggestions( + ' ', + sourceCommands.map((name) => name + ' $0') + ); testSuggestions( 'from a | ', commandDefinitions .filter(({ name }) => !sourceCommands.includes(name)) - .map(({ name }) => name) + .map(({ name }) => name + ' $0') ); testSuggestions( 'from a [metadata _id] | ', commandDefinitions .filter(({ name }) => !sourceCommands.includes(name)) - .map(({ name }) => name) + .map(({ name }) => name + ' $0') ); testSuggestions( 'from a | eval var0 = a | ', commandDefinitions .filter(({ name }) => !sourceCommands.includes(name)) - .map(({ name }) => name) + .map(({ name }) => name + ' $0') ); testSuggestions( 'from a [metadata _id] | eval var0 = a | ', commandDefinitions .filter(({ name }) => !sourceCommands.includes(name)) - .map(({ name }) => name) + .map(({ name }) => name + ' $0') ); }); @@ -309,12 +326,17 @@ describe('autocomplete', () => { .filter(({ hidden }) => !hidden) .map(({ name, suggestedAs }) => suggestedAs || name); // Monaco will filter further down here - testSuggestions('f', sourceCommands); + testSuggestions( + 'f', + sourceCommands.map((name) => name + ' $0') + ); testSuggestions('from ', suggestedIndexes); testSuggestions('from a,', suggestedIndexes); testSuggestions('from a, b ', ['[metadata $0 ]', '|', ',']); testSuggestions('from *,', suggestedIndexes); testSuggestions('from index', suggestedIndexes, 6 /* index index in from */); + testSuggestions('from a, b [metadata ]', ['_index', '_score'], 20); + testSuggestions('from a, b [metadata _index, ]', ['_score'], 27); }); describe('show', () => { @@ -389,7 +411,9 @@ describe('autocomplete', () => { ]); } testSuggestions('from a | stats a=avg(numberField) | where a ', [ - ...getFunctionSignaturesByReturnType('where', 'any', { builtin: true }, ['number']), + ...getFunctionSignaturesByReturnType('where', 'any', { builtin: true, skipAssign: true }, [ + 'number', + ]), ]); // Mind this test: suggestion is aware of previous commands when checking for fields // in this case the numberField has been wiped by the STATS command and suggest cannot find it's type @@ -426,8 +450,78 @@ describe('autocomplete', () => { ], ',' ); + + testSuggestions('from index | WHERE stringField not ', ['like $0', 'rlike $0', 'in $0']); + testSuggestions('from index | WHERE stringField NOT ', ['like $0', 'rlike $0', 'in $0']); + testSuggestions('from index | WHERE not ', [ + ...getFieldNamesByType('boolean'), + ...getFunctionSignaturesByReturnType('eval', 'boolean', { evalMath: true }), + ]); + testSuggestions('from index | WHERE numberField in ', ['( $0 )']); + testSuggestions('from index | WHERE numberField not in ', ['( $0 )']); + testSuggestions( + 'from index | WHERE numberField not in ( )', + [ + ...getFieldNamesByType('number').filter((name) => name !== 'numberField'), + ...getFunctionSignaturesByReturnType('where', 'number', { evalMath: true }), + ], + '(' + ); + testSuggestions( + 'from index | WHERE numberField in ( `any#Char$Field`, )', + [ + ...getFieldNamesByType('number').filter( + (name) => name !== '`any#Char$Field`' && name !== 'numberField' + ), + ...getFunctionSignaturesByReturnType('where', 'number', { evalMath: true }), + ], + 54 // after the first suggestions + ); + testSuggestions( + 'from index | WHERE numberField not in ( `any#Char$Field`, )', + [ + ...getFieldNamesByType('number').filter( + (name) => name !== '`any#Char$Field`' && name !== 'numberField' + ), + ...getFunctionSignaturesByReturnType('where', 'number', { evalMath: true }), + ], + 58 // after the first suggestions + ); }); + for (const command of ['grok', 'dissect']) { + describe(command, () => { + const constantPattern = command === 'grok' ? '"%{WORD:firstWord}"' : '"%{firstWord}"'; + const subExpressions = [ + '', + `${command} stringField |`, + `${command} stringField ${constantPattern} |`, + `dissect stringField ${constantPattern} append_separator = ":" |`, + ]; + if (command === 'grok') { + subExpressions.push(`dissect stringField ${constantPattern} |`); + } + for (const subExpression of subExpressions) { + testSuggestions(`from a | ${subExpression} ${command} `, getFieldNamesByType('string')); + testSuggestions(`from a | ${subExpression} ${command} stringField `, [constantPattern]); + testSuggestions( + `from a | ${subExpression} ${command} stringField ${constantPattern} `, + (command === 'dissect' ? ['append_separator = $0'] : []).concat(['|']) + ); + if (command === 'dissect') { + testSuggestions( + `from a | ${subExpression} ${command} stringField ${constantPattern} append_separator = `, + ['":"', '";"'] + ); + testSuggestions( + `from a | ${subExpression} ${command} stringField ${constantPattern} append_separator = ":" `, + ['|'] + ); + } + } + }); + } + describe('sort', () => { testSuggestions('from a | sort ', getFieldNamesByType('any')); testSuggestions('from a | sort stringField ', ['asc', 'desc', '|', ',']); @@ -442,7 +536,7 @@ describe('autocomplete', () => { }); describe('mv_expand', () => { - testSuggestions('from a | mv_expand ', ['listField']); + testSuggestions('from a | mv_expand ', getFieldNamesByType('any')); testSuggestions('from a | mv_expand a ', ['|']); }); @@ -569,9 +663,8 @@ describe('autocomplete', () => { 'dateField', 'booleanField', 'ipField', - 'any#Char$ field', + 'any#Char$Field', 'kubernetes.something.something', - 'listField', ]); testSuggestions(`from a ${prevCommand}| enrich policy on b `, ['with', '|', ',']); testSuggestions(`from a ${prevCommand}| enrich policy on b with `, [ @@ -614,10 +707,28 @@ describe('autocomplete', () => { ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), ]); testSuggestions('from a | eval numberField ', [ - ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true }, ['number']), + ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ + 'number', + ]), '|', ',', ]); + testSuggestions('from index | EVAL stringField not ', ['like $0', 'rlike $0', 'in $0']); + testSuggestions('from index | EVAL stringField NOT ', ['like $0', 'rlike $0', 'in $0']); + testSuggestions('from index | EVAL numberField in ', ['( $0 )']); + testSuggestions( + 'from index | EVAL numberField in ( )', + [ + ...getFieldNamesByType('number').filter((name) => name !== 'numberField'), + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), + ], + '(' + ); + testSuggestions('from index | EVAL numberField not in ', ['( $0 )']); + testSuggestions('from index | EVAL not ', [ + ...getFieldNamesByType('boolean'), + ...getFunctionSignaturesByReturnType('eval', 'boolean', { evalMath: true }), + ]); testSuggestions('from a | eval a=', [ ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), ]); @@ -657,11 +768,33 @@ describe('autocomplete', () => { 'from a | eval raund(', // note the typo in round [] ); + testSuggestions( + 'from a | eval raund(5, ', // note the typo in round + [] + ); + testSuggestions( + 'from a | eval var0 = raund(5, ', // note the typo in round + [] + ); testSuggestions('from a | eval a=round(numberField) ', [ - ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true }, ['number']), + ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ + 'number', + ]), '|', ',', ]); + testSuggestions('from a | eval a=round(numberField, ', [ + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }, undefined, [ + 'round', + ]), + ]); + testSuggestions('from a | eval round(numberField, ', [ + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }, undefined, [ + 'round', + ]), + ]); testSuggestions('from a | eval a=round(numberField),', [ 'var0 =', ...getFieldNamesByType('any'), @@ -673,6 +806,21 @@ describe('autocomplete', () => { ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), 'a', // @TODO remove this ]); + testSuggestions('from a | eval a=round(numberField)+ ', [ + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), + 'a', // @TODO remove this + ]); + testSuggestions('from a | eval a=numberField+ ', [ + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), + 'a', // @TODO remove this + ]); + testSuggestions('from a | eval a=`any#Char$Field`+ ', [ + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), + 'a', // @TODO remove this + ]); testSuggestions( 'from a | stats avg(numberField) by stringField | eval ', [ @@ -758,7 +906,9 @@ describe('autocomplete', () => { testSuggestions( 'from a | eval var0 = abs(numberField) | eval abs(var0)', [ - ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true }, ['number']), + ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ + 'number', + ]), '|', ',', ], @@ -824,22 +974,34 @@ describe('autocomplete', () => { const dateSuggestions = timeLiterals.map(({ name }) => name); // If a literal number is detected then suggest also date period keywords testSuggestions('from a | eval a = 1 ', [ - ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true }, ['number']), + ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ + 'number', + ]), ...dateSuggestions, '|', ',', ]); testSuggestions('from a | eval a = 1 year ', [ - ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true }, ['time_interval']), + ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ + 'time_interval', + ]), '|', ',', ]); testSuggestions('from a | eval a = 1 day + 2 ', [ - ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true }, ['number']), + ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ + 'number', + ]), ...dateSuggestions, '|', ',', ]); + testSuggestions('from a | eval 1 day + 2 ', [ + ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ + 'number', + ]), + ...dateSuggestions, + ]); testSuggestions( 'from a | eval var0=date_trunc()', [...getLiteralsByType('time_literal').map((t) => `${t},`)], @@ -886,4 +1048,40 @@ describe('autocomplete', () => { expect(callbackMocks.getFieldsFor).toHaveBeenCalledWith({ query: 'from a' }); }); }); + + describe('auto triggers', () => { + function getSuggestionsFor(statement: string) { + const callbackMocks = createCustomCallbackMocks(undefined, undefined, undefined); + const triggerOffset = statement.lastIndexOf(' ') + 1; // drop + const context = createSuggestContext(statement, statement[triggerOffset]); + const { model, position } = createModelAndPosition(statement, triggerOffset + 2); + return suggest( + model, + position, + context, + async (text) => (text ? await getAstAndErrors(text) : { ast: [], errors: [] }), + callbackMocks + ); + } + it('should trigger further suggestions for functions', async () => { + const suggestions = await getSuggestionsFor('from a | eval '); + // test that all functions will retrigger suggestions + expect( + suggestions + .filter(({ kind }) => kind === 1) + .every(({ command }) => command === TRIGGER_SUGGESTION_COMMAND) + ).toBeTruthy(); + // now test that non-function won't retrigger + expect( + suggestions.filter(({ kind }) => kind !== 1).every(({ command }) => command == null) + ).toBeTruthy(); + }); + it('should trigger further suggestions for commands', async () => { + const suggestions = await getSuggestionsFor('from a | '); + // test that all commands will retrigger suggestions + expect( + suggestions.every(({ command }) => command === TRIGGER_SUGGESTION_COMMAND) + ).toBeTruthy(); + }); + }); }); diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts index 4cf468febbfd00..2f3e9974780503 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts @@ -18,6 +18,7 @@ import { getCommandOption, getFunctionDefinition, getLastCharFromTrimmed, + isArrayType, isAssignment, isAssignmentComplete, isColumnItem, @@ -46,11 +47,15 @@ import type { } from '../types'; import type { ESQLPolicy, ESQLRealField, ESQLVariable, ReferenceMaps } from '../validation/types'; import { + colonCompleteItem, commaCompleteItem, commandAutocompleteDefinitions, getAssignmentDefinitionCompletitionItem, getBuiltinCompatibleFunctionDefinition, + getNextTokenForNot, + listCompleteItem, pipeCompleteItem, + semiColonCompleteItem, } from './complete_items'; import { buildFieldsDefinitions, @@ -64,7 +69,6 @@ import { buildConstantsDefinitions, buildVariablesDefinitions, buildOptionDefinition, - TRIGGER_SUGGESTION_COMMAND, buildSettingDefinitions, buildSettingValueDefinitions, } from './factories'; @@ -86,6 +90,7 @@ type GetFieldsByTypeFn = ( type GetFieldsMapFn = () => Promise>; type GetPoliciesFn = () => Promise; type GetPolicyMetadataFn = (name: string) => Promise; +type GetMetaFieldsFn = () => Promise; function hasSameArgBothSides(assignFn: ESQLFunction) { if (assignFn.name === '=' && isColumnItem(assignFn.args[0]) && assignFn.args[1]) { @@ -165,8 +170,7 @@ export async function suggest( context.triggerCharacter === ',' || (context.triggerKind === 0 && unclosedRoundBrackets === 0) || (context.triggerCharacter === ' ' && - // make this more robust - (isMathFunction(innerText[offset - 2]) || isComma(innerText[offset - 2]))) + (isMathFunction(innerText, offset) || isComma(innerText[offset - 2]))) ) { finalText = `${innerText.substring(0, offset)}${EDITOR_MARKER}${innerText.substring(offset)}`; } @@ -194,6 +198,7 @@ export async function suggest( ); const getSources = getSourcesRetriever(resourceRetriever); const { getPolicies, getPolicyMetadata } = getPolicyRetriever(resourceRetriever); + const getMetaFields = getMetaFieldsRetriever(resourceRetriever); if (astContext.type === 'newCommand') { // propose main commands here @@ -243,7 +248,8 @@ export async function suggest( { option, ...rest }, getFieldsByType, getFieldsMap, - getPolicyMetadata + getPolicyMetadata, + getMetaFields ); } } @@ -257,6 +263,16 @@ export async function suggest( getPolicyMetadata ); } + if (astContext.type === 'list') { + return getListArgsSuggestions( + innerText, + ast, + astContext, + getFieldsByType, + getFieldsMap, + getPolicyMetadata + ); + } return []; } @@ -271,6 +287,13 @@ function getFieldsByTypeRetriever(queryString: string, resourceRetriever?: ESQLC }; } +function getMetaFieldsRetriever(resourceRetriever?: ESQLCallbacks): () => Promise { + if (resourceRetriever?.getMetaFields == null) { + return async () => []; + } + return async () => resourceRetriever!.getMetaFields!(); +} + function getPolicyRetriever(resourceRetriever?: ESQLCallbacks) { const helpers = getPolicyHelper(resourceRetriever); return { @@ -300,6 +323,14 @@ function findNewVariable(variables: Map) { return name; } +function workoutBuiltinOptions( + nodeArg: ESQLAstItem, + references: Pick +): { skipAssign: boolean } { + // skip assign operator if it's a function or an existing field to avoid promoting shadowing + return { skipAssign: Boolean(!isColumnItem(nodeArg) || getColumnHit(nodeArg.name, references)) }; +} + function areCurrentArgsValid( command: ESQLCommand, node: ESQLAstItem, @@ -408,6 +439,9 @@ function isFunctionArgComplete( if (!argLengthCheck) { return { complete: false, reason: 'fewArgs' }; } + if (fnDefinition.name === 'in' && Array.isArray(arg.args[1]) && !arg.args[1].length) { + return { complete: false, reason: 'fewArgs' }; + } const hasCorrectTypes = fnDefinition.signatures.some((def) => { return arg.args.every((a, index) => { if (def.infiniteParams) { @@ -465,7 +499,18 @@ async function getExpressionSuggestionsByType( // A new expression is considered either // * just after a command name => i.e. ... | STATS // * or after a comma => i.e. STATS fieldA, - const isNewExpression = isRestartingExpression(innerText) || argIndex === 0; + const isNewExpression = + isRestartingExpression(innerText) || + (argIndex === 0 && (!isFunctionItem(nodeArg) || !nodeArg?.args.length)); + + // the not function is a special operator that can be used in different ways, + // and not all these are mapped within the AST data structure: in particular + // NOT + // is an incomplete statement and it results in a missing AST node, so we need to detect + // from the query string itself + const endsWithNot = + / not$/i.test(innerText.trimEnd()) && + !command.args.some((arg) => isFunctionItem(arg) && arg.name === 'not'); // early exit in case of a missing function if (isFunctionItem(lastArg) && !getFunctionDefinition(lastArg.name)) { @@ -531,19 +576,27 @@ async function getExpressionSuggestionsByType( if (argDef) { if (argDef.type === 'column' || argDef.type === 'any' || argDef.type === 'function') { if (isNewExpression && canHaveAssignments) { - // i.e. - // ... | ROW - // ... | STATS - // ... | STATS ..., - // ... | EVAL - // ... | EVAL ..., - suggestions.push(buildNewVarDefinition(findNewVariable(anyVariables))); + if (endsWithNot) { + // i.e. + // ... | ROW field NOT + // ... | EVAL field NOT + // there's not way to know the type of the field here, so suggest anything + suggestions.push(...getNextTokenForNot(command.name, option?.name, 'any')); + } else { + // i.e. + // ... | ROW + // ... | STATS + // ... | STATS ..., + // ... | EVAL + // ... | EVAL ..., + suggestions.push(buildNewVarDefinition(findNewVariable(anyVariables))); + } } } // Suggest fields or variables if (argDef.type === 'column' || argDef.type === 'any') { // ... | - if (!nodeArg || (isNewExpression && commandDef.signature.multipleParams)) { + if ((!nodeArg || isNewExpression) && !endsWithNot) { suggestions.push( ...(await getFieldsOrFunctionsSuggestions( [argDef.innerType || 'any'], @@ -571,13 +624,22 @@ async function getExpressionSuggestionsByType( const nodeArgType = extractFinalTypeFromArg(nodeArg, references); if (nodeArgType) { suggestions.push( - ...getBuiltinCompatibleFunctionDefinition(command.name, undefined, nodeArgType) + ...getBuiltinCompatibleFunctionDefinition( + command.name, + undefined, + nodeArgType, + undefined, + workoutBuiltinOptions(nodeArg, references) + ) ); } else { suggestions.push(getAssignmentDefinitionCompletitionItem()); } } - if (isNewExpression || (isAssignment(nodeArg) && !isAssignmentComplete(nodeArg))) { + if ( + (isNewExpression && !endsWithNot) || + (isAssignment(nodeArg) && !isAssignmentComplete(nodeArg)) + ) { // ... | STATS a = // ... | EVAL a = // ... | STATS a = ..., @@ -614,7 +676,13 @@ async function getExpressionSuggestionsByType( const [rightArg] = nodeArg.args[1] as [ESQLSingleAstItem]; const nodeArgType = extractFinalTypeFromArg(rightArg, references); suggestions.push( - ...getBuiltinCompatibleFunctionDefinition(command.name, undefined, nodeArgType || 'any') + ...getBuiltinCompatibleFunctionDefinition( + command.name, + undefined, + nodeArgType || 'any', + undefined, + workoutBuiltinOptions(rightArg, references) + ) ); if (nodeArgType === 'number' && isLiteralItem(rightArg)) { // ... EVAL var = 1 @@ -631,24 +699,40 @@ async function getExpressionSuggestionsByType( } } else { if (isFunctionItem(nodeArg)) { - const nodeArgType = extractFinalTypeFromArg(nodeArg, references); - suggestions.push( - ...(await getBuiltinFunctionNextArgument( - command, - option, - argDef, - nodeArg, - nodeArgType || 'any', - references, - getFieldsByType - )) - ); - if (nodeArg.args.some(isTimeIntervalItem)) { - const lastFnArg = nodeArg.args[nodeArg.args.length - 1]; - const lastFnArgType = extractFinalTypeFromArg(lastFnArg, references); - if (lastFnArgType === 'number' && isLiteralItem(lastFnArg)) - // ... EVAL var = 1 year + 2 - suggestions.push(...getCompatibleLiterals(command.name, ['time_literal_unit'])); + if (nodeArg.name === 'not') { + suggestions.push( + ...(await getFieldsOrFunctionsSuggestions( + ['boolean'], + command.name, + option?.name, + getFieldsByType, + { + functions: true, + fields: true, + variables: anyVariables, + } + )) + ); + } else { + const nodeArgType = extractFinalTypeFromArg(nodeArg, references); + suggestions.push( + ...(await getBuiltinFunctionNextArgument( + command, + option, + argDef, + nodeArg, + nodeArgType || 'any', + references, + getFieldsByType + )) + ); + if (nodeArg.args.some(isTimeIntervalItem)) { + const lastFnArg = nodeArg.args[nodeArg.args.length - 1]; + const lastFnArgType = extractFinalTypeFromArg(lastFnArg, references); + if (lastFnArgType === 'number' && isLiteralItem(lastFnArg)) + // ... EVAL var = 1 year + 2 + suggestions.push(...getCompatibleLiterals(command.name, ['time_literal_unit'])); + } } } } @@ -669,21 +753,28 @@ async function getExpressionSuggestionsByType( } else { // or it can be anything else as long as it is of the right type and the end (i.e. column or function) if (!nodeArg) { - // ... | - // In this case start suggesting something not strictly based on type - suggestions.push( - ...(await getFieldsOrFunctionsSuggestions( - ['any'], - command.name, - option?.name, - getFieldsByType, - { - functions: true, - fields: true, - variables: anyVariables, - } - )) - ); + if (endsWithNot) { + // i.e. + // ... | WHERE field NOT + // there's not way to know the type of the field here, so suggest anything + suggestions.push(...getNextTokenForNot(command.name, option?.name, 'any')); + } else { + // ... | + // In this case start suggesting something not strictly based on type + suggestions.push( + ...(await getFieldsOrFunctionsSuggestions( + ['any'], + command.name, + option?.name, + getFieldsByType, + { + functions: true, + fields: true, + variables: anyVariables, + } + )) + ); + } } else { // if something is already present, leverage its type to suggest something in context const nodeArgType = extractFinalTypeFromArg(nodeArg, references); @@ -696,21 +787,43 @@ async function getExpressionSuggestionsByType( if (nodeArgType) { if (isFunctionItem(nodeArg)) { - suggestions.push( - ...(await getBuiltinFunctionNextArgument( - command, - option, - argDef, - nodeArg, - nodeArgType, - references, - getFieldsByType - )) - ); + if (nodeArg.name === 'not') { + suggestions.push( + ...(await getFieldsOrFunctionsSuggestions( + ['boolean'], + command.name, + option?.name, + getFieldsByType, + { + functions: true, + fields: true, + variables: anyVariables, + } + )) + ); + } else { + suggestions.push( + ...(await getBuiltinFunctionNextArgument( + command, + option, + argDef, + nodeArg, + nodeArgType, + references, + getFieldsByType + )) + ); + } } else { // i.e. ... | field suggestions.push( - ...getBuiltinCompatibleFunctionDefinition(command.name, undefined, nodeArgType) + ...getBuiltinCompatibleFunctionDefinition( + command.name, + undefined, + nodeArgType, + undefined, + workoutBuiltinOptions(nodeArg, references) + ) ); } } @@ -750,7 +863,9 @@ async function getExpressionSuggestionsByType( ) { // suggest some command options if (optionsAvailable.length) { - suggestions.push(...optionsAvailable.map(buildOptionDefinition)); + suggestions.push( + ...optionsAvailable.map((opt) => buildOptionDefinition(opt, command.name === 'dissect')) + ); } if (!optionsAvailable.length || optionsAvailable.every(({ optional }) => optional)) { @@ -784,7 +899,13 @@ async function getBuiltinFunctionNextArgument( // i.e. ... | field > 0 // i.e. ... | field + otherN suggestions.push( - ...getBuiltinCompatibleFunctionDefinition(command.name, option?.name, nodeArgType || 'any') + ...getBuiltinCompatibleFunctionDefinition( + command.name, + option?.name, + nodeArgType || 'any', + undefined, + workoutBuiltinOptions(nodeArg, references) + ) ); } else { // i.e. ... | field >= @@ -799,37 +920,46 @@ async function getBuiltinFunctionNextArgument( const nestedType = extractFinalTypeFromArg(nodeArg.args[cleanedArgs.length - 1], references); if (isFnComplete.reason === 'fewArgs') { - const finalType = nestedType || nodeArgType || 'any'; - suggestions.push( - ...(await getFieldsOrFunctionsSuggestions( - // this is a special case with AND/OR - // expression AND/OR - // technically another boolean value should be suggested, but it is a better experience - // to actually suggest a wider set of fields/functions - [ - finalType === 'boolean' && getFunctionDefinition(nodeArg.name)?.type === 'builtin' - ? 'any' - : finalType, - ], - command.name, - option?.name, - getFieldsByType, - { - functions: true, - fields: true, - variables: references.variables, - } - )) - ); + const fnDef = getFunctionDefinition(nodeArg.name); + if (fnDef?.signatures.every(({ params }) => params.some(({ type }) => isArrayType(type)))) { + suggestions.push(listCompleteItem); + } else { + const finalType = nestedType || nodeArgType || 'any'; + suggestions.push( + ...(await getFieldsOrFunctionsSuggestions( + // this is a special case with AND/OR + // expression AND/OR + // technically another boolean value should be suggested, but it is a better experience + // to actually suggest a wider set of fields/functions + [ + finalType === 'boolean' && getFunctionDefinition(nodeArg.name)?.type === 'builtin' + ? 'any' + : finalType, + ], + command.name, + option?.name, + getFieldsByType, + { + functions: true, + fields: true, + variables: references.variables, + } + )) + ); + } } if (isFnComplete.reason === 'wrongTypes') { if (nestedType) { // suggest something to complete the builtin function if (nestedType !== argDef.type) { suggestions.push( - ...getBuiltinCompatibleFunctionDefinition(command.name, undefined, nestedType, [ - argDef.type, - ]) + ...getBuiltinCompatibleFunctionDefinition( + command.name, + undefined, + nestedType, + [argDef.type], + workoutBuiltinOptions(nodeArg, references) + ) ); } } @@ -898,7 +1028,6 @@ async function getFieldsOrFunctionsSuggestions( ...rest, kind, sortText: String.fromCharCode(97 - kind), - command: TRIGGER_SUGGESTION_COMMAND, })); } @@ -1023,6 +1152,61 @@ async function getFunctionArgsSuggestions( })); } +async function getListArgsSuggestions( + innerText: string, + commands: ESQLCommand[], + { + command, + node, + }: { + command: ESQLCommand; + node: ESQLSingleAstItem | undefined; + }, + getFieldsByType: GetFieldsByTypeFn, + getFieldsMaps: GetFieldsMapFn, + getPolicyMetadata: GetPolicyMetadataFn +) { + const suggestions = []; + // node is supposed to be the function who support a list argument (like the "in" operator) + // so extract the type of the first argument and suggest fields of that type + if (node && isFunctionItem(node)) { + const fieldsMap: Map = await getFieldsMaps(); + const anyVariables = collectVariables(commands, fieldsMap); + // extract the current node from the variables inferred + anyVariables.forEach((values, key) => { + if (values.some((v) => v.location === node.location)) { + anyVariables.delete(key); + } + }); + const [firstArg] = node.args; + if (isColumnItem(firstArg)) { + const argType = extractFinalTypeFromArg(firstArg, { + fields: fieldsMap, + variables: anyVariables, + }); + if (argType) { + // do not propose existing columns again + const otherArgs = node.args.filter(Array.isArray).flat().filter(isColumnItem); + suggestions.push( + ...(await getFieldsOrFunctionsSuggestions( + [argType], + command.name, + undefined, + getFieldsByType, + { + functions: true, + fields: true, + variables: anyVariables, + }, + { ignoreFields: [firstArg.name, ...otherArgs.map(({ name }) => name)] } + )) + ); + } + } + } + return suggestions; +} + async function getSettingArgsSuggestions( innerText: string, commands: ESQLCommand[], @@ -1078,7 +1262,8 @@ async function getOptionArgsSuggestions( }, getFieldsByType: GetFieldsByTypeFn, getFieldsMaps: GetFieldsMapFn, - getPolicyMetadata: GetPolicyMetadataFn + getPolicyMetadata: GetPolicyMetadataFn, + getMetaFields: GetMetaFieldsFn ) { const optionDef = getCommandOption(option.name); const { nodeArg, argIndex, lastArg } = extractArgMeta(option, node); @@ -1175,6 +1360,19 @@ async function getOptionArgsSuggestions( } } + if (command.name === 'dissect') { + if (option.args.length < 1 && optionDef) { + suggestions.push(colonCompleteItem, semiColonCompleteItem); + } + } + + if (option.name === 'metadata') { + const existingFields = new Set(option.args.filter(isColumnItem).map(({ name }) => name)); + const metaFields = await getMetaFields(); + const filteredMetaFields = metaFields.filter((name) => !existingFields.has(name)); + suggestions.push(...buildFieldsDefinitions(filteredMetaFields)); + } + if (command.name === 'stats') { suggestions.push( ...(await getFieldsOrFunctionsSuggestions( @@ -1228,7 +1426,7 @@ async function getOptionArgsSuggestions( ) { suggestions.push( ...getFinalSuggestions({ - comma: true, + comma: optionDef.signature.multipleParams, }) ); } else if (isNewExpression || (isAssignment(nodeArg) && !isAssignmentComplete(nodeArg))) { diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts index a9233a0c834d6b..8d9f209015e75a 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts @@ -16,6 +16,8 @@ import { getAutocompleteFunctionDefinition, getAutocompleteBuiltinDefinition, getAutocompleteCommandDefinition, + TRIGGER_SUGGESTION_COMMAND, + buildConstantsDefinitions, } from './factories'; export const mathCommandDefinition: AutocompleteCommandDefinition[] = evalFunctionsDefinitions.map( @@ -30,19 +32,51 @@ export function getAssignmentDefinitionCompletitionItem() { return getAutocompleteBuiltinDefinition(assignFn); } +export const getNextTokenForNot = ( + command: string, + option: string | undefined, + argType: string +): AutocompleteCommandDefinition[] => { + const compatibleFunctions = builtinFunctions.filter( + ({ name, supportedCommands, supportedOptions, ignoreAsSuggestion }) => + !ignoreAsSuggestion && + !/not_/.test(name) && + (option ? supportedOptions?.includes(option) : supportedCommands.includes(command)) + ); + if (argType === 'string' || argType === 'any') { + // suggest IS, LIKE, RLIKE and TRUE/FALSE + return compatibleFunctions + .filter(({ name }) => name === 'like' || name === 'rlike' || name === 'in') + .map(getAutocompleteBuiltinDefinition); + } + if (argType === 'boolean') { + // suggest IS, NOT and TRUE/FALSE + return [ + ...compatibleFunctions + .filter(({ name }) => name === 'in') + .map(getAutocompleteBuiltinDefinition), + ...buildConstantsDefinitions(['true', 'false']), + ]; + } + return []; +}; + export const getBuiltinCompatibleFunctionDefinition = ( command: string, option: string | undefined, argType: string, - returnTypes?: string[] + returnTypes?: string[], + { skipAssign }: { skipAssign?: boolean } = {} ): AutocompleteCommandDefinition[] => { const compatibleFunctions = builtinFunctions.filter( ({ name, supportedCommands, supportedOptions, signatures, ignoreAsSuggestion }) => !ignoreAsSuggestion && !/not_/.test(name) && + (!skipAssign || name !== '=') && (option ? supportedOptions?.includes(option) : supportedCommands.includes(command)) && signatures.some( - ({ params }) => !params.length || params.some((pArg) => pArg.type === argType) + ({ params }) => + !params.length || params.some((pArg) => pArg.type === argType || pArg.type === 'any') ) ); if (!returnTypes) { @@ -61,22 +95,58 @@ export const commandAutocompleteDefinitions: AutocompleteCommandDefinition[] = g getAutocompleteCommandDefinition ); -export const pipeCompleteItem: AutocompleteCommandDefinition = { - label: '|', - insertText: '|', - kind: 1, - detail: i18n.translate('monaco.esql.autocomplete.pipeDoc', { +function buildCharCompleteItem( + label: string, + detail: string, + { sortText, quoted }: { sortText?: string; quoted: boolean } = { quoted: false } +): AutocompleteCommandDefinition { + return { + label, + insertText: quoted ? `"${label}"` : label, + kind: 11, + detail, + sortText, + }; +} +export const pipeCompleteItem = buildCharCompleteItem( + '|', + i18n.translate('monaco.esql.autocomplete.pipeDoc', { defaultMessage: 'Pipe (|)', }), - sortText: 'B', -}; + { sortText: 'B', quoted: false } +); -export const commaCompleteItem: AutocompleteCommandDefinition = { - label: ',', - insertText: ',', - kind: 1, - detail: i18n.translate('monaco.esql.autocomplete.commaDoc', { +export const commaCompleteItem = buildCharCompleteItem( + ',', + i18n.translate('monaco.esql.autocomplete.commaDoc', { defaultMessage: 'Comma (,)', }), - sortText: 'C', + { sortText: 'C', quoted: false } +); + +export const colonCompleteItem = buildCharCompleteItem( + ':', + i18n.translate('monaco.esql.autocomplete.colonDoc', { + defaultMessage: 'Colon (:)', + }), + { sortText: 'A', quoted: true } +); +export const semiColonCompleteItem = buildCharCompleteItem( + ';', + i18n.translate('monaco.esql.autocomplete.semiColonDoc', { + defaultMessage: 'Semi colon (;)', + }), + { sortText: 'A', quoted: true } +); + +export const listCompleteItem: AutocompleteCommandDefinition = { + label: '( ... )', + insertText: '( $0 )', + insertTextRules: 4, + kind: 11, + detail: i18n.translate('monaco.esql.autocomplete.listDoc', { + defaultMessage: 'List of items ( ...)', + }), + sortText: 'A', + command: TRIGGER_SUGGESTION_COMMAND, }; diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts index 45837ed42a86fd..7fb94f38b962b2 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts @@ -44,11 +44,15 @@ export function getAutocompleteFunctionDefinition(fn: FunctionDefinition) { value: buildFunctionDocumentation(fullSignatures), }, sortText: 'C', + // trigger a suggestion follow up on selection + command: TRIGGER_SUGGESTION_COMMAND, }; } -export function getAutocompleteBuiltinDefinition(fn: FunctionDefinition) { - const hasArgs = fn.signatures.some(({ params }) => params.length); +export function getAutocompleteBuiltinDefinition( + fn: FunctionDefinition +): AutocompleteCommandDefinition { + const hasArgs = fn.signatures.some(({ params }) => params.length > 1); return { label: fn.name, insertText: hasArgs ? `${fn.name} $0` : fn.name, @@ -59,17 +63,10 @@ export function getAutocompleteBuiltinDefinition(fn: FunctionDefinition) { value: '', }, sortText: 'D', - command: TRIGGER_SUGGESTION_COMMAND, + command: hasArgs ? TRIGGER_SUGGESTION_COMMAND : undefined, }; } -export const isCompatibleFunctionName = (fnName: string, command: string) => { - const fnSupportedByCommand = allFunctions.filter(({ supportedCommands }) => - supportedCommands.includes(command) - ); - return fnSupportedByCommand.some(({ name }) => name === fnName); -}; - export const getCompatibleFunctionDefinition = ( command: string, option: string | undefined, @@ -100,13 +97,17 @@ export function getAutocompleteCommandDefinition( const commandSignature = getCommandSignature(commandDefinition); return { label: commandDefinition.name, - insertText: commandDefinition.name, + insertText: commandDefinition.signature.params.length + ? `${commandDefinition.name} $0` + : commandDefinition.name, + insertTextRules: 4, // monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, kind: 0, detail: commandDefinition.description, documentation: { value: buildDocumentation(commandSignature.declaration, commandSignature.examples), }, sortText: 'A', + command: TRIGGER_SUGGESTION_COMMAND, }; } @@ -205,7 +206,10 @@ export const buildMatchingFieldsDefinition = ( sortText: 'D', })); -export const buildOptionDefinition = (option: CommandOptionsDefinition) => { +export const buildOptionDefinition = ( + option: CommandOptionsDefinition, + isAssignType: boolean = false +) => { const completeItem: AutocompleteCommandDefinition = { label: option.name, insertText: option.name, @@ -217,6 +221,11 @@ export const buildOptionDefinition = (option: CommandOptionsDefinition) => { completeItem.insertText = `${option.wrapped[0]}${option.name} $0 ${option.wrapped[1]}`; completeItem.insertTextRules = 4; // monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet; } + if (isAssignType) { + completeItem.insertText = `${option.name} = $0`; + completeItem.insertTextRules = 4; // monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet; + completeItem.command = TRIGGER_SUGGESTION_COMMAND; + } return completeItem; }; @@ -305,7 +314,14 @@ export function getCompatibleLiterals(commandName: string, types: string[], name if (names) { const index = types.indexOf('string'); if (/pattern/.test(names[index])) { - suggestions.push(...buildConstantsDefinitions(['"a-pattern"'], 'A pattern string')); + suggestions.push( + ...buildConstantsDefinitions( + [commandName === 'grok' ? '"%{WORD:firstWord}"' : '"%{firstWord}"'], + i18n.translate('monaco.esql.autocomplete.aPatternString', { + defaultMessage: 'A pattern string', + }) + ) + ); } else { suggestions.push(...buildConstantsDefinitions(['string'], '')); } diff --git a/packages/kbn-monaco/src/esql/lib/ast/code_actions/index.test.ts b/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.test.ts similarity index 85% rename from packages/kbn-monaco/src/esql/lib/ast/code_actions/index.test.ts rename to packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.test.ts index 58d825ef68aea1..4a69bb30a98061 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/code_actions/index.test.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.test.ts @@ -8,7 +8,7 @@ import { EditorError } from '../../../../types'; import { CharStreams } from 'antlr4ts'; -import { getActions } from '.'; +import { getActions } from './actions'; import { getParser, ROOT_STATEMENT } from '../../antlr_facade'; import { ESQLErrorListener } from '../../monaco/esql_error_listener'; import { AstListener } from '../ast_factory'; @@ -63,6 +63,7 @@ function getCallbackMocks() { enrichFields: ['other-field', 'yetAnotherField'], }, ]), + getMetaFields: jest.fn(async () => ['_index', '_id', '_source', '_score']), }; } @@ -181,6 +182,32 @@ describe('quick fixes logic', () => { testQuickFixes(`FROM index | ENRICH policy ON stringField WITH yetAnotherField2`, [ 'yetAnotherField', ]); + + describe('metafields spellchecks', () => { + testQuickFixes(`FROM index [metadata _i_ndex]`, ['_index']); + testQuickFixes(`FROM index [metadata _id, _i_ndex]`, ['_index']); + testQuickFixes(`FROM index [METADATA _id, _i_ndex]`, ['_index']); + }); + }); + + describe('fixing meta fields spellchecks', () => { + for (const command of ['KEEP', 'DROP', 'EVAL']) { + testQuickFixes(`FROM index | ${command} stringField`, []); + // strongField => stringField + testQuickFixes(`FROM index | ${command} strongField`, ['stringField']); + testQuickFixes(`FROM index | ${command} numberField, strongField`, ['stringField']); + } + testQuickFixes(`FROM index | EVAL round(strongField)`, ['stringField']); + testQuickFixes(`FROM index | EVAL var0 = round(strongField)`, ['stringField']); + testQuickFixes(`FROM index | WHERE round(strongField) > 0`, ['stringField']); + testQuickFixes(`FROM index | WHERE 0 < round(strongField)`, ['stringField']); + testQuickFixes(`FROM index | RENAME strongField as newField`, ['stringField']); + // This levarage the knowledge of the enrich policy fields to suggest the right field + testQuickFixes(`FROM index | ENRICH policy | KEEP yetAnotherField2`, ['yetAnotherField']); + testQuickFixes(`FROM index | ENRICH policy ON strongField`, ['stringField']); + testQuickFixes(`FROM index | ENRICH policy ON stringField WITH yetAnotherField2`, [ + 'yetAnotherField', + ]); }); describe('fixing policies spellchecks', () => { diff --git a/packages/kbn-monaco/src/esql/lib/ast/code_actions/index.ts b/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts similarity index 91% rename from packages/kbn-monaco/src/esql/lib/ast/code_actions/index.ts rename to packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts index 94079d1693b7f4..5adcd2fdde7c65 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/code_actions/index.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts @@ -15,19 +15,21 @@ import { } from '../shared/resources_helpers'; import { getAllFunctions, isSourceItem, shouldBeQuotedText } from '../shared/helpers'; import { ESQLCallbacks } from '../shared/types'; -import { AstProviderFn, ESQLAst } from '../types'; +import { AstProviderFn, ESQLAst, ESQLCommand } from '../types'; import { buildQueryForFieldsFromSource } from '../validation/helpers'; type GetSourceFn = () => Promise; type GetFieldsByTypeFn = (type: string | string[], ignored?: string[]) => Promise; type GetPoliciesFn = () => Promise; type GetPolicyFieldsFn = (name: string) => Promise; +type GetMetaFieldsFn = () => Promise; interface Callbacks { getSources: GetSourceFn; getFieldsByType: GetFieldsByTypeFn; getPolicies: GetPoliciesFn; getPolicyFields: GetPolicyFieldsFn; + getMetaFields: GetMetaFieldsFn; } function getFieldsByTypeRetriever(queryString: string, resourceRetriever?: ESQLCallbacks) { @@ -64,6 +66,19 @@ function getSourcesRetriever(resourceRetriever?: ESQLCallbacks) { }; } +export function getMetaFieldsRetriever( + queryString: string, + commands: ESQLCommand[], + callbacks?: ESQLCallbacks +) { + return async () => { + if (!callbacks || !callbacks.getMetaFields) { + return []; + } + return await callbacks.getMetaFields(); + }; +} + export const getCompatibleFunctionDefinitions = ( command: string, option: string | undefined, @@ -264,6 +279,18 @@ async function getSpellingActionForFunctions( ); } +async function getSpellingActionForMetadata( + error: monaco.editor.IMarkerData, + uri: monaco.Uri, + queryString: string, + ast: ESQLAst, + { getMetaFields }: Callbacks +) { + const errorText = queryString.substring(error.startColumn - 1, error.endColumn - 1); + const possibleMetafields = await getSpellingPossibilities(getMetaFields, errorText); + return wrapIntoSpellingChangeAction(error, uri, possibleMetafields); +} + function wrapIntoSpellingChangeAction( error: monaco.editor.IMarkerData, uri: monaco.Uri, @@ -310,12 +337,14 @@ export async function getActions( const { getFieldsByType } = getFieldsByTypeRetriever(queryForFields, resourceRetriever); const getSources = getSourcesRetriever(resourceRetriever); const { getPolicies, getPolicyFields } = getPolicyRetriever(resourceRetriever); + const getMetaFields = getMetaFieldsRetriever(innerText, ast, resourceRetriever); const callbacks = { getFieldsByType, getSources, getPolicies, getPolicyFields, + getMetaFields, }; // Markers are sent only on hover and are limited to the hovered area @@ -360,6 +389,16 @@ export async function getActions( ); actions.push(...fnsSpellChanges); break; + case 'unknownMetadataField': + const metadataSpellChanges = await getSpellingActionForMetadata( + error, + model.uri, + innerText, + ast, + callbacks + ); + actions.push(...metadataSpellChanges); + break; case 'wrongQuotes': // it is a syntax error, so location won't be helpful here const [, errorText] = error.message.split('at '); diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts index 870c028835e1fa..841d6728fc5ed0 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts @@ -334,6 +334,31 @@ export const builtinFunctions: FunctionDefinition[] = [ }, ], }, + ...[ + { + name: 'is null', + description: i18n.translate('monaco.esql.definition.isNullDoc', { + defaultMessage: 'Predicate for NULL comparison: returns true if the value is NULL', + }), + }, + { + name: 'is not null', + description: i18n.translate('monaco.esql.definition.isNotNullDoc', { + defaultMessage: 'Predicate for NULL comparison: returns true if the value is not NULL', + }), + }, + ].map(({ name, description }) => ({ + type: 'builtin', + name, + description, + supportedCommands: ['eval', 'where', 'row'], + signatures: [ + { + params: [{ name: 'left', type: 'any' }], + returnType: 'boolean', + }, + ], + })), { type: 'builtin' as const, name: '=', diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/commands.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/commands.ts index dcc9e6000d0090..e405519d79ae98 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/commands.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/commands.ts @@ -72,10 +72,24 @@ export const commandDefinitions: CommandDefinition[] = [ examples: ['… | stats avg = avg(a)', '… | stats sum(b) by b', '… | stats sum(b) by b % 2'], signature: { multipleParams: true, - params: [{ name: 'expression', type: 'function' }], + params: [{ name: 'expression', type: 'function', optional: true }], }, options: [byOption], modes: [], + validate: (command: ESQLCommand) => { + const messages: ESQLMessage[] = []; + if (!command.args.length) { + messages.push({ + location: command.location, + text: i18n.translate('monaco.esql.validation.statsNoArguments', { + defaultMessage: 'At least one aggregation or grouping expression required in [STATS]', + }), + type: 'error', + code: 'statsNoArguments', + }); + } + return messages; + }, }, { name: 'eval', @@ -275,7 +289,7 @@ export const commandDefinitions: CommandDefinition[] = [ modes: [], signature: { multipleParams: false, - params: [{ name: 'column', type: 'column', innerType: 'list' }], + params: [{ name: 'column', type: 'column', innerType: 'any' }], }, }, { diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts index a7da512c2a3dd0..25cc3ce27d77c2 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts @@ -221,7 +221,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ { name: 'words', type: 'string' }, { name: 'separator', type: 'string' }, ], - returnType: 'string[]', + returnType: 'string', examples: [`ROW words="foo;bar;baz;qux;quux;corge" | EVAL word = SPLIT(words, ";")`], }, ], @@ -873,7 +873,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }), signatures: [ { - params: [{ name: 'multivalue', type: 'number[]' }], + params: [{ name: 'multivalue', type: 'number' }], returnType: 'number', examples: ['row a = [1, 2, 3] | eval mv_avg(a)'], }, @@ -888,7 +888,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ signatures: [ { params: [ - { name: 'multivalue', type: 'string[]' }, + { name: 'multivalue', type: 'string' }, { name: 'delimeter', type: 'string' }, ], returnType: 'string', @@ -904,7 +904,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }), signatures: [ { - params: [{ name: 'multivalue', type: 'any[]' }], + params: [{ name: 'multivalue', type: 'any' }], returnType: 'number', examples: ['row a = [1, 2, 3] | eval mv_count(a)'], }, @@ -917,8 +917,8 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }), signatures: [ { - params: [{ name: 'multivalue', type: 'any[]' }], - returnType: 'any[]', + params: [{ name: 'multivalue', type: 'any' }], + returnType: 'any', examples: ['row a = [2, 2, 3] | eval mv_dedupe(a)'], }, ], @@ -959,7 +959,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }), signatures: [ { - params: [{ name: 'multivalue', type: 'number[]' }], + params: [{ name: 'multivalue', type: 'number' }], returnType: 'number', examples: ['row a = [1, 2, 3] | eval mv_max(a)'], }, @@ -973,7 +973,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }), signatures: [ { - params: [{ name: 'multivalue', type: 'number[]' }], + params: [{ name: 'multivalue', type: 'number' }], returnType: 'number', examples: ['row a = [1, 2, 3] | eval mv_min(a)'], }, @@ -987,7 +987,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }), signatures: [ { - params: [{ name: 'multivalue', type: 'number[]' }], + params: [{ name: 'multivalue', type: 'number' }], returnType: 'number', examples: ['row a = [1, 2, 3] | eval mv_median(a)'], }, @@ -1001,7 +1001,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }), signatures: [ { - params: [{ name: 'multivalue', type: 'number[]' }], + params: [{ name: 'multivalue', type: 'number' }], returnType: 'number', examples: ['row a = [1, 2, 3] | eval mv_sum(a)'], }, diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/helpers.ts index 409aaf762475e3..3f2c32002812da 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/helpers.ts @@ -6,28 +6,7 @@ * Side Public License, v 1. */ -import { CommandDefinition, CommandOptionsDefinition, FunctionDefinition } from './types'; - -export function getCommandOrOptionsSignature({ - name, - signature, - ...rest -}: CommandDefinition | CommandOptionsDefinition): string { - const args = signature.params - .map(({ name: argName, type }) => { - return `<${argName}>`; - }) - .join(' '); - const optionArgs = - 'options' in rest ? rest.options.map(getCommandOrOptionsSignature).join(' ') : ''; - const signatureString = `${name.toUpperCase()} ${args}${ - signature.multipleParams ? `[, ${args}]` : '' - }${optionArgs ? ' ' + optionArgs : ''}`; - if ('wrapped' in rest && rest.wrapped) { - return `${rest.wrapped[0]}${signatureString}${rest.wrapped[1]}${rest.optional ? '?' : ''}`; - } - return signatureString; -} +import { CommandDefinition, FunctionDefinition } from './types'; export function getFunctionSignatures( { name, signatures }: FunctionDefinition, diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/options.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/options.ts index 76f3ca69b71127..efcfbb9c602438 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/options.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/options.ts @@ -7,7 +7,7 @@ */ import { i18n } from '@kbn/i18n'; -import { isLiteralItem } from '../shared/helpers'; +import { isColumnItem, isLiteralItem } from '../shared/helpers'; import { ESQLCommandOption, ESQLMessage } from '../types'; import { CommandOptionsDefinition } from './types'; @@ -34,6 +34,32 @@ export const metadataOption: CommandOptionsDefinition = { }, optional: true, wrapped: ['[', ']'], + skipCommonValidation: true, + validate: (option, command, references) => { + const messages: ESQLMessage[] = []; + const fields = option.args.filter(isColumnItem); + const metadataFieldsAvailable = references as unknown as Set; + if (metadataFieldsAvailable.size > 0) { + for (const field of fields) { + if (!metadataFieldsAvailable.has(field.name)) { + messages.push({ + location: field.location, + text: i18n.translate('monaco.esql.validation.wrongMetadataArgumentType', { + defaultMessage: + 'Metadata field [{value}] is not available. Available metadata fields are: [{availableFields}]', + values: { + value: field.name, + availableFields: Array.from(metadataFieldsAvailable).join(', '), + }, + }), + type: 'error', + code: 'unknownMetadataField', + }); + } + } + } + return messages; + }, }; export const asOption: CommandOptionsDefinition = { diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts index c6ea2229b230a9..f77afa8731bb79 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts @@ -57,7 +57,11 @@ export interface CommandOptionsDefinition extends CommandBaseDefinition { wrapped?: string[]; optional: boolean; skipCommonValidation?: boolean; - validate?: (option: ESQLCommandOption, command: ESQLCommand) => ESQLMessage[]; + validate?: ( + option: ESQLCommandOption, + command: ESQLCommand, + references?: unknown + ) => ESQLMessage[]; } export interface CommandModeDefinition extends CommandBaseDefinition { diff --git a/packages/kbn-monaco/src/esql/lib/ast/hover/hover.test.ts b/packages/kbn-monaco/src/esql/lib/ast/hover/hover.test.ts new file mode 100644 index 00000000000000..9acc9039ec81f1 --- /dev/null +++ b/packages/kbn-monaco/src/esql/lib/ast/hover/hover.test.ts @@ -0,0 +1,214 @@ +/* + * Copyright 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 { monaco } from '../../../../monaco_imports'; +import { CharStreams } from 'antlr4ts'; +import { getParser, ROOT_STATEMENT } from '../../antlr_facade'; +import { ESQLErrorListener } from '../../monaco/esql_error_listener'; +import { AstListener } from '../ast_factory'; +import { getHoverItem } from './hover'; +import { getFunctionDefinition } from '../shared/helpers'; +import { getFunctionSignatures } from '../definitions/helpers'; + +const fields: Array<{ name: string; type: string; suggestedAs?: string }> = [ + ...['string', 'number', 'date', 'boolean', 'ip'].map((type) => ({ + name: `${type}Field`, + type, + })), + { name: 'any#Char$Field', type: 'number', suggestedAs: '`any#Char$Field`' }, + { name: 'kubernetes.something.something', type: 'number' }, +]; + +const indexes = ( + [] as Array<{ name: string; hidden: boolean; suggestedAs: string | undefined }> +).concat( + ['a', 'index', 'otherIndex', '.secretIndex', 'my-index'].map((name) => ({ + name, + hidden: name.startsWith('.'), + suggestedAs: undefined, + })), + ['my-index[quoted]', 'my-index$', 'my_index{}'].map((name) => ({ + name, + hidden: false, + suggestedAs: `\`${name}\``, + })) +); +const policies = [ + { + name: 'policy', + sourceIndices: ['enrichIndex1'], + matchField: 'otherStringField', + enrichFields: ['otherField', 'yetAnotherField', 'yet-special-field'], + suggestedAs: undefined, + }, + ...['my-policy[quoted]', 'my-policy$', 'my_policy{}'].map((name) => ({ + name, + sourceIndices: ['enrichIndex1'], + matchField: 'otherStringField', + enrichFields: ['otherField', 'yetAnotherField', 'yet-special-field'], + suggestedAs: `\`${name}\``, + })), +]; + +function createCustomCallbackMocks( + customFields: Array<{ name: string; type: string }> | undefined, + customSources: Array<{ name: string; hidden: boolean }> | undefined, + customPolicies: + | Array<{ + name: string; + sourceIndices: string[]; + matchField: string; + enrichFields: string[]; + }> + | undefined +) { + const finalFields = customFields || fields; + const finalSources = customSources || indexes; + const finalPolicies = customPolicies || policies; + return { + getFieldsFor: jest.fn(async () => finalFields), + getSources: jest.fn(async () => finalSources), + getPolicies: jest.fn(async () => finalPolicies), + getMetaFields: jest.fn(async () => ['_index', '_score']), + }; +} + +function createModelAndPosition(text: string, string: string) { + return { + model: { getValue: () => text } as monaco.editor.ITextModel, + // bumo the column by one as the internal logic has a -1 offset when converting frmo monaco + position: { lineNumber: 1, column: text.lastIndexOf(string) + 1 } as monaco.Position, + }; +} + +describe('hover', () => { + const getAstAndErrors = async (text: string) => { + const errorListener = new ESQLErrorListener(); + const parseListener = new AstListener(); + const parser = getParser(CharStreams.fromString(text), errorListener, parseListener); + + parser[ROOT_STATEMENT](); + + return { ...parseListener.getAst(), errors: [] }; + }; + + type TestArgs = [ + string, + string, + (n: string) => string[], + Parameters? + ]; + + const testSuggestionsFn = ( + statement: string, + triggerString: string, + contentFn: (name: string) => string[], + customCallbacksArgs: Parameters = [ + undefined, + undefined, + undefined, + ], + { only, skip }: { only?: boolean; skip?: boolean } = {} + ) => { + const token: monaco.CancellationToken = { + isCancellationRequested: false, + onCancellationRequested: () => ({ dispose: () => {} }), + }; + + const { model, position } = createModelAndPosition(statement, triggerString); + const testFn = only ? test.only : skip ? test.skip : test; + const expected = contentFn(triggerString); + + testFn( + `${statement} (hover: "${triggerString}" @ ${position.column} - ${ + position.column + triggerString.length + })=> ["${expected.join('","')}"]`, + async () => { + const callbackMocks = createCustomCallbackMocks(...customCallbacksArgs); + const { contents } = await getHoverItem( + model, + position, + token, + async (text) => (text ? await getAstAndErrors(text) : { ast: [], errors: [] }), + callbackMocks + ); + expect(contents.map(({ value }) => value)).toEqual(expected); + } + ); + }; + + // Enrich the function to work with .only and .skip as regular test function + const testSuggestions = Object.assign(testSuggestionsFn, { + skip: (...args: TestArgs) => { + const paddingArgs = [[undefined, undefined, undefined]].slice(args.length - 1); + return testSuggestionsFn( + ...((args.length > 1 ? [...args, ...paddingArgs] : args) as TestArgs), + { + skip: true, + } + ); + }, + only: (...args: TestArgs) => { + const paddingArgs = [[undefined, undefined, undefined]].slice(args.length - 1); + return testSuggestionsFn( + ...((args.length > 1 ? [...args, ...paddingArgs] : args) as TestArgs), + { + only: true, + } + ); + }, + }); + + describe('policies', () => { + function createPolicyContent( + policyName: string, + customPolicies: Array = policies + ) { + const policyHit = customPolicies.find((p) => p.name === policyName); + if (!policyHit) { + return []; + } + return [ + `**Indexes**: ${policyHit.sourceIndices.join(', ')}`, + `**Matching field**: ${policyHit.matchField}`, + `**Fields**: ${policyHit.enrichFields.join(', ')}`, + ]; + } + testSuggestions( + `from a | enrich policy on b with var0 = stringField`, + 'policy', + createPolicyContent + ); + testSuggestions(`from a | enrich policy`, 'policy', createPolicyContent); + testSuggestions(`from a | enrich policy on b `, 'policy', createPolicyContent); + testSuggestions(`from a | enrich policy on b `, 'non-policy', createPolicyContent); + }); + describe('functions', () => { + function createFunctionContent(fn: string) { + const fnDefinition = getFunctionDefinition(fn); + if (!fnDefinition) { + return []; + } + return [getFunctionSignatures(fnDefinition)[0].declaration, fnDefinition.description]; + } + testSuggestions(`from a | eval round(numberField)`, 'round', createFunctionContent); + testSuggestions( + `from a | eval nonExistentFn(numberField)`, + 'nonExistentFn', + createFunctionContent + ); + testSuggestions(`from a | stats avg(round(numberField))`, 'round', createFunctionContent); + testSuggestions(`from a | stats avg(round(numberField))`, 'avg', createFunctionContent); + testSuggestions( + `from a | stats avg(nonExistentFn(numberField))`, + 'nonExistentFn', + createFunctionContent + ); + testSuggestions(`from a | where round(numberField) > 0`, 'round', createFunctionContent); + }); +}); diff --git a/packages/kbn-monaco/src/esql/lib/ast/hover/index.ts b/packages/kbn-monaco/src/esql/lib/ast/hover/hover.ts similarity index 95% rename from packages/kbn-monaco/src/esql/lib/ast/hover/index.ts rename to packages/kbn-monaco/src/esql/lib/ast/hover/hover.ts index b118a7dec5489e..c612571e13ce73 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/hover/index.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/hover/hover.ts @@ -59,7 +59,7 @@ export async function getHoverItem( { value: `${i18n.translate('monaco.esql.hover.policyIndexes', { defaultMessage: '**Indexes**', - })}: ${policyMetadata.sourceIndices}`, + })}: ${policyMetadata.sourceIndices.join(', ')}`, }, { value: `${i18n.translate('monaco.esql.hover.policyMatchingField', { @@ -69,7 +69,7 @@ export async function getHoverItem( { value: `${i18n.translate('monaco.esql.hover.policyEnrichedFields', { defaultMessage: '**Fields**', - })}: ${policyMetadata.enrichFields}`, + })}: ${policyMetadata.enrichFields.join(', ')}`, }, ], }; diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts b/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts index aecb9afb97db99..aecf9340b945c0 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts @@ -139,7 +139,7 @@ export function getAstContext(innerText: string, ast: ESQLAst, offset: number) { const { command, option, setting, node } = findAstPosition(ast, offset); if (node) { if (node.type === 'function') { - if (['in', 'not_in'].includes(node.name)) { + if (['in', 'not_in'].includes(node.name) && Array.isArray(node.args[1])) { // command ... a in ( ) return { type: 'list' as const, command, node, option, setting }; } diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/shared/helpers.ts index b0a72c817ac18e..f4c73a3f957762 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/shared/helpers.ts @@ -92,13 +92,24 @@ export function isIncompleteItem(arg: ESQLAstItem): boolean { return !arg || (!Array.isArray(arg) && arg.incomplete); } -export function isMathFunction(char: string) { +export function isMathFunction(query: string, offset: number) { + const queryTrimmed = query.substring(0, offset).trimEnd(); + // try to get the full operation token (e.g. "+", "in", "like", etc...) but it requires the token + // to be spaced out from a field/function (e.g. "field + ") so it is subject to issues + const [opString] = queryTrimmed.split(' ').reverse(); // compare last char for all math functions // limit only to 2 chars operators - return builtinFunctions - .filter(({ name }) => name.length < 3) - .map(({ name }) => name[name.length - 1]) - .some((op) => char === op); + const fns = builtinFunctions.filter(({ name }) => name.length < 3).map(({ name }) => name); + const tokenMatch = fns.some((op) => opString === op); + // there's a match, that's good + if (tokenMatch) { + return true; + } + // either there's no match or it is the case where field/function and op are not spaced out + // e.g "field+" or "fn()+" + // so try to extract the last char and compare it with the single char math functions + const singleCharFns = fns.filter((name) => name.length === 1); + return singleCharFns.some((c) => c === opString[opString.length - 1]); } export function isComma(char: string) { @@ -293,10 +304,7 @@ export function getAllArrayValues(arg: ESQLAstItem) { if (subArg.type === 'literal') { values.push(String(subArg.value)); } - if (subArg.type === 'column') { - values.push(subArg.name); - } - if (subArg.type === 'timeInterval') { + if (isColumnItem(subArg) || isTimeIntervalItem(subArg)) { values.push(subArg.name); } if (subArg.type === 'function') { @@ -359,11 +367,6 @@ export function isEqualType( if (item.type === 'literal') { return compareLiteralType(argType, item); } - if (item.type === 'list') { - const listType = `${item.values[0].literalType}[]`; - // argType = 'list' means any list value is ok - return argType === item.type || argType === listType; - } if (item.type === 'function') { if (isSupportedFunction(item.name, parentCommand).supported) { const fnDef = buildFunctionLookup().get(item.name)!; @@ -385,32 +388,6 @@ export function isEqualType( const wrappedTypes = Array.isArray(hit.type) ? hit.type : [hit.type]; return wrappedTypes.some((ct) => argType === ct); } - if (item.type === 'source') { - return item.sourceType === argType; - } -} - -export function endsWithOpenBracket(text: string) { - return /\($/.test(text); -} - -export function isDateFunction(fnName: string) { - // TODO: improve this and rely in signature in the future - return ['to_datetime', 'date_trunc', 'date_parse'].includes(fnName.toLowerCase()); -} - -export function getDateMathOperation() { - return builtinFunctions.filter(({ name }) => ['+', '-'].includes(name)); -} - -export function getDurationItemsWithQuantifier(quantifier: number = 1) { - return timeLiterals - .filter(({ name }) => !/s$/.test(name)) - .map(({ name, ...rest }) => ({ - label: `${quantifier} ${name}`, - insertText: `${quantifier} ${name}`, - ...rest, - })); } function fuzzySearch(fuzzyName: string, resources: IterableIterator) { diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/types.ts b/packages/kbn-monaco/src/esql/lib/ast/shared/types.ts index ceb507f59784ab..7c6eaf74f1282c 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/types.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/shared/types.ts @@ -13,6 +13,7 @@ type CallbackFn = (ctx?: Options) => Result[] | P export interface ESQLCallbacks { getSources?: CallbackFn<{}, { name: string; hidden: boolean }>; getFieldsFor?: CallbackFn<{ query: string }, { name: string; type: string }>; + getMetaFields?: CallbackFn; getPolicies?: CallbackFn< {}, { name: string; sourceIndices: string[]; matchField: string; enrichFields: string[] } diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/helpers.ts index 51015e0d8d09df..c93a8ad560349a 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/helpers.ts @@ -19,3 +19,16 @@ export function buildQueryForFieldsInPolicies(policies: ESQLPolicy[]) { .flatMap(({ sourceIndices }) => sourceIndices) .join(', ')} | keep ${policies.flatMap(({ enrichFields }) => enrichFields).join(', ')}`; } + +export function buildQueryForFieldsForStringSources(queryString: string, ast: ESQLAst) { + // filter out the query until the last GROK or DISSECT command + const lastCommandIndex = + ast.length - [...ast].reverse().findIndex(({ name }) => ['grok', 'dissect'].includes(name)); + // we're sure it's not -1 because we check the commands chain before calling this function + const nextCommandIndex = Math.min(lastCommandIndex + 1, ast.length - 1); + const customQuery = queryString.substring(0, ast[nextCommandIndex].location.min).trimEnd(); + if (customQuery[customQuery.length - 1] === '|') { + return customQuery.substring(0, customQuery.length - 1); + } + return customQuery; +} diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/resources.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/resources.ts index 24c6de0f7db6f2..76806b53855136 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/resources.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/resources.ts @@ -15,7 +15,11 @@ import { } from '../shared/resources_helpers'; import type { ESQLCallbacks } from '../shared/types'; import type { ESQLCommand } from '../types'; -import { buildQueryForFieldsFromSource, buildQueryForFieldsInPolicies } from './helpers'; +import { + buildQueryForFieldsForStringSources, + buildQueryForFieldsFromSource, + buildQueryForFieldsInPolicies, +} from './helpers'; import type { ESQLRealField, ESQLPolicy } from './types'; export async function retrieveFields( @@ -83,3 +87,23 @@ export async function retrievePoliciesFields( ); return await getFieldsByTypeHelper(customQuery, callbacks).getFieldsMap(); } + +export async function retrieveMetadataFields(callbacks?: ESQLCallbacks): Promise> { + if (!callbacks || !callbacks.getMetaFields) { + return new Set(); + } + const fields = await callbacks.getMetaFields(); + return new Set(fields); +} + +export async function retrieveFieldsFromStringSources( + queryString: string, + commands: ESQLCommand[], + callbacks?: ESQLCallbacks +): Promise> { + if (!callbacks) { + return new Map(); + } + const customQuery = buildQueryForFieldsForStringSources(queryString, commands); + return await getFieldsByTypeHelper(customQuery, callbacks).getFieldsMap(); +} diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts index dd2c662d018a92..04b40a5bfbbaca 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts @@ -32,6 +32,7 @@ export interface ReferenceMaps { variables: Map; fields: Map; policies: Map; + metadataFields: Set; } export interface ValidationErrors { diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts index 1f7ea3750b3bd4..c1ea7d1bdec8c4 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts @@ -37,12 +37,8 @@ function getCallbackMocks() { ? [{ name: 'unsupported_field', type: 'unsupported' }] : [ ...fieldTypes.map((type) => ({ name: `${camelCase(type)}Field`, type })), - { name: 'any#Char$ field', type: 'number' }, + { name: 'any#Char$Field', type: 'number' }, { name: 'kubernetes.something.something', type: 'number' }, - { - name: `listField`, - type: `list`, - }, { name: '@timestamp', type: 'date' }, ] ), @@ -66,6 +62,7 @@ function getCallbackMocks() { enrichFields: ['otherField', 'yetAnotherField'], }, ]), + getMetaFields: jest.fn(async () => ['_id', '_source']), }; } @@ -113,7 +110,7 @@ function getFieldName( : `${camelCase(typeString)}Field`; } -function getMultiValue(type: 'string[]' | 'number[]' | 'boolean[]' | 'any[]') { +function getMultiValue(type: string) { if (/string|any/.test(type)) { return `["a", "b", "c"]`; } @@ -163,9 +160,9 @@ function getFieldMapping( ...rest, }; } - if (['string[]', 'number[]', 'boolean[]', 'any[]'].includes(typeString)) { + if (/[]$/.test(typeString)) { return { - name: getMultiValue(typeString as 'string[]' | 'number[]' | 'boolean[]' | 'any[]'), + name: getMultiValue(typeString), type, ...rest, }; @@ -269,6 +266,9 @@ describe('validation logic', () => { testErrorsAndWarnings(`from index [metadata _id]`, []); testErrorsAndWarnings(`from index [METADATA _id, _source]`, []); + testErrorsAndWarnings(`from index [METADATA _id, _source2]`, [ + 'Metadata field [_source2] is not available. Available metadata fields are: [_id, _source]', + ]); testErrorsAndWarnings(`from index [metadata _id, _source] [METADATA _id2]`, [ 'SyntaxError: expected {, PIPE} but found "["', ]); @@ -293,6 +293,8 @@ describe('validation logic', () => { testErrorsAndWarnings(`from *:indexes [METADATA _id]`, []); testErrorsAndWarnings('from .secretIndex', []); testErrorsAndWarnings('from my-index', []); + testErrorsAndWarnings('from numberField', ['Unknown index [numberField]']); + testErrorsAndWarnings('from policy', ['Unknown index [policy]']); }); describe('row', () => { @@ -309,12 +311,25 @@ describe('validation logic', () => { testErrorsAndWarnings('row a=1, missing_column', ['Unknown column [missing_column]']); testErrorsAndWarnings('row a=1, b = average()', ['Unknown function [average]']); testErrorsAndWarnings('row a = [1, 2, 3]', []); + testErrorsAndWarnings('row a = [true, false]', []); + testErrorsAndWarnings('row a = ["a", "b"]', []); + testErrorsAndWarnings('row a = null', []); testErrorsAndWarnings('row a = (1)', []); testErrorsAndWarnings('row a = (1, 2, 3)', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ","', "SyntaxError: extraneous input ')' expecting ", ]); + for (const bool of ['true', 'false']) { + testErrorsAndWarnings(`row a=NOT ${bool}`, []); + testErrorsAndWarnings(`row NOT ${bool}`, []); + } + testErrorsAndWarnings('row var = 1 in ', ['SyntaxError: expected {LP} but found ""']); + testErrorsAndWarnings('row var = 1 in (', [ + 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + 'Error building [in]: expects exactly 2 arguments, passed 1 instead.', + ]); + testErrorsAndWarnings('row var = 1 not in ', ['SyntaxError: expected {LP} but found ""']); testErrorsAndWarnings('row var = 1 in (1, 2, 3)', []); testErrorsAndWarnings('row var = 5 in (1, 2, 3)', []); testErrorsAndWarnings('row var = 5 not in (1, 2, 3)', []); @@ -512,6 +527,19 @@ describe('validation logic', () => { "SyntaxError: token recognition error at: 'a'", "SyntaxError: token recognition error at: 'h'", ]); + testErrorsAndWarnings('show numberField', [ + "SyntaxError: token recognition error at: 'n'", + "SyntaxError: token recognition error at: 'u'", + "SyntaxError: token recognition error at: 'm'", + "SyntaxError: token recognition error at: 'b'", + "SyntaxError: token recognition error at: 'e'", + "SyntaxError: token recognition error at: 'r'", + "SyntaxError: token recognition error at: 'Fi'", + "SyntaxError: token recognition error at: 'e'", + "SyntaxError: token recognition error at: 'l'", + "SyntaxError: token recognition error at: 'd'", + 'SyntaxError: expected {SHOW} but found ""', + ]); }); describe('limit', () => { @@ -551,7 +579,7 @@ describe('validation logic', () => { testErrorsAndWarnings('from index | keep missingField, numberField, dateField', [ 'Unknown column [missingField]', ]); - testErrorsAndWarnings('from index | keep `any#Char$ field`', []); + testErrorsAndWarnings('from index | keep `any#Char$Field`', []); testErrorsAndWarnings( 'from index | project ', [`SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ''`], @@ -604,7 +632,7 @@ describe('validation logic', () => { testErrorsAndWarnings('from index | drop missingField, numberField, dateField', [ 'Unknown column [missingField]', ]); - testErrorsAndWarnings('from index | drop `any#Char$ field`', []); + testErrorsAndWarnings('from index | drop `any#Char$Field`', []); testErrorsAndWarnings('from index | drop s*', []); testErrorsAndWarnings('from index | drop *Field', []); testErrorsAndWarnings('from index | drop s*Field', []); @@ -633,21 +661,19 @@ describe('validation logic', () => { testErrorsAndWarnings('from a | mv_expand ', [ "SyntaxError: missing {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} at ''", ]); - testErrorsAndWarnings('from a | mv_expand stringField', [ - 'MV_EXPAND only supports list type values, found [stringField] of type string', - ]); - - testErrorsAndWarnings(`from a | mv_expand listField`, []); + for (const type of ['string', 'number', 'date', 'boolean', 'ip']) { + testErrorsAndWarnings(`from a | mv_expand ${type}Field`, []); + } - testErrorsAndWarnings('from a | mv_expand listField, b', [ + testErrorsAndWarnings('from a | mv_expand numberField, b', [ "SyntaxError: token recognition error at: ','", "SyntaxError: extraneous input 'b' expecting ", ]); - testErrorsAndWarnings('row a = "a" | mv_expand a', [ - 'MV_EXPAND only supports list type values, found [a] of type string', - ]); + testErrorsAndWarnings('row a = "a" | mv_expand a', []); testErrorsAndWarnings('row a = [1, 2, 3] | mv_expand a', []); + testErrorsAndWarnings('row a = [true, false] | mv_expand a', []); + testErrorsAndWarnings('row a = ["a", "b"] | mv_expand a', []); }); describe('rename', () => { @@ -765,7 +791,7 @@ describe('validation logic', () => { testErrorsAndWarnings(`from a | where ${cond}`, []); testErrorsAndWarnings(`from a | where NOT ${cond}`, []); } - for (const nValue of ['1', '+1', '1 * 1', '-1', '1 / 1']) { + for (const nValue of ['1', '+1', '1 * 1', '-1', '1 / 1', '1.0', '1.5']) { testErrorsAndWarnings(`from a | where ${nValue} > 0`, []); testErrorsAndWarnings(`from a | where NOT ${nValue} > 0`, []); } @@ -779,6 +805,34 @@ describe('validation logic', () => { `Argument of [${op}] must be [number], found value [stringField] type [string]`, ]); } + + for (const nesting of [1, 2, 3, 4]) { + for (const evenOp of ['-', '+']) { + for (const oddOp of ['-', '+']) { + // This builds a combination of +/- operators + // i.e. ---- something, -+-+ something, +-+- something, etc... + const unaryCombination = Array(nesting) + .fill('- ') + .map((_, i) => (i % 2 ? oddOp : evenOp)) + .join(''); + testErrorsAndWarnings(`from a | where ${unaryCombination} numberField`, []); + testErrorsAndWarnings(`from a | where ${unaryCombination} round(numberField)`, []); + testErrorsAndWarnings(`from a | where 1 + ${unaryCombination} numberField`, []); + // still valid + testErrorsAndWarnings(`from a | where 1 ${unaryCombination} numberField`, []); + } + } + testErrorsAndWarnings( + `from a | where ${Array(nesting).fill('not ').join('')} booleanField`, + [] + ); + } + for (const wrongOp of ['*', '/', '%']) { + testErrorsAndWarnings(`from a | where ${wrongOp}+ numberField`, [ + `SyntaxError: extraneous input '${wrongOp}' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}`, + ]); + } + testErrorsAndWarnings(`from a | where numberField =~ 0`, [ 'Argument of [=~] must be [string], found value [numberField] type [number]', 'Argument of [=~] must be [string], found value [0] type [number]', @@ -830,6 +884,17 @@ describe('validation logic', () => { [] ); + for (const field of fieldTypes) { + testErrorsAndWarnings(`from a | where ${camelCase(field)}Field IS NULL`, []); + testErrorsAndWarnings(`from a | where ${camelCase(field)}Field IS null`, []); + testErrorsAndWarnings(`from a | where ${camelCase(field)}Field is null`, []); + testErrorsAndWarnings(`from a | where ${camelCase(field)}Field is NULL`, []); + testErrorsAndWarnings(`from a | where ${camelCase(field)}Field IS NOT NULL`, []); + testErrorsAndWarnings(`from a | where ${camelCase(field)}Field IS NOT null`, []); + testErrorsAndWarnings(`from a | where ${camelCase(field)}Field IS not NULL`, []); + testErrorsAndWarnings(`from a | where ${camelCase(field)}Field Is nOt NuLL`, []); + } + // Test that all functions work in where const numericOrStringFunctions = evalFunctionsDefinitions.filter(({ name, signatures }) => { return signatures.some( @@ -936,6 +1001,51 @@ describe('validation logic', () => { [] ); + testErrorsAndWarnings('from a | eval a=[1, 2, 3]', []); + testErrorsAndWarnings('from a | eval a=[true, false]', []); + testErrorsAndWarnings('from a | eval a=["a", "b"]', []); + testErrorsAndWarnings('from a | eval a=null', []); + + for (const field of fieldTypes) { + testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field IS NULL`, []); + testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field IS null`, []); + testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field is null`, []); + testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field is NULL`, []); + testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field IS NOT NULL`, []); + testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field IS NOT null`, []); + testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field IS not NULL`, []); + } + + for (const nesting of [1, 2, 3, 4]) { + for (const evenOp of ['-', '+']) { + for (const oddOp of ['-', '+']) { + // This builds a combination of +/- operators + // i.e. ---- something, -+-+ something, +-+- something, etc... + const unaryCombination = Array(nesting) + .fill('- ') + .map((_, i) => (i % 2 ? oddOp : evenOp)) + .join(''); + testErrorsAndWarnings(`from a | eval ${unaryCombination} numberField`, []); + testErrorsAndWarnings(`from a | eval a=${unaryCombination} numberField`, []); + testErrorsAndWarnings(`from a | eval a=${unaryCombination} round(numberField)`, []); + testErrorsAndWarnings(`from a | eval 1 + ${unaryCombination} numberField`, []); + // still valid + testErrorsAndWarnings(`from a | eval 1 ${unaryCombination} numberField`, []); + } + } + + testErrorsAndWarnings( + `from a | eval ${Array(nesting).fill('not ').join('')} booleanField`, + [] + ); + } + + for (const wrongOp of ['*', '/', '%']) { + testErrorsAndWarnings(`from a | eval ${wrongOp}+ numberField`, [ + `SyntaxError: extraneous input '${wrongOp}' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}`, + ]); + } + for (const { name, alias, signatures, ...defRest } of evalFunctionsDefinitions) { for (const { params, returnType } of signatures) { const fieldMapping = getFieldMapping(params); @@ -1113,6 +1223,27 @@ describe('validation logic', () => { testErrorsAndWarnings('from a | eval avg(numberField)', ['EVAL does not support function avg']); testErrorsAndWarnings('from a | stats avg(numberField) | eval `avg(numberField)` + 1', []); + testErrorsAndWarnings('from a | eval not', [ + 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + 'Error building [not]: expects exactly one argument, passed 0 instead.', + ]); + testErrorsAndWarnings('from a | eval in', [ + 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found "in"', + ]); + + testErrorsAndWarnings('from a | eval stringField in stringField', [ + "SyntaxError: missing '(' at 'stringField'", + 'SyntaxError: expected {COMMA, RP} but found ""', + ]); + + testErrorsAndWarnings('from a | eval stringField in stringField)', [ + "SyntaxError: missing '(' at 'stringField'", + 'Error building [in]: expects exactly 2 arguments, passed 1 instead.', + ]); + testErrorsAndWarnings('from a | eval stringField not in stringField', [ + "SyntaxError: missing '(' at 'stringField'", + 'SyntaxError: expected {COMMA, RP} but found ""', + ]); describe('date math', () => { testErrorsAndWarnings('from a | eval 1 anno', [ @@ -1161,7 +1292,13 @@ describe('validation logic', () => { }); describe('stats', () => { - testErrorsAndWarnings('from a | stats ', []); + testErrorsAndWarnings('from a | stats ', [ + 'At least one aggregation or grouping expression required in [STATS]', + ]); + testErrorsAndWarnings('from a | stats by stringField', []); + testErrorsAndWarnings('from a | stats by ', [ + 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', + ]); testErrorsAndWarnings('from a | stats numberField ', [ 'STATS expects an aggregate function, found [numberField]', ]); diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts index f8b1efe6fc53d0..67a31afd7fea98 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts @@ -59,6 +59,8 @@ import { retrieveFields, retrievePolicies, retrievePoliciesFields, + retrieveMetadataFields, + retrieveFieldsFromStringSources, } from './resources'; function validateFunctionLiteralArg( @@ -391,11 +393,6 @@ function validateFunction( return validateFn(astFunction, actualArg, argDef, references, parentCommand); }); failingSignature.push(...argValidationMessages); - - if (isSourceItem(actualArg)) { - // something went wrong with the AST translation - throw new Error('Source should not allowed as function argument'); - } } }); if (failingSignature.length) { @@ -485,48 +482,16 @@ function validateOption( } // use dedicate validate fn if provided if (optionDef.validate) { - messages.push(...optionDef.validate(option, command)); + messages.push(...optionDef.validate(option, command, referenceMaps.metadataFields)); } if (!optionDef.skipCommonValidation) { - option.args.forEach((arg, index) => { + option.args.forEach((arg) => { if (!Array.isArray(arg)) { if (!optionDef.signature.multipleParams) { - const argDef = optionDef.signature.params[index]; - if (!isEqualType(arg, argDef, referenceMaps, command.name)) { - const value = 'value' in arg ? arg.value : arg.name; - messages.push( - getMessageFromId({ - messageId: 'wrongArgumentType', - values: { - name: option.name, - argType: argDef.type, - value, - givenType: arg.type, - }, - locations: arg.location, - }) - ); - } if (isColumnItem(arg)) { messages.push(...validateColumnForCommand(arg, command.name, referenceMaps)); } } else { - const argDef = optionDef.signature.params[0]; - if (!isEqualType(arg, argDef, referenceMaps, command.name)) { - const value = 'value' in arg ? arg.value : arg.name; - messages.push( - getMessageFromId({ - messageId: 'wrongArgumentType', - values: { - name: argDef.name, - argType: argDef.type, - value, - givenType: arg.type, - }, - locations: arg.location, - }) - ); - } if (isColumnItem(arg)) { messages.push(...validateColumnForCommand(arg, command.name, referenceMaps)); } @@ -551,55 +516,40 @@ function validateSource( return messages; } const commandDef = getCommandDefinition(commandName); - if (commandDef.signature.params.every(({ type }) => type !== source.type)) { - const firstArg = commandDef.signature.params[0]; - messages.push( - getMessageFromId({ - messageId: 'wrongArgumentType', - values: { - name: firstArg.name, - argType: firstArg.type, - value: source.name, - givenType: source.type, - }, - locations: source.location, - }) - ); - } else { - // give up on validate if CCS for now - const hasCCS = hasCCSSource(source.name); - if (!hasCCS) { - const isWildcardAndNotSupported = - hasWildcard(source.name) && !commandDef.signature.params.some(({ wildcards }) => wildcards); - if (isWildcardAndNotSupported) { + // give up on validate if CCS for now + const hasCCS = hasCCSSource(source.name); + if (!hasCCS) { + const isWildcardAndNotSupported = + hasWildcard(source.name) && !commandDef.signature.params.some(({ wildcards }) => wildcards); + if (isWildcardAndNotSupported) { + messages.push( + getMessageFromId({ + messageId: 'wildcardNotSupportedForCommand', + values: { command: commandName.toUpperCase(), value: source.name }, + locations: source.location, + }) + ); + } else { + if (source.sourceType === 'index' && !sourceExists(source.name, sources)) { messages.push( getMessageFromId({ - messageId: 'wildcardNotSupportedForCommand', - values: { command: commandName.toUpperCase(), value: source.name }, + messageId: 'unknownIndex', + values: { name: source.name }, + locations: source.location, + }) + ); + } else if (source.sourceType === 'policy' && !policies.has(source.name)) { + messages.push( + getMessageFromId({ + messageId: 'unknownPolicy', + values: { name: source.name }, locations: source.location, }) ); - } else { - if (source.sourceType === 'index' && !sourceExists(source.name, sources)) { - messages.push( - getMessageFromId({ - messageId: 'unknownIndex', - values: { name: source.name }, - locations: source.location, - }) - ); - } else if (source.sourceType === 'policy' && !policies.has(source.name)) { - messages.push( - getMessageFromId({ - messageId: 'unknownPolicy', - values: { name: source.name }, - locations: source.location, - }) - ); - } } } } + return messages; } @@ -610,9 +560,6 @@ function validateColumnForCommand( ): ESQLMessage[] { const messages: ESQLMessage[] = []; - if (['from', 'show', 'limit'].includes(commandName)) { - return messages; - } if (commandName === 'row') { if (!references.variables.has(column.name)) { messages.push( @@ -636,11 +583,10 @@ function validateColumnForCommand( if (columnParamsWithInnerTypes.length) { // this should be guaranteed by the columnCheck above const columnRef = getColumnHit(nameHit, references)!; - if ( - columnParamsWithInnerTypes.every(({ innerType }) => { - return innerType !== columnRef.type; - }) - ) { + const hasSomeWrongInnerTypes = columnParamsWithInnerTypes.every(({ innerType }) => { + return innerType !== 'any' && innerType !== columnRef.type; + }); + if (hasSomeWrongInnerTypes) { const supportedTypes = columnParamsWithInnerTypes.map(({ innerType }) => innerType); messages.push( @@ -833,13 +779,15 @@ export async function validateAst( const { ast, errors } = await astProvider(queryString); - const [sources, availableFields, availablePolicies] = await Promise.all([ + const [sources, availableFields, availablePolicies, availableMetadataFields] = await Promise.all([ // retrieve the list of available sources retrieveSources(ast, callbacks), // retrieve available fields (if a source command has been defined) retrieveFields(queryString, ast, callbacks), // retrieve available policies (if an enrich command has been defined) retrievePolicies(ast, callbacks), + // retrieve available metadata fields + retrieveMetadataFields(callbacks), ]); if (availablePolicies.size && ast.filter(({ name }) => name === 'enrich')) { @@ -847,6 +795,21 @@ export async function validateAst( fieldsFromPoliciesMap.forEach((value, key) => availableFields.set(key, value)); } + if (ast.some(({ name }) => ['grok', 'dissect'].includes(name))) { + const fieldsFromGrokOrDissect = await retrieveFieldsFromStringSources( + queryString, + ast, + callbacks + ); + fieldsFromGrokOrDissect.forEach((value, key) => { + // if the field is already present, do not overwrite it + // Note: this can also overlap with some variables + if (!availableFields.has(key)) { + availableFields.set(key, value); + } + }); + } + const variables = collectVariables(ast, availableFields); // notify if the user is rewriting a column as variable with another type messages.push(...validateFieldsShadowing(availableFields, variables)); @@ -858,6 +821,7 @@ export async function validateAst( fields: availableFields, policies: availablePolicies, variables, + metadataFields: availableMetadataFields, }); messages.push(...commandMessages); } diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_ast_provider.ts b/packages/kbn-monaco/src/esql/lib/monaco/esql_ast_provider.ts index 485c7d89ee8324..d968d79e7c32e0 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_ast_provider.ts +++ b/packages/kbn-monaco/src/esql/lib/monaco/esql_ast_provider.ts @@ -10,10 +10,10 @@ import type { ESQLCallbacks } from '../ast/shared/types'; import { monaco } from '../../../monaco_imports'; import type { ESQLWorker } from '../../worker/esql_worker'; import { suggest } from '../ast/autocomplete/autocomplete'; -import { getHoverItem } from '../ast/hover'; +import { getHoverItem } from '../ast/hover/hover'; import { getSignatureHelp } from '../ast/signature'; import { validateAst } from '../ast/validation/validation'; -import { getActions } from '../ast/code_actions'; +import { getActions } from '../ast/code_actions/actions'; import { wrapAsMonacoMessage } from '../ast/shared/monaco_utils'; export class ESQLAstAdapter { diff --git a/packages/kbn-object-versioning/lib/content_management_services_versioning.ts b/packages/kbn-object-versioning/lib/content_management_services_versioning.ts index eb38de643f630f..9808ee96d32e58 100644 --- a/packages/kbn-object-versioning/lib/content_management_services_versioning.ts +++ b/packages/kbn-object-versioning/lib/content_management_services_versioning.ts @@ -69,18 +69,20 @@ const validateServiceDefinitions = (definitions: ServiceDefinitionVersioned) => * ```ts * From this * { + * // Service definition version 1 * 1: { * get: { * in: { - * options: { up: () => {} } // 1 + * options: { up: () => {} } * } * }, * ... * }, + * // Service definition version 2 * 2: { * get: { * in: { - * options: { up: () => {} } // 2 + * options: { up: () => {} } * } * }, * } diff --git a/packages/kbn-resizable-layout/src/panels_resizable.tsx b/packages/kbn-resizable-layout/src/panels_resizable.tsx index 6c9bd12674b20f..19855cc1792b90 100644 --- a/packages/kbn-resizable-layout/src/panels_resizable.tsx +++ b/packages/kbn-resizable-layout/src/panels_resizable.tsx @@ -18,7 +18,6 @@ import { css } from '@emotion/react'; import { isEqual, round } from 'lodash'; import type { ReactElement } from 'react'; import React, { useCallback, useEffect, useState } from 'react'; -import useLatest from 'react-use/lib/useLatest'; import { ResizableLayoutDirection } from '../types'; import { getContainerSize, percentToPixels, pixelsToPercent } from './utils'; @@ -70,7 +69,7 @@ export const PanelsResizable = ({ euiTheme.border.width.thin, (x) => x / 2 )}; - `; + `; const defaultButtonCss = css` z-index: 3; `; @@ -158,31 +157,27 @@ export const PanelsResizable = ({ if (trigger !== 'pointer') { return; } + setIsResizing(true); }, []); - // EUI will call an outdated version of this callback when the resize ends, - // so we need to make sure on our end that the latest version is called. - const onResizeEndStable = useLatest(() => { - setIsResizing((_isResizing) => { - // We don't want the resize button to retain focus after the resize is complete, - // but EuiResizableContainer will force focus it onClick. To work around this we - // use setTimeout to wait until after onClick has been called before blurring. - if (_isResizing) { - if (document.activeElement instanceof HTMLElement) { - const button = document.activeElement; - setTimeout(() => { - button.blur(); - }); - } - } - return false; - }); - }); - const onResizeEnd = useCallback(() => { - onResizeEndStable.current(); - }, [onResizeEndStable]); + if (!isResizing) { + return; + } + + // We don't want the resize button to retain focus after the resize is complete, + // but EuiResizableContainer will force focus it onClick. To work around this we + // use setTimeout to wait until after onClick has been called before blurring. + if (document.activeElement instanceof HTMLElement) { + const button = document.activeElement; + setTimeout(() => { + button.blur(); + }); + } + + setIsResizing(false); + }, [isResizing]); // Don't render EuiResizableContainer until we have have valid // panel sizes or it can cause the resize functionality to break. diff --git a/packages/kbn-search-connectors/lib/create_connector_document.test.ts b/packages/kbn-search-connectors/lib/create_connector_document.test.ts index aa1c54c3c90ea6..a5a25bc6ace8ce 100644 --- a/packages/kbn-search-connectors/lib/create_connector_document.test.ts +++ b/packages/kbn-search-connectors/lib/create_connector_document.test.ts @@ -28,6 +28,7 @@ describe('createConnectorDocument', () => { }) ).toEqual({ api_key_id: null, + api_key_secret_id: null, configuration: {}, custom_scheduling: {}, description: null, diff --git a/packages/kbn-search-connectors/lib/create_connector_document.ts b/packages/kbn-search-connectors/lib/create_connector_document.ts index 286d8b4dcd4590..5d83eded6f0ce8 100644 --- a/packages/kbn-search-connectors/lib/create_connector_document.ts +++ b/packages/kbn-search-connectors/lib/create_connector_document.ts @@ -38,6 +38,7 @@ export function createConnectorDocument({ return { api_key_id: null, + api_key_secret_id: null, configuration: configuration || {}, custom_scheduling: {}, description: null, diff --git a/packages/kbn-search-connectors/lib/create_connector_secret.test.ts b/packages/kbn-search-connectors/lib/create_connector_secret.test.ts new file mode 100644 index 00000000000000..15184804e11109 --- /dev/null +++ b/packages/kbn-search-connectors/lib/create_connector_secret.test.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 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 { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; + +import { createConnectorSecret } from './create_connector_secret'; + +describe('createConnectorSecret lib function', () => { + const mockClient = { + transport: { + request: jest.fn(), + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + jest.useFakeTimers(); + }); + + it('should create a connector secret', async () => { + mockClient.transport.request.mockImplementation(() => ({ + id: 1234, + })); + + await expect( + createConnectorSecret(mockClient as unknown as ElasticsearchClient, 'my-secret') + ).resolves.toEqual({ id: 1234 }); + expect(mockClient.transport.request).toHaveBeenCalledWith({ + method: 'POST', + path: '/_connector/_secret', + body: { + value: 'my-secret', + }, + }); + jest.useRealTimers(); + }); +}); diff --git a/packages/kbn-search-connectors/lib/create_connector_secret.ts b/packages/kbn-search-connectors/lib/create_connector_secret.ts new file mode 100644 index 00000000000000..50608683845482 --- /dev/null +++ b/packages/kbn-search-connectors/lib/create_connector_secret.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { ConnectorSecretCreateResponse } from '../types/connectors_api'; + +export const createConnectorSecret = async (client: ElasticsearchClient, value: string) => { + return await client.transport.request({ + method: 'POST', + path: `/_connector/_secret`, + body: { + value, + }, + }); +}; diff --git a/packages/kbn-search-connectors/lib/fetch_sync_jobs.test.ts b/packages/kbn-search-connectors/lib/fetch_sync_jobs.test.ts index debfedbcfeb67e..c22b2ab19eef9b 100644 --- a/packages/kbn-search-connectors/lib/fetch_sync_jobs.test.ts +++ b/packages/kbn-search-connectors/lib/fetch_sync_jobs.test.ts @@ -6,137 +6,39 @@ * Side Public License, v 1. */ -import { fetchSyncJobsByConnectorId } from './fetch_sync_jobs'; +import { fetchSyncJobs } from './fetch_sync_jobs'; describe('fetchSyncJobs lib', () => { const mockClient = { - get: jest.fn(), - search: jest.fn(), + transport: { + request: jest.fn(), + }, }; beforeEach(() => { jest.clearAllMocks(); }); - describe('fetch sync jobs by connector id', () => { - it('should fetch sync jobs by connector id', async () => { - mockClient.search.mockImplementationOnce(() => - Promise.resolve({ hits: { hits: ['result1', 'result2'] }, total: 2 }) - ); - await expect(fetchSyncJobsByConnectorId(mockClient as any, 'id', 0, 10)).resolves.toEqual({ + describe('fetch sync jobs', () => { + it('should fetch sync jobs', async () => { + mockClient.transport.request.mockImplementationOnce(() => ({ + count: 22, + results: [], + })); + await expect(fetchSyncJobs(mockClient as any, 'id', 0, 10, 'content')).resolves.toEqual({ _meta: { page: { from: 0, - has_more_hits_than_total: false, + has_more_hits_than_total: true, size: 10, - total: 0, + total: 22, }, }, data: [], }); - expect(mockClient.search).toHaveBeenCalledWith({ - from: 0, - index: '.elastic-connectors-sync-jobs', - query: { - term: { - 'connector.id': 'id', - }, - }, - size: 10, - sort: { - created_at: { - order: 'desc', - }, - }, - }); - }); - it('should return empty result if size is 0', async () => { - await expect(fetchSyncJobsByConnectorId(mockClient as any, 'id', 0, 0)).resolves.toEqual({ - _meta: { - page: { - from: 0, - has_more_hits_than_total: false, - size: 10, - total: 0, - }, - }, - data: [], - }); - expect(mockClient.search).not.toHaveBeenCalled(); - }); - it('should return empty array on index not found error', async () => { - mockClient.search.mockImplementationOnce(() => - Promise.reject({ - meta: { - body: { - error: { - type: 'index_not_found_exception', - }, - }, - }, - }) - ); - await expect(fetchSyncJobsByConnectorId(mockClient as any, 'id', 0, 10)).resolves.toEqual({ - _meta: { - page: { - from: 0, - has_more_hits_than_total: false, - size: 10, - total: 0, - }, - }, - data: [], - }); - expect(mockClient.search).toHaveBeenCalledWith({ - from: 0, - index: '.elastic-connectors-sync-jobs', - query: { - term: { - 'connector.id': 'id', - }, - }, - size: 10, - sort: { - created_at: { - order: 'desc', - }, - }, - }); - }); - it('should throw on other errors', async () => { - mockClient.search.mockImplementationOnce(() => - Promise.reject({ - meta: { - body: { - error: { - type: 'other error', - }, - }, - }, - }) - ); - await expect(fetchSyncJobsByConnectorId(mockClient as any, 'id', 0, 10)).rejects.toEqual({ - meta: { - body: { - error: { - type: 'other error', - }, - }, - }, - }); - expect(mockClient.search).toHaveBeenCalledWith({ - from: 0, - index: '.elastic-connectors-sync-jobs', - query: { - term: { - 'connector.id': 'id', - }, - }, - size: 10, - sort: { - created_at: { - order: 'desc', - }, - }, + expect(mockClient.transport.request).toHaveBeenCalledWith({ + method: 'GET', + path: '/_connector/_sync_job', + querystring: 'from=0&size=10&connector_id=id&job_type=full,incremental', }); }); }); diff --git a/packages/kbn-search-connectors/lib/fetch_sync_jobs.ts b/packages/kbn-search-connectors/lib/fetch_sync_jobs.ts index 1a56103702d83f..d278c97c84f6b6 100644 --- a/packages/kbn-search-connectors/lib/fetch_sync_jobs.ts +++ b/packages/kbn-search-connectors/lib/fetch_sync_jobs.ts @@ -8,82 +8,37 @@ import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; -import { CONNECTORS_JOBS_INDEX } from '..'; -import { ConnectorSyncJob, SyncJobType } from '../types/connectors'; +import { ConnectorsAPISyncJobResponse } from '..'; +import { ConnectorSyncJob } from '../types/connectors'; import { Paginate } from '../types/pagination'; -import { isNotNullish } from '../utils/is_not_nullish'; -import { fetchWithPagination } from '../utils/fetch_with_pagination'; -import { isIndexNotFoundException } from '../utils/identify_exceptions'; - -const defaultResult: Paginate = { - _meta: { - page: { - from: 0, - has_more_hits_than_total: false, - size: 10, - total: 0, - }, - }, - data: [], -}; - -export const fetchSyncJobsByConnectorId = async ( +export const fetchSyncJobs = async ( client: ElasticsearchClient, - connectorId: string, - from: number, - size: number, + connectorId?: string, + from: number = 0, + size: number = 100, syncJobType: 'content' | 'access_control' | 'all' = 'all' ): Promise> => { - try { - const query = - syncJobType === 'all' - ? { - term: { - 'connector.id': connectorId, - }, - } - : { - bool: { - filter: [ - { - term: { - 'connector.id': connectorId, - }, - }, - { - terms: { - job_type: - syncJobType === 'content' - ? [SyncJobType.FULL, SyncJobType.INCREMENTAL] - : [SyncJobType.ACCESS_CONTROL], - }, - }, - ], - }, - }; - const result = await fetchWithPagination( - async () => - await client.search({ - from, - index: CONNECTORS_JOBS_INDEX, - query, - size, - sort: { created_at: { order: 'desc' } }, - }), - from, - size - ); - return { - ...result, - data: result.data - .map((hit) => (hit._source ? { ...hit._source, id: hit._id } : null)) - .filter(isNotNullish), - }; - } catch (error) { - if (isIndexNotFoundException(error)) { - return defaultResult; - } - throw error; - } + const querystring = `from=${from}&size=${size}${ + connectorId ? '&connector_id=' + connectorId : '' + }${syncJobType === 'content' ? '&job_type=full,incremental' : ''}${ + syncJobType === 'access_control' ? '&job_type=access_control' : '' + }`; + const result = await client.transport.request({ + method: 'GET', + path: `/_connector/_sync_job`, + querystring, + }); + + return { + _meta: { + page: { + from, + has_more_hits_than_total: result.count > from + size, + size, + total: result.count, + }, + }, + data: result.results, + }; }; diff --git a/packages/kbn-search-connectors/lib/index.ts b/packages/kbn-search-connectors/lib/index.ts index 47460d21f7b9b4..3e929d5bc68340 100644 --- a/packages/kbn-search-connectors/lib/index.ts +++ b/packages/kbn-search-connectors/lib/index.ts @@ -9,6 +9,7 @@ export * from './cancel_syncs'; export * from './create_connector'; export * from './create_connector_document'; +export * from './create_connector_secret'; export * from './delete_connector'; export * from './fetch_connectors'; export * from './fetch_sync_jobs'; @@ -16,6 +17,7 @@ export * from './update_filtering'; export * from './update_filtering_draft'; export * from './update_native'; export * from './start_sync'; +export * from './update_connector_api_key_id'; export * from './update_connector_configuration'; export * from './update_connector_index_name'; export * from './update_connector_name_and_description'; diff --git a/packages/kbn-search-connectors/lib/update_connector_api_key_id.test.ts b/packages/kbn-search-connectors/lib/update_connector_api_key_id.test.ts new file mode 100644 index 00000000000000..e7c0e0f0df7e42 --- /dev/null +++ b/packages/kbn-search-connectors/lib/update_connector_api_key_id.test.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; + +import { updateConnectorApiKeyId } from './update_connector_api_key_id'; + +describe('updateConnectorApiKeyId lib function', () => { + const mockClient = { + transport: { + request: jest.fn(), + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + jest.useFakeTimers(); + }); + + it('should update a connector API key id and API key secret id', async () => { + mockClient.transport.request.mockImplementation(() => ({ + acknowledged: true, + })); + + await expect( + updateConnectorApiKeyId( + mockClient as unknown as ElasticsearchClient, + 'connector-id', + 'api-key-id', + 'api-key-secret-id' + ) + ).resolves.toEqual({ acknowledged: true }); + expect(mockClient.transport.request).toHaveBeenCalledWith({ + method: 'PUT', + path: '/_connector/connector-id/_api_key_id', + body: { + api_key_id: 'api-key-id', + api_key_secret_id: 'api-key-secret-id', + }, + }); + jest.useRealTimers(); + }); +}); diff --git a/packages/kbn-search-connectors/lib/update_connector_api_key_id.ts b/packages/kbn-search-connectors/lib/update_connector_api_key_id.ts new file mode 100644 index 00000000000000..9ddf64e687d2c6 --- /dev/null +++ b/packages/kbn-search-connectors/lib/update_connector_api_key_id.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { Result } from '@elastic/elasticsearch/lib/api/types'; + +export const updateConnectorApiKeyId = async ( + client: ElasticsearchClient, + connectorId: string, + apiKeyId: string | null, + apiKeySecretId: string | null +) => { + return await client.transport.request({ + method: 'PUT', + path: `/_connector/${connectorId}/_api_key_id`, + body: { + api_key_id: apiKeyId, + api_key_secret_id: apiKeySecretId, + }, + }); +}; diff --git a/packages/kbn-search-connectors/types/connectors.ts b/packages/kbn-search-connectors/types/connectors.ts index af5e8b5c8c567a..dee88bf1c77db8 100644 --- a/packages/kbn-search-connectors/types/connectors.ts +++ b/packages/kbn-search-connectors/types/connectors.ts @@ -215,6 +215,7 @@ export interface SchedulingConfiguraton { export interface Connector { api_key_id: string | null; + api_key_secret_id: string | null; configuration: ConnectorConfiguration; custom_scheduling: ConnectorCustomScheduling; description: string | null; diff --git a/packages/kbn-search-connectors/types/connectors_api.ts b/packages/kbn-search-connectors/types/connectors_api.ts index 9fa12cd02b495f..c344073831a466 100644 --- a/packages/kbn-search-connectors/types/connectors_api.ts +++ b/packages/kbn-search-connectors/types/connectors_api.ts @@ -8,6 +8,8 @@ // TODO: delete this once ES client can be used for Connectors API +import { ConnectorSyncJob } from './connectors'; + enum Result { created = 'created', updated = 'updated', @@ -19,3 +21,12 @@ enum Result { export interface ConnectorsAPIUpdateResponse { result: Result; } + +export interface ConnectorsAPISyncJobResponse { + count: number; + results: ConnectorSyncJob[]; +} + +export interface ConnectorSecretCreateResponse { + id: string; +} diff --git a/packages/kbn-search-connectors/types/native_connectors.ts b/packages/kbn-search-connectors/types/native_connectors.ts index 63c65d7c471a67..62ac7445e8b063 100644 --- a/packages/kbn-search-connectors/types/native_connectors.ts +++ b/packages/kbn-search-connectors/types/native_connectors.ts @@ -261,6 +261,12 @@ export const NATIVE_CONNECTOR_DEFINITIONS: Record { +jest.mock('@kbn/esql-utils', () => { return { getIndexPatternFromESQLQuery: jest.fn(), }; diff --git a/packages/kbn-securitysolution-utils/src/esql/get_index_list_from_esql_query.ts b/packages/kbn-securitysolution-utils/src/esql/get_index_list_from_esql_query.ts index 6c52cca58854eb..64374732dc7162 100644 --- a/packages/kbn-securitysolution-utils/src/esql/get_index_list_from_esql_query.ts +++ b/packages/kbn-securitysolution-utils/src/esql/get_index_list_from_esql_query.ts @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import { getIndexPatternFromESQLQuery } from '@kbn/es-query'; +import { getIndexPatternFromESQLQuery } from '@kbn/esql-utils'; /** * parses ES|QL query and returns array of indices diff --git a/packages/kbn-securitysolution-utils/tsconfig.json b/packages/kbn-securitysolution-utils/tsconfig.json index f42b225fcfc2e3..c734b5c153fb05 100644 --- a/packages/kbn-securitysolution-utils/tsconfig.json +++ b/packages/kbn-securitysolution-utils/tsconfig.json @@ -12,7 +12,7 @@ ], "kbn_references": [ "@kbn/i18n", - "@kbn/es-query" + "@kbn/esql-utils" ], "exclude": [ "target/**/*", diff --git a/packages/kbn-test/jest-preset.js b/packages/kbn-test/jest-preset.js index d3795c775ea21d..df9ed4cab4f513 100644 --- a/packages/kbn-test/jest-preset.js +++ b/packages/kbn-test/jest-preset.js @@ -130,4 +130,7 @@ module.exports = { globals: { structuredClone: {}, }, + + testResultsProcessor: + '/packages/kbn-test/src/jest/result_processors/logging_result_processor.js', }; diff --git a/packages/kbn-test/src/es/test_es_cluster.ts b/packages/kbn-test/src/es/test_es_cluster.ts index 5c1a85cd776e71..3c39a2e2a1cc23 100644 --- a/packages/kbn-test/src/es/test_es_cluster.ts +++ b/packages/kbn-test/src/es/test_es_cluster.ts @@ -242,6 +242,11 @@ export function createTestEsCluster< } else if (esFrom === 'snapshot') { installPath = (await firstNode.installSnapshot(config)).installPath; } else if (esFrom === 'serverless') { + if (!esServerlessOptions) { + throw new Error( + `'esServerlessOptions' must be defined to start Elasticsearch in serverless mode` + ); + } await firstNode.runServerless({ basePath, esArgs: customEsArgs, diff --git a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts index 99a2b6b9275e2f..f50551aa90f2da 100644 --- a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts +++ b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts @@ -12,6 +12,7 @@ import type { ToolingLog } from '@kbn/tooling-log'; import getPort from 'get-port'; import { REPO_ROOT } from '@kbn/repo-info'; import type { ArtifactLicense, ServerlessProjectType } from '@kbn/es'; +import { isServerlessProjectType } from '@kbn/es/src/utils'; import type { Config } from '../../functional_test_runner'; import { createTestEsCluster, esTestConfig } from '../../es'; @@ -53,7 +54,9 @@ function getEsConfig({ const serverless: boolean = config.get('serverless'); const files: string[] | undefined = config.get('esTestCluster.files'); - const esServerlessOptions = getESServerlessOptions(esServerlessImage, config); + const esServerlessOptions = serverless + ? getESServerlessOptions(esServerlessImage, config) + : undefined; return { ssl, @@ -162,6 +165,7 @@ async function startEsNode({ } interface EsServerlessOptions { + projectType: ServerlessProjectType; host?: string; resources: string[]; kibanaUrl: string; @@ -189,19 +193,20 @@ function getESServerlessOptions( (config.get('kbnTestServer.serverArgs') as string[])) || []; - const projectTypeFromArgs = kbnServerArgs + const projectType = kbnServerArgs .filter((arg) => arg.startsWith('--serverless')) .reduce((acc, arg) => { const match = arg.match(/--serverless[=\s](\w+)/); return acc + (match ? match[1] : ''); - }, ''); - const projectType = projectTypeFromArgs.length - ? (projectTypeFromArgs as ServerlessProjectType) - : undefined; + }, '') as ServerlessProjectType; + + if (!isServerlessProjectType(projectType)) { + throw new Error(`Unsupported serverless projectType: ${projectType}`); + } const commonOptions = { - host: serverlessHost, projectType, + host: serverlessHost, resources: serverlessResources, kibanaUrl: Url.format({ protocol: config.get('servers.kibana.protocol'), diff --git a/packages/kbn-test/src/jest/result_processors/logging_result_processor.js b/packages/kbn-test/src/jest/result_processors/logging_result_processor.js new file mode 100644 index 00000000000000..b9b00dc8ee7659 --- /dev/null +++ b/packages/kbn-test/src/jest/result_processors/logging_result_processor.js @@ -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 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. + */ + +const FAILURE_MESSAGE_TRIGGERS = ['but is not defined anymore']; +const log = (...args) => { + const loggable = args.map((arg) => + typeof arg === 'string' ? arg : JSON.stringify(arg, null, 2) + ); + process.stdout.write(`${loggable.join(' ')}\n`, 'utf8'); +}; +/** + * This processor looks for specific errors, and logs the result context of test suites where they occur. + * @param results + * @returns {*} + */ +module.exports = (results) => { + const resultsThatMatchTriggers = results.testResults.filter( + (e) => + e.failureMessage && + FAILURE_MESSAGE_TRIGGERS.some((trigger) => e.failureMessage.includes(trigger)) + ); + + if (resultsThatMatchTriggers.length !== 0) { + log('The following test suites failed, with notable errors:'); + resultsThatMatchTriggers.forEach((e) => { + log(` -> ${e.testFilePath}`, 'Details: ', e, '\n'); + }); + } + + return results; +}; diff --git a/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx b/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx index 1814a850648fc2..146e020d4fe82f 100644 --- a/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx +++ b/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx @@ -341,6 +341,7 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ } return []; }, + getMetaFields: async () => ['_version', '_id', '_index', '_source'], getPolicies: async () => { const { data: policies, error } = (await indexManagementApiService?.getAllEnrichPolicies()) || {}; diff --git a/packages/kbn-unified-data-table/src/components/source_document.tsx b/packages/kbn-unified-data-table/src/components/source_document.tsx index fd221f63fcc640..15924fc02521e8 100644 --- a/packages/kbn-unified-data-table/src/components/source_document.tsx +++ b/packages/kbn-unified-data-table/src/components/source_document.tsx @@ -66,7 +66,7 @@ export function SourceDocument({ {pairs.map(([fieldDisplayName, value, fieldName]) => { // temporary solution for text based mode. As there are a lot of unsupported fields we want to // hide the empty one from the Document view - if (isPlainRecord && fieldName && row.flattened[fieldName] === null) return null; + if (isPlainRecord && fieldName && !row.flattened[fieldName]) return null; return ( diff --git a/packages/kbn-unified-field-list/src/hooks/use_grouped_fields.test.tsx b/packages/kbn-unified-field-list/src/hooks/use_grouped_fields.test.tsx index 4a937f86bd5c00..c2a2379a676e10 100644 --- a/packages/kbn-unified-field-list/src/hooks/use_grouped_fields.test.tsx +++ b/packages/kbn-unified-field-list/src/hooks/use_grouped_fields.test.tsx @@ -472,6 +472,45 @@ describe('UnifiedFieldList useGroupedFields()', () => { expect(fieldListGroupedProps.fieldsExistInIndex).toBe(true); }); + it('should work correctly for text-based queries (no data view) with isNull fields', async () => { + const allFieldsEmpty = [...new Array(2)].flatMap((_, index) => + allFields.map((field) => { + return new DataViewField({ + ...field.toSpec(), + name: `${field.name}${index || ''}`, + isNull: true, + }); + }) + ); + const { result } = renderHook(useGroupedFields, { + initialProps: { + dataViewId: null, + allFields: allFieldsEmpty, + services: mockedServices, + }, + }); + + const fieldListGroupedProps = result.current.fieldListGroupedProps; + const fieldGroups = fieldListGroupedProps.fieldGroups; + + expect( + Object.keys(fieldGroups!).map( + (key) => `${key}-${fieldGroups![key as FieldsGroupNames]?.fields.length}` + ) + ).toStrictEqual([ + 'SpecialFields-0', + 'SelectedFields-0', + 'PopularFields-0', + 'AvailableFields-0', + 'UnmappedFields-0', + 'EmptyFields-56', + 'MetaFields-0', + ]); + + expect(fieldListGroupedProps.fieldsExistenceStatus).toBe(ExistenceFetchStatus.succeeded); + expect(fieldListGroupedProps.fieldsExistInIndex).toBe(true); + }); + it('should work correctly when details are overwritten', async () => { const onOverrideFieldGroupDetails: GroupedFieldsParams['onOverrideFieldGroupDetails'] = jest.fn((groupName) => { diff --git a/packages/kbn-unified-field-list/src/hooks/use_grouped_fields.ts b/packages/kbn-unified-field-list/src/hooks/use_grouped_fields.ts index 7853c7e67800bb..e368b55b783929 100644 --- a/packages/kbn-unified-field-list/src/hooks/use_grouped_fields.ts +++ b/packages/kbn-unified-field-list/src/hooks/use_grouped_fields.ts @@ -156,6 +156,10 @@ export function useGroupedFields({ if (field.type === 'nested') { return 'availableFields'; } + + if (field?.isNull) { + return 'emptyFields'; + } if (dataView?.getFieldByName && !dataView.getFieldByName(field.name)) { return 'unmappedFields'; } @@ -303,8 +307,12 @@ export function useGroupedFields({ }, }; - // do not show empty field accordion if there is no existence information - if (fieldsExistenceInfoUnavailable) { + // the fieldsExistenceInfoUnavailable check should happen only for dataview based + const dataViewFieldsExistenceUnavailable = dataViewId && fieldsExistenceInfoUnavailable; + // for textbased queries, rely on the empty fields length + const textBasedFieldsExistenceUnavailable = !dataViewId && !groupedFields.emptyFields.length; + + if (dataViewFieldsExistenceUnavailable || textBasedFieldsExistenceUnavailable) { delete fieldGroupDefinitions.EmptyFields; } diff --git a/packages/kbn-url-state/README.md b/packages/kbn-url-state/README.md deleted file mode 100644 index 3549936888f9f8..00000000000000 --- a/packages/kbn-url-state/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# @kbn/url-state - utils for syncing state to URL - -This package provides a React hook called `useUrlState` that can be used to synchronize state to the URL. This can be useful when you want to make a portion of state shareable. - -The state is grouped under a namespace, to avoid collisions. See the example url below for how it would look like. - -### Example usage: - -``` -import React, { useState } from 'react'; -import { useUrlState } from '@kbn/url-state'; - -function MyComponent() { - const [name, setName] = useUrlState('namespace','name'); - - const handleClick = () => { - setName('John Doe') - }; - - return ( -
-

Name: {name}

- -
- ); -} -``` - -The resulting URL will look like this: - -``` -http://localhost:5601/?namespace=(name:John%20Doe) -``` diff --git a/packages/kbn-url-state/index.test.ts b/packages/kbn-url-state/index.test.ts deleted file mode 100644 index 75b899532028f8..00000000000000 --- a/packages/kbn-url-state/index.test.ts +++ /dev/null @@ -1,113 +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 { renderHook, act } from '@testing-library/react-hooks'; -import { useUrlState } from '.'; - -describe('useSyncToUrl', () => { - let originalLocation: Location; - let originalHistory: History; - - beforeEach(() => { - originalLocation = window.location; - originalHistory = window.history; - delete (window as any).location; - delete (window as any).history; - - window.location = { - ...originalLocation, - search: '', - hash: '', - }; - window.history = { - ...originalHistory, - replaceState: jest.fn(), - pushState: jest.fn(), - }; - - jest.useFakeTimers(); - }); - - afterEach(() => { - window.location = originalLocation; - window.history = originalHistory; - jest.useRealTimers(); - }); - - it('should update the URL when the state changes', () => { - window.location.hash = '#should_be_there'; - - const { result } = renderHook(() => useUrlState('namespace', 'test')); - - act(() => { - result.current[1]('foo'); - jest.runAllTimers(); - }); - - expect(window.history.pushState).toHaveBeenCalledWith( - {}, - '', - '#should_be_there?namespace=(test%3Afoo)' - ); - }); - - it('should escape values correctly', () => { - window.location.hash = '#should_be_there'; - - const { result } = renderHook(() => useUrlState('namespace', 'test')); - - act(() => { - result.current[1]('foo#bar'); - jest.runAllTimers(); - }); - - expect(window.history.pushState).toHaveBeenCalledWith( - {}, - '', - '#should_be_there?namespace=(test%3Afoo%23bar)' - ); - }); - - it('should remove the key from the namespace after undefined is passed (state clear mechanism)', () => { - window.location.hash = '#should_be_there'; - - const { result } = renderHook(() => useUrlState('namespace', 'test')); - - act(() => { - result.current[1](undefined); - jest.runAllTimers(); - }); - - expect(window.history.pushState).toHaveBeenCalledWith({}, '', '#should_be_there?namespace=()'); - }); - - it('should restore the value from the query string on mount', () => { - window.location.search = `?namespace=(test:foo)`; - - const { - result: { current: state }, - } = renderHook(() => useUrlState('namespace', 'test')); - - expect(state[0]).toEqual('foo'); - }); - - it('should return updated state on browser navigation', () => { - window.location.search = '?namespace=(test:foo)'; - - const { result } = renderHook(() => useUrlState('namespace', 'test')); - - expect(result.current[0]).toEqual('foo'); - - act(() => { - window.location.search = '?namespace=(test:bar)'; - window.dispatchEvent(new CustomEvent('popstate')); - }); - - expect(result.current[0]).toEqual('bar'); - }); -}); diff --git a/packages/kbn-url-state/index.ts b/packages/kbn-url-state/index.ts deleted file mode 100644 index 7bfb80938c6592..00000000000000 --- a/packages/kbn-url-state/index.ts +++ /dev/null @@ -1,101 +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 { useCallback, useEffect, useState } from 'react'; -import { encode, decode, RisonValue } from '@kbn/rison'; -import { stringify, parse } from 'query-string'; -import { merge } from 'lodash'; - -const CUSTOM_URL_EVENT = 'url:update' as const; - -// This is a list of events that can trigger a render. -const URL_CHANGE_EVENTS: string[] = ['popstate', CUSTOM_URL_EVENT]; - -/** - * This hook stores state in the URL, but with a namespace to avoid collisions with other values in the URL. - * It also batches updates to the URL to avoid excessive history entries. - * With it, you can store state in the URL and have it persist across page refreshes. - * The state is stored in the URL as a Rison encoded object. - * - * Example: when called like this `const [value, setValue] = useUrlState('myNamespace', 'myKey');` - * the state will be stored in the URL like this: `?myNamespace=(myKey:!n)` - * - * State is not cleared from the URL when the hook is unmounted and this is by design. - * If you want it to be cleared, you can do it manually by calling `setValue(undefined)`. - * - * @param urlNamespace actual top level query param key - * @param key sub key of the query param - */ -export const useUrlState = (urlNamespace: string, key: string) => { - const [internalValue, setInternalValue] = useState(undefined); - - useEffect(() => { - // This listener is called on browser navigation or on custom event. - // It updates the LOCAL state, allowing dependent components to re-render. - const listener = () => { - const searchParams = new URLSearchParams(window.location.search); - const param = searchParams.get(urlNamespace); - - const decodedState = param ? decode(param) : ({} as Record); - const decodedValue = (decodedState as Record | undefined)?.[key]; - setInternalValue(decodedValue as unknown as T); - }; - - listener(); - - URL_CHANGE_EVENTS.forEach((event) => window.addEventListener(event, listener)); - - return () => URL_CHANGE_EVENTS.forEach((event) => window.removeEventListener(event, listener)); - }, [key, urlNamespace]); - - const setValue = useCallback( - (newValue: T | undefined) => { - const queryParams = parse(location.search) as any; - const currentNsValue = ( - queryParams?.[urlNamespace] ? decode(queryParams?.[urlNamespace]) : {} - ) as any; - - const currentValue = currentNsValue?.[key]; - - const canSpread = - typeof newValue === 'object' && - typeof currentValue === 'object' && - !Array.isArray(newValue) && - !Array.isArray(currentValue); - - const upatedValueToStoreAtKey = canSpread - ? (merge(currentValue, newValue) as unknown as T) - : (newValue as unknown as T); - - if (upatedValueToStoreAtKey) { - currentNsValue[key] = upatedValueToStoreAtKey; - } else { - delete currentNsValue[key]; - } - - queryParams[urlNamespace] = encodeURIComponent(encode(currentNsValue)); - - // NOTE: don't re-encode the entire url params string - const newSearch = stringify(queryParams, { encode: false }); - - if (window.location.search === newSearch) { - return; - } - - const newUrl = `${window.location.hash}?${newSearch}`; - - window.history.pushState({}, '', newUrl); - // This custom event is used to notify other instances - // of this hook that the URL has changed. - window.dispatchEvent(new Event(CUSTOM_URL_EVENT)); - }, - [key, urlNamespace] - ); - - return [internalValue, setValue] as const; -}; diff --git a/packages/kbn-url-state/kibana.jsonc b/packages/kbn-url-state/kibana.jsonc deleted file mode 100644 index b0ab56d6af8b76..00000000000000 --- a/packages/kbn-url-state/kibana.jsonc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "type": "shared-common", - "id": "@kbn/url-state", - "owner": "@elastic/security-threat-hunting-investigations" -} diff --git a/packages/kbn-url-state/package.json b/packages/kbn-url-state/package.json deleted file mode 100644 index 2cd753f16b872a..00000000000000 --- a/packages/kbn-url-state/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "@kbn/url-state", - "private": true, - "version": "1.0.0", - "license": "SSPL-1.0 OR Elastic License 2.0" -} \ No newline at end of file diff --git a/packages/kbn-url-state/tsconfig.json b/packages/kbn-url-state/tsconfig.json deleted file mode 100644 index 3bd03b7f37b84c..00000000000000 --- a/packages/kbn-url-state/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/rison", - ] -} diff --git a/packages/presentation/presentation_containers/index.ts b/packages/presentation/presentation_containers/index.ts index eae0e6c7f4f3a8..47c8d8783a663d 100644 --- a/packages/presentation/presentation_containers/index.ts +++ b/packages/presentation/presentation_containers/index.ts @@ -20,3 +20,9 @@ export { type PresentationContainer, } from './interfaces/presentation_container'; export { tracksOverlays, type TracksOverlays } from './interfaces/tracks_overlays'; +export { type SerializedPanelState } from './interfaces/serialized_state'; +export { + type PublishesLastSavedState, + apiPublishesLastSavedState, + getLastSavedStateSubjectForChild, +} from './interfaces/last_saved_state'; diff --git a/packages/presentation/presentation_containers/interfaces/last_saved_state.ts b/packages/presentation/presentation_containers/interfaces/last_saved_state.ts new file mode 100644 index 00000000000000..0c7e83aef7bf31 --- /dev/null +++ b/packages/presentation/presentation_containers/interfaces/last_saved_state.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { PublishingSubject } from '@kbn/presentation-publishing'; +import { BehaviorSubject, Subject } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; +import { SerializedPanelState } from './serialized_state'; + +export interface PublishesLastSavedState { + lastSavedState: Subject; // a notification that the last saved state has changed + getLastSavedStateForChild: (childId: string) => SerializedPanelState | undefined; +} + +export const apiPublishesLastSavedState = (api: unknown): api is PublishesLastSavedState => { + return Boolean( + api && + (api as PublishesLastSavedState).lastSavedState && + (api as PublishesLastSavedState).getLastSavedStateForChild + ); +}; + +export const getLastSavedStateSubjectForChild = ( + parentApi: unknown, + childId: string, + deserializer?: (state: SerializedPanelState) => StateType +): PublishingSubject | undefined => { + if (!parentApi) return; + const fetchUnsavedChanges = (): StateType | undefined => { + if (!apiPublishesLastSavedState(parentApi)) return; + const rawLastSavedState = parentApi.getLastSavedStateForChild(childId); + if (rawLastSavedState === undefined) return; + return deserializer + ? deserializer(rawLastSavedState) + : (rawLastSavedState.rawState as StateType); + }; + + const lastSavedStateForChild = new BehaviorSubject(fetchUnsavedChanges()); + if (!apiPublishesLastSavedState(parentApi)) return; + parentApi.lastSavedState + .pipe( + map(() => fetchUnsavedChanges()), + filter((rawLastSavedState) => rawLastSavedState !== undefined) + ) + .subscribe(lastSavedStateForChild); + return lastSavedStateForChild; +}; diff --git a/packages/presentation/presentation_containers/interfaces/panel_management.ts b/packages/presentation/presentation_containers/interfaces/panel_management.ts index feb752ea81655f..9408b6b756694d 100644 --- a/packages/presentation/presentation_containers/interfaces/panel_management.ts +++ b/packages/presentation/presentation_containers/interfaces/panel_management.ts @@ -34,6 +34,4 @@ export const apiCanExpandPanels = (unknownApi: unknown | null): unknownApi is Ca * Gets this API's expanded panel state as a reactive variable which will cause re-renders on change. */ export const useExpandedPanelId = (api: Partial | undefined) => - useStateFromPublishingSubject( - apiCanExpandPanels(api) ? api.expandedPanelId : undefined - ); + useStateFromPublishingSubject(apiCanExpandPanels(api) ? api.expandedPanelId : undefined); diff --git a/packages/presentation/presentation_containers/interfaces/presentation_container.ts b/packages/presentation/presentation_containers/interfaces/presentation_container.ts index 960d728630bc45..c5c558dfe62279 100644 --- a/packages/presentation/presentation_containers/interfaces/presentation_container.ts +++ b/packages/presentation/presentation_containers/interfaces/presentation_container.ts @@ -7,21 +7,32 @@ */ import { apiHasParentApi, PublishesViewMode } from '@kbn/presentation-publishing'; +import { PublishesLastSavedState } from './last_saved_state'; export interface PanelPackage { panelType: string; initialState: unknown; } -export interface PresentationContainer extends Partial { - removePanel: (panelId: string) => void; - canRemovePanels?: () => boolean; - replacePanel: (idToRemove: string, newPanel: PanelPackage) => Promise; -} + +export type PresentationContainer = Partial & + PublishesLastSavedState & { + registerPanelApi: ( + panelId: string, + panelApi: ApiType + ) => void; + removePanel: (panelId: string) => void; + canRemovePanels?: () => boolean; + replacePanel: (idToRemove: string, newPanel: PanelPackage) => Promise; + }; export const apiIsPresentationContainer = ( unknownApi: unknown | null ): unknownApi is PresentationContainer => { - return Boolean((unknownApi as PresentationContainer)?.removePanel !== undefined); + return Boolean( + (unknownApi as PresentationContainer)?.removePanel !== undefined && + (unknownApi as PresentationContainer)?.registerPanelApi !== undefined && + (unknownApi as PresentationContainer)?.replacePanel !== undefined + ); }; export const getContainerParentFromAPI = ( diff --git a/packages/presentation/presentation_containers/interfaces/serialized_state.ts b/packages/presentation/presentation_containers/interfaces/serialized_state.ts new file mode 100644 index 00000000000000..6b24471d34c75b --- /dev/null +++ b/packages/presentation/presentation_containers/interfaces/serialized_state.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { SavedObjectReference } from '@kbn/core-saved-objects-api-server'; + +/** + * A package containing the serialized Embeddable state, with references extracted. When saving Embeddables using any + * strategy, this is the format that should be used. + */ +export interface SerializedPanelState { + references?: SavedObjectReference[]; + rawState: RawStateType; + version?: string; +} diff --git a/packages/presentation/presentation_containers/mocks.ts b/packages/presentation/presentation_containers/mocks.ts new file mode 100644 index 00000000000000..5ac45fc6049c27 --- /dev/null +++ b/packages/presentation/presentation_containers/mocks.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { Subject } from 'rxjs'; +import { PresentationContainer } from './interfaces/presentation_container'; + +export const getMockPresentationContainer = (): PresentationContainer => { + return { + registerPanelApi: jest.fn(), + removePanel: jest.fn(), + replacePanel: jest.fn(), + lastSavedState: new Subject(), + getLastSavedStateForChild: jest.fn(), + }; +}; diff --git a/packages/presentation/presentation_containers/tsconfig.json b/packages/presentation/presentation_containers/tsconfig.json index 84f28c7bc60c3f..7892712228da2b 100644 --- a/packages/presentation/presentation_containers/tsconfig.json +++ b/packages/presentation/presentation_containers/tsconfig.json @@ -6,5 +6,9 @@ }, "include": ["**/*.ts", "**/*.tsx"], "exclude": ["target/**/*"], - "kbn_references": ["@kbn/presentation-publishing", "@kbn/core-mount-utils-browser"] + "kbn_references": [ + "@kbn/presentation-publishing", + "@kbn/core-mount-utils-browser", + "@kbn/core-saved-objects-api-server", + ] } diff --git a/packages/presentation/presentation_publishing/index.ts b/packages/presentation/presentation_publishing/index.ts index 21ccddf3273a37..61209d66357296 100644 --- a/packages/presentation/presentation_publishing/index.ts +++ b/packages/presentation/presentation_publishing/index.ts @@ -93,6 +93,11 @@ export { type PublishesWritableViewMode, type ViewMode, } from './interfaces/publishes_view_mode'; +export { + type PublishesUnsavedChanges, + apiPublishesUnsavedChanges, + useUnsavedChanges, +} from './interfaces/publishes_unsaved_changes'; export { useBatchedPublishingSubjects, useStateFromPublishingSubject, diff --git a/packages/presentation/presentation_publishing/interfaces/can_access_view_mode.ts b/packages/presentation/presentation_publishing/interfaces/can_access_view_mode.ts index c838d9f1ee573f..48f621ddbccb04 100644 --- a/packages/presentation/presentation_publishing/interfaces/can_access_view_mode.ts +++ b/packages/presentation/presentation_publishing/interfaces/can_access_view_mode.ts @@ -8,7 +8,7 @@ import { useStateFromPublishingSubject } from '../publishing_subject'; import { apiHasParentApi, HasParentApi } from './has_parent_api'; -import { apiPublishesViewMode, PublishesViewMode, ViewMode } from './publishes_view_mode'; +import { apiPublishesViewMode, PublishesViewMode } from './publishes_view_mode'; /** * This API can access a view mode, either its own or from its parent API. @@ -49,6 +49,5 @@ export const getViewModeSubject = (api?: CanAccessViewMode) => { export const useInheritedViewMode = ( api: ApiType | undefined ) => { - const subject = getViewModeSubject(api); - useStateFromPublishingSubject(subject); + return useStateFromPublishingSubject(getViewModeSubject(api)); }; diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_blocking_error.ts b/packages/presentation/presentation_publishing/interfaces/publishes_blocking_error.ts index 578c75f21fe223..fac7d8dda9568a 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_blocking_error.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_blocking_error.ts @@ -22,6 +22,4 @@ export const apiPublishesBlockingError = ( * Gets this API's fatal error as a reactive variable which will cause re-renders on change. */ export const useBlockingError = (api: Partial | undefined) => - useStateFromPublishingSubject( - api?.blockingError - ); + useStateFromPublishingSubject(api?.blockingError); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_data_loading.ts b/packages/presentation/presentation_publishing/interfaces/publishes_data_loading.ts index 6f988167807f34..a7cedcac6d34d6 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_data_loading.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_data_loading.ts @@ -22,6 +22,4 @@ export const apiPublishesDataLoading = ( * Gets this API's data loading state as a reactive variable which will cause re-renders on change. */ export const useDataLoading = (api: Partial | undefined) => - useStateFromPublishingSubject( - apiPublishesDataLoading(api) ? api.dataLoading : undefined - ); + useStateFromPublishingSubject(apiPublishesDataLoading(api) ? api.dataLoading : undefined); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_data_views.ts b/packages/presentation/presentation_publishing/interfaces/publishes_data_views.ts index b83037a52c1e04..3daf0412d93d3c 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_data_views.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_data_views.ts @@ -23,6 +23,4 @@ export const apiPublishesDataViews = ( * Gets this API's data views as a reactive variable which will cause re-renders on change. */ export const useDataViews = (api: Partial | undefined) => - useStateFromPublishingSubject( - apiPublishesDataViews(api) ? api.dataViews : undefined - ); + useStateFromPublishingSubject(apiPublishesDataViews(api) ? api.dataViews : undefined); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_disabled_action_ids.ts b/packages/presentation/presentation_publishing/interfaces/publishes_disabled_action_ids.ts index 69f76070f369eb..05a1ac6ac143c4 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_disabled_action_ids.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_disabled_action_ids.ts @@ -29,7 +29,4 @@ export const apiPublishesDisabledActionIds = ( * Gets this API's disabled action IDs as a reactive variable which will cause re-renders on change. */ export const useDisabledActionIds = (api: Partial | undefined) => - useStateFromPublishingSubject< - string[] | undefined, - PublishesDisabledActionIds['disabledActionIds'] - >(api?.disabledActionIds); + useStateFromPublishingSubject(api?.disabledActionIds); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_local_unified_search.ts b/packages/presentation/presentation_publishing/interfaces/publishes_local_unified_search.ts index c5f163206d81da..623c107d47e8c4 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_local_unified_search.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_local_unified_search.ts @@ -62,16 +62,16 @@ export const apiPublishesWritableLocalUnifiedSearch = ( * A hook that gets this API's local time range as a reactive variable which will cause re-renders on change. */ export const useLocalTimeRange = (api: Partial | undefined) => - useStateFromPublishingSubject(api?.localTimeRange); + useStateFromPublishingSubject(api?.localTimeRange); /** * A hook that gets this API's local filters as a reactive variable which will cause re-renders on change. */ export const useLocalFilters = (api: Partial | undefined) => - useStateFromPublishingSubject(api?.localFilters); + useStateFromPublishingSubject(api?.localFilters); /** * A hook that gets this API's local query as a reactive variable which will cause re-renders on change. */ export const useLocalQuery = (api: Partial | undefined) => - useStateFromPublishingSubject(api?.localQuery); + useStateFromPublishingSubject(api?.localQuery); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_panel_description.ts b/packages/presentation/presentation_publishing/interfaces/publishes_panel_description.ts index 1f12c35217c2ed..fb48b7a6228fa9 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_panel_description.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_panel_description.ts @@ -39,15 +39,10 @@ export const apiPublishesWritablePanelDescription = ( * A hook that gets this API's panel description as a reactive variable which will cause re-renders on change. */ export const usePanelDescription = (api: Partial | undefined) => - useStateFromPublishingSubject( - api?.panelDescription - ); + useStateFromPublishingSubject(api?.panelDescription); /** * A hook that gets this API's default panel description as a reactive variable which will cause re-renders on change. */ export const useDefaultPanelDescription = (api: Partial | undefined) => - useStateFromPublishingSubject< - string | undefined, - PublishesPanelDescription['defaultPanelDescription'] - >(api?.defaultPanelDescription); + useStateFromPublishingSubject(api?.defaultPanelDescription); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_panel_title.ts b/packages/presentation/presentation_publishing/interfaces/publishes_panel_title.ts index b2be97926fb5a2..b1b10fb1c742a6 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_panel_title.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_panel_title.ts @@ -17,7 +17,6 @@ export interface PublishesPanelTitle { export type PublishesWritablePanelTitle = PublishesPanelTitle & { setPanelTitle: (newTitle: string | undefined) => void; setHidePanelTitle: (hide: boolean | undefined) => void; - setDefaultPanelTitle?: (newDefaultTitle: string | undefined) => void; }; export const apiPublishesPanelTitle = ( @@ -46,16 +45,16 @@ export const apiPublishesWritablePanelTitle = ( * A hook that gets this API's panel title as a reactive variable which will cause re-renders on change. */ export const usePanelTitle = (api: Partial | undefined) => - useStateFromPublishingSubject(api?.panelTitle); + useStateFromPublishingSubject(api?.panelTitle); /** * A hook that gets this API's hide panel title setting as a reactive variable which will cause re-renders on change. */ export const useHidePanelTitle = (api: Partial | undefined) => - useStateFromPublishingSubject(api?.hidePanelTitle); + useStateFromPublishingSubject(api?.hidePanelTitle); /** * A hook that gets this API's default title as a reactive variable which will cause re-renders on change. */ export const useDefaultPanelTitle = (api: Partial | undefined) => - useStateFromPublishingSubject(api?.defaultPanelTitle); + useStateFromPublishingSubject(api?.defaultPanelTitle); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_saved_object_id.ts b/packages/presentation/presentation_publishing/interfaces/publishes_saved_object_id.ts index 3df33706612b6f..9bf527ca8a8e9b 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_saved_object_id.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_saved_object_id.ts @@ -28,4 +28,4 @@ export const apiPublishesSavedObjectId = ( * A hook that gets this API's saved object ID as a reactive variable which will cause re-renders on change. */ export const useSavedObjectId = (api: PublishesSavedObjectId | undefined) => - useStateFromPublishingSubject(api?.savedObjectId); + useStateFromPublishingSubject(api?.savedObjectId); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts b/packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts new file mode 100644 index 00000000000000..9c43a82ff90389 --- /dev/null +++ b/packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { PublishingSubject, useStateFromPublishingSubject } from '../publishing_subject'; + +export interface PublishesUnsavedChanges { + unsavedChanges: PublishingSubject; + resetUnsavedChanges: () => void; +} + +export const apiPublishesUnsavedChanges = (api: unknown): api is PublishesUnsavedChanges => { + return Boolean( + api && + (api as PublishesUnsavedChanges).unsavedChanges && + (api as PublishesUnsavedChanges).resetUnsavedChanges + ); +}; + +/** + * A hook that gets this API's unsaved changes as a reactive variable which will cause re-renders on change. + */ +export const useUnsavedChanges = (api: PublishesUnsavedChanges | undefined) => + useStateFromPublishingSubject(api?.unsavedChanges); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_view_mode.ts b/packages/presentation/presentation_publishing/interfaces/publishes_view_mode.ts index 6e19c170a02228..80633f90fc00e7 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_view_mode.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_view_mode.ts @@ -52,4 +52,4 @@ export const useViewMode = < ApiType extends Partial = Partial >( api: ApiType | undefined -) => useStateFromPublishingSubject(api?.viewMode); +) => useStateFromPublishingSubject(api?.viewMode); diff --git a/packages/presentation/presentation_publishing/publishing_subject/index.ts b/packages/presentation/presentation_publishing/publishing_subject/index.ts index f75455e64a68ea..5dbd2eb95579a1 100644 --- a/packages/presentation/presentation_publishing/publishing_subject/index.ts +++ b/packages/presentation/presentation_publishing/publishing_subject/index.ts @@ -7,8 +7,9 @@ */ export { useBatchedPublishingSubjects } from './publishing_batcher'; -export { - useStateFromPublishingSubject, - usePublishingSubject, - type PublishingSubject, -} from './publishing_subject'; +export { useStateFromPublishingSubject, usePublishingSubject } from './publishing_subject'; +export type { + PublishingSubject, + ValueFromPublishingSubject, + UnwrapPublishingSubjectTuple, +} from './types'; diff --git a/packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts b/packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts index a4620e8aa29968..2c3cbe32be4a99 100644 --- a/packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts +++ b/packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts @@ -8,39 +8,18 @@ import { useEffect, useMemo, useRef, useState } from 'react'; import { combineLatest } from 'rxjs'; -import { debounceTime, filter } from 'rxjs/operators'; -import { PublishingSubject } from './publishing_subject'; +import { debounceTime } from 'rxjs/operators'; +import { AnyPublishingSubject, PublishingSubject, UnwrapPublishingSubjectTuple } from './types'; -// Usage of any required here. We want to subscribe to the subject no matter the type. -type AnyValue = any; -type AnyPublishingSubject = PublishingSubject; - -interface PublishingSubjectCollection { - [key: string]: AnyPublishingSubject | undefined; -} - -interface RequiredPublishingSubjectCollection { - [key: string]: AnyPublishingSubject; -} - -type PublishingSubjectBatchResult = { - [SubjectKey in keyof SubjectsType]?: SubjectsType[SubjectKey] extends - | PublishingSubject - | undefined - ? ValueType - : never; -}; - -const hasSubjectsObjectChanged = ( - subjectsA: PublishingSubjectCollection, - subjectsB: PublishingSubjectCollection +const hasSubjectsArrayChanged = ( + subjectsA: AnyPublishingSubject[], + subjectsB: AnyPublishingSubject[] ) => { - const subjectKeysA = Object.keys(subjectsA); - const subjectKeysB = Object.keys(subjectsB); - if (subjectKeysA.length !== subjectKeysB.length) return true; + if (subjectsA.length !== subjectsB.length) return true; - for (const key of subjectKeysA) { - if (Boolean(subjectsA[key]) !== Boolean(subjectsB[key])) return true; + for (let i = 0; i < subjectsA.length; i++) { + // here we only compare if the subjects are both either defined or undefined. + if (Boolean(subjectsA[i]) !== Boolean(subjectsB[i])) return true; } return false; }; @@ -49,21 +28,15 @@ const hasSubjectsObjectChanged = ( * Batches the latest values of multiple publishing subjects into a single object. Use this to avoid unnecessary re-renders. * You should avoid using this hook with subjects that your component pushes values to on user interaction, as it can cause a slight delay. */ -export const useBatchedPublishingSubjects = ( - subjects: SubjectsType -): PublishingSubjectBatchResult => { +export const useBatchedPublishingSubjects = ( + ...subjects: [...SubjectsType] +): UnwrapPublishingSubjectTuple => { /** * memoize and deep diff subjects to avoid rebuilding the subscription when the subjects are the same. */ - const previousSubjects = useRef(null); - + const previousSubjects = useRef(subjects); const subjectsToUse = useMemo(() => { - if (!previousSubjects.current && !Object.values(subjects).some((subject) => Boolean(subject))) { - // if the previous subjects were null and none of the new subjects are defined, return null to avoid building the subscription. - return null; - } - - if (!hasSubjectsObjectChanged(previousSubjects.current ?? {}, subjects)) { + if (!hasSubjectsArrayChanged(previousSubjects.current ?? [], subjects)) { return previousSubjects.current; } previousSubjects.current = subjects; @@ -71,54 +44,51 @@ export const useBatchedPublishingSubjects = { - if (!subjectsToUse) return {}; - const definedSubjectsMap: RequiredPublishingSubjectCollection = - Object.keys(subjectsToUse).reduce((acc, key) => { - if (Boolean(subjectsToUse[key])) acc[key] = subjectsToUse[key] as AnyPublishingSubject; - return acc; - }, {} as RequiredPublishingSubjectCollection) ?? {}; - - return { - definedKeys: Object.keys(definedSubjectsMap ?? {}) as Array, - definedSubjects: Object.values(definedSubjectsMap) ?? [], - }; - }, [subjectsToUse]); - - const [latestPublishedValues, setLatestPublishedValues] = useState< - PublishingSubjectBatchResult - >(() => { - if (!definedKeys?.length || !definedSubjects?.length) return {}; - const nextResult: PublishingSubjectBatchResult = {}; - for (let keyIndex = 0; keyIndex < definedKeys.length; keyIndex++) { - nextResult[definedKeys[keyIndex]] = definedSubjects[keyIndex].value ?? undefined; - } - return nextResult; - }); + const initialSubjectValues = useMemo( + () => unwrapPublishingSubjectArray(subjectsToUse), + [subjectsToUse] + ); + const [latestPublishedValues, setLatestPublishedValues] = + useState>(initialSubjectValues); /** * Subscribe to all subjects and update the latest values when any of them change. */ useEffect(() => { - if (!definedSubjects?.length || !definedKeys?.length) return; + const definedSubjects: Array> = []; + const definedSubjectIndices: number[] = []; + + for (let i = 0; i < subjectsToUse.length; i++) { + if (!subjectsToUse[i]) continue; + definedSubjects.push(subjectsToUse[i] as PublishingSubject); + definedSubjectIndices.push(i); + } + if (definedSubjects.length === 0) return; const subscription = combineLatest(definedSubjects) - .pipe( - // debounce latest state for 0ms to flush all in-flight changes - debounceTime(0), - filter((changes) => changes.length > 0) - ) - .subscribe((latestValues) => { - const nextResult: PublishingSubjectBatchResult = {}; - for (let keyIndex = 0; keyIndex < definedKeys.length; keyIndex++) { - nextResult[definedKeys[keyIndex]] = latestValues[keyIndex] ?? undefined; - } - setLatestPublishedValues(nextResult); + .pipe(debounceTime(0)) + .subscribe((values) => { + setLatestPublishedValues((lastPublishedValues) => { + const newLatestPublishedValues: UnwrapPublishingSubjectTuple = [ + ...lastPublishedValues, + ] as UnwrapPublishingSubjectTuple; + for (let i = 0; i < values.length; i++) { + newLatestPublishedValues[definedSubjectIndices[i]] = values[i] as never; + } + return newLatestPublishedValues; + }); }); - return () => subscription.unsubscribe(); - }, [definedKeys, definedSubjects]); + }, [subjectsToUse]); return latestPublishedValues; }; + +const unwrapPublishingSubjectArray = ( + subjects: T +): UnwrapPublishingSubjectTuple => { + return subjects.map( + (subject) => subject?.getValue?.() ?? undefined + ) as UnwrapPublishingSubjectTuple; +}; diff --git a/packages/presentation/presentation_publishing/publishing_subject/publishing_subject.test.tsx b/packages/presentation/presentation_publishing/publishing_subject/publishing_subject.test.tsx index deac166cc4686a..7e84d2593d3925 100644 --- a/packages/presentation/presentation_publishing/publishing_subject/publishing_subject.test.tsx +++ b/packages/presentation/presentation_publishing/publishing_subject/publishing_subject.test.tsx @@ -42,12 +42,12 @@ describe('useBatchedPublishingSubjects', () => { test('should render once when all state changes are in click handler (react batch)', async () => { let renderCount = 0; function Component() { - const value1 = useStateFromPublishingSubject(subject1); - const value2 = useStateFromPublishingSubject(subject2); - const value3 = useStateFromPublishingSubject(subject3); - const value4 = useStateFromPublishingSubject(subject4); - const value5 = useStateFromPublishingSubject(subject5); - const value6 = useStateFromPublishingSubject(subject6); + const value1 = useStateFromPublishingSubject(subject1); + const value2 = useStateFromPublishingSubject(subject2); + const value3 = useStateFromPublishingSubject(subject3); + const value4 = useStateFromPublishingSubject(subject4); + const value5 = useStateFromPublishingSubject(subject5); + const value6 = useStateFromPublishingSubject(subject6); renderCount++; return ( @@ -76,14 +76,14 @@ describe('useBatchedPublishingSubjects', () => { test('should batch state updates when using useBatchedPublishingSubjects', async () => { let renderCount = 0; function Component() { - const { value1, value2, value3, value4, value5, value6 } = useBatchedPublishingSubjects({ - value1: subject1, - value2: subject2, - value3: subject3, - value4: subject4, - value5: subject5, - value6: subject6, - }); + const [value1, value2, value3, value4, value5, value6] = useBatchedPublishingSubjects( + subject1, + subject2, + subject3, + subject4, + subject5, + subject6 + ); renderCount++; return ( @@ -117,12 +117,12 @@ describe('useBatchedPublishingSubjects', () => { test('should render for each state update outside of click handler', async () => { let renderCount = 0; function Component() { - const value1 = useStateFromPublishingSubject(subject1); - const value2 = useStateFromPublishingSubject(subject2); - const value3 = useStateFromPublishingSubject(subject3); - const value4 = useStateFromPublishingSubject(subject4); - const value5 = useStateFromPublishingSubject(subject5); - const value6 = useStateFromPublishingSubject(subject6); + const value1 = useStateFromPublishingSubject(subject1); + const value2 = useStateFromPublishingSubject(subject2); + const value3 = useStateFromPublishingSubject(subject3); + const value4 = useStateFromPublishingSubject(subject4); + const value5 = useStateFromPublishingSubject(subject5); + const value6 = useStateFromPublishingSubject(subject6); renderCount++; return ( diff --git a/packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts b/packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts index 104282e4e91b94..c1dfa43683f914 100644 --- a/packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts +++ b/packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts @@ -8,16 +8,7 @@ import { useEffect, useMemo, useState } from 'react'; import { BehaviorSubject } from 'rxjs'; - -/** - * A publishing subject is a RxJS subject that can be used to listen to value changes, but does not allow pushing values via the Next method. - */ -export type PublishingSubject = Omit, 'next'>; - -/** - * A utility type that makes a type optional if another passed in type is optional. - */ -type OptionalIfOptional = undefined extends TestType ? Type | undefined : Type; +import { PublishingSubject, ValueFromPublishingSubject } from './types'; /** * Declares a publishing subject, allowing external code to subscribe to react state changes. @@ -41,18 +32,15 @@ export const usePublishingSubject = ( * @param subject Publishing subject. */ export const useStateFromPublishingSubject = < - ValueType extends unknown = unknown, - SubjectType extends PublishingSubject | undefined = - | PublishingSubject - | undefined + SubjectType extends PublishingSubject | undefined = PublishingSubject | undefined >( - subject?: SubjectType -): OptionalIfOptional => { - const [value, setValue] = useState(subject?.getValue()); + subject: SubjectType +): ValueFromPublishingSubject => { + const [value, setValue] = useState>(subject?.getValue()); useEffect(() => { if (!subject) return; const subscription = subject.subscribe((newValue) => setValue(newValue)); return () => subscription.unsubscribe(); }, [subject]); - return value as OptionalIfOptional; + return value; }; diff --git a/packages/presentation/presentation_publishing/publishing_subject/types.ts b/packages/presentation/presentation_publishing/publishing_subject/types.ts new file mode 100644 index 00000000000000..77b3cd4f645b17 --- /dev/null +++ b/packages/presentation/presentation_publishing/publishing_subject/types.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { BehaviorSubject } from 'rxjs'; + +/** + * A publishing subject is a RxJS subject that can be used to listen to value changes, but does not allow pushing values via the Next method. + */ +export type PublishingSubject = Omit, 'next'>; + +// Usage of any required here. We want to build functionalities that can work with a publishing subject of any type. +type AnyValue = any; + +export type AnyPublishingSubject = PublishingSubject | undefined; + +export type ValueFromPublishingSubject< + T extends PublishingSubject | undefined = PublishingSubject | undefined +> = T extends PublishingSubject + ? ValueType + : T extends undefined + ? undefined + : never; + +export type UnwrapPublishingSubjectTuple = T extends [ + infer Head extends AnyPublishingSubject, + ...infer Tail extends AnyPublishingSubject[] +] + ? [ValueFromPublishingSubject, ...UnwrapPublishingSubjectTuple] + : []; diff --git a/packages/presentation/presentation_publishing/publishing_utils.ts b/packages/presentation/presentation_publishing/publishing_utils.ts deleted file mode 100644 index 37949a7d63ba6d..00000000000000 --- a/packages/presentation/presentation_publishing/publishing_utils.ts +++ /dev/null @@ -1,27 +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 { useImperativeHandle, useMemo } from 'react'; - -/** - * Publishes any API to the passed in ref. Note that any API passed in will not be rebuilt on - * subsequent renders, so it does not support reactive variables. Instead, pass in setter functions - * and publishing subjects to allow other components to listen to changes. - */ -export const useApiPublisher = ( - api: ApiType, - ref: React.ForwardedRef -) => { - const publishApi = useMemo( - () => api, - // disabling exhaustive deps because the API should be created once and never change. - // eslint-disable-next-line react-hooks/exhaustive-deps - [] - ); - useImperativeHandle(ref, () => publishApi); -}; diff --git a/packages/shared-ux/page/analytics_no_data/impl/src/analytics_no_data_page.component.tsx b/packages/shared-ux/page/analytics_no_data/impl/src/analytics_no_data_page.component.tsx index 59ca3a9b77e337..c3eae7ae065429 100644 --- a/packages/shared-ux/page/analytics_no_data/impl/src/analytics_no_data_page.component.tsx +++ b/packages/shared-ux/page/analytics_no_data/impl/src/analytics_no_data_page.component.tsx @@ -21,6 +21,8 @@ import { getHasApiKeys$ } from '../lib/get_has_api_keys'; export interface Props { /** Handler for successfully creating a new data view. */ onDataViewCreated: (dataView: unknown) => void; + /** Handler for when try ES|QL is clicked and user has been navigated to try ES|QL in discover. */ + onESQLNavigationComplete?: () => void; /** if set to true allows creation of an ad-hoc dataview from data view editor */ allowAdHocDataView?: boolean; /** if the kibana instance is customly branded */ @@ -116,6 +118,7 @@ const flavors: { */ export const AnalyticsNoDataPage: React.FC = ({ onDataViewCreated, + onESQLNavigationComplete, allowAdHocDataView, showPlainSpinner, ...services @@ -131,7 +134,13 @@ export const AnalyticsNoDataPage: React.FC = ({ return ( ); }; diff --git a/packages/shared-ux/page/analytics_no_data/impl/src/analytics_no_data_page.tsx b/packages/shared-ux/page/analytics_no_data/impl/src/analytics_no_data_page.tsx index 3ad51b54c1feb8..47a76fc9a0c9b5 100644 --- a/packages/shared-ux/page/analytics_no_data/impl/src/analytics_no_data_page.tsx +++ b/packages/shared-ux/page/analytics_no_data/impl/src/analytics_no_data_page.tsx @@ -18,6 +18,7 @@ import { AnalyticsNoDataPage as Component } from './analytics_no_data_page.compo */ export const AnalyticsNoDataPage = ({ onDataViewCreated, + onESQLNavigationComplete, allowAdHocDataView, }: AnalyticsNoDataPageProps) => { const { customBranding, ...services } = useServices(); @@ -29,6 +30,7 @@ export const AnalyticsNoDataPage = ({ showPlainSpinner={showPlainSpinner} allowAdHocDataView={allowAdHocDataView} onDataViewCreated={onDataViewCreated} + onESQLNavigationComplete={onESQLNavigationComplete} /> ); }; diff --git a/packages/shared-ux/page/analytics_no_data/types/index.d.ts b/packages/shared-ux/page/analytics_no_data/types/index.d.ts index f744595a2fe294..1e4af95715b12a 100644 --- a/packages/shared-ux/page/analytics_no_data/types/index.d.ts +++ b/packages/shared-ux/page/analytics_no_data/types/index.d.ts @@ -69,4 +69,6 @@ export interface AnalyticsNoDataPageProps { onDataViewCreated: (dataView: unknown) => void; /** if set to true allows creation of an ad-hoc data view from data view editor */ allowAdHocDataView?: boolean; + /** Handler for when try ES|QL is clicked and user has been navigated to try ES|QL in discover. */ + onESQLNavigationComplete?: () => void; } diff --git a/packages/shared-ux/page/kibana_no_data/impl/src/kibana_no_data_page.tsx b/packages/shared-ux/page/kibana_no_data/impl/src/kibana_no_data_page.tsx index 2773184b087bb2..12cebacbf9973f 100644 --- a/packages/shared-ux/page/kibana_no_data/impl/src/kibana_no_data_page.tsx +++ b/packages/shared-ux/page/kibana_no_data/impl/src/kibana_no_data_page.tsx @@ -18,6 +18,7 @@ import { useServices } from './services'; */ export const KibanaNoDataPage = ({ onDataViewCreated, + onESQLNavigationComplete, noDataConfig, allowAdHocDataView, showPlainSpinner, @@ -55,6 +56,7 @@ export const KibanaNoDataPage = ({ return ( ); diff --git a/packages/shared-ux/page/kibana_no_data/types/index.d.ts b/packages/shared-ux/page/kibana_no_data/types/index.d.ts index ff9b4d845f597a..888925a146e9d6 100644 --- a/packages/shared-ux/page/kibana_no_data/types/index.d.ts +++ b/packages/shared-ux/page/kibana_no_data/types/index.d.ts @@ -59,4 +59,6 @@ export interface KibanaNoDataPageProps { allowAdHocDataView?: boolean; /** Set to true if the kibana is customly branded */ showPlainSpinner: boolean; + /** Handler for when try ES|QL is clicked and user has been navigated to try ES|QL in discover. */ + onESQLNavigationComplete?: () => void; } diff --git a/packages/shared-ux/prompt/no_data_views/impl/index.ts b/packages/shared-ux/prompt/no_data_views/impl/index.ts index 69a602f9eac3b5..3a71331ebbc9dc 100644 --- a/packages/shared-ux/prompt/no_data_views/impl/index.ts +++ b/packages/shared-ux/prompt/no_data_views/impl/index.ts @@ -17,3 +17,4 @@ export { NoDataViewsPrompt } from './src/no_data_views'; export { NoDataViewsPrompt as NoDataViewsPromptComponent } from './src/no_data_views.component'; export { NoDataViewsPromptKibanaProvider, NoDataViewsPromptProvider } from './src/services'; export { DataViewIllustration } from './src/data_view_illustration'; +export { useOnTryESQL } from './src/hooks'; diff --git a/packages/shared-ux/prompt/no_data_views/impl/src/actions.tsx b/packages/shared-ux/prompt/no_data_views/impl/src/actions.tsx new file mode 100644 index 00000000000000..d71b460e26a3e6 --- /dev/null +++ b/packages/shared-ux/prompt/no_data_views/impl/src/actions.tsx @@ -0,0 +1,75 @@ +/* + * Copyright 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 { EuiButton, EuiLink, EuiSpacer, EuiText } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import React from 'react'; + +interface NoDataButtonProps { + onClickCreate: (() => void) | undefined; + canCreateNewDataView: boolean; + onTryESQL?: () => void; + esqlDocLink?: string; +} + +const createDataViewText = i18n.translate('sharedUXPackages.noDataViewsPrompt.addDataViewText', { + defaultMessage: 'Create data view', +}); + +export const NoDataButtonLink = ({ + onClickCreate, + canCreateNewDataView, + onTryESQL, + esqlDocLink, +}: NoDataButtonProps) => { + if (!onTryESQL && !canCreateNewDataView) { + return null; + } + + return ( + <> + {canCreateNewDataView && ( + + {createDataViewText} + + )} + {canCreateNewDataView && onTryESQL && } + {onTryESQL && ( + + + + + ), + }} + /> + + + + + + )} + + ); +}; diff --git a/packages/kbn-url-state/jest.config.js b/packages/shared-ux/prompt/no_data_views/impl/src/hooks/index.ts similarity index 76% rename from packages/kbn-url-state/jest.config.js rename to packages/shared-ux/prompt/no_data_views/impl/src/hooks/index.ts index 256a51239206c4..23b2d1134fd979 100644 --- a/packages/kbn-url-state/jest.config.js +++ b/packages/shared-ux/prompt/no_data_views/impl/src/hooks/index.ts @@ -6,8 +6,4 @@ * Side Public License, v 1. */ -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-url-state'], -}; +export { useOnTryESQL, type UseOnTryEsqlParams } from './use_on_try_esql'; diff --git a/packages/shared-ux/prompt/no_data_views/impl/src/hooks/use_on_try_esql.ts b/packages/shared-ux/prompt/no_data_views/impl/src/hooks/use_on_try_esql.ts new file mode 100644 index 00000000000000..e026886c1ca7f6 --- /dev/null +++ b/packages/shared-ux/prompt/no_data_views/impl/src/hooks/use_on_try_esql.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { useEffect, useState } from 'react'; +import { DISCOVER_ESQL_LOCATOR } from '@kbn/deeplinks-analytics'; + +import { NavigateToAppFn, LocatorClient } from '@kbn/shared-ux-prompt-no-data-views-types'; + +export interface UseOnTryEsqlParams { + locatorClient?: LocatorClient; + navigateToApp: NavigateToAppFn; +} + +export const useOnTryESQL = ({ locatorClient, navigateToApp }: UseOnTryEsqlParams) => { + const [onTryESQL, setOnTryEsql] = useState<(() => void) | undefined>(); + + useEffect(() => { + (async () => { + const location = await locatorClient?.get(DISCOVER_ESQL_LOCATOR)?.getLocation({}); + + if (!location) { + return; + } + + const { app, path, state } = location; + + setOnTryEsql(() => () => { + navigateToApp(app, { path, state }); + }); + })(); + }, [locatorClient, navigateToApp]); + + return onTryESQL; +}; diff --git a/packages/shared-ux/prompt/no_data_views/impl/src/no_data_views.component.tsx b/packages/shared-ux/prompt/no_data_views/impl/src/no_data_views.component.tsx index 5bc428f0519689..2803df4cc6eb18 100644 --- a/packages/shared-ux/prompt/no_data_views/impl/src/no_data_views.component.tsx +++ b/packages/shared-ux/prompt/no_data_views/impl/src/no_data_views.component.tsx @@ -9,17 +9,13 @@ import React from 'react'; import { css } from '@emotion/react'; -import { EuiButton, EuiEmptyPrompt, EuiPanel } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; +import { EuiEmptyPrompt, EuiPanel } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { withSuspense } from '@kbn/shared-ux-utility'; import { NoDataViewsPromptComponentProps } from '@kbn/shared-ux-prompt-no-data-views-types'; import { DocumentationLink } from './documentation_link'; - -const createDataViewText = i18n.translate('sharedUXPackages.noDataViewsPrompt.addDataViewText', { - defaultMessage: 'Create data view', -}); +import { NoDataButtonLink } from './actions'; // Using raw value because it is content dependent const MAX_WIDTH = 830; @@ -31,19 +27,10 @@ export const NoDataViewsPrompt = ({ onClickCreate, canCreateNewDataView, dataViewsDocLink, + onTryESQL, + esqlDocLink, emptyPromptColor = 'plain', }: NoDataViewsPromptComponentProps) => { - const actions = canCreateNewDataView && ( - - {createDataViewText} - - ); - const title = canCreateNewDataView ? (

; + const actions = ( + + ); return ( ', () => { const component = mount(); expect(services.openDataViewEditor).not.toHaveBeenCalled(); - component.find('button').simulate('click'); + component.find('button[data-test-subj="createDataViewButton"]').simulate('click'); component.unmount(); expect(services.openDataViewEditor).toHaveBeenCalled(); }); + + test('on ES|QL try', () => { + const component = mount(); + + expect(services.onTryESQL).not.toHaveBeenCalled(); + component.find('button[data-test-subj="tryESQLLink"]').simulate('click'); + + component.unmount(); + + expect(services.onTryESQL).toHaveBeenCalled(); + }); }); diff --git a/packages/shared-ux/prompt/no_data_views/impl/src/no_data_views.tsx b/packages/shared-ux/prompt/no_data_views/impl/src/no_data_views.tsx index 4f668a1017b285..837de4c856949d 100644 --- a/packages/shared-ux/prompt/no_data_views/impl/src/no_data_views.tsx +++ b/packages/shared-ux/prompt/no_data_views/impl/src/no_data_views.tsx @@ -26,9 +26,12 @@ type CloseDataViewEditorFn = ReturnType { - const { canCreateNewDataView, openDataViewEditor, dataViewsDocLink } = useServices(); + const { canCreateNewDataView, openDataViewEditor, dataViewsDocLink, onTryESQL, esqlDocLink } = + useServices(); + const closeDataViewEditor = useRef(); useEffect(() => { @@ -72,6 +75,21 @@ export const NoDataViewsPrompt = ({ ]); return ( - + { + onTryESQL(); + if (onESQLNavigationComplete) { + onESQLNavigationComplete(); + } + } + : undefined, + }} + /> ); }; diff --git a/packages/shared-ux/prompt/no_data_views/impl/src/services.tsx b/packages/shared-ux/prompt/no_data_views/impl/src/services.tsx index b8fe90e1ef135d..6e282fc6b3a18b 100644 --- a/packages/shared-ux/prompt/no_data_views/impl/src/services.tsx +++ b/packages/shared-ux/prompt/no_data_views/impl/src/services.tsx @@ -7,10 +7,12 @@ */ import React, { FC, useContext } from 'react'; + import type { NoDataViewsPromptServices, NoDataViewsPromptKibanaDependencies, } from '@kbn/shared-ux-prompt-no-data-views-types'; +import { useOnTryESQL } from './hooks'; const NoDataViewsPromptContext = React.createContext(null); @@ -23,11 +25,18 @@ export const NoDataViewsPromptProvider: FC = ({ }) => { // Typescript types are widened to accept more than what is needed. Take only what is necessary // so the context remains clean. - const { canCreateNewDataView, dataViewsDocLink, openDataViewEditor } = services; + const { canCreateNewDataView, dataViewsDocLink, openDataViewEditor, onTryESQL, esqlDocLink } = + services; return ( {children} @@ -41,12 +50,22 @@ export const NoDataViewsPromptKibanaProvider: FC { + const { + share, + coreStart: { + application: { navigateToApp }, + }, + } = services; + const onTryESQL = useOnTryESQL({ locatorClient: share?.url.locators, navigateToApp }); + return ( {children} diff --git a/packages/shared-ux/prompt/no_data_views/impl/tsconfig.json b/packages/shared-ux/prompt/no_data_views/impl/tsconfig.json index 5da3eb228470f7..673823e6204749 100644 --- a/packages/shared-ux/prompt/no_data_views/impl/tsconfig.json +++ b/packages/shared-ux/prompt/no_data_views/impl/tsconfig.json @@ -21,6 +21,7 @@ "@kbn/test-jest-helpers", "@kbn/shared-ux-prompt-no-data-views-types", "@kbn/shared-ux-prompt-no-data-views-mocks", + "@kbn/deeplinks-analytics", ], "exclude": [ "target/**/*", diff --git a/packages/shared-ux/prompt/no_data_views/mocks/src/jest.ts b/packages/shared-ux/prompt/no_data_views/mocks/src/jest.ts index af27a7acb8aff7..41af02dcf4c717 100644 --- a/packages/shared-ux/prompt/no_data_views/mocks/src/jest.ts +++ b/packages/shared-ux/prompt/no_data_views/mocks/src/jest.ts @@ -16,12 +16,14 @@ const defaultParams = {}; export const getNoDataViewsPromptServicesMock = ( params: Partial = defaultParams ) => { - const { canCreateNewDataView, dataViewsDocLink } = params || {}; + const { canCreateNewDataView, dataViewsDocLink, esqlDocLink } = params || {}; const services: NoDataViewsPromptServices = { canCreateNewDataView: canCreateNewDataView || true, dataViewsDocLink: dataViewsDocLink || 'some/link', + esqlDocLink: esqlDocLink || 'some/link', openDataViewEditor: jest.fn(), + onTryESQL: jest.fn(), }; return services; diff --git a/packages/shared-ux/prompt/no_data_views/mocks/src/storybook.ts b/packages/shared-ux/prompt/no_data_views/mocks/src/storybook.ts index 2dd5a22186eb44..4f0ddc03113007 100644 --- a/packages/shared-ux/prompt/no_data_views/mocks/src/storybook.ts +++ b/packages/shared-ux/prompt/no_data_views/mocks/src/storybook.ts @@ -15,8 +15,8 @@ import { type ServiceArguments = Pick< NoDataViewsPromptServices, - 'canCreateNewDataView' | 'dataViewsDocLink' ->; + 'canCreateNewDataView' | 'dataViewsDocLink' | 'esqlDocLink' +> & { canTryEsql: boolean }; export type Params = Record; @@ -36,6 +36,14 @@ export class StorybookMock extends AbstractStorybookMock< options: ['some/link', undefined], control: { type: 'radio' }, }, + esqlDocLink: { + options: ['some/link', undefined], + control: { type: 'radio' }, + }, + canTryEsql: { + control: 'boolean', + defaultValue: true, + }, }; dependencies = []; @@ -46,15 +54,22 @@ export class StorybookMock extends AbstractStorybookMock< } getServices(params: Params): NoDataViewsPromptServices { - const { canCreateNewDataView, dataViewsDocLink } = params; + const { canCreateNewDataView, dataViewsDocLink, canTryEsql, esqlDocLink } = params; + let onTryESQL; + + if (canTryEsql !== false) { + onTryESQL = action('onTryESQL'); + } return { canCreateNewDataView, dataViewsDocLink, + esqlDocLink, openDataViewEditor: (options) => { action('openDataViewEditor')(options); return () => {}; }, + onTryESQL, }; } } diff --git a/packages/shared-ux/prompt/no_data_views/types/index.d.ts b/packages/shared-ux/prompt/no_data_views/types/index.d.ts index eff6ad60e2aa42..6c2c409899d58f 100644 --- a/packages/shared-ux/prompt/no_data_views/types/index.d.ts +++ b/packages/shared-ux/prompt/no_data_views/types/index.d.ts @@ -7,6 +7,7 @@ */ import { EuiEmptyPromptProps } from '@elastic/eui'; +import type { ILocatorClient } from '@kbn/share-plugin/common/url_service'; /** * TODO: `DataView` is a class exported by `src/plugins/data_views/public`. Since this service @@ -40,7 +41,15 @@ export interface NoDataViewsPromptServices { openDataViewEditor: (options: DataViewEditorOptions) => () => void; /** A link to information about Data Views in Kibana */ dataViewsDocLink: string; + /** Get a handler for trying ES|QL */ + onTryESQL: (() => void) | undefined; + /** A link to the documentation for ES|QL */ + esqlDocLink: string; } + +export type NavigateToAppFn = (appId: string, options?: { path?: string; state?: unknown }) => void; +export type LocatorClient = ILocatorClient; + /** * Kibana-specific service types. */ @@ -51,8 +60,14 @@ export interface NoDataViewsPromptKibanaDependencies { indexPatterns: { introduction: string; }; + query: { + queryESQL: string; + }; }; }; + application: { + navigateToApp: NavigateToAppFn; + }; }; dataViewEditor: { userPermissions: { @@ -60,23 +75,34 @@ export interface NoDataViewsPromptKibanaDependencies { }; openEditor: (options: DataViewEditorOptions) => () => void; }; + share?: { + url: { + locators: LocatorClient; + }; + }; } export interface NoDataViewsPromptComponentProps { /** True if the user has permission to create a data view, false otherwise. */ canCreateNewDataView: boolean; - /** Click handler for create button. **/ - onClickCreate?: () => void; /** Link to documentation on data views. */ dataViewsDocLink?: string; /** The background color of the prompt; defaults to `plain`. */ emptyPromptColor?: EuiEmptyPromptProps['color']; + /** Click handler for create button. **/ + onClickCreate?: () => void; + /** Handler for someone wanting to try ES|QL. */ + onTryESQL?: () => void; + /** Link to documentation on ES|QL. */ + esqlDocLink?: string; } // TODO: https://github.com/elastic/kibana/issues/127695 export interface NoDataViewsPromptProps { - /** Handler for successfully creating a new data view. */ - onDataViewCreated: (dataView: unknown) => void; /** if set to true allows creation of an ad-hoc data view from data view editor */ allowAdHocDataView?: boolean; + /** Handler for successfully creating a new data view. */ + onDataViewCreated: (dataView: unknown) => void; + /** Handler for when try ES|QL is clicked and user has been navigated to try ES|QL in discover. */ + onESQLNavigationComplete?: () => void; } diff --git a/packages/shared-ux/prompt/no_data_views/types/tsconfig.json b/packages/shared-ux/prompt/no_data_views/types/tsconfig.json index 362cc9e727b9f5..b82ab394b8afca 100644 --- a/packages/shared-ux/prompt/no_data_views/types/tsconfig.json +++ b/packages/shared-ux/prompt/no_data_views/types/tsconfig.json @@ -9,5 +9,8 @@ ], "exclude": [ "target/**/*", + ], + "kbn_references": [ + "@kbn/share-plugin", ] } diff --git a/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts b/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts index 978cba8a06016e..e99ca235bfad46 100644 --- a/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts +++ b/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts @@ -94,7 +94,7 @@ describe('checking migration metadata changes on all registered SO types', () => "file": "6b65ae5899b60ebe08656fd163ea532e557d3c98", "file-upload-usage-collection-telemetry": "06e0a8c04f991e744e09d03ab2bd7f86b2088200", "fileShare": "5be52de1747d249a221b5241af2838264e19aaa1", - "fleet-fleet-server-host": "b04898fcde07f4ce86e844c8fe2f4b23b77ef60a", + "fleet-fleet-server-host": "69be15f6b6f2a2875ad3c7050ddea7a87f505417", "fleet-message-signing-keys": "93421f43fed2526b59092a4e3c65d64bc2266c0f", "fleet-preconfiguration-deletion-record": "c52ea1e13c919afe8a5e8e3adbb7080980ecc08e", "fleet-proxy": "6cb688f0d2dd856400c1dbc998b28704ff70363d", diff --git a/src/plugins/ai_assistant_management/observability/public/helpers/categorize_entries.ts b/src/plugins/ai_assistant_management/observability/public/helpers/categorize_entries.ts index e9937b1df12159..c47e892ba156b3 100644 --- a/src/plugins/ai_assistant_management/observability/public/helpers/categorize_entries.ts +++ b/src/plugins/ai_assistant_management/observability/public/helpers/categorize_entries.ts @@ -16,7 +16,7 @@ export interface KnowledgeBaseEntryCategory { export function categorizeEntries({ entries }: { entries: KnowledgeBaseEntry[] }) { return entries.reduce((acc, entry) => { - const categoryName = entry.labels.category ?? entry.id; + const categoryName = entry.labels?.category ?? entry.id; const index = acc.findIndex((item) => item.categoryName === categoryName); diff --git a/src/plugins/console/server/lib/spec_definitions/js/query/dsl.ts b/src/plugins/console/server/lib/spec_definitions/js/query/dsl.ts index 6a8ddc00532032..c83f8ebe713c0d 100644 --- a/src/plugins/console/server/lib/spec_definitions/js/query/dsl.ts +++ b/src/plugins/console/server/lib/spec_definitions/js/query/dsl.ts @@ -421,6 +421,16 @@ export const query = (specService: SpecDefinitionsService) => { }, __scope_link: '.more_like_this', }, + pinned: { + __template: { + organic: {}, + ids: [], + }, + organic: { + query: {}, + }, + ids: [], + }, prefix: { __template: prefixTemplate, '{field}': { @@ -428,6 +438,17 @@ export const query = (specService: SpecDefinitionsService) => { boost: 1.0, }, }, + rank_feature: { + __template: { + field: 'FIELD', + }, + field: '{field}', + boost: 1.0, + saturation: {}, + log: {}, + sigmoid: {}, + linear: {}, + }, query_string: { __template: { default_field: 'FIELD', diff --git a/src/plugins/content_management/common/rpc/types.ts b/src/plugins/content_management/common/rpc/types.ts index 781ba7abc20cf7..8b93d8246f3391 100644 --- a/src/plugins/content_management/common/rpc/types.ts +++ b/src/plugins/content_management/common/rpc/types.ts @@ -15,6 +15,7 @@ export interface ProcedureSchemas { export type ItemResult = M extends void ? { item: T; + meta?: never; } : { item: T; diff --git a/src/plugins/content_management/server/content_client/content_client.test.ts b/src/plugins/content_management/server/content_client/content_client.test.ts new file mode 100644 index 00000000000000..f88e4f5d3a892c --- /dev/null +++ b/src/plugins/content_management/server/content_client/content_client.test.ts @@ -0,0 +1,264 @@ +/* + * Copyright 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 { ContentCrud } from '../core/crud'; +import { EventBus } from '../core/event_bus'; +import { createMemoryStorage, type FooContent } from '../core/mocks'; +import { ContentClient } from './content_client'; + +describe('ContentClient', () => { + const setup = ({ + contentTypeId = 'foo', + }: { + contentTypeId?: string; + } = {}) => { + const storage = createMemoryStorage(); + const eventBus = new EventBus(); + const crudInstance = new ContentCrud(contentTypeId, storage, { eventBus }); + + const contentClient = ContentClient.create(contentTypeId, { + crudInstance, + storageContext: {} as any, + }); + + return { contentClient }; + }; + + describe('instance', () => { + test('should throw an Error if instantiate using constructor', () => { + const expectToThrow = () => { + new ContentClient(Symbol('foo'), 'foo', {} as any); + }; + expect(expectToThrow).toThrowError('Use ContentClient.create() instead'); + }); + + test('should have contentTypeId', () => { + const { contentClient } = setup({ contentTypeId: 'hellooo' }); + expect(contentClient.contentTypeId).toBe('hellooo'); + }); + + test('should throw if crudInstance is not an instance of ContentCrud', () => { + const expectToThrow = () => { + ContentClient.create('foo', { + crudInstance: {} as any, + storageContext: {} as any, + }); + }; + // With this test and runtime check we can rely on all the existing tests of the Content Crud. + // e.g. the tests about events being dispatched, etc. + expect(expectToThrow).toThrowError('Crud instance missing or not an instance of ContentCrud'); + }); + }); + + describe('Crud', () => { + describe('create()', () => { + test('should create an item', async () => { + const { contentClient } = setup(); + const itemCreated = await contentClient.create({ foo: 'bar' }); + const { id } = itemCreated.result.item; + const res = await contentClient.get(id); + expect(res.result.item).toEqual({ foo: 'bar', id }); + }); + + test('should pass the options to the storage', async () => { + const { contentClient } = setup(); + + const options = { forwardInResponse: { option1: 'foo' } }; + const res = await contentClient.create({ field1: 123 }, options); + expect(res.result.item).toEqual({ + field1: 123, + id: expect.any(String), + options: { option1: 'foo' }, // the options have correctly been passed to the storage + }); + }); + }); + + describe('get()', () => { + // Note: we test the client get() method in multiple other tests for + // the "create()" and "update()" methods, no need for extended tests here. + test('should return undefined if no item was found', async () => { + const { contentClient } = setup(); + const res = await contentClient.get('hello'); + expect(res.result.item).toBeUndefined(); + }); + + test('should pass the options to the storage', async () => { + const { contentClient } = setup(); + + const options = { forwardInResponse: { foo: 'bar' } }; + const res = await contentClient.get('hello', options); + + expect(res.result.item).toEqual({ + // the options have correctly been passed to the storage + options: { foo: 'bar' }, + }); + }); + }); + + describe('bulkGet()', () => { + test('should return multiple items', async () => { + const { contentClient } = setup(); + + const item1 = await contentClient.create({ name: 'item1' }); + const item2 = await contentClient.create({ name: 'item2' }); + const ids = [item1.result.item.id, item2.result.item.id]; + + const res = await contentClient.bulkGet(ids); + expect(res.result.hits).toEqual([ + { + item: { + name: 'item1', + id: expect.any(String), + }, + }, + { + item: { + name: 'item2', + id: expect.any(String), + }, + }, + ]); + }); + + test('should pass the options to the storage', async () => { + const { contentClient } = setup(); + + const item1 = await contentClient.create({ name: 'item1' }); + const item2 = await contentClient.create({ name: 'item2' }); + const ids = [item1.result.item.id, item2.result.item.id]; + + const options = { forwardInResponse: { foo: 'bar' } }; + const res = await contentClient.bulkGet(ids, options); + + expect(res.result.hits).toEqual([ + { + item: { + name: 'item1', + id: expect.any(String), + options: { foo: 'bar' }, // the options have correctly been passed to the storage + }, + }, + { + item: { + name: 'item2', + id: expect.any(String), + options: { foo: 'bar' }, // the options have correctly been passed to the storage + }, + }, + ]); + }); + }); + + describe('update()', () => { + test('should update an item', async () => { + const { contentClient } = setup(); + const itemCreated = await contentClient.create({ foo: 'bar' }); + const { id } = itemCreated.result.item; + + await contentClient.update(id, { foo: 'changed' }); + + const res = await contentClient.get(id); + expect(res.result.item).toEqual({ foo: 'changed', id }); + }); + + test('should pass the options to the storage', async () => { + const { contentClient } = setup(); + const itemCreated = await contentClient.create({ field1: 'bar' }); + const { id } = itemCreated.result.item; + + const options = { forwardInResponse: { option1: 'foo' } }; + const res = await contentClient.update(id, { field1: 'changed' }, options); + + expect(res.result.item).toEqual({ + field1: 'changed', + id, + options: { option1: 'foo' }, // the options have correctly been passed to the storage + }); + }); + }); + + describe('delete()', () => { + test('should delete an item', async () => { + const { contentClient } = setup(); + const itemCreated = await contentClient.create({ foo: 'bar' }); + const { id } = itemCreated.result.item; + + { + const res = await contentClient.get(id); + expect(res.result.item).not.toBeUndefined(); + } + + await contentClient.delete(id); + + { + const res = await contentClient.get(id); + expect(res.result.item).toBeUndefined(); + } + }); + + test('should pass the options to the storage', async () => { + const { contentClient } = setup(); + const itemCreated = await contentClient.create({ field1: 'bar' }); + const { id } = itemCreated.result.item; + + const options = { forwardInResponse: { option1: 'foo' } }; + + const res = await contentClient.delete(id, options); + + expect(res.result).toEqual({ + success: true, + options: { option1: 'foo' }, // the options have correctly been passed to the storage + }); + }); + }); + + describe('search()', () => { + test('should find an item', async () => { + const { contentClient } = setup(); + + await contentClient.create({ title: 'hello' }); + + const res = await contentClient.search({ text: 'hello' }); + + expect(res.result).toEqual({ + hits: [ + { + id: expect.any(String), + title: 'hello', + }, + ], + pagination: { + cursor: '', + total: 1, + }, + }); + }); + + test('should pass the options to the storage', async () => { + const { contentClient } = setup(); + await contentClient.create({ title: 'hello' }); + + const options = { forwardInResponse: { option1: 'foo' } }; + const res = await contentClient.search({ text: 'hello' }, options); + + expect(res.result).toEqual({ + hits: [ + { + id: expect.any(String), + title: 'hello', + options: { option1: 'foo' }, // the options have correctly been passed to the storage + }, + ], + pagination: { + cursor: '', + total: 1, + }, + }); + }); + }); + }); +}); diff --git a/src/plugins/content_management/server/content_client/content_client.ts b/src/plugins/content_management/server/content_client/content_client.ts new file mode 100644 index 00000000000000..4cf76910594080 --- /dev/null +++ b/src/plugins/content_management/server/content_client/content_client.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { StorageContext } from '../core'; +import { ContentCrud } from '../core/crud'; +import type { IContentClient } from './types'; + +interface Context { + crudInstance: ContentCrud; + storageContext: StorageContext; +} + +const secretToken = Symbol('secretToken'); + +export class ContentClient implements IContentClient { + static create(contentTypeId: string, ctx: Context): IContentClient { + return new ContentClient(secretToken, contentTypeId, ctx); + } + + constructor(token: symbol, public contentTypeId: string, private readonly ctx: Context) { + if (token !== secretToken) { + throw new Error('Use ContentClient.create() instead'); + } + + if (ctx.crudInstance instanceof ContentCrud === false) { + throw new Error('Crud instance missing or not an instance of ContentCrud'); + } + } + + get(id: string, options: object) { + return this.ctx.crudInstance.get(this.ctx.storageContext, id, options); + } + + bulkGet(ids: string[], options: object) { + return this.ctx.crudInstance.bulkGet(this.ctx.storageContext, ids, options); + } + + create(data: object, options?: object) { + return this.ctx.crudInstance.create(this.ctx.storageContext, data, options); + } + + update(id: string, data: object, options?: object) { + return this.ctx.crudInstance.update(this.ctx.storageContext, id, data, options); + } + + delete(id: string, options?: object) { + return this.ctx.crudInstance.delete(this.ctx.storageContext, id, options); + } + + search(query: object, options?: object) { + return this.ctx.crudInstance.search(this.ctx.storageContext, query, options); + } +} diff --git a/src/plugins/content_management/server/content_client/content_client_factory.ts b/src/plugins/content_management/server/content_client/content_client_factory.ts new file mode 100644 index 00000000000000..e60f81fddfac88 --- /dev/null +++ b/src/plugins/content_management/server/content_client/content_client_factory.ts @@ -0,0 +1,102 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { RequestHandlerContext } from '@kbn/core-http-request-handler-context-server'; +import type { KibanaRequest } from '@kbn/core-http-server'; +import { Version } from '@kbn/object-versioning'; + +import type { MSearchIn, MSearchOut } from '../../common'; +import type { ContentRegistry } from '../core'; +import { MSearchService } from '../core/msearch'; +import { getServiceObjectTransformFactory, getStorageContext } from '../utils'; +import { ContentClient } from './content_client'; + +export const getContentClientFactory = + ({ contentRegistry }: { contentRegistry: ContentRegistry }) => + (contentTypeId: string) => { + const getForRequest = ({ + requestHandlerContext, + version, + }: { + requestHandlerContext: RequestHandlerContext; + request: KibanaRequest; + version?: Version; + }) => { + const contentDefinition = contentRegistry.getDefinition(contentTypeId); + + const storageContext = getStorageContext({ + contentTypeId, + version: version ?? contentDefinition.version.latest, + ctx: { + contentRegistry, + requestHandlerContext, + getTransformsFactory: getServiceObjectTransformFactory, + }, + }); + + const crudInstance = contentRegistry.getCrud(contentTypeId); + + return ContentClient.create(contentTypeId, { + storageContext, + crudInstance, + }); + }; + + return { + /** + * Client getter to interact with the registered content type. + */ + getForRequest, + }; + }; + +export const getMSearchClientFactory = + ({ + contentRegistry, + mSearchService, + }: { + contentRegistry: ContentRegistry; + mSearchService: MSearchService; + }) => + ({ + requestHandlerContext, + }: { + requestHandlerContext: RequestHandlerContext; + request: KibanaRequest; + }) => { + const msearch = async ({ contentTypes, query }: MSearchIn): Promise => { + const contentTypesWithStorageContext = contentTypes.map(({ contentTypeId, version }) => { + const contentDefinition = contentRegistry.getDefinition(contentTypeId); + + const storageContext = getStorageContext({ + contentTypeId, + version: version ?? contentDefinition.version.latest, + ctx: { + contentRegistry, + requestHandlerContext, + getTransformsFactory: getServiceObjectTransformFactory, + }, + }); + + return { + contentTypeId, + ctx: storageContext, + }; + }); + + const result = await mSearchService.search(contentTypesWithStorageContext, query); + + return { + contentTypes, + result, + }; + }; + + return { + msearch, + }; + }; diff --git a/src/plugins/content_management/server/content_client/index.ts b/src/plugins/content_management/server/content_client/index.ts new file mode 100644 index 00000000000000..24e5daa1a88bbc --- /dev/null +++ b/src/plugins/content_management/server/content_client/index.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { getContentClientFactory, getMSearchClientFactory } from './content_client_factory'; + +export type { IContentClient } from './types'; diff --git a/src/plugins/content_management/server/content_client/types.ts b/src/plugins/content_management/server/content_client/types.ts new file mode 100644 index 00000000000000..bc7c0c61dcceff --- /dev/null +++ b/src/plugins/content_management/server/content_client/types.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ContentCrud } from '../core/crud'; + +type CrudGetParameters = Parameters['get']>; +export type GetParameters = [CrudGetParameters[1], CrudGetParameters[2]?]; + +type CrudBulkGetParameters = Parameters['bulkGet']>; +export type BulkGetParameters = [ + CrudBulkGetParameters[1], + CrudBulkGetParameters[2]? +]; + +type CrudCreateParameters = Parameters['create']>; +export type CreateParameters = [ + CrudCreateParameters[1], + CrudCreateParameters[2]? +]; + +type CrudUpdateParameters = Parameters['update']>; +export type UpdateParameters = [ + CrudUpdateParameters[1], + CrudUpdateParameters[2], + CrudUpdateParameters[3]? +]; + +type CrudDeleteParameters = Parameters['delete']>; +export type DeleteParameters = [ + CrudDeleteParameters[1], + CrudDeleteParameters[2]? +]; + +type CrudSearchParameters = Parameters['search']>; +export type SearchParameters = [ + CrudSearchParameters[1], + CrudSearchParameters[2]? +]; + +export interface IContentClient { + contentTypeId: string; + get(...params: GetParameters): ReturnType['get']>; + bulkGet(...params: BulkGetParameters): ReturnType['bulkGet']>; + create(...params: CreateParameters): ReturnType['create']>; + update(...params: UpdateParameters): ReturnType['update']>; + delete(...params: DeleteParameters): ReturnType['delete']>; + search(...params: SearchParameters): ReturnType['search']>; +} diff --git a/src/plugins/content_management/server/core/core.test.ts b/src/plugins/content_management/server/core/core.test.ts index 15671b42f41592..2eafd1dc4df910 100644 --- a/src/plugins/content_management/server/core/core.test.ts +++ b/src/plugins/content_management/server/core/core.test.ts @@ -7,8 +7,12 @@ */ import { loggingSystemMock } from '@kbn/core/server/mocks'; + +import { until } from '../event_stream/tests/util'; +import { setupEventStreamService } from '../event_stream/tests/setup_event_stream_service'; +import { ContentClient } from '../content_client/content_client'; import { Core } from './core'; -import { createMemoryStorage } from './mocks'; +import { createMemoryStorage, createMockedStorage } from './mocks'; import { ContentRegistry } from './registry'; import type { ContentCrud } from './crud'; import type { @@ -31,19 +35,37 @@ import type { SearchItemSuccess, SearchItemError, } from './event_types'; -import { ContentTypeDefinition, StorageContext } from './types'; -import { until } from '../event_stream/tests/util'; -import { setupEventStreamService } from '../event_stream/tests/setup_event_stream_service'; +import { ContentStorage, ContentTypeDefinition, StorageContext } from './types'; + +const spyMsearch = jest.fn(); +const getmSearchSpy = () => spyMsearch; + +jest.mock('./msearch', () => { + const original = jest.requireActual('./msearch'); + class MSearchService { + search(...args: any[]) { + getmSearchSpy()(...args); + } + } + return { + ...original, + MSearchService, + }; +}); const logger = loggingSystemMock.createLogger(); const FOO_CONTENT_ID = 'foo'; -const setup = ({ registerFooType = false }: { registerFooType?: boolean } = {}) => { +const setup = ({ + registerFooType = false, + storage = createMemoryStorage(), + latestVersion = 2, +}: { registerFooType?: boolean; storage?: ContentStorage; latestVersion?: number } = {}) => { const ctx: StorageContext = { requestHandlerContext: {} as any, version: { - latest: 1, + latest: latestVersion, request: 1, }, utils: { @@ -60,9 +82,9 @@ const setup = ({ registerFooType = false }: { registerFooType?: boolean } = {}) const contentDefinition: ContentTypeDefinition = { id: FOO_CONTENT_ID, - storage: createMemoryStorage(), + storage, version: { - latest: 2, + latest: latestVersion, }, }; const cleanUp = () => { @@ -94,7 +116,12 @@ describe('Content Core', () => { const { coreSetup, cleanUp } = setup(); expect(coreSetup.contentRegistry).toBeInstanceOf(ContentRegistry); - expect(Object.keys(coreSetup.api).sort()).toEqual(['crud', 'eventBus', 'register']); + expect(Object.keys(coreSetup.api).sort()).toEqual([ + 'contentClient', + 'crud', + 'eventBus', + 'register', + ]); cleanUp(); }); @@ -158,6 +185,52 @@ describe('Content Core', () => { cleanUp(); }); + + test('should return a contentClient when registering', async () => { + const storage = createMockedStorage(); + const latestVersion = 11; + + const { coreSetup, cleanUp, contentDefinition } = setup({ latestVersion, storage }); + + const { contentClient } = coreSetup.api.register(contentDefinition); + + { + const client = contentClient.getForRequest({ + requestHandlerContext: {} as any, + request: {} as any, + version: 2, + }); + + await client.get('1234'); + expect(storage.get).toHaveBeenCalledTimes(1); + + const [storageContext] = storage.get.mock.calls[0]; + expect(storageContext.version).toEqual({ + latest: latestVersion, + request: 2, // version passed in the request should be used + }); + } + + storage.get.mockReset(); + + { + // If no request version is passed, the latest version should be used + const client = contentClient.getForRequest({ + requestHandlerContext: {} as any, + request: {} as any, + }); + + await client.get('1234'); + + const [storageContext] = storage.get.mock.calls[0]; + expect(storageContext.version).toEqual({ + latest: latestVersion, + request: latestVersion, // latest version should be used + }); + } + + cleanUp(); + }); }); describe('crud()', () => { @@ -849,38 +922,239 @@ describe('Content Core', () => { }); }); - describe('eventStream', () => { - test('stores "delete" events', async () => { - const { fooContentCrud, ctx, eventStream } = setup({ registerFooType: true }); + describe('contentClient', () => { + describe('single content type', () => { + test('should return a ClientContent instance for a specific request', () => { + const { coreSetup, cleanUp } = setup({ registerFooType: true }); - await fooContentCrud!.create(ctx, { title: 'Hello' }, { id: '1234' }); - await fooContentCrud!.delete(ctx, '1234'); + const { + api: { contentClient }, + } = coreSetup; - const findEvent = async () => { - const tail = await eventStream.tail(); - - for (const event of tail) { - if ( - event.predicate[0] === 'delete' && - event.object && - event.object[0] === 'foo' && - event.object[1] === '1234' - ) { - return event; - } - } + const client = contentClient + .getForRequest({ + requestHandlerContext: {} as any, + request: {} as any, + }) + .for(FOO_CONTENT_ID); - return null; - }; + expect(client).toBeInstanceOf(ContentClient); + + cleanUp(); + }); + + test('should automatically set the content version to the latest version if not provided', async () => { + const storage = createMockedStorage(); + const latestVersion = 7; + + const { coreSetup, cleanUp } = setup({ + registerFooType: true, + latestVersion, + storage, + }); + + const requestHandlerContext = {} as any; + const client = coreSetup.api.contentClient + .getForRequest({ + requestHandlerContext, + request: {} as any, + }) + .for(FOO_CONTENT_ID); + + const options = { foo: 'bar' }; + await client.get('1234', options); + + const storageContext = { + requestHandlerContext, + utils: { getTransforms: expect.any(Function) }, + version: { + latest: latestVersion, + request: latestVersion, // Request version should be set to the latest version + }, + }; + + expect(storage.get).toHaveBeenCalledWith(storageContext, '1234', options); + + cleanUp(); + }); + + test('should pass the provided content version', async () => { + const storage = createMockedStorage(); + const latestVersion = 7; + const requestVersion = 2; + + const { coreSetup, cleanUp } = setup({ + registerFooType: true, + latestVersion, + storage, + }); + + const requestHandlerContext = {} as any; + + const client = coreSetup.api.contentClient + .getForRequest({ + requestHandlerContext, + request: {} as any, + }) + .for(FOO_CONTENT_ID, requestVersion); - await until(async () => !!(await findEvent()), 100); + await client.get('1234'); - const event = await findEvent(); + const storageContext = { + requestHandlerContext, + utils: { getTransforms: expect.any(Function) }, + version: { + latest: latestVersion, + request: requestVersion, // The requested version should be used + }, + }; + + expect(storage.get).toHaveBeenCalledWith(storageContext, '1234', undefined); + + cleanUp(); + }); + + test('should throw if the contentTypeId is not registered', () => { + const { coreSetup, cleanUp } = setup(); + + const { + api: { contentClient }, + } = coreSetup; + + expect(() => { + contentClient + .getForRequest({ + requestHandlerContext: {} as any, + request: {} as any, + }) + .for(FOO_CONTENT_ID); + }).toThrowError('Content [foo] is not registered.'); + + cleanUp(); + }); + }); + + describe('multiple content types', () => { + const storage = createMockedStorage(); + + beforeEach(() => { + spyMsearch.mockReset(); + }); + + test('should automatically set the content version to the latest version if not provided', async () => { + const { coreSetup, cleanUp } = setup(); + + coreSetup.api.register({ + id: 'foo', + storage, + version: { + latest: 9, // Needs to be automatically passed to the mSearch service + }, + }); + + coreSetup.api.register({ + id: 'bar', + storage, + version: { + latest: 11, // Needs to be automatically passed to the mSearch service + }, + }); + + const client = coreSetup.api.contentClient.getForRequest({ + requestHandlerContext: {} as any, + request: {} as any, + }); + + await client.msearch({ + // We don't pass the version here + contentTypes: [{ contentTypeId: 'foo' }, { contentTypeId: 'bar' }], + query: { text: 'Hello' }, + }); + + const [contentTypes] = spyMsearch.mock.calls[0]; + expect(contentTypes[0].contentTypeId).toBe('foo'); + expect(contentTypes[0].ctx.version).toEqual({ latest: 9, request: 9 }); + + expect(contentTypes[1].contentTypeId).toBe('bar'); + expect(contentTypes[1].ctx.version).toEqual({ latest: 11, request: 11 }); - expect(event).toMatchObject({ - predicate: ['delete'], - object: ['foo', '1234'], + cleanUp(); }); + + test('should use the request version if provided', async () => { + const { coreSetup, cleanUp } = setup(); + + coreSetup.api.register({ + id: 'foo', + storage, + version: { + latest: 9, // Needs to be automatically passed to the mSearch service + }, + }); + + coreSetup.api.register({ + id: 'bar', + storage, + version: { + latest: 11, // Needs to be automatically passed to the mSearch service + }, + }); + + const client = coreSetup.api.contentClient.getForRequest({ + requestHandlerContext: {} as any, + request: {} as any, + }); + + await client.msearch({ + // We don't pass the version here + contentTypes: [ + { contentTypeId: 'foo', version: 2 }, + { contentTypeId: 'bar', version: 3 }, + ], + query: { text: 'Hello' }, + }); + + const [contentTypes] = spyMsearch.mock.calls[0]; + expect(contentTypes[0].ctx.version).toEqual({ latest: 9, request: 2 }); + expect(contentTypes[1].ctx.version).toEqual({ latest: 11, request: 3 }); + + cleanUp(); + }); + }); + }); + }); + + describe('eventStream', () => { + test('stores "delete" events', async () => { + const { fooContentCrud, ctx, eventStream } = setup({ registerFooType: true }); + + await fooContentCrud!.create(ctx, { title: 'Hello' }, { id: '1234' }); + await fooContentCrud!.delete(ctx, '1234'); + + const findEvent = async () => { + const tail = await eventStream.tail(); + + for (const event of tail) { + if ( + event.predicate[0] === 'delete' && + event.object && + event.object[0] === 'foo' && + event.object[1] === '1234' + ) { + return event; + } + } + + return null; + }; + + await until(async () => !!(await findEvent()), 100); + + const event = await findEvent(); + + expect(event).toMatchObject({ + predicate: ['delete'], + object: ['foo', '1234'], }); }); }); diff --git a/src/plugins/content_management/server/core/core.ts b/src/plugins/content_management/server/core/core.ts index 4d055ed6783f41..9686d6638a3eec 100644 --- a/src/plugins/content_management/server/core/core.ts +++ b/src/plugins/content_management/server/core/core.ts @@ -6,11 +6,27 @@ * Side Public License, v 1. */ -import { Logger } from '@kbn/core/server'; +import type { Logger, KibanaRequest } from '@kbn/core/server'; +import type { RequestHandlerContext } from '@kbn/core-http-request-handler-context-server'; +import type { Version } from '@kbn/object-versioning'; +import { LISTING_LIMIT_SETTING, PER_PAGE_SETTING } from '@kbn/saved-objects-settings'; + +import type { MSearchIn, MSearchOut } from '../../common'; +import { + getContentClientFactory, + getMSearchClientFactory, + IContentClient, +} from '../content_client'; import { EventStreamService } from '../event_stream'; import { ContentCrud } from './crud'; import { EventBus } from './event_bus'; import { ContentRegistry } from './registry'; +import { MSearchService } from './msearch'; + +export interface GetContentClientForRequestDependencies { + requestHandlerContext: RequestHandlerContext; + request: KibanaRequest; +} export interface CoreApi { /** @@ -24,6 +40,14 @@ export interface CoreApi { crud: (contentType: string) => ContentCrud; /** Content management event bus */ eventBus: EventBus; + /** Client getters to interact with registered content types. */ + contentClient: { + /** Client getter to interact with registered content types for the current HTTP request. */ + getForRequest(deps: GetContentClientForRequestDependencies): { + for: (contentTypeId: string, version?: Version) => IContentClient; + msearch(args: MSearchIn): Promise; + }; + }; } export interface CoreInitializerContext { @@ -52,13 +76,18 @@ export class Core { setup(): CoreSetup { this.setupEventStream(); + const coreApi: CoreApi = { + register: this.contentRegistry.register.bind(this.contentRegistry), + crud: this.contentRegistry.getCrud.bind(this.contentRegistry), + eventBus: this.eventBus, + contentClient: { + getForRequest: this.getContentClientForRequest.bind(this), + }, + }; + return { contentRegistry: this.contentRegistry, - api: { - register: this.contentRegistry.register.bind(this.contentRegistry), - crud: this.contentRegistry.getCrud.bind(this.contentRegistry), - eventBus: this.eventBus, - }, + api: coreApi, }; } @@ -79,4 +108,50 @@ export class Core { }); } } + + private getContentClientForRequest({ + requestHandlerContext, + request, + }: { + request: KibanaRequest; + requestHandlerContext: RequestHandlerContext; + }) { + /** Handler to return a ContentClient for a specific content type Id and request version */ + const forFn = (contentTypeId: string, version?: Version) => { + const contentDefinition = this.contentRegistry.getDefinition(contentTypeId); + const clientFactory = getContentClientFactory({ + contentRegistry: this.contentRegistry, + }); + const contentClient = clientFactory(contentTypeId); + + return contentClient.getForRequest({ + requestHandlerContext, + request, + version: version ?? contentDefinition.version.latest, + }); + }; + + const mSearchService = new MSearchService({ + getSavedObjectsClient: async () => (await requestHandlerContext.core).savedObjects.client, + contentRegistry: this.contentRegistry, + getConfig: { + listingLimit: async () => + (await requestHandlerContext.core).uiSettings.client.get(LISTING_LIMIT_SETTING), + perPage: async () => + (await requestHandlerContext.core).uiSettings.client.get(PER_PAGE_SETTING), + }, + }); + + const msearchClientFactory = getMSearchClientFactory({ + contentRegistry: this.contentRegistry, + mSearchService, + }); + + const msearchClient = msearchClientFactory({ requestHandlerContext, request }); + + return { + for: forFn, + msearch: msearchClient.msearch, + }; + } } diff --git a/src/plugins/content_management/server/core/crud.ts b/src/plugins/content_management/server/core/crud.ts index 21e13c1e6a6980..bd06bb0c4ad3f4 100644 --- a/src/plugins/content_management/server/core/crud.ts +++ b/src/plugins/content_management/server/core/crud.ts @@ -79,17 +79,17 @@ export class ContentCrud { }); try { - const item = await this.storage.get(ctx, contentId, options); + const result = await this.storage.get(ctx, contentId, options); this.eventBus.emit({ type: 'getItemSuccess', contentId, contentTypeId: this.contentTypeId, - data: item, + data: result, options, }); - return { contentTypeId: this.contentTypeId, result: item }; + return { contentTypeId: this.contentTypeId, result }; } catch (e) { this.eventBus.emit({ type: 'getItemError', diff --git a/src/plugins/content_management/server/core/mocks/in_memory_storage.ts b/src/plugins/content_management/server/core/mocks/in_memory_storage.ts index fd3a7a125ce45d..de4ed69856ccc8 100644 --- a/src/plugins/content_management/server/core/mocks/in_memory_storage.ts +++ b/src/plugins/content_management/server/core/mocks/in_memory_storage.ts @@ -64,7 +64,11 @@ class InMemoryStorage implements ContentStorage { async create( ctx: StorageContext, data: Omit, - { id: _id, errorToThrow }: { id?: string; errorToThrow?: string } = {} + { + id: _id, + forwardInResponse, + errorToThrow, + }: { id?: string; errorToThrow?: string; forwardInResponse?: object } = {} ) { // This allows us to test that proper error events are thrown when the storage layer op fails if (errorToThrow) { @@ -81,6 +85,16 @@ class InMemoryStorage implements ContentStorage { this.db.set(id, content); + if (forwardInResponse) { + // We add this so we can test that options are passed down to the storage layer + return { + item: { + ...content, + options: forwardInResponse, + }, + }; + } + return { item: content, }; @@ -159,7 +173,7 @@ class InMemoryStorage implements ContentStorage { async search( ctx: StorageContext, query: { text: string }, - { errorToThrow }: { errorToThrow?: string } = {} + { errorToThrow, forwardInResponse }: { errorToThrow?: string; forwardInResponse?: object } = {} ) { // This allows us to test that proper error events are thrown when the storage layer op fails if (errorToThrow) { @@ -181,7 +195,7 @@ class InMemoryStorage implements ContentStorage { return title.match(rgx); }); return { - hits, + hits: forwardInResponse ? hits.map((hit) => ({ ...hit, options: forwardInResponse })) : hits, pagination: { total: hits.length, cursor: '', @@ -190,8 +204,8 @@ class InMemoryStorage implements ContentStorage { } } -export const createMemoryStorage = () => { - return new InMemoryStorage(); +export const createMemoryStorage = (): ContentStorage => { + return new InMemoryStorage() as ContentStorage; }; export const createMockedStorage = (): jest.Mocked => ({ diff --git a/src/plugins/content_management/server/core/registry.ts b/src/plugins/content_management/server/core/registry.ts index 00adb4b04a4038..77618b786c4096 100644 --- a/src/plugins/content_management/server/core/registry.ts +++ b/src/plugins/content_management/server/core/registry.ts @@ -7,6 +7,8 @@ */ import { validateVersion } from '@kbn/object-versioning/lib/utils'; + +import { getContentClientFactory } from '../content_client'; import { ContentType } from './content_type'; import { EventBus } from './event_bus'; import type { ContentStorage, ContentTypeDefinition, MSearchConfig } from './types'; @@ -45,6 +47,15 @@ export class ContentRegistry { ); this.types.set(contentType.id, contentType); + + const contentClient = getContentClientFactory({ contentRegistry: this })(contentType.id); + + return { + /** + * Client getters to interact with the registered content type. + */ + contentClient, + }; } getContentType(id: string): ContentType { diff --git a/src/plugins/content_management/server/core/types.ts b/src/plugins/content_management/server/core/types.ts index d26c6ac72fa41b..ed649a8bafdcb9 100644 --- a/src/plugins/content_management/server/core/types.ts +++ b/src/plugins/content_management/server/core/types.ts @@ -31,12 +31,26 @@ export type StorageContextGetTransformFn = ( /** Context that is sent to all storage instance methods */ export interface StorageContext { + /** The Core HTTP request handler context */ requestHandlerContext: RequestHandlerContext; version: { + /** + * The content type version for the request. It usually is the latest version although in some + * cases the client (browser) might still be on an older version and make requests with that version. + */ request: Version; + /** + * The latest version of the content type. This is the version that the content type is currently on + * after updating the Kibana server. + */ latest: Version; }; utils: { + /** + * Get the transforms handlers for the content type. + * The transforms are used to transform the content object to the latest schema (up) and back + * to a previous schema (down). + */ getTransforms: StorageContextGetTransformFn; }; } diff --git a/src/plugins/content_management/server/plugin.test.ts b/src/plugins/content_management/server/plugin.test.ts index 2e4eaf8122b614..aef15dada64495 100644 --- a/src/plugins/content_management/server/plugin.test.ts +++ b/src/plugins/content_management/server/plugin.test.ts @@ -138,8 +138,8 @@ describe('ContentManagementPlugin', () => { // Each procedure has been called with the context and input const context = { requestHandlerContext: mockedRequestHandlerContext, + request: expect.any(Object), contentRegistry: 'mockedContentRegistry', - getTransformsFactory: expect.any(Function), mSearchService: expect.any(MSearchService), }; expect(mockGet).toHaveBeenCalledWith(context, input); diff --git a/src/plugins/content_management/server/rpc/procedures/bulk_get.test.ts b/src/plugins/content_management/server/rpc/procedures/bulk_get.test.ts index 040ab6191bddc3..baeb9c08471c7f 100644 --- a/src/plugins/content_management/server/rpc/procedures/bulk_get.test.ts +++ b/src/plugins/content_management/server/rpc/procedures/bulk_get.test.ts @@ -9,14 +9,14 @@ import { omit } from 'lodash'; import { schema } from '@kbn/config-schema'; -import type { ContentManagementServiceDefinitionVersioned, Version } from '@kbn/object-versioning'; -import { validate } from '../../utils'; +import type { ContentManagementServiceDefinitionVersioned } from '@kbn/object-versioning'; +import { validate, disableTransformsCache } from '../../utils'; import { ContentRegistry } from '../../core/registry'; import { createMockedStorage } from '../../core/mocks'; import { EventBus } from '../../core/event_bus'; -import { getServiceObjectTransformFactory } from '../services_transforms_factory'; import { bulkGet } from './bulk_get'; +disableTransformsCache(); const storageContextGetTransforms = jest.fn(); const spy = () => storageContextGetTransforms; @@ -191,8 +191,6 @@ describe('RPC -> bulkGet()', () => { const ctx: any = { contentRegistry, requestHandlerContext, - getTransformsFactory: (contentTypeId: string, version: Version) => - getServiceObjectTransformFactory(contentTypeId, version, { cacheEnabled: false }), }; return { ctx, storage }; diff --git a/src/plugins/content_management/server/rpc/procedures/bulk_get.ts b/src/plugins/content_management/server/rpc/procedures/bulk_get.ts index d3f66a5962193d..7ea19ebb497594 100644 --- a/src/plugins/content_management/server/rpc/procedures/bulk_get.ts +++ b/src/plugins/content_management/server/rpc/procedures/bulk_get.ts @@ -11,18 +11,19 @@ import type { BulkGetIn } from '../../../common'; import type { ProcedureDefinition } from '../rpc_service'; import type { Context } from '../types'; import { BulkGetResponse } from '../../core/crud'; -import { getStorageContext } from './utils'; +import { getContentClientFactory } from '../../content_client'; export const bulkGet: ProcedureDefinition, BulkGetResponse> = { schemas: rpcSchemas.bulkGet, fn: async (ctx, { contentTypeId, version, ids, options }) => { - const storageContext = getStorageContext({ - contentTypeId, + const clientFactory = getContentClientFactory({ + contentRegistry: ctx.contentRegistry, + }); + const client = clientFactory(contentTypeId).getForRequest({ + ...ctx, version, - ctx, }); - const crudInstance = ctx.contentRegistry.getCrud(contentTypeId); - return crudInstance.bulkGet(storageContext, ids, options); + return client.bulkGet(ids, options); }, }; diff --git a/src/plugins/content_management/server/rpc/procedures/create.test.ts b/src/plugins/content_management/server/rpc/procedures/create.test.ts index 4e923f7cf695ac..ec877d2ea0d0da 100644 --- a/src/plugins/content_management/server/rpc/procedures/create.test.ts +++ b/src/plugins/content_management/server/rpc/procedures/create.test.ts @@ -9,14 +9,14 @@ import { omit } from 'lodash'; import { schema } from '@kbn/config-schema'; -import type { ContentManagementServiceDefinitionVersioned, Version } from '@kbn/object-versioning'; -import { validate } from '../../utils'; +import type { ContentManagementServiceDefinitionVersioned } from '@kbn/object-versioning'; +import { validate, disableTransformsCache } from '../../utils'; import { ContentRegistry } from '../../core/registry'; import { createMockedStorage } from '../../core/mocks'; import { EventBus } from '../../core/event_bus'; -import { getServiceObjectTransformFactory } from '../services_transforms_factory'; import { create } from './create'; +disableTransformsCache(); const storageContextGetTransforms = jest.fn(); const spy = () => storageContextGetTransforms; @@ -164,8 +164,6 @@ describe('RPC -> create()', () => { const ctx: any = { contentRegistry, requestHandlerContext, - getTransformsFactory: (contentTypeId: string, version: Version) => - getServiceObjectTransformFactory(contentTypeId, version, { cacheEnabled: false }), }; return { ctx, storage }; diff --git a/src/plugins/content_management/server/rpc/procedures/create.ts b/src/plugins/content_management/server/rpc/procedures/create.ts index a4313b2095f3a8..b8646e150597ab 100644 --- a/src/plugins/content_management/server/rpc/procedures/create.ts +++ b/src/plugins/content_management/server/rpc/procedures/create.ts @@ -8,21 +8,21 @@ import { rpcSchemas } from '../../../common/schemas'; import type { CreateIn } from '../../../common'; +import { getContentClientFactory } from '../../content_client'; import type { ProcedureDefinition } from '../rpc_service'; import type { Context } from '../types'; -import { getStorageContext } from './utils'; export const create: ProcedureDefinition> = { schemas: rpcSchemas.create, fn: async (ctx, { contentTypeId, version, data, options }) => { - const storageContext = getStorageContext({ - contentTypeId, + const clientFactory = getContentClientFactory({ + contentRegistry: ctx.contentRegistry, + }); + const client = clientFactory(contentTypeId).getForRequest({ + ...ctx, version, - ctx, }); - const crudInstance = ctx.contentRegistry.getCrud(contentTypeId); - - return crudInstance.create(storageContext, data, options); + return client.create(data, options); }, }; diff --git a/src/plugins/content_management/server/rpc/procedures/delete.test.ts b/src/plugins/content_management/server/rpc/procedures/delete.test.ts index 612732788a64fb..5becd91a7b7d4b 100644 --- a/src/plugins/content_management/server/rpc/procedures/delete.test.ts +++ b/src/plugins/content_management/server/rpc/procedures/delete.test.ts @@ -8,15 +8,15 @@ import { omit } from 'lodash'; -import type { ContentManagementServiceDefinitionVersioned, Version } from '@kbn/object-versioning'; +import type { ContentManagementServiceDefinitionVersioned } from '@kbn/object-versioning'; import { schema } from '@kbn/config-schema'; -import { validate } from '../../utils'; +import { validate, disableTransformsCache } from '../../utils'; import { ContentRegistry } from '../../core/registry'; import { createMockedStorage } from '../../core/mocks'; import { EventBus } from '../../core/event_bus'; -import { getServiceObjectTransformFactory } from '../services_transforms_factory'; import { deleteProc } from './delete'; +disableTransformsCache(); const storageContextGetTransforms = jest.fn(); const spy = () => storageContextGetTransforms; @@ -150,8 +150,6 @@ describe('RPC -> delete()', () => { const ctx: any = { contentRegistry, requestHandlerContext, - getTransformsFactory: (contentTypeId: string, version: Version) => - getServiceObjectTransformFactory(contentTypeId, version, { cacheEnabled: false }), }; return { ctx, storage }; diff --git a/src/plugins/content_management/server/rpc/procedures/delete.ts b/src/plugins/content_management/server/rpc/procedures/delete.ts index 698df0764a76d9..3e948730faba80 100644 --- a/src/plugins/content_management/server/rpc/procedures/delete.ts +++ b/src/plugins/content_management/server/rpc/procedures/delete.ts @@ -7,20 +7,21 @@ */ import { rpcSchemas } from '../../../common/schemas'; import type { DeleteIn } from '../../../common'; +import { getContentClientFactory } from '../../content_client'; import type { ProcedureDefinition } from '../rpc_service'; import type { Context } from '../types'; -import { getStorageContext } from './utils'; export const deleteProc: ProcedureDefinition> = { schemas: rpcSchemas.delete, fn: async (ctx, { contentTypeId, id, version, options }) => { - const storageContext = getStorageContext({ - contentTypeId, + const clientFactory = getContentClientFactory({ + contentRegistry: ctx.contentRegistry, + }); + const client = clientFactory(contentTypeId).getForRequest({ + ...ctx, version, - ctx, }); - const crudInstance = ctx.contentRegistry.getCrud(contentTypeId); - return crudInstance.delete(storageContext, id, options); + return client.delete(id, options); }, }; diff --git a/src/plugins/content_management/server/rpc/procedures/get.test.ts b/src/plugins/content_management/server/rpc/procedures/get.test.ts index 4670b7f5420275..83affb9e725aee 100644 --- a/src/plugins/content_management/server/rpc/procedures/get.test.ts +++ b/src/plugins/content_management/server/rpc/procedures/get.test.ts @@ -9,14 +9,14 @@ import { omit } from 'lodash'; import { schema } from '@kbn/config-schema'; -import type { ContentManagementServiceDefinitionVersioned, Version } from '@kbn/object-versioning'; -import { validate } from '../../utils'; +import type { ContentManagementServiceDefinitionVersioned } from '@kbn/object-versioning'; +import { validate, disableTransformsCache } from '../../utils'; import { ContentRegistry } from '../../core/registry'; import { createMockedStorage } from '../../core/mocks'; import { EventBus } from '../../core/event_bus'; -import { getServiceObjectTransformFactory } from '../services_transforms_factory'; import { get } from './get'; +disableTransformsCache(); const storageContextGetTransforms = jest.fn(); const spy = () => storageContextGetTransforms; @@ -157,8 +157,6 @@ describe('RPC -> get()', () => { const ctx: any = { contentRegistry, requestHandlerContext, - getTransformsFactory: (contentTypeId: string, version: Version) => - getServiceObjectTransformFactory(contentTypeId, version, { cacheEnabled: false }), }; return { ctx, storage }; diff --git a/src/plugins/content_management/server/rpc/procedures/get.ts b/src/plugins/content_management/server/rpc/procedures/get.ts index eec993cc27ea0f..a4e27847feeda0 100644 --- a/src/plugins/content_management/server/rpc/procedures/get.ts +++ b/src/plugins/content_management/server/rpc/procedures/get.ts @@ -8,20 +8,21 @@ import { rpcSchemas } from '../../../common/schemas'; import type { GetIn } from '../../../common'; +import { getContentClientFactory } from '../../content_client'; import type { ProcedureDefinition } from '../rpc_service'; import type { Context } from '../types'; -import { getStorageContext } from './utils'; export const get: ProcedureDefinition> = { schemas: rpcSchemas.get, fn: async (ctx, { contentTypeId, id, version, options }) => { - const storageContext = getStorageContext({ - contentTypeId, + const clientFactory = getContentClientFactory({ + contentRegistry: ctx.contentRegistry, + }); + const client = clientFactory(contentTypeId).getForRequest({ + ...ctx, version, - ctx, }); - const crudInstance = ctx.contentRegistry.getCrud(contentTypeId); - return crudInstance.get(storageContext, id, options); + return client.get(id, options); }, }; diff --git a/src/plugins/content_management/server/rpc/procedures/msearch.test.ts b/src/plugins/content_management/server/rpc/procedures/msearch.test.ts index 6513682f58a894..7b28fae6d3b49c 100644 --- a/src/plugins/content_management/server/rpc/procedures/msearch.test.ts +++ b/src/plugins/content_management/server/rpc/procedures/msearch.test.ts @@ -6,18 +6,17 @@ * Side Public License, v 1. */ -import type { Version } from '@kbn/object-versioning'; import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { MSearchIn, MSearchQuery } from '../../../common'; -import { validate } from '../../utils'; +import { validate, disableTransformsCache } from '../../utils'; import { ContentRegistry } from '../../core/registry'; import { createMockedStorage } from '../../core/mocks'; import { EventBus } from '../../core/event_bus'; import { MSearchService } from '../../core/msearch'; -import { getServiceObjectTransformFactory } from '../services_transforms_factory'; import { mSearch } from './msearch'; +disableTransformsCache(); const storageContextGetTransforms = jest.fn(); const spy = () => storageContextGetTransforms; @@ -151,8 +150,6 @@ describe('RPC -> mSearch()', () => { const ctx: any = { contentRegistry, requestHandlerContext, - getTransformsFactory: (contentTypeId: string, version: Version) => - getServiceObjectTransformFactory(contentTypeId, version, { cacheEnabled: false }), mSearchService, }; diff --git a/src/plugins/content_management/server/rpc/procedures/msearch.ts b/src/plugins/content_management/server/rpc/procedures/msearch.ts index 68408ae5250713..dea79b1f5b0bd5 100644 --- a/src/plugins/content_management/server/rpc/procedures/msearch.ts +++ b/src/plugins/content_management/server/rpc/procedures/msearch.ts @@ -10,29 +10,17 @@ import { rpcSchemas } from '../../../common/schemas'; import type { MSearchIn, MSearchOut } from '../../../common'; import type { ProcedureDefinition } from '../rpc_service'; import type { Context } from '../types'; -import { getStorageContext } from './utils'; +import { getMSearchClientFactory } from '../../content_client'; export const mSearch: ProcedureDefinition = { schemas: rpcSchemas.mSearch, - fn: async (ctx, { contentTypes: contentTypes, query }) => { - const contentTypesWithStorageContext = contentTypes.map(({ contentTypeId, version }) => { - const storageContext = getStorageContext({ - contentTypeId, - version, - ctx, - }); - - return { - contentTypeId, - ctx: storageContext, - }; + fn: async (ctx, { contentTypes, query }) => { + const clientFactory = getMSearchClientFactory({ + contentRegistry: ctx.contentRegistry, + mSearchService: ctx.mSearchService, }); + const mSearchClient = clientFactory(ctx); - const result = await ctx.mSearchService.search(contentTypesWithStorageContext, query); - - return { - contentTypes, - result, - }; + return mSearchClient.msearch({ contentTypes, query }); }, }; diff --git a/src/plugins/content_management/server/rpc/procedures/search.test.ts b/src/plugins/content_management/server/rpc/procedures/search.test.ts index cd0b2f2f18c89a..2d7ef1501d1027 100644 --- a/src/plugins/content_management/server/rpc/procedures/search.test.ts +++ b/src/plugins/content_management/server/rpc/procedures/search.test.ts @@ -8,16 +8,16 @@ import { omit } from 'lodash'; import { schema } from '@kbn/config-schema'; -import type { ContentManagementServiceDefinitionVersioned, Version } from '@kbn/object-versioning'; +import type { ContentManagementServiceDefinitionVersioned } from '@kbn/object-versioning'; import type { SearchQuery } from '../../../common'; -import { validate } from '../../utils'; +import { validate, disableTransformsCache } from '../../utils'; import { ContentRegistry } from '../../core/registry'; import { createMockedStorage } from '../../core/mocks'; import { EventBus } from '../../core/event_bus'; -import { getServiceObjectTransformFactory } from '../services_transforms_factory'; import { search } from './search'; +disableTransformsCache(); const storageContextGetTransforms = jest.fn(); const spy = () => storageContextGetTransforms; @@ -177,8 +177,6 @@ describe('RPC -> search()', () => { const ctx: any = { contentRegistry, requestHandlerContext, - getTransformsFactory: (contentTypeId: string, version: Version) => - getServiceObjectTransformFactory(contentTypeId, version, { cacheEnabled: false }), }; return { ctx, storage }; diff --git a/src/plugins/content_management/server/rpc/procedures/search.ts b/src/plugins/content_management/server/rpc/procedures/search.ts index 74d8c51425a582..a726eb244f3817 100644 --- a/src/plugins/content_management/server/rpc/procedures/search.ts +++ b/src/plugins/content_management/server/rpc/procedures/search.ts @@ -8,20 +8,21 @@ import { rpcSchemas } from '../../../common/schemas'; import type { SearchIn } from '../../../common'; +import { getContentClientFactory } from '../../content_client'; import type { ProcedureDefinition } from '../rpc_service'; import type { Context } from '../types'; -import { getStorageContext } from './utils'; export const search: ProcedureDefinition> = { schemas: rpcSchemas.search, fn: async (ctx, { contentTypeId, version, query, options }) => { - const storageContext = getStorageContext({ - contentTypeId, + const clientFactory = getContentClientFactory({ + contentRegistry: ctx.contentRegistry, + }); + const client = clientFactory(contentTypeId).getForRequest({ + ...ctx, version, - ctx, }); - const crudInstance = ctx.contentRegistry.getCrud(contentTypeId); - return crudInstance.search(storageContext, query, options); + return client.search(query, options); }, }; diff --git a/src/plugins/content_management/server/rpc/procedures/update.test.ts b/src/plugins/content_management/server/rpc/procedures/update.test.ts index 81b6ac9e421fe0..ad721d045be1d6 100644 --- a/src/plugins/content_management/server/rpc/procedures/update.test.ts +++ b/src/plugins/content_management/server/rpc/procedures/update.test.ts @@ -8,15 +8,15 @@ import { omit } from 'lodash'; import { schema } from '@kbn/config-schema'; -import type { ContentManagementServiceDefinitionVersioned, Version } from '@kbn/object-versioning'; +import type { ContentManagementServiceDefinitionVersioned } from '@kbn/object-versioning'; -import { validate } from '../../utils'; +import { validate, disableTransformsCache } from '../../utils'; import { ContentRegistry } from '../../core/registry'; import { createMockedStorage } from '../../core/mocks'; import { EventBus } from '../../core/event_bus'; -import { getServiceObjectTransformFactory } from '../services_transforms_factory'; import { update } from './update'; +disableTransformsCache(); const storageContextGetTransforms = jest.fn(); const spy = () => storageContextGetTransforms; @@ -171,8 +171,6 @@ describe('RPC -> update()', () => { const ctx: any = { contentRegistry, requestHandlerContext, - getTransformsFactory: (contentTypeId: string, version: Version) => - getServiceObjectTransformFactory(contentTypeId, version, { cacheEnabled: false }), }; return { ctx, storage }; diff --git a/src/plugins/content_management/server/rpc/procedures/update.ts b/src/plugins/content_management/server/rpc/procedures/update.ts index 95e4c5e24194af..99cd3d44c95e1b 100644 --- a/src/plugins/content_management/server/rpc/procedures/update.ts +++ b/src/plugins/content_management/server/rpc/procedures/update.ts @@ -7,19 +7,21 @@ */ import { rpcSchemas } from '../../../common/schemas'; import type { UpdateIn } from '../../../common'; +import { getContentClientFactory } from '../../content_client'; import type { ProcedureDefinition } from '../rpc_service'; import type { Context } from '../types'; -import { getStorageContext } from './utils'; export const update: ProcedureDefinition> = { schemas: rpcSchemas.update, fn: async (ctx, { contentTypeId, id, version, data, options }) => { - const storageContext = getStorageContext({ - contentTypeId, + const clientFactory = getContentClientFactory({ + contentRegistry: ctx.contentRegistry, + }); + const client = clientFactory(contentTypeId).getForRequest({ + ...ctx, version, - ctx, }); - const crudInstance = ctx.contentRegistry.getCrud(contentTypeId); - return crudInstance.update(storageContext, id, data, options); + + return client.update(id, data, options); }, }; diff --git a/src/plugins/content_management/server/rpc/routes/routes.ts b/src/plugins/content_management/server/rpc/routes/routes.ts index ea529aae111886..7b109eb78b51e3 100644 --- a/src/plugins/content_management/server/rpc/routes/routes.ts +++ b/src/plugins/content_management/server/rpc/routes/routes.ts @@ -14,7 +14,6 @@ import type { ContentRegistry } from '../../core'; import { MSearchService } from '../../core/msearch'; import type { RpcService } from '../rpc_service'; -import { getServiceObjectTransformFactory } from '../services_transforms_factory'; import type { Context as RpcContext } from '../types'; import { wrapError } from './error_wrapper'; @@ -56,7 +55,7 @@ export function initRpcRoutes( const context: RpcContext = { contentRegistry, requestHandlerContext, - getTransformsFactory: getServiceObjectTransformFactory, + request, mSearchService: new MSearchService({ getSavedObjectsClient: async () => (await requestHandlerContext.core).savedObjects.client, diff --git a/src/plugins/content_management/server/rpc/types.ts b/src/plugins/content_management/server/rpc/types.ts index 4e5bdbd5f240f6..9c79643a52de89 100644 --- a/src/plugins/content_management/server/rpc/types.ts +++ b/src/plugins/content_management/server/rpc/types.ts @@ -6,17 +6,13 @@ * Side Public License, v 1. */ import type { RequestHandlerContext } from '@kbn/core-http-request-handler-context-server'; -import type { Version } from '@kbn/object-versioning'; -import type { ContentRegistry, StorageContextGetTransformFn } from '../core'; +import type { KibanaRequest } from '@kbn/core-http-server'; +import type { ContentRegistry } from '../core'; import type { MSearchService } from '../core/msearch'; export interface Context { contentRegistry: ContentRegistry; requestHandlerContext: RequestHandlerContext; - getTransformsFactory: ( - contentTypeId: string, - requestVersion: Version, - options?: { cacheEnabled?: boolean } - ) => StorageContextGetTransformFn; + request: KibanaRequest; mSearchService: MSearchService; } diff --git a/src/plugins/content_management/server/types.ts b/src/plugins/content_management/server/types.ts index 79251838b1a565..dbc401807975d0 100644 --- a/src/plugins/content_management/server/types.ts +++ b/src/plugins/content_management/server/types.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import { CoreApi } from './core'; +import type { Version } from '@kbn/object-versioning'; +import type { CoreApi, StorageContextGetTransformFn } from './core'; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface ContentManagementServerSetupDependencies {} @@ -19,3 +20,9 @@ export interface ContentManagementServerSetup extends CoreApi {} // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface ContentManagementServerStart {} + +export type GetTransformsFactoryFn = ( + contentTypeId: string, + requestVersion: Version, + options?: { cacheEnabled?: boolean } +) => StorageContextGetTransformFn; diff --git a/src/plugins/content_management/server/utils/index.ts b/src/plugins/content_management/server/utils/index.ts new file mode 100644 index 00000000000000..1e4a503a515e9c --- /dev/null +++ b/src/plugins/content_management/server/utils/index.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { getStorageContext, validate } from './utils'; + +export { + getServiceObjectTransformFactory, + disableCache as disableTransformsCache, +} from './services_transforms_factory'; diff --git a/src/plugins/content_management/server/rpc/services_transforms_factory.ts b/src/plugins/content_management/server/utils/services_transforms_factory.ts similarity index 88% rename from src/plugins/content_management/server/rpc/services_transforms_factory.ts rename to src/plugins/content_management/server/utils/services_transforms_factory.ts index 9dc96226ce4dc8..de0fab28467d52 100644 --- a/src/plugins/content_management/server/rpc/services_transforms_factory.ts +++ b/src/plugins/content_management/server/utils/services_transforms_factory.ts @@ -15,6 +15,13 @@ import { } from '@kbn/object-versioning'; import type { StorageContextGetTransformFn } from '../core'; +let isCacheEnabled = true; + +// This is used in tests to disable the cache +export const disableCache = () => { + isCacheEnabled = false; +}; + /** * We keep a cache of compiled service definition to avoid unnecessary recompile on every request. */ @@ -32,15 +39,11 @@ const compiledCache = new LRUCache + (contentTypeId: string, _requestVersion: Version): StorageContextGetTransformFn => (definitions: ContentManagementServiceDefinitionVersioned, requestVersionOverride?: Version) => { const requestVersion = requestVersionOverride ?? _requestVersion; - if (cacheEnabled) { + if (isCacheEnabled) { const compiledFromCache = compiledCache.get(contentTypeId); if (compiledFromCache) { @@ -54,7 +57,7 @@ export const getServiceObjectTransformFactory = const compiled = compileServiceDefinitions(definitions); - if (cacheEnabled) { + if (isCacheEnabled) { compiledCache.set(contentTypeId, compiled); } diff --git a/src/plugins/content_management/server/rpc/procedures/utils.ts b/src/plugins/content_management/server/utils/utils.ts similarity index 73% rename from src/plugins/content_management/server/rpc/procedures/utils.ts rename to src/plugins/content_management/server/utils/utils.ts index b1c291ae586d96..d873c349bc8f69 100644 --- a/src/plugins/content_management/server/rpc/procedures/utils.ts +++ b/src/plugins/content_management/server/utils/utils.ts @@ -6,10 +6,22 @@ * Side Public License, v 1. */ +import { Type, ValidationError } from '@kbn/config-schema'; +import type { RequestHandlerContext } from '@kbn/core-http-request-handler-context-server'; import { validateVersion } from '@kbn/object-versioning/lib/utils'; import type { Version } from '@kbn/object-versioning'; -import type { StorageContext } from '../../core'; -import type { Context as RpcContext } from '../types'; + +import type { ContentRegistry, StorageContext } from '../core'; +import type { GetTransformsFactoryFn } from '../types'; + +export const validate = (input: unknown, schema: Type): ValidationError | null => { + try { + schema.validate(input); + return null; + } catch (e: any) { + return e as ValidationError; + } +}; const validateRequestVersion = ( requestVersion: Version | undefined, @@ -40,7 +52,11 @@ export const getStorageContext = ({ }: { contentTypeId: string; version?: number; - ctx: RpcContext; + ctx: { + contentRegistry: ContentRegistry; + requestHandlerContext: RequestHandlerContext; + getTransformsFactory: GetTransformsFactoryFn; + }; }): StorageContext => { const contentDefinition = contentRegistry.getDefinition(contentTypeId); const version = validateRequestVersion(_version, contentDefinition.version.latest); diff --git a/src/plugins/controls/common/range_slider/types.ts b/src/plugins/controls/common/range_slider/types.ts index fdfc65d1d7c363..c7745c0bbd4e63 100644 --- a/src/plugins/controls/common/range_slider/types.ts +++ b/src/plugins/controls/common/range_slider/types.ts @@ -14,6 +14,7 @@ export type RangeValue = [string, string]; export interface RangeSliderEmbeddableInput extends DataControlInput { value?: RangeValue; + step?: number; } export type RangeSliderInputWithType = Partial & { type: string }; diff --git a/src/plugins/controls/public/control_group/editor/control_editor.test.tsx b/src/plugins/controls/public/control_group/editor/control_editor.test.tsx index d6e079261e183d..1bcfa766331cae 100644 --- a/src/plugins/controls/public/control_group/editor/control_editor.test.tsx +++ b/src/plugins/controls/public/control_group/editor/control_editor.test.tsx @@ -187,10 +187,34 @@ describe('Data control editor', () => { expect(searchOptions.exists()).toBe(false); }); - test('when creating range slider, does not have custom settings', async () => { + test('when creating range slider, does have custom settings', async () => { findTestSubject(controlEditor, 'create__rangeSliderControl').simulate('click'); const searchOptions = findTestSubject(controlEditor, 'control-editor-custom-settings'); - expect(searchOptions.exists()).toBe(false); + expect(searchOptions.exists()).toBe(true); + }); + + test('when creating range slider, validates step setting is greater than 0', async () => { + findTestSubject(controlEditor, 'create__rangeSliderControl').simulate('click'); + const stepOption = findTestSubject( + controlEditor, + 'rangeSliderControl__stepAdditionalSetting' + ); + expect(stepOption.exists()).toBe(true); + + const saveButton = findTestSubject(controlEditor, 'control-editor-save'); + expect(saveButton.instance()).toBeEnabled(); + + stepOption.simulate('change', { target: { valueAsNumber: undefined } }); + expect(saveButton.instance()).toBeDisabled(); + + stepOption.simulate('change', { target: { valueAsNumber: 0.5 } }); + expect(saveButton.instance()).toBeEnabled(); + + stepOption.simulate('change', { target: { valueAsNumber: 0 } }); + expect(saveButton.instance()).toBeDisabled(); + + stepOption.simulate('change', { target: { valueAsNumber: 1 } }); + expect(saveButton.instance()).toBeEnabled(); }); }); diff --git a/src/plugins/controls/public/control_group/editor/control_editor.tsx b/src/plugins/controls/public/control_group/editor/control_editor.tsx index aa9f505075426a..c175507c9541f2 100644 --- a/src/plugins/controls/public/control_group/editor/control_editor.tsx +++ b/src/plugins/controls/public/control_group/editor/control_editor.tsx @@ -245,6 +245,7 @@ export const ControlEditor = ({ onChange={(settings) => setCustomSettings(settings)} initialInput={embeddable?.getInput()} fieldType={fieldRegistry[selectedField].field.type} + setControlEditorValid={setControlEditorValid} /> ); diff --git a/src/plugins/controls/public/range_slider/components/range_slider.scss b/src/plugins/controls/public/range_slider/components/range_slider.scss index 606208bf256316..c386705382d878 100644 --- a/src/plugins/controls/public/range_slider/components/range_slider.scss +++ b/src/plugins/controls/public/range_slider/components/range_slider.scss @@ -19,11 +19,14 @@ text-align: center; background-color: transparent; - &:invalid { + &.rangeSliderAnchor__fieldNumber--valid:invalid:not(:focus) { + background-image: none; // override the red underline for values between steps + } + + &.rangeSliderAnchor__fieldNumber--invalid { color: $euiTextSubduedColor; text-decoration: line-through; font-weight: $euiFontWeightRegular; - background-image: none; // hide the red bottom border } &:placeholder-shown, &::placeholder { diff --git a/src/plugins/controls/public/range_slider/components/range_slider_control.tsx b/src/plugins/controls/public/range_slider/components/range_slider_control.tsx index 3bde458c5e076a..cd879961c5f10c 100644 --- a/src/plugins/controls/public/range_slider/components/range_slider_control.tsx +++ b/src/plugins/controls/public/range_slider/components/range_slider_control.tsx @@ -27,8 +27,9 @@ export const RangeSliderControl: FC = () => { // Embeddable explicit input const id = rangeSlider.select((state) => state.explicitInput.id); const value = rangeSlider.select((state) => state.explicitInput.value); + const step = rangeSlider.select((state) => state.explicitInput.step); - // Embeddable cmponent state + // Embeddable component state const min = rangeSlider.select((state) => state.componentState.min); const max = rangeSlider.select((state) => state.componentState.max); const error = rangeSlider.select((state) => state.componentState.error); @@ -62,8 +63,14 @@ export const RangeSliderControl: FC = () => { selectedValue[0] === '' ? min : parseFloat(selectedValue[0]), selectedValue[1] === '' ? max : parseFloat(selectedValue[1]), ]; - return [Math.min(selectedMin, min), Math.max(selectedMax, max ?? Infinity)]; - }, [min, max, value]); + + if (!step) return [Math.min(selectedMin, min), Math.max(selectedMax, max ?? Infinity)]; + + const minTick = Math.floor(Math.min(selectedMin, min) / step) * step; + const maxTick = Math.ceil(Math.max(selectedMax, max) / step) * step; + + return [Math.min(selectedMin, min, minTick), Math.max(selectedMax, max ?? Infinity, maxTick)]; + }, [min, max, value, step]); /** * The following `useEffect` ensures that the changes to the value that come from the embeddable (for example, @@ -75,20 +82,33 @@ export const RangeSliderControl: FC = () => { const ticks: EuiRangeTick[] = useMemo(() => { return [ - { value: min ?? -Infinity, label: fieldFormatter(String(min)) }, - { value: max ?? Infinity, label: fieldFormatter(String(max)) }, + { value: displayedMin ?? -Infinity, label: fieldFormatter(String(displayedMin)) }, + { value: displayedMax ?? Infinity, label: fieldFormatter(String(displayedMax)) }, ]; - }, [min, max, fieldFormatter]); + }, [displayedMin, displayedMax, fieldFormatter]); const levels = useMemo(() => { + if (!step || min === undefined || max === undefined) { + return [ + { + min: min ?? -Infinity, + max: max ?? Infinity, + color: 'success', + }, + ]; + } + + const roundedMin = Math.floor(min / step) * step; + const roundedMax = Math.ceil(max / step) * step; + return [ { - min: min ?? -Infinity, - max: max ?? Infinity, + min: roundedMin, + max: roundedMax, color: 'success', }, ]; - }, [min, max]); + }, [step, min, max]); const disablePopover = useMemo( () => @@ -110,15 +130,20 @@ export const RangeSliderControl: FC = () => { placeholder: string; }) => { return { - isInvalid, + isInvalid: undefined, // disabling this prop to handle our own validation styling placeholder, readOnly: false, // overwrites `canOpenPopover` to ensure that the inputs are always clickable - className: 'rangeSliderAnchor__fieldNumber', + className: `rangeSliderAnchor__fieldNumber ${ + isInvalid + ? 'rangeSliderAnchor__fieldNumber--invalid' + : 'rangeSliderAnchor__fieldNumber--valid' + }`, 'data-test-subj': `rangeSlider__${testSubj}`, value: inputValue === placeholder ? '' : inputValue, + title: !isInvalid && step ? '' : undefined, // overwrites native number input validation error when the value falls between two steps }; }, - [isInvalid] + [isInvalid, step] ); return error ? ( @@ -130,6 +155,7 @@ export const RangeSliderControl: FC = () => { id={id} fullWidth showTicks + step={step} ticks={ticks} levels={levels} min={displayedMin} diff --git a/src/plugins/controls/public/range_slider/components/range_slider_editor_options.tsx b/src/plugins/controls/public/range_slider/components/range_slider_editor_options.tsx new file mode 100644 index 00000000000000..4b626792e5ff99 --- /dev/null +++ b/src/plugins/controls/public/range_slider/components/range_slider_editor_options.tsx @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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, { useState } from 'react'; +import { EuiFormRow, EuiFieldNumber } from '@elastic/eui'; + +import type { RangeSliderEmbeddableInput } from '../../../common/range_slider/types'; +import { ControlEditorProps } from '../../types'; + +import { RangeSliderStrings } from './range_slider_strings'; + +export const RangeSliderEditorOptions = ({ + initialInput, + onChange, + setControlEditorValid, +}: ControlEditorProps) => { + const [step, setStep] = useState(initialInput?.step || 1); + + return ( + <> + + { + const newStep = event.target.valueAsNumber; + onChange({ step: newStep }); + setStep(newStep); + setControlEditorValid(newStep > 0); + }} + min={0} + isInvalid={step <= 0} + data-test-subj="rangeSliderControl__stepAdditionalSetting" + /> + + + ); +}; diff --git a/src/plugins/controls/public/range_slider/components/range_slider_strings.ts b/src/plugins/controls/public/range_slider/components/range_slider_strings.ts index 75382684459b7f..c37dc49c5306a0 100644 --- a/src/plugins/controls/public/range_slider/components/range_slider_strings.ts +++ b/src/plugins/controls/public/range_slider/components/range_slider_strings.ts @@ -9,6 +9,12 @@ import { i18n } from '@kbn/i18n'; export const RangeSliderStrings = { + editor: { + getStepTitle: () => + i18n.translate('controls.rangeSlider.editor.stepSizeTitle', { + defaultMessage: 'Step size', + }), + }, popover: { getNoAvailableDataHelpText: () => i18n.translate('controls.rangeSlider.popover.noAvailableDataHelpText', { diff --git a/src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable_factory.tsx b/src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable_factory.tsx index 4103be5ff59b3d..da01800b9c3fb6 100644 --- a/src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable_factory.tsx +++ b/src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable_factory.tsx @@ -22,6 +22,7 @@ import { RANGE_SLIDER_CONTROL, } from '../../../common/range_slider/types'; import { ControlEmbeddable, IEditableControlFactory } from '../../types'; +import { RangeSliderEditorOptions } from '../components/range_slider_editor_options'; export class RangeSliderEmbeddableFactory implements EmbeddableFactoryDefinition, IEditableControlFactory @@ -44,6 +45,8 @@ export class RangeSliderEmbeddableFactory public isEditable = () => Promise.resolve(true); + public controlEditorOptionsComponent = RangeSliderEditorOptions; + public async create(initialInput: RangeSliderEmbeddableInput, parent?: IContainer) { const reduxEmbeddablePackage = await lazyLoadReduxToolsPackage(); const { RangeSliderEmbeddable } = await import('./range_slider_embeddable'); diff --git a/src/plugins/controls/public/types.ts b/src/plugins/controls/public/types.ts index 7828ead83b90c2..43b0e12f3fcb6c 100644 --- a/src/plugins/controls/public/types.ts +++ b/src/plugins/controls/public/types.ts @@ -71,6 +71,7 @@ export interface ControlEditorProps { initialInput?: Partial; fieldType: string; onChange: (partial: Partial) => void; + setControlEditorValid: (isValid: boolean) => void; } export interface DataControlField { diff --git a/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx b/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx index 281d1cf6efdb92..2eef7b6cdbaf6d 100644 --- a/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx +++ b/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx @@ -48,9 +48,9 @@ export function CopyToDashboardModal({ api, closeModal }: CopyToDashboardModalPr const dashboardId = api.parentApi.savedObjectId.value; - const onSubmit = useCallback(() => { + const onSubmit = useCallback(async () => { const dashboard = api.parentApi; - const panelToCopy = dashboard.getDashboardPanelFromId(api.uuid); + const panelToCopy = await dashboard.getDashboardPanelFromId(api.uuid); if (!panelToCopy) { throw new PanelNotFoundError(); diff --git a/src/plugins/dashboard/public/dashboard_actions/replace_panel_action.test.tsx b/src/plugins/dashboard/public/dashboard_actions/replace_panel_action.test.tsx index 0fd864c8aa1515..0e8a4ea4e9fbd3 100644 --- a/src/plugins/dashboard/public/dashboard_actions/replace_panel_action.test.tsx +++ b/src/plugins/dashboard/public/dashboard_actions/replace_panel_action.test.tsx @@ -7,6 +7,7 @@ */ import { PublishesViewMode, ViewMode } from '@kbn/presentation-publishing'; +import { getMockPresentationContainer } from '@kbn/presentation-containers/mocks'; import { BehaviorSubject } from 'rxjs'; import { ReplacePanelSOFinder } from '.'; import { ReplacePanelAction, ReplacePanelActionApi } from './replace_panel_action'; @@ -28,10 +29,7 @@ describe('replace panel action', () => { embeddable: { uuid: 'superId', viewMode: new BehaviorSubject('edit'), - parentApi: { - removePanel: jest.fn(), - replacePanel: jest.fn(), - }, + parentApi: getMockPresentationContainer(), }, }; }); diff --git a/src/plugins/dashboard/public/dashboard_app/no_data/dashboard_app_no_data.tsx b/src/plugins/dashboard/public/dashboard_app/no_data/dashboard_app_no_data.tsx index 8394237976f9a6..c9c460a2c7a39a 100644 --- a/src/plugins/dashboard/public/dashboard_app/no_data/dashboard_app_no_data.tsx +++ b/src/plugins/dashboard/public/dashboard_app/no_data/dashboard_app_no_data.tsx @@ -10,6 +10,7 @@ import React from 'react'; import { withSuspense } from '@kbn/shared-ux-utility'; import { pluginServices } from '../../services/plugin_services'; +import { DASHBOARD_APP_ID } from '../../dashboard_constants'; export const DashboardAppNoDataPage = ({ onDataViewCreated, @@ -21,9 +22,10 @@ export const DashboardAppNoDataPage = ({ data: { dataViews }, dataViewEditor, http: { basePath, get }, - documentationLinks: { indexPatternsDocLink, kibanaGuideDocLink }, + documentationLinks: { indexPatternsDocLink, kibanaGuideDocLink, esqlDocLink }, customBranding, noDataPage, + share, } = pluginServices.getServices(); const analyticsServices = { @@ -32,6 +34,7 @@ export const DashboardAppNoDataPage = ({ links: { kibana: { guide: kibanaGuideDocLink }, indexPatterns: { introduction: indexPatternsDocLink }, + query: { queryESQL: esqlDocLink }, }, }, application, @@ -43,6 +46,7 @@ export const DashboardAppNoDataPage = ({ dataViews, dataViewEditor, noDataPage, + share: share.url ? { url: share.url } : undefined, }; const importPromise = import('@kbn/shared-ux-page-analytics-no-data'); @@ -71,8 +75,29 @@ export const DashboardAppNoDataPage = ({ export const isDashboardAppInNoDataState = async () => { const { data: { dataViews }, + embeddable, + dashboardContentManagement, + dashboardBackup, } = pluginServices.getServices(); const hasUserDataView = await dataViews.hasData.hasUserDataView().catch(() => false); - return !hasUserDataView; + + if (hasUserDataView) return false; + + // consider has data if there is an incoming embeddable + const hasIncomingEmbeddable = embeddable + .getStateTransfer() + .getIncomingEmbeddablePackage(DASHBOARD_APP_ID, false); + if (hasIncomingEmbeddable) return false; + + // consider has data if there is unsaved dashboard with edits + if (dashboardBackup.dashboardHasUnsavedEdits()) return false; + + // consider has data if there is at least one dashboard + const { total } = await dashboardContentManagement.findDashboards + .search({ search: '', size: 1 }) + .catch(() => ({ total: 0 })); + if (total > 0) return false; + + return true; }; diff --git a/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid_item.tsx b/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid_item.tsx index 1dc5ac0b9751b6..164555b92a176d 100644 --- a/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid_item.tsx +++ b/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid_item.tsx @@ -6,12 +6,17 @@ * Side Public License, v 1. */ -import React, { useState, useRef, useEffect, useLayoutEffect } from 'react'; +import React, { useState, useRef, useEffect, useLayoutEffect, useMemo } from 'react'; import { EuiLoadingChart } from '@elastic/eui'; import classNames from 'classnames'; import { PhaseEvent } from '@kbn/presentation-publishing'; -import { EmbeddablePanel, ViewMode } from '@kbn/embeddable-plugin/public'; +import { + ReactEmbeddableRenderer, + EmbeddablePanel, + reactEmbeddableRegistryHasKey, + ViewMode, +} from '@kbn/embeddable-plugin/public'; import { css } from '@emotion/react'; import { DashboardPanelState } from '../../../../common'; @@ -52,6 +57,7 @@ export const Item = React.forwardRef( const container = useDashboardContainer(); const scrollToPanelId = container.select((state) => state.componentState.scrollToPanelId); const highlightPanelId = container.select((state) => state.componentState.highlightPanelId); + const panel = container.select((state) => state.explicitInput.panels[id]); const expandPanel = expandedPanelId !== undefined && expandedPanelId === id; const hidePanel = expandedPanelId !== undefined && expandedPanelId !== id; @@ -94,6 +100,33 @@ export const Item = React.forwardRef( ` : css``; + const renderedEmbeddable = useMemo(() => { + if (reactEmbeddableRegistryHasKey(type)) { + return ( + + ); + } + return ( + container.untilEmbeddableLoaded(id)} + /> + ); + }, [container, id, index, onPanelStatusChange, type, panel]); + + // render legacy embeddable + return (
( > {isRenderable ? ( <> - container.untilEmbeddableLoaded(id)} - /> + {renderedEmbeddable} {children} ) : ( diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/api/duplicate_dashboard_panel.test.ts b/src/plugins/dashboard/public/dashboard_container/embeddable/api/duplicate_dashboard_panel.test.ts index ad19962603985b..256d03681447db 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/api/duplicate_dashboard_panel.test.ts +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/api/duplicate_dashboard_panel.test.ts @@ -143,15 +143,13 @@ test('Duplicates a non RefOrVal embeddable by value', async () => { }); test('Gets a unique title from the dashboard', async () => { - expect(await incrementPanelTitle(byRefOrValEmbeddable, '')).toEqual(''); + expect(await incrementPanelTitle(container, '')).toEqual(''); container.getPanelTitles = jest.fn().mockImplementation(() => { return ['testDuplicateTitle', 'testDuplicateTitle (copy)', 'testUniqueTitle']; }); - expect(await incrementPanelTitle(byRefOrValEmbeddable, 'testUniqueTitle')).toEqual( - 'testUniqueTitle (copy)' - ); - expect(await incrementPanelTitle(byRefOrValEmbeddable, 'testDuplicateTitle')).toEqual( + expect(await incrementPanelTitle(container, 'testUniqueTitle')).toEqual('testUniqueTitle (copy)'); + expect(await incrementPanelTitle(container, 'testDuplicateTitle')).toEqual( 'testDuplicateTitle (copy 1)' ); @@ -160,20 +158,20 @@ test('Gets a unique title from the dashboard', async () => { Array.from([...Array(39)], (_, index) => `testDuplicateTitle (copy ${index + 1})`) ); }); - expect(await incrementPanelTitle(byRefOrValEmbeddable, 'testDuplicateTitle')).toEqual( + expect(await incrementPanelTitle(container, 'testDuplicateTitle')).toEqual( 'testDuplicateTitle (copy 40)' ); - expect(await incrementPanelTitle(byRefOrValEmbeddable, 'testDuplicateTitle (copy 100)')).toEqual( + expect(await incrementPanelTitle(container, 'testDuplicateTitle (copy 100)')).toEqual( 'testDuplicateTitle (copy 40)' ); container.getPanelTitles = jest.fn().mockImplementation(() => { return ['testDuplicateTitle (copy 100)']; }); - expect(await incrementPanelTitle(byRefOrValEmbeddable, 'testDuplicateTitle')).toEqual( + expect(await incrementPanelTitle(container, 'testDuplicateTitle')).toEqual( 'testDuplicateTitle (copy 101)' ); - expect(await incrementPanelTitle(byRefOrValEmbeddable, 'testDuplicateTitle (copy 100)')).toEqual( + expect(await incrementPanelTitle(container, 'testDuplicateTitle (copy 100)')).toEqual( 'testDuplicateTitle (copy 101)' ); }); diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/api/duplicate_dashboard_panel.ts b/src/plugins/dashboard/public/dashboard_container/embeddable/api/duplicate_dashboard_panel.ts index a05565a9e09cbb..9dc32bf94c54f4 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/api/duplicate_dashboard_panel.ts +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/api/duplicate_dashboard_panel.ts @@ -7,12 +7,11 @@ */ import { - EmbeddableInput, - IEmbeddable, isReferenceOrValueEmbeddable, PanelNotFoundError, - PanelState, + reactEmbeddableRegistryHasKey, } from '@kbn/embeddable-plugin/public'; +import { apiPublishesPanelTitle } from '@kbn/presentation-publishing'; import { filter, map, max } from 'lodash'; import { v4 as uuidv4 } from 'uuid'; import { DashboardPanelState } from '../../../../common'; @@ -21,37 +20,69 @@ import { pluginServices } from '../../../services/plugin_services'; import { placeClonePanel } from '../../component/panel_placement'; import { DashboardContainer } from '../dashboard_container'; -export async function duplicateDashboardPanel(this: DashboardContainer, idToDuplicate: string) { - const panelToClone = this.getInput().panels[idToDuplicate] as DashboardPanelState; - const embeddable = this.getChild(idToDuplicate); - if (!panelToClone || !embeddable) { - throw new PanelNotFoundError(); - } +const duplicateLegacyInput = async ( + dashboard: DashboardContainer, + panelToClone: DashboardPanelState, + idToDuplicate: string +) => { + const embeddable = dashboard.getChild(idToDuplicate); + if (!panelToClone || !embeddable) throw new PanelNotFoundError(); - // duplicate panel input - const duplicatedPanelState: PanelState = await (async () => { - const newTitle = await incrementPanelTitle(embeddable, embeddable.getTitle() || ''); - const id = uuidv4(); - if (isReferenceOrValueEmbeddable(embeddable)) { - return { - type: embeddable.type, - explicitInput: { - ...(await embeddable.getInputAsValueType()), - hidePanelTitles: panelToClone.explicitInput.hidePanelTitles, - ...(newTitle ? { title: newTitle } : {}), - id, - }, - }; - } + const newTitle = await incrementPanelTitle(dashboard, embeddable.getTitle() || ''); + const id = uuidv4(); + if (isReferenceOrValueEmbeddable(embeddable)) { return { type: embeddable.type, explicitInput: { - ...panelToClone.explicitInput, - title: newTitle, + ...(await embeddable.getInputAsValueType()), + hidePanelTitles: panelToClone.explicitInput.hidePanelTitles, + ...(newTitle ? { title: newTitle } : {}), id, }, }; - })(); + } + return { + type: embeddable.type, + explicitInput: { + ...panelToClone.explicitInput, + title: newTitle, + id, + }, + }; +}; + +const duplicateReactEmbeddableInput = async ( + dashboard: DashboardContainer, + panelToClone: DashboardPanelState, + idToDuplicate: string +) => { + const child = dashboard.reactEmbeddableChildren.value[idToDuplicate]; + if (!child) throw new PanelNotFoundError(); + + const lastTitle = apiPublishesPanelTitle(child) + ? child.panelTitle.value ?? child.defaultPanelTitle?.value ?? '' + : ''; + const newTitle = await incrementPanelTitle(dashboard, lastTitle); + const id = uuidv4(); + const serializedState = await child.serializeState(); + return { + type: panelToClone.type, + explicitInput: { + ...panelToClone.explicitInput, + ...serializedState.rawState, + title: newTitle, + id, + }, + }; +}; + +export async function duplicateDashboardPanel(this: DashboardContainer, idToDuplicate: string) { + const panelToClone = this.getInput().panels[idToDuplicate] as DashboardPanelState; + + const duplicatedPanelState = reactEmbeddableRegistryHasKey(panelToClone.type) + ? await duplicateReactEmbeddableInput(this, panelToClone, idToDuplicate) + : await duplicateLegacyInput(this, panelToClone, idToDuplicate); + pluginServices.getServices().notifications.toasts.addSuccess({ title: dashboardClonePanelActionStrings.getSuccessMessage(), 'data-test-subj': 'addObjectToContainerSuccess', @@ -80,14 +111,13 @@ export async function duplicateDashboardPanel(this: DashboardContainer, idToDupl }); } -export const incrementPanelTitle = async (embeddable: IEmbeddable, rawTitle: string) => { +export const incrementPanelTitle = async (dashboard: DashboardContainer, rawTitle: string) => { if (rawTitle === '') return ''; const clonedTag = dashboardClonePanelActionStrings.getClonedTag(); const cloneRegex = new RegExp(`\\(${clonedTag}\\)`, 'g'); const cloneNumberRegex = new RegExp(`\\(${clonedTag} [0-9]+\\)`, 'g'); const baseTitle = rawTitle.replace(cloneNumberRegex, '').replace(cloneRegex, '').trim(); - const dashboard: DashboardContainer = embeddable.getRoot() as DashboardContainer; const similarTitles = filter(await dashboard.getPanelTitles(), (title: string) => { return title.startsWith(baseTitle); }); diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/api/run_save_functions.tsx b/src/plugins/dashboard/public/dashboard_container/embeddable/api/run_save_functions.tsx index 26c52cb429fd3a..66c52f14a00029 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/api/run_save_functions.tsx +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/api/run_save_functions.tsx @@ -6,13 +6,14 @@ * Side Public License, v 1. */ +import type { PersistableControlGroupInput } from '@kbn/controls-plugin/common'; +import { reportPerformanceMetricEvent } from '@kbn/ebt-tools'; +import { reactEmbeddableRegistryHasKey } from '@kbn/embeddable-plugin/public'; +import { SerializedPanelState } from '@kbn/presentation-containers'; import { showSaveModal } from '@kbn/saved-objects-plugin/public'; +import { cloneDeep } from 'lodash'; import React from 'react'; import { batch } from 'react-redux'; - -import { PersistableControlGroupInput } from '@kbn/controls-plugin/common'; -import { reportPerformanceMetricEvent } from '@kbn/ebt-tools'; - import { DashboardContainerInput } from '../../../../common'; import { DASHBOARD_CONTENT_ID, SAVED_OBJECT_POST_TIME } from '../../../dashboard_constants'; import { @@ -25,6 +26,33 @@ import { DashboardContainer } from '../dashboard_container'; import { extractTitleAndCount } from './lib/extract_title_and_count'; import { DashboardSaveModal } from './overlays/save_modal'; +const serializeAllPanelState = async ( + dashboard: DashboardContainer +): Promise => { + const reactEmbeddableSavePromises: Array< + Promise<{ serializedState: SerializedPanelState; uuid: string }> + > = []; + const panels = cloneDeep(dashboard.getInput().panels); + for (const [uuid, panel] of Object.entries(panels)) { + if (!reactEmbeddableRegistryHasKey(panel.type)) continue; + const api = dashboard.reactEmbeddableChildren.value[uuid]; + if (api) { + reactEmbeddableSavePromises.push( + new Promise((resolve) => { + api.serializeState().then((serializedState) => { + resolve({ serializedState, uuid }); + }); + }) + ); + } + } + const saveResults = await Promise.all(reactEmbeddableSavePromises); + for (const { serializedState, uuid } of saveResults) { + panels[uuid].explicitInput = { ...serializedState.rawState, id: uuid }; + } + return panels; +}; + export function runSaveAs(this: DashboardContainer) { const { data: { @@ -82,18 +110,20 @@ export function runSaveAs(this: DashboardContainer) { // do not save if title is duplicate and is unconfirmed return {}; } - - const lastSavedInput: DashboardContainerInput = { + const nextPanels = await serializeAllPanelState(this); + const dashboardStateToSave: DashboardContainerInput = { ...currentState, + panels: nextPanels, ...stateFromSaveModal, }; - let stateToSave: SavedDashboardInput = lastSavedInput; + let stateToSave: SavedDashboardInput = dashboardStateToSave; let persistableControlGroupInput: PersistableControlGroupInput | undefined; if (this.controlGroup) { persistableControlGroupInput = this.controlGroup.getPersistableInput(); stateToSave = { ...stateToSave, controlGroupInput: persistableControlGroupInput }; } const beforeAddTime = window.performance.now(); + const saveResult = await saveDashboardState({ currentState: stateToSave, saveOptions, @@ -112,7 +142,8 @@ export function runSaveAs(this: DashboardContainer) { if (saveResult.id) { batch(() => { this.dispatch.setStateFromSaveModal(stateFromSaveModal); - this.dispatch.setLastSavedInput(lastSavedInput); + this.dispatch.setLastSavedInput(dashboardStateToSave); + this.lastSavedState.next(); if (this.controlGroup && persistableControlGroupInput) { this.controlGroup.dispatch.setLastSavedInput(persistableControlGroupInput); } @@ -153,7 +184,8 @@ export async function runQuickSave(this: DashboardContainer) { if (managed) return; - let stateToSave: SavedDashboardInput = currentState; + const nextPanels = await serializeAllPanelState(this); + let stateToSave: SavedDashboardInput = { ...currentState, panels: nextPanels }; let persistableControlGroupInput: PersistableControlGroupInput | undefined; if (this.controlGroup) { persistableControlGroupInput = this.controlGroup.getPersistableInput(); @@ -167,6 +199,7 @@ export async function runQuickSave(this: DashboardContainer) { }); this.dispatch.setLastSavedInput(currentState); + this.lastSavedState.next(); if (this.controlGroup && persistableControlGroupInput) { this.controlGroup.dispatch.setLastSavedInput(persistableControlGroupInput); } diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts b/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts index fe21437028e731..5ae88b7c3bcd36 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts @@ -30,13 +30,11 @@ import { pluginServices } from '../../../services/plugin_services'; import { DashboardCreationOptions } from '../dashboard_container_factory'; import { DEFAULT_DASHBOARD_INPUT } from '../../../dashboard_constants'; -test('throws error when no data views are available', async () => { +test("doesn't throw error when no data views are available", async () => { pluginServices.getServices().data.dataViews.defaultDataViewExists = jest .fn() .mockReturnValue(false); - await expect(async () => { - await createDashboard(); - }).rejects.toThrow('Dashboard requires at least one data view before it can be initialized.'); + expect(await createDashboard()).toBeDefined(); // reset get default data view pluginServices.getServices().data.dataViews.defaultDataViewExists = jest diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.ts b/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.ts index 6fc13af8a7ca9b..93b849a122ce09 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.ts +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.ts @@ -5,10 +5,6 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import { cloneDeep, identity, omit, pickBy } from 'lodash'; -import { BehaviorSubject, combineLatestWith, distinctUntilChanged, map, Subject } from 'rxjs'; -import { v4 } from 'uuid'; - import { ControlGroupInput, CONTROL_GROUP_TYPE, @@ -21,10 +17,17 @@ import { type ControlGroupContainer, } from '@kbn/controls-plugin/public'; import { GlobalQueryStateFromUrl, syncGlobalQueryStateWithUrl } from '@kbn/data-plugin/public'; -import { EmbeddableFactory, isErrorEmbeddable, ViewMode } from '@kbn/embeddable-plugin/public'; +import { + EmbeddableFactory, + isErrorEmbeddable, + reactEmbeddableRegistryHasKey, + ViewMode, +} from '@kbn/embeddable-plugin/public'; import { TimeRange } from '@kbn/es-query'; import { lazyLoadReduxToolsPackage } from '@kbn/presentation-util-plugin/public'; - +import { cloneDeep, identity, omit, pickBy } from 'lodash'; +import { Subject } from 'rxjs'; +import { v4 } from 'uuid'; import { DashboardContainerInput, DashboardPanelState } from '../../../../common'; import { DEFAULT_DASHBOARD_INPUT, @@ -38,6 +41,7 @@ import { } from '../../../services/dashboard_content_management/types'; import { pluginServices } from '../../../services/plugin_services'; import { panelPlacementStrategies } from '../../component/panel_placement/place_new_panel_strategies'; +import { startDiffingDashboardState } from '../../state/diffing/dashboard_diffing_integration'; import { DashboardPublicState } from '../../types'; import { DashboardContainer } from '../dashboard_container'; import { DashboardCreationOptions } from '../dashboard_container_factory'; @@ -78,16 +82,12 @@ export const createDashboard = async ( const defaultDataViewExistsPromise = dataViews.defaultDataViewExists(); const dashboardSavedObjectPromise = loadDashboardState({ id: savedObjectId }); - const [reduxEmbeddablePackage, savedObjectResult, defaultDataView] = await Promise.all([ + const [reduxEmbeddablePackage, savedObjectResult] = await Promise.all([ reduxEmbeddablePackagePromise, dashboardSavedObjectPromise, - defaultDataViewExistsPromise, + defaultDataViewExistsPromise /* the result is not used, but the side effect of setting the default data view is needed. */, ]); - if (!defaultDataView) { - throw new Error('Dashboard requires at least one data view before it can be initialized.'); - } - // -------------------------------------------------------------------------------------- // Initialize Dashboard integrations // -------------------------------------------------------------------------------------- @@ -100,7 +100,7 @@ export const createDashboard = async ( const { input, searchSessionId } = initializeResult; // -------------------------------------------------------------------------------------- - // Build and return the dashboard container. + // Build the dashboard container. // -------------------------------------------------------------------------------------- const initialComponentState: DashboardPublicState = { lastSavedInput: omit(savedObjectResult?.dashboardInput, 'controlGroupInput') ?? { @@ -124,6 +124,14 @@ export const createDashboard = async ( creationOptions, initialComponentState ); + + // -------------------------------------------------------------------------------------- + // Start the diffing integration after all other integrations are set up. + // -------------------------------------------------------------------------------------- + untilDashboardReady().then((container) => { + startDiffingDashboardState.bind(container)(creationOptions); + }); + dashboardContainerReady$.next(dashboardContainer); return dashboardContainer; }; @@ -353,6 +361,9 @@ export const initializeDashboard = async ({ [newPanelState.explicitInput.id]: newPanelState, }, }); + if (reactEmbeddableRegistryHasKey(incomingEmbeddable.type)) { + return { id: embeddableId }; + } return await container.untilEmbeddableLoaded(embeddableId); })(); @@ -451,49 +462,5 @@ export const initializeDashboard = async ({ setTimeout(() => dashboard.dispatch.setAnimatePanelTransforms(true), 500) ); - // -------------------------------------------------------------------------------------- - // Start diffing subscription to keep track of unsaved changes - // -------------------------------------------------------------------------------------- - untilDashboardReady().then((dashboard) => { - // subscription that handles the unsaved changes badge - dashboard.integrationSubscriptions.add( - dashboard.hasUnsavedChanges - .pipe( - combineLatestWith( - dashboard.controlGroup?.unsavedChanges.pipe( - map((unsavedControlchanges) => Boolean(unsavedControlchanges)) - ) ?? new BehaviorSubject(false) - ), - distinctUntilChanged( - ( - [dashboardHasChanges1, controlHasChanges1], - [dashboardHasChanges2, controlHasChanges2] - ) => - (dashboardHasChanges1 || controlHasChanges1) === - (dashboardHasChanges2 || controlHasChanges2) - ) - ) - .subscribe(([dashboardHasChanges, controlGroupHasChanges]) => { - dashboard.dispatch.setHasUnsavedChanges(dashboardHasChanges || controlGroupHasChanges); - }) - ); - - // subscription that handles backing up the unsaved changes to the session storage - dashboard.integrationSubscriptions.add( - dashboard.backupUnsavedChanges - .pipe( - combineLatestWith( - dashboard.controlGroup?.unsavedChanges ?? new BehaviorSubject(undefined) - ) - ) - .subscribe(([dashboardChanges, controlGroupChanges]) => { - dashboardBackup.setState(dashboard.getDashboardSavedObjectId(), { - ...dashboardChanges, - controlGroupInput: controlGroupChanges, - }); - }) - ); - }); - return { input: initialDashboardInput, searchSessionId: initialSearchSessionId }; }; diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx b/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx index 163b1a7b4d08fa..bf1bf12e657564 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx @@ -11,7 +11,8 @@ import React, { createContext, useContext } from 'react'; import ReactDOM from 'react-dom'; import { batch } from 'react-redux'; import { BehaviorSubject, Subject, Subscription } from 'rxjs'; - +import { map, distinctUntilChanged } from 'rxjs/operators'; +import deepEqual from 'fast-deep-equal'; import type { ControlGroupContainer } from '@kbn/controls-plugin/public'; import type { KibanaExecutionContext, OverlayRef } from '@kbn/core/public'; import { RefreshInterval } from '@kbn/data-plugin/public'; @@ -19,6 +20,10 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import { reportPerformanceMetricEvent } from '@kbn/ebt-tools'; import { Container, + DefaultEmbeddableApi, + PanelNotFoundError, + ReactEmbeddableParentContext, + reactEmbeddableRegistryHasKey, ViewMode, type EmbeddableFactory, type EmbeddableInput, @@ -43,7 +48,7 @@ import { placePanel } from '../component/panel_placement'; import { DashboardViewport } from '../component/viewport/dashboard_viewport'; import { DashboardExternallyAccessibleApi } from '../external_api/dashboard_api'; import { dashboardContainerReducers } from '../state/dashboard_container_reducers'; -import { startDiffingDashboardState } from '../state/diffing/dashboard_diffing_integration'; +import { getDiffingMiddleware } from '../state/diffing/dashboard_diffing_integration'; import { DashboardPublicState, DashboardReduxState, @@ -65,7 +70,6 @@ import { dashboardTypeDisplayLowercase, dashboardTypeDisplayName, } from './dashboard_container_factory'; -import { SavedDashboardInput } from '../../services/dashboard_content_management/types'; export interface InheritedChildInput { filters: Filter[]; @@ -108,15 +112,13 @@ export class DashboardContainer public getState: DashboardReduxEmbeddableTools['getState']; public dispatch: DashboardReduxEmbeddableTools['dispatch']; public onStateChange: DashboardReduxEmbeddableTools['onStateChange']; + public anyReducerRun: Subject = new Subject(); public integrationSubscriptions: Subscription = new Subscription(); public publishingSubscription: Subscription = new Subscription(); public diffingSubscription: Subscription = new Subscription(); public controlGroup?: ControlGroupContainer; - public hasUnsavedChanges: BehaviorSubject; - public backupUnsavedChanges: BehaviorSubject | undefined>; - public searchSessionId?: string; public locator?: Pick, 'navigate' | 'getRedirectUrl'>; @@ -140,6 +142,10 @@ export class DashboardContainer private chrome; private customBranding; + // new embeddable framework + public reactEmbeddableChildren: BehaviorSubject<{ [key: string]: DefaultEmbeddableApi }> = + new BehaviorSubject<{ [key: string]: DefaultEmbeddableApi }>({}); + constructor( initialInput: DashboardContainerInput, reduxToolsPackage: ReduxToolsPackage, @@ -177,11 +183,7 @@ export class DashboardContainer this.dashboardCreationStartTime = dashboardCreationStartTime; // start diffing dashboard state - this.hasUnsavedChanges = new BehaviorSubject(false); - this.backupUnsavedChanges = new BehaviorSubject | undefined>( - undefined - ); - const diffingMiddleware = startDiffingDashboardState.bind(this)(creationOptions); + const diffingMiddleware = getDiffingMiddleware.bind(this)(); // build redux embeddable tools const reduxTools = reduxToolsPackage.createReduxEmbeddableTools< @@ -214,6 +216,7 @@ export class DashboardContainer this.expandedPanelId.next(this.getExpandedPanelId()); }) ); + this.startAuditingReactEmbeddableChildren(); } public getAppContext() { @@ -278,7 +281,9 @@ export class DashboardContainer > - + + + @@ -391,7 +396,21 @@ export class DashboardContainer return newId; } - public getDashboardPanelFromId = (panelId: string) => this.getInput().panels[panelId]; + public getDashboardPanelFromId = async (panelId: string) => { + const panel = this.getInput().panels[panelId]; + if (reactEmbeddableRegistryHasKey(panel.type)) { + const child = this.reactEmbeddableChildren.value[panelId]; + if (!child) throw new PanelNotFoundError(); + const serialized = await child.serializeState(); + return { + type: panel.type, + explicitInput: { ...panel.explicitInput, ...serialized.rawState }, + gridData: panel.gridData, + version: serialized.version, + }; + } + return panel; + }; public expandPanel = (panelId?: string) => { this.setExpandedPanelId(panelId); @@ -435,6 +454,7 @@ export class DashboardContainer if (timeRange) timeFilterService.setTime(timeRange); if (refreshInterval) timeFilterService.setRefreshInterval(refreshInterval); } + this.resetAllReactEmbeddables(); } public navigateToDashboard = async ( @@ -537,14 +557,20 @@ export class DashboardContainer public async getPanelTitles(): Promise { const titles: string[] = []; - const ids: string[] = Object.keys(this.getInput().panels); - for (const panelId of ids) { - await this.untilEmbeddableLoaded(panelId); - const child: IEmbeddable = this.getChild(panelId); - const title = child.getTitle(); - if (title) { - titles.push(title); - } + for (const [id, panel] of Object.entries(this.getInput().panels)) { + const title = await (async () => { + if (reactEmbeddableRegistryHasKey(panel.type)) { + return ( + this.reactEmbeddableChildren.value[id]?.panelTitle?.value ?? + this.reactEmbeddableChildren.value[id]?.defaultPanelTitle?.value + ); + } + await this.untilEmbeddableLoaded(id); + const child: IEmbeddable = this.getChild(id); + if (!child) return undefined; + return child.getTitle(); + })(); + if (title) titles.push(title); } return titles; } @@ -589,4 +615,75 @@ export class DashboardContainer public setFocusedPanelId = (id: string | undefined) => { this.dispatch.setFocusedPanelId(id); }; + + // ------------------------------------------------------------------------------------------------------ + // React Embeddable system + // ------------------------------------------------------------------------------------------------------ + public registerPanelApi = (id: string, api: ApiType) => { + this.reactEmbeddableChildren.next({ + ...this.reactEmbeddableChildren.value, + [id]: api as DefaultEmbeddableApi, + }); + }; + + public getLastSavedStateForChild = (childId: string) => { + const { + componentState: { + lastSavedInput: { panels }, + }, + } = this.getState(); + const panel: DashboardPanelState | undefined = panels[childId]; + + // TODO Embeddable refactor. References here + return { rawState: panel?.explicitInput, version: panel?.version, references: [] }; + }; + + public removePanel(id: string) { + const type = this.getInput().panels[id]?.type; + this.removeEmbeddable(id); + if (reactEmbeddableRegistryHasKey(type)) { + const { [id]: childToRemove, ...otherChildren } = this.reactEmbeddableChildren.value; + this.reactEmbeddableChildren.next(otherChildren); + } + } + + public startAuditingReactEmbeddableChildren = () => { + const auditChildren = () => { + const currentChildren = this.reactEmbeddableChildren.value; + let panelsChanged = false; + for (const panelId of Object.keys(currentChildren)) { + if (!this.getInput().panels[panelId]) { + delete currentChildren[panelId]; + panelsChanged = true; + } + } + if (panelsChanged) this.reactEmbeddableChildren.next(currentChildren); + }; + + // audit children when panels change + this.publishingSubscription.add( + this.getInput$() + .pipe( + map(() => Object.keys(this.getInput().panels)), + distinctUntilChanged(deepEqual) + ) + .subscribe(() => auditChildren()) + ); + auditChildren(); + }; + + public resetAllReactEmbeddables = () => { + let resetChangedPanelCount = false; + const currentChildren = this.reactEmbeddableChildren.value; + for (const panelId of Object.keys(currentChildren)) { + if (this.getInput().panels[panelId]) { + currentChildren[panelId].resetUnsavedChanges(); + } else { + // if reset resulted in panel removal, we need to update the list of children + delete currentChildren[panelId]; + resetChangedPanelCount = true; + } + } + if (resetChangedPanelCount) this.reactEmbeddableChildren.next(currentChildren); + }; } diff --git a/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_api.ts b/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_api.ts index 0a9dc0e5ca56c5..42915c0aa39793 100644 --- a/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_api.ts +++ b/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_api.ts @@ -34,7 +34,7 @@ export interface DashboardPluginInternalFunctions { * A temporary backdoor to allow some actions access to the Dashboard panels. This should eventually be replaced with a generic version * on the PresentationContainer interface. */ - getDashboardPanelFromId: (id: string) => DashboardPanelState; + getDashboardPanelFromId: (id: string) => Promise; /** * A temporary backdoor to allow the filters notification popover to get the data views directly from the dashboard container diff --git a/src/plugins/dashboard/public/dashboard_container/state/diffing/dashboard_diffing_functions.ts b/src/plugins/dashboard/public/dashboard_container/state/diffing/dashboard_diffing_functions.ts index 4816b261f373f0..acfb95b6745e97 100644 --- a/src/plugins/dashboard/public/dashboard_container/state/diffing/dashboard_diffing_functions.ts +++ b/src/plugins/dashboard/public/dashboard_container/state/diffing/dashboard_diffing_functions.ts @@ -6,16 +6,17 @@ * Side Public License, v 1. */ -import fastIsEqual from 'fast-deep-equal'; - -import { shouldRefreshFilterCompareOptions } from '@kbn/embeddable-plugin/public'; +import { + reactEmbeddableRegistryHasKey, + shouldRefreshFilterCompareOptions, +} from '@kbn/embeddable-plugin/public'; import { compareFilters, COMPARE_ALL_OPTIONS, isFilterPinned, onlyDisabledFiltersChanged, } from '@kbn/es-query'; - +import fastIsEqual from 'fast-deep-equal'; import { DashboardContainerInput } from '../../../../common'; import { DashboardContainer } from '../../embeddable/dashboard_container'; import { DashboardContainerInputWithoutId } from '../../types'; @@ -82,7 +83,11 @@ export const unsavedChangesDiffingFunctions: DashboardDiffFunctions = { (panel) => new Promise((resolve, reject) => { const embeddableId = panel.explicitInput.id; - if (!embeddableId) reject(); + if (!embeddableId || reactEmbeddableRegistryHasKey(panel.type)) { + // if this is a new style embeddable, it will handle its own diffing. + reject(); + return; + } try { container.untilEmbeddableLoaded(embeddableId).then((embeddable) => embeddable diff --git a/src/plugins/dashboard/public/dashboard_container/state/diffing/dashboard_diffing_integration.ts b/src/plugins/dashboard/public/dashboard_container/state/diffing/dashboard_diffing_integration.ts index 31e99e213fb256..d0ba41e47074a6 100644 --- a/src/plugins/dashboard/public/dashboard_container/state/diffing/dashboard_diffing_integration.ts +++ b/src/plugins/dashboard/public/dashboard_container/state/diffing/dashboard_diffing_integration.ts @@ -5,20 +5,23 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import { omit } from 'lodash'; +import { PersistableControlGroupInput } from '@kbn/controls-plugin/common'; +import deepEqual from 'fast-deep-equal'; +import { cloneDeep, omit } from 'lodash'; import { AnyAction, Middleware } from 'redux'; -import { debounceTime, Observable, startWith, Subject, switchMap } from 'rxjs'; - +import { combineLatest, debounceTime, Observable, of, startWith, switchMap } from 'rxjs'; +import { distinctUntilChanged, map } from 'rxjs/operators'; +import { DashboardContainer, DashboardCreationOptions } from '../..'; +import { DashboardContainerInput } from '../../../../common'; +import { CHANGE_CHECK_DEBOUNCE } from '../../../dashboard_constants'; +import { pluginServices } from '../../../services/plugin_services'; +import { dashboardContainerReducers } from '../dashboard_container_reducers'; import { isKeyEqual, isKeyEqualAsync, shouldRefreshDiffingFunctions, unsavedChangesDiffingFunctions, } from './dashboard_diffing_functions'; -import { DashboardContainerInput } from '../../../../common'; -import { DashboardContainer, DashboardCreationOptions } from '../..'; -import { CHANGE_CHECK_DEBOUNCE } from '../../../dashboard_constants'; -import { dashboardContainerReducers } from '../dashboard_container_reducers'; /** * An array of reducers which cannot cause unsaved changes. Unsaved changes only compares the explicit input @@ -75,45 +78,9 @@ const sessionChangeKeys: Array> = ]; /** - * Does an initial diff between @param initialInput and @param initialLastSavedInput, and creates a middleware - * which listens to the redux store and pushes updates to the `hasUnsavedChanges` and `backupUnsavedChanges` behaviour - * subjects so that the corresponding subscriptions can dispatch updates as necessary + * build middleware that fires an event any time a reducer that could cause unsaved changes is run */ -export function startDiffingDashboardState( - this: DashboardContainer, - creationOptions?: DashboardCreationOptions -) { - const checkForUnsavedChangesSubject$ = new Subject(); - this.diffingSubscription.add( - checkForUnsavedChangesSubject$ - .pipe( - startWith(null), - debounceTime(CHANGE_CHECK_DEBOUNCE), - switchMap(() => { - return new Observable((observer) => { - const { - explicitInput: currentInput, - componentState: { lastSavedInput }, - } = this.getState(); - getUnsavedChanges - .bind(this)(lastSavedInput, currentInput) - .then((unsavedChanges) => { - if (observer.closed) return; - const validUnsavedChanges = omit(unsavedChanges, keysNotConsideredUnsavedChanges); - const hasChanges = Object.keys(validUnsavedChanges).length > 0; - this.hasUnsavedChanges.next(hasChanges); - - if (creationOptions?.useSessionStorageIntegration) { - this.backupUnsavedChanges.next( - omit(unsavedChanges, keysToOmitFromSessionStorage) - ); - } - }); - }); - }) - ) - .subscribe() - ); +export function getDiffingMiddleware(this: DashboardContainer) { const diffingMiddleware: Middleware = (store) => (next) => (action) => { const dispatchedActionName = action.type.split('/')?.[1]; if ( @@ -121,18 +88,105 @@ export function startDiffingDashboardState( dispatchedActionName !== 'updateEmbeddableReduxOutput' && // ignore any generic output updates. !reducersToIgnore.includes(dispatchedActionName) ) { - checkForUnsavedChangesSubject$.next(null); + this.anyReducerRun.next(null); } next(action); }; return diffingMiddleware; } +/** + * Does an initial diff between @param initialInput and @param initialLastSavedInput, and creates a middleware + * which listens to the redux store and pushes updates to the `hasUnsavedChanges` and `backupUnsavedChanges` behaviour + * subjects so that the corresponding subscriptions can dispatch updates as necessary + */ +export function startDiffingDashboardState( + this: DashboardContainer, + creationOptions?: DashboardCreationOptions +) { + /** + * Create an observable stream of unsaved changes from all react embeddable children + */ + const reactEmbeddableUnsavedChanges = this.reactEmbeddableChildren.pipe( + map((children) => Object.keys(children)), + distinctUntilChanged(deepEqual), + debounceTime(CHANGE_CHECK_DEBOUNCE), + + // children may change, so make sure we subscribe/unsubscribe with switchMap + switchMap((newChildIds: string[]) => { + if (newChildIds.length === 0) return of([]); + return combineLatest( + newChildIds.map((childId) => + this.reactEmbeddableChildren.value[childId].unsavedChanges.pipe( + map((unsavedChanges) => { + return { childId, unsavedChanges }; + }) + ) + ) + ); + }), + map((children) => children.filter((child) => Boolean(child.unsavedChanges))) + ); + + /** + * Create an observable stream that checks for unsaved changes in the Dashboard state + * and the state of all of its legacy embeddable children. + */ + const dashboardUnsavedChanges = this.anyReducerRun.pipe( + startWith(null), + debounceTime(CHANGE_CHECK_DEBOUNCE), + switchMap(() => { + return new Observable>((observer) => { + const { + explicitInput: currentInput, + componentState: { lastSavedInput }, + } = this.getState(); + getDashboardUnsavedChanges + .bind(this)(lastSavedInput, currentInput) + .then((unsavedChanges) => { + if (observer.closed) return; + observer.next(unsavedChanges); + }); + }); + }) + ); + + /** + * Combine unsaved changes from all sources together. Set unsaved changes state and backup unsaved changes when any of the sources emit. + */ + this.diffingSubscription.add( + combineLatest([ + dashboardUnsavedChanges, + reactEmbeddableUnsavedChanges, + this.controlGroup?.unsavedChanges ?? + (of(undefined) as Observable), + ]).subscribe(([dashboardChanges, reactEmbeddableChanges, controlGroupChanges]) => { + // calculate unsaved changes + const hasUnsavedChanges = + Object.keys(omit(dashboardChanges, keysNotConsideredUnsavedChanges)).length > 0 || + reactEmbeddableChanges.length > 0 || + controlGroupChanges !== undefined; + if (hasUnsavedChanges !== this.getState().componentState.hasUnsavedChanges) { + this.dispatch.setHasUnsavedChanges(hasUnsavedChanges); + } + + // backup unsaved changes if configured to do so + if (creationOptions?.useSessionStorageIntegration) { + backupUnsavedChanges.bind(this)( + dashboardChanges, + reactEmbeddableChanges, + controlGroupChanges + ); + } + }) + ); +} + /** * Does a shallow diff between @param lastInput and @param input and * @returns an object out of the keys which are different. */ -export async function getUnsavedChanges( +export async function getDashboardUnsavedChanges( this: DashboardContainer, lastInput: DashboardContainerInput, input: DashboardContainerInput @@ -198,3 +252,40 @@ export function getShouldRefresh( } return false; } + +function backupUnsavedChanges( + this: DashboardContainer, + dashboardChanges: Partial, + reactEmbeddableChanges: Array<{ + childId: string; + unsavedChanges: object | undefined; + }>, + controlGroupChanges: PersistableControlGroupInput | undefined +) { + const { dashboardBackup } = pluginServices.getServices(); + + // apply all unsaved state from react embeddables to the unsaved changes object. + let hasAnyReactEmbeddableUnsavedChanges = false; + const currentPanels = cloneDeep(dashboardChanges.panels ?? this.getInput().panels); + for (const { childId, unsavedChanges: childUnsavedChanges } of reactEmbeddableChanges) { + if (!childUnsavedChanges) continue; + const panelStateToBackup = { + ...currentPanels[childId], + ...(dashboardChanges.panels?.[childId] ?? {}), + explicitInput: { + ...currentPanels[childId]?.explicitInput, + ...(dashboardChanges.panels?.[childId]?.explicitInput ?? {}), + ...childUnsavedChanges, + }, + }; + hasAnyReactEmbeddableUnsavedChanges = true; + currentPanels[childId] = panelStateToBackup; + } + const dashboardStateToBackup = omit(dashboardChanges, keysToOmitFromSessionStorage); + + dashboardBackup.setState(this.getDashboardSavedObjectId(), { + ...dashboardStateToBackup, + panels: hasAnyReactEmbeddableUnsavedChanges ? currentPanels : dashboardChanges.panels, + controlGroupInput: controlGroupChanges, + }); +} diff --git a/src/plugins/dashboard/public/services/dashboard_content_management/lib/migrate_dashboard_input.ts b/src/plugins/dashboard/public/services/dashboard_content_management/lib/migrate_dashboard_input.ts index 9d42d496df25f5..adc4de15d38aff 100644 --- a/src/plugins/dashboard/public/services/dashboard_content_management/lib/migrate_dashboard_input.ts +++ b/src/plugins/dashboard/public/services/dashboard_content_management/lib/migrate_dashboard_input.ts @@ -9,9 +9,9 @@ import { ControlGroupInput } from '@kbn/controls-plugin/common'; import { EmbeddableFactoryNotFoundError, + reactEmbeddableRegistryHasKey, runEmbeddableFactoryMigrations, } from '@kbn/embeddable-plugin/public'; - import { DashboardContainerInput, DashboardPanelState } from '../../../../common'; import { type DashboardEmbeddableService } from '../../embeddable/types'; import { SavedDashboardInput } from '../types'; @@ -51,7 +51,13 @@ export const migrateDashboardInput = ( }); } const migratedPanels: DashboardContainerInput['panels'] = {}; - Object.entries(dashboardInput.panels).forEach(([id, panel]) => { + for (const [id, panel] of Object.entries(dashboardInput.panels)) { + // if the panel type is registered in the new embeddable system, we do not need to run migrations for it. + if (reactEmbeddableRegistryHasKey(panel.type)) { + migratedPanels[id] = panel; + continue; + } + const factory = embeddable.getEmbeddableFactory(panel.type); if (!factory) throw new EmbeddableFactoryNotFoundError(panel.type); // run last saved migrations for by value panels only. @@ -67,7 +73,7 @@ export const migrateDashboardInput = ( panel.explicitInput.version = factory.latestVersion; } migratedPanels[id] = panel; - }); + } dashboardInput.panels = migratedPanels; return { dashboardInput, anyMigrationRun }; }; diff --git a/src/plugins/dashboard/public/services/documentation_links/documentation_links.stub.ts b/src/plugins/dashboard/public/services/documentation_links/documentation_links.stub.ts index dfdd74bfe41841..3c6255e423419e 100644 --- a/src/plugins/dashboard/public/services/documentation_links/documentation_links.stub.ts +++ b/src/plugins/dashboard/public/services/documentation_links/documentation_links.stub.ts @@ -19,5 +19,6 @@ export const documentationLinksServiceFactory: DocumentationLinksServiceFactory indexPatternsDocLink: corePluginMock.docLinks.links.indexPatterns.introduction, kibanaGuideDocLink: corePluginMock.docLinks.links.kibana.guide, dashboardDocLink: corePluginMock.docLinks.links.dashboard.guide, + esqlDocLink: corePluginMock.docLinks.links.query.queryESQL, }; }; diff --git a/src/plugins/dashboard/public/services/documentation_links/documentation_links_service.ts b/src/plugins/dashboard/public/services/documentation_links/documentation_links_service.ts index eb65f639d57fed..0c9e86f78c7583 100644 --- a/src/plugins/dashboard/public/services/documentation_links/documentation_links_service.ts +++ b/src/plugins/dashboard/public/services/documentation_links/documentation_links_service.ts @@ -24,6 +24,7 @@ export const documentationLinksServiceFactory: DocumentationLinksServiceFactory kibana, indexPatterns: { introduction }, dashboard, + query: { queryESQL }, }, }, } = coreStart; @@ -32,5 +33,6 @@ export const documentationLinksServiceFactory: DocumentationLinksServiceFactory indexPatternsDocLink: introduction, kibanaGuideDocLink: kibana.guide, dashboardDocLink: dashboard.guide, + esqlDocLink: queryESQL, }; }; diff --git a/src/plugins/dashboard/public/services/documentation_links/types.ts b/src/plugins/dashboard/public/services/documentation_links/types.ts index d47fbee6ed7727..80e544adc63ed4 100644 --- a/src/plugins/dashboard/public/services/documentation_links/types.ts +++ b/src/plugins/dashboard/public/services/documentation_links/types.ts @@ -12,4 +12,5 @@ export interface DashboardDocumentationLinksService { indexPatternsDocLink: CoreStart['docLinks']['links']['indexPatterns']['introduction']; kibanaGuideDocLink: CoreStart['docLinks']['links']['kibana']['guide']; dashboardDocLink: CoreStart['docLinks']['links']['dashboard']['guide']; + esqlDocLink: CoreStart['docLinks']['links']['query']['queryESQL']; } diff --git a/src/plugins/dashboard/tsconfig.json b/src/plugins/dashboard/tsconfig.json index c63f8c50b06305..371ec81c3d2cf2 100644 --- a/src/plugins/dashboard/tsconfig.json +++ b/src/plugins/dashboard/tsconfig.json @@ -75,7 +75,7 @@ "@kbn/presentation-panel-plugin", "@kbn/content-management-table-list-view-common", "@kbn/shared-ux-utility", - "@kbn/managed-content-badge" + "@kbn/managed-content-badge", ], "exclude": ["target/**/*"] } diff --git a/src/plugins/data/common/search/expressions/esql.ts b/src/plugins/data/common/search/expressions/esql.ts index c997da17e5cda7..3275a296568fd0 100644 --- a/src/plugins/data/common/search/expressions/esql.ts +++ b/src/plugins/data/common/search/expressions/esql.ts @@ -11,6 +11,7 @@ import { castEsToKbnFieldTypeName, ES_FIELD_TYPES, KBN_FIELD_TYPES } from '@kbn/ import { i18n } from '@kbn/i18n'; import type { Datatable, + DatatableColumn, DatatableColumnType, ExpressionFunctionDefinition, } from '@kbn/expressions-plugin/common'; @@ -243,7 +244,31 @@ export const getEsqlFn = ({ getStartDependencies }: EsqlFnArguments) => { name, meta: { type: normalizeType(type) }, })) ?? []; - const columnNames = columns.map(({ name }) => name); + // all_columns in the response means that there is a separation between + // columns with data and empty columns + // columns contain only columns with data while all_columns everything + const hasEmptyColumns = + body.all_columns && body.all_columns?.length > body.columns.length; + + let emptyColumns: DatatableColumn[] = []; + + if (hasEmptyColumns) { + const difference = + body.all_columns?.filter((col1) => { + return !body.columns.some((col2) => { + return col1.name === col2.name; + }); + }) ?? []; + emptyColumns = + difference?.map(({ name, type }) => ({ + id: name, + name, + meta: { type: normalizeType(type) }, + isNull: true, + })) ?? []; + } + const allColumns = [...columns, ...emptyColumns]; + const columnNames = allColumns.map(({ name }) => name); const rows = body.values.map((row) => zipObject(columnNames, row)); return { @@ -251,7 +276,7 @@ export const getEsqlFn = ({ getStartDependencies }: EsqlFnArguments) => { meta: { type: 'es_ql', }, - columns, + columns: allColumns, rows, warning, } as Datatable; diff --git a/src/plugins/data/server/search/strategies/esql_async_search/esql_async_search_strategy.ts b/src/plugins/data/server/search/strategies/esql_async_search/esql_async_search_strategy.ts index f41b4ece598b73..f052e6749e7261 100644 --- a/src/plugins/data/server/search/strategies/esql_async_search/esql_async_search_strategy.ts +++ b/src/plugins/data/server/search/strategies/esql_async_search/esql_async_search_strategy.ts @@ -67,11 +67,20 @@ export const esqlAsyncSearchStrategyProvider = ( }; const { body, headers, meta } = id ? await client.transport.request( - { method: 'GET', path: `/_query/async/${id}`, querystring: { ...params } }, + { + method: 'GET', + path: `/_query/async/${id}`, + querystring: { ...params }, + }, { ...options.transport, signal: options.abortSignal, meta: true } ) : await client.transport.request( - { method: 'POST', path: `/_query/async`, body: params }, + { + method: 'POST', + path: `/_query/async`, + body: params, + querystring: 'drop_null_columns', + }, { ...options.transport, signal: options.abortSignal, meta: true } ); diff --git a/src/plugins/data/server/search/strategies/esql_search/esql_search_strategy.ts b/src/plugins/data/server/search/strategies/esql_search/esql_search_strategy.ts index 1ad5b8fe0a5dd8..e9a6499b4aa1ba 100644 --- a/src/plugins/data/server/search/strategies/esql_search/esql_search_strategy.ts +++ b/src/plugins/data/server/search/strategies/esql_search/esql_search_strategy.ts @@ -36,7 +36,8 @@ export const esqlSearchStrategyProvider = ( const { headers, body, meta } = await esClient.asCurrentUser.transport.request( { method: 'POST', - path: '/_query', + path: `/_query`, + querystring: 'drop_null_columns', body: { ...requestParams, }, diff --git a/src/plugins/data_views/common/fields/data_view_field.ts b/src/plugins/data_views/common/fields/data_view_field.ts index 02474b6a41c2ee..36cd78682aa974 100644 --- a/src/plugins/data_views/common/fields/data_view_field.ts +++ b/src/plugins/data_views/common/fields/data_view_field.ts @@ -305,6 +305,14 @@ export class DataViewField implements DataViewFieldBase { return this.aggregatable && !notVisualizableFieldTypes.includes(this.spec.type); } + /** + * Returns true if field is Empty + */ + + public get isNull() { + return Boolean(this.spec.isNull); + } + /** * Returns true if field is subtype nested */ diff --git a/src/plugins/data_views/common/types.ts b/src/plugins/data_views/common/types.ts index 6ba4b6819a045e..2177f51621feca 100644 --- a/src/plugins/data_views/common/types.ts +++ b/src/plugins/data_views/common/types.ts @@ -407,6 +407,10 @@ export type FieldSpec = DataViewFieldBase & { * True if field is aggregatable */ aggregatable: boolean; + /** + * True if field is empty + */ + isNull?: boolean; /** * True if can be read from doc values */ diff --git a/src/plugins/discover/common/locator.test.ts b/src/plugins/discover/common/app_locator.test.ts similarity index 99% rename from src/plugins/discover/common/locator.test.ts rename to src/plugins/discover/common/app_locator.test.ts index 93da54ad365e9c..fc8d33010aa916 100644 --- a/src/plugins/discover/common/locator.test.ts +++ b/src/plugins/discover/common/app_locator.test.ts @@ -13,7 +13,7 @@ import { } from '@kbn/kibana-utils-plugin/public'; import { mockStorage } from '@kbn/kibana-utils-plugin/public/storage/hashed_item_store/mock'; import { FilterStateStore } from '@kbn/es-query'; -import { DiscoverAppLocatorDefinition } from './locator'; +import { DiscoverAppLocatorDefinition } from './app_locator'; import { SerializableRecord } from '@kbn/utility-types'; import { addProfile } from './customizations'; diff --git a/src/plugins/discover/common/locator.ts b/src/plugins/discover/common/app_locator.ts similarity index 100% rename from src/plugins/discover/common/locator.ts rename to src/plugins/discover/common/app_locator.ts diff --git a/src/plugins/discover/common/esql_locator.ts b/src/plugins/discover/common/esql_locator.ts new file mode 100644 index 00000000000000..68a09b67584bc0 --- /dev/null +++ b/src/plugins/discover/common/esql_locator.ts @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { DISCOVER_ESQL_LOCATOR } from '@kbn/deeplinks-analytics'; +import { LocatorDefinition, LocatorPublic } from '@kbn/share-plugin/common'; +import { SerializableRecord } from '@kbn/utility-types'; +import { getIndexForESQLQuery } from '@kbn/esql-utils'; +import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; + +export type DiscoverESQLLocatorParams = SerializableRecord; + +export interface DiscoverESQLLocatorDependencies { + discoverAppLocator: LocatorPublic; + getIndices: DataViewsPublicPluginStart['getIndices']; +} + +export type DiscoverESQLLocator = LocatorPublic; + +export class DiscoverESQLLocatorDefinition implements LocatorDefinition { + public readonly id = DISCOVER_ESQL_LOCATOR; + + constructor(protected readonly deps: DiscoverESQLLocatorDependencies) {} + + public readonly getLocation = async () => { + const { discoverAppLocator, getIndices } = this.deps; + + const indexName = await getIndexForESQLQuery({ dataViews: { getIndices } }); + const esql = `from ${indexName ?? '*'} | limit 10`; + + const params = { + query: { esql }, + }; + + return await discoverAppLocator.getLocation(params); + }; +} diff --git a/src/plugins/discover/common/index.ts b/src/plugins/discover/common/index.ts index 67ef77fdb9dee6..fd74e77a9ab60f 100644 --- a/src/plugins/discover/common/index.ts +++ b/src/plugins/discover/common/index.ts @@ -9,5 +9,12 @@ export const PLUGIN_ID = 'discover'; export const APP_ICON = 'discoverApp'; -export { DISCOVER_APP_LOCATOR, DiscoverAppLocatorDefinition } from './locator'; -export type { DiscoverAppLocator, DiscoverAppLocatorParams } from './locator'; +export { DISCOVER_APP_LOCATOR, DiscoverAppLocatorDefinition } from './app_locator'; +export type { + DiscoverAppLocator, + DiscoverAppLocatorParams, + MainHistoryLocationState, +} from './app_locator'; + +export { DiscoverESQLLocatorDefinition } from './esql_locator'; +export type { DiscoverESQLLocator, DiscoverESQLLocatorParams } from './esql_locator'; diff --git a/src/plugins/discover/public/__mocks__/data_view_esql.ts b/src/plugins/discover/public/__mocks__/data_view_esql.ts new file mode 100644 index 00000000000000..dc8d141a314962 --- /dev/null +++ b/src/plugins/discover/public/__mocks__/data_view_esql.ts @@ -0,0 +1,33 @@ +/* + * Copyright 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 { buildDataViewMock } from '@kbn/discover-utils/src/__mocks__'; +import { DataView } from '@kbn/data-views-plugin/common'; + +const fields = [ + { + name: '@timestamp', + displayName: 'timestamp', + type: 'date', + scripted: false, + filterable: true, + aggregatable: true, + sortable: true, + }, + { + name: 'message', + displayName: 'message', + type: 'string', + scripted: false, + filterable: false, + }, +] as DataView['fields']; + +export const dataViewEsql = buildDataViewMock({ + name: 'index-pattern-esql', + fields, +}); diff --git a/src/plugins/discover/public/__mocks__/discover_state.mock.ts b/src/plugins/discover/public/__mocks__/discover_state.mock.ts index 60e790cd752181..a0ed25996b1900 100644 --- a/src/plugins/discover/public/__mocks__/discover_state.mock.ts +++ b/src/plugins/discover/public/__mocks__/discover_state.mock.ts @@ -25,7 +25,7 @@ export function getDiscoverStateMock({ history, customizationContext: { displayMode: 'standalone', - showLogExplorerTabs: false, + showLogsExplorerTabs: false, }, }); container.savedSearchState.set( diff --git a/src/plugins/discover/public/__mocks__/saved_search.ts b/src/plugins/discover/public/__mocks__/saved_search.ts index 90a2a9c680825c..de9a6c199d35ab 100644 --- a/src/plugins/discover/public/__mocks__/saved_search.ts +++ b/src/plugins/discover/public/__mocks__/saved_search.ts @@ -11,6 +11,7 @@ import { createSearchSourceMock } from '@kbn/data-plugin/public/mocks'; import { dataViewMock } from '@kbn/discover-utils/src/__mocks__'; import { dataViewWithTimefieldMock } from './data_view_with_timefield'; import { dataViewAdHoc } from './data_view_complex'; +import { dataViewEsql } from './data_view_esql'; export const savedSearchMock = { id: 'the-saved-search-id', @@ -30,9 +31,10 @@ export const savedSearchMockWithTimeFieldNew = { export const savedSearchMockWithESQL = { id: 'the-saved-search-id-esql', searchSource: createSearchSourceMock({ - index: dataViewWithTimefieldMock, - query: { esql: 'FROM "the-saved-search-id-esql"' }, + index: dataViewEsql, + query: { esql: 'FROM "index-pattern-esql"' }, }), + isTextBasedQuery: true, } as unknown as SavedSearch; export const savedSearchAdHoc = { diff --git a/src/plugins/discover/public/application/discover_router.test.tsx b/src/plugins/discover/public/application/discover_router.test.tsx index 3d58d065129697..dce9556beb235c 100644 --- a/src/plugins/discover/public/application/discover_router.test.tsx +++ b/src/plugins/discover/public/application/discover_router.test.tsx @@ -51,7 +51,7 @@ const gatherRoutes = (wrapper: ShallowWrapper) => { const customizationContext: DiscoverCustomizationContext = { displayMode: 'standalone', - showLogExplorerTabs: false, + showLogsExplorerTabs: false, }; const props: DiscoverRoutesProps = { diff --git a/src/plugins/discover/public/application/main/components/layout/__stories__/get_layout_props.ts b/src/plugins/discover/public/application/main/components/layout/__stories__/get_layout_props.ts index 54d2dc5da0084d..0bb2beee2f34e8 100644 --- a/src/plugins/discover/public/application/main/components/layout/__stories__/get_layout_props.ts +++ b/src/plugins/discover/public/application/main/components/layout/__stories__/get_layout_props.ts @@ -126,7 +126,7 @@ function getSavedSearch(dataView: DataView) { const customizationContext: DiscoverCustomizationContext = { displayMode: 'standalone', - showLogExplorerTabs: false, + showLogsExplorerTabs: false, }; export function getDocumentsLayoutProps(dataView: DataView) { diff --git a/src/plugins/discover/public/application/main/components/sidebar/lib/get_field_list.ts b/src/plugins/discover/public/application/main/components/sidebar/lib/get_field_list.ts index 66dfab4e53c58e..487f0faf7a046f 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/lib/get_field_list.ts +++ b/src/plugins/discover/public/application/main/components/sidebar/lib/get_field_list.ts @@ -74,6 +74,7 @@ export function getTextBasedQueryFieldList( type: column.meta?.type ?? 'unknown', searchable: false, aggregatable: false, + isNull: Boolean(column?.isNull), }) ); } diff --git a/src/plugins/discover/public/application/main/components/sidebar/lib/sidebar_reducer.test.ts b/src/plugins/discover/public/application/main/components/sidebar/lib/sidebar_reducer.test.ts index c5ea2878f800ee..26e183481787b2 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/lib/sidebar_reducer.test.ts +++ b/src/plugins/discover/public/application/main/components/sidebar/lib/sidebar_reducer.test.ts @@ -109,6 +109,7 @@ describe('sidebar reducer', function () { meta: { type: 'number', }, + isNull: true, }, { id: '2', @@ -127,12 +128,14 @@ describe('sidebar reducer', function () { name: 'text1', type: 'number', aggregatable: false, + isNull: true, searchable: false, }), new DataViewField({ name: 'text2', type: 'keyword', aggregatable: false, + isNull: false, searchable: false, }), ], diff --git a/src/plugins/discover/public/application/main/components/top_nav/discover_topnav_serverless.test.tsx b/src/plugins/discover/public/application/main/components/top_nav/discover_topnav_serverless.test.tsx index 72c16671729613..27d93d6bb5647f 100644 --- a/src/plugins/discover/public/application/main/components/top_nav/discover_topnav_serverless.test.tsx +++ b/src/plugins/discover/public/application/main/components/top_nav/discover_topnav_serverless.test.tsx @@ -139,7 +139,7 @@ describe('DiscoverTopNavServerless', () => { }, }); const props = getProps(); - props.stateContainer.customizationContext.showLogExplorerTabs = true; + props.stateContainer.customizationContext.showLogsExplorerTabs = true; render( @@ -148,8 +148,8 @@ describe('DiscoverTopNavServerless', () => { const topNav = screen.queryByTestId('discoverTopNavServerless'); expect(topNav).not.toBeNull(); await waitFor(() => { - const logExplorerTabs = screen.queryByTestId('logsExplorerTabs'); - expect(logExplorerTabs).not.toBeNull(); + const logsExplorerTabs = screen.queryByTestId('logsExplorerTabs'); + expect(logsExplorerTabs).not.toBeNull(); }); }); @@ -169,8 +169,8 @@ describe('DiscoverTopNavServerless', () => { const topNav = screen.queryByTestId('discoverTopNavServerless'); expect(topNav).not.toBeNull(); await waitFor(() => { - const logExplorerTabs = screen.queryByTestId('logsExplorerTabs'); - expect(logExplorerTabs).toBeNull(); + const logsExplorerTabs = screen.queryByTestId('logsExplorerTabs'); + expect(logsExplorerTabs).toBeNull(); }); }); }); diff --git a/src/plugins/discover/public/application/main/components/top_nav/discover_topnav_serverless.tsx b/src/plugins/discover/public/application/main/components/top_nav/discover_topnav_serverless.tsx index 800ceeae760132..a59c665c042a85 100644 --- a/src/plugins/discover/public/application/main/components/top_nav/discover_topnav_serverless.tsx +++ b/src/plugins/discover/public/application/main/components/top_nav/discover_topnav_serverless.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { EuiHeader, EuiHeaderSection, EuiHeaderSectionItem } from '@elastic/eui'; import { TopNavMenuBadges, TopNavMenuItems } from '@kbn/navigation-plugin/public'; -import { LogExplorerTabs } from '../../../../components/log_explorer_tabs'; +import { LogsExplorerTabs } from '../../../../components/logs_explorer_tabs'; import { useDiscoverServices } from '../../../../hooks/use_discover_services'; import { useDiscoverTopNav } from './use_discover_topnav'; import type { DiscoverStateContainer } from '../../services/discover_state'; @@ -31,10 +31,10 @@ export const DiscoverTopNavServerless = ({ return ( - {customizationContext.showLogExplorerTabs && ( + {customizationContext.showLogsExplorerTabs && ( - + )} diff --git a/src/plugins/discover/public/application/main/components/top_nav/on_save_search.test.tsx b/src/plugins/discover/public/application/main/components/top_nav/on_save_search.test.tsx index 1d422baf238fff..529c88c644e696 100644 --- a/src/plugins/discover/public/application/main/components/top_nav/on_save_search.test.tsx +++ b/src/plugins/discover/public/application/main/components/top_nav/on_save_search.test.tsx @@ -27,7 +27,7 @@ function getStateContainer({ dataView }: { dataView?: DataView } = {}) { history, customizationContext: { displayMode: 'standalone', - showLogExplorerTabs: false, + showLogsExplorerTabs: false, }, }); stateContainer.savedSearchState.set(savedSearch); diff --git a/src/plugins/discover/public/application/main/discover_main_route.test.tsx b/src/plugins/discover/public/application/main/discover_main_route.test.tsx index 5cc73a4200f9f7..698c7e77222552 100644 --- a/src/plugins/discover/public/application/main/discover_main_route.test.tsx +++ b/src/plugins/discover/public/application/main/discover_main_route.test.tsx @@ -117,7 +117,7 @@ const mountComponent = (hasESData = true, hasUserDataView = true) => { customizationCallbacks: [], customizationContext: { displayMode: 'standalone', - showLogExplorerTabs: false, + showLogsExplorerTabs: false, }, }; diff --git a/src/plugins/discover/public/application/main/discover_main_route.tsx b/src/plugins/discover/public/application/main/discover_main_route.tsx index 4b1eebd153ec44..7fd8ebb22b3cda 100644 --- a/src/plugins/discover/public/application/main/discover_main_route.tsx +++ b/src/plugins/discover/public/application/main/discover_main_route.tsx @@ -19,10 +19,10 @@ import { getSavedSearchFullPathUrl } from '@kbn/saved-search-plugin/public'; import useObservable from 'react-use/lib/useObservable'; import { reportPerformanceMetricEvent } from '@kbn/ebt-tools'; import { withSuspense } from '@kbn/shared-ux-utility'; +import { isOfEsqlQueryType } from '@kbn/es-query'; import { useUrl } from './hooks/use_url'; -import { useSingleton } from './hooks/use_singleton'; -import { MainHistoryLocationState } from '../../../common/locator'; -import { DiscoverStateContainer, getDiscoverStateContainer } from './services/discover_state'; +import { useDiscoverStateContainer } from './hooks/use_discover_state_container'; +import { MainHistoryLocationState } from '../../../common'; import { DiscoverMainApp } from './discover_main_app'; import { setBreadcrumbs } from '../../utils/breadcrumbs'; import { LoadingIndicator } from '../../components/common/loading_indicator'; @@ -66,16 +66,16 @@ export function DiscoverMainRoute({ toastNotifications, http: { basePath }, dataViewEditor, + share, } = services; const { id: savedSearchId } = useParams(); - const stateContainer = useSingleton(() => - getDiscoverStateContainer({ - history, - services, - customizationContext, - stateStorageContainer, - }) - ); + const [stateContainer, { reset: resetStateContainer }] = useDiscoverStateContainer({ + history, + services, + customizationContext, + stateStorageContainer, + }); + const { customizationService, isInitialized: isCustomizationServiceInitialized } = useDiscoverCustomizationService({ customizationCallbacks, @@ -112,6 +112,11 @@ export function DiscoverMainRoute({ if (savedSearchId) { return true; // bypass NoData screen } + + if (isOfEsqlQueryType(stateContainer.appState.getState().query)) { + return true; + } + const hasUserDataViewValue = await data.dataViews.hasData .hasUserDataView() .catch(() => false); @@ -140,7 +145,7 @@ export function DiscoverMainRoute({ setError(e); return false; } - }, [data.dataViews, savedSearchId]); + }, [data.dataViews, savedSearchId, stateContainer.appState]); const loadSavedSearch = useCallback( async (nextDataView?: DataView) => { @@ -252,6 +257,10 @@ export function DiscoverMainRoute({ [loadSavedSearch] ); + const onESQLNavigationComplete = useCallback(async () => { + resetStateContainer(); + }, [resetStateContainer]); + const noDataDependencies = useMemo( () => ({ coreStart: core, @@ -266,10 +275,11 @@ export function DiscoverMainRoute({ hasUserDataView: () => Promise.resolve(hasUserDataView), }, }, + share, dataViewEditor, noDataPage: services.noDataPage, }), - [core, data.dataViews, dataViewEditor, hasESData, hasUserDataView, services.noDataPage] + [core, data.dataViews, dataViewEditor, hasESData, hasUserDataView, services.noDataPage, share] ); const loadingIndicator = useMemo( @@ -297,7 +307,10 @@ export function DiscoverMainRoute({ return ( - + ); } @@ -312,6 +325,7 @@ export function DiscoverMainRoute({ loadingIndicator, noDataDependencies, onDataViewCreated, + onESQLNavigationComplete, showNoDataPage, stateContainer, ]); diff --git a/src/plugins/discover/public/application/main/hooks/use_discover_state_container.ts b/src/plugins/discover/public/application/main/hooks/use_discover_state_container.ts new file mode 100644 index 00000000000000..5ae3d0d6085f7f --- /dev/null +++ b/src/plugins/discover/public/application/main/hooks/use_discover_state_container.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { useState } from 'react'; +import { + DiscoverStateContainer, + getDiscoverStateContainer, + DiscoverStateContainerParams, +} from '../services/discover_state'; + +/** + * Creates a state container using the initial params and allows to reset it. + * The container is recreated only when reset is called. This is useful to reset Discover to its initial state. + * @param params + */ +export const useDiscoverStateContainer = (params: DiscoverStateContainerParams) => { + const [stateContainer, setStateContainer] = useState(() => + getDiscoverStateContainer(params) + ); + + return [ + stateContainer, + { + reset: () => { + setStateContainer(getDiscoverStateContainer(params)); + }, + }, + ] as const; +}; diff --git a/src/plugins/discover/public/application/main/hooks/use_singleton.ts b/src/plugins/discover/public/application/main/hooks/use_singleton.ts deleted file mode 100644 index bac195896caa3a..00000000000000 --- a/src/plugins/discover/public/application/main/hooks/use_singleton.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 { useRef } from 'react'; - -/** - * Allows lazy initialization of a singleton - * Context: https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily - * Why not using useMemo: We're using the useMemo here also kind of as a guarantee to - * only instantiate that subject once. Unfortunately useMemo explicitly does not give - * those guarantees: - * https://reactjs.org/docs/hooks-reference.html#usememo - */ -export function useSingleton(initialize: () => T): T { - const ref = useRef(null); - - if (ref.current === null) { - ref.current = initialize(); - } - - return ref.current; -} diff --git a/src/plugins/discover/public/application/main/services/discover_state.test.ts b/src/plugins/discover/public/application/main/services/discover_state.test.ts index 2cf1e2c71880d8..a25f8364339580 100644 --- a/src/plugins/discover/public/application/main/services/discover_state.test.ts +++ b/src/plugins/discover/public/application/main/services/discover_state.test.ts @@ -19,6 +19,7 @@ import { savedSearchMock, savedSearchMockWithTimeField, savedSearchMockWithTimeFieldNew, + savedSearchMockWithESQL, } from '../../../__mocks__/saved_search'; import { discoverServiceMock } from '../../../__mocks__/services'; import { dataViewMock } from '@kbn/discover-utils/src/__mocks__'; @@ -37,7 +38,7 @@ const startSync = (appState: DiscoverAppStateContainer) => { const customizationContext: DiscoverCustomizationContext = { displayMode: 'standalone', - showLogExplorerTabs: false, + showLogsExplorerTabs: false, }; async function getState( @@ -650,6 +651,20 @@ describe('Test discover state actions', () => { expect(state.internalState.getState().adHocDataViews[0].id).toBe(adHocDataViewId); }); + test('loadSavedSearch with ES|QL, data view index is not overwritten by URL ', async () => { + const savedSearchMockWithESQLCopy = copySavedSearch(savedSearchMockWithESQL); + const persistedDataViewId = savedSearchMockWithESQLCopy?.searchSource.getField('index')!.id; + const url = "/#?_a=(index:'the-data-view-id')&_g=()"; + const { state } = await getState(url, { + savedSearch: savedSearchMockWithESQLCopy, + isEmptyUrl: false, + }); + const nextSavedSearch = await state.actions.loadSavedSearch({ + savedSearchId: savedSearchMockWithESQL.id, + }); + expect(persistedDataViewId).toBe(nextSavedSearch?.searchSource.getField('index')!.id); + }); + test('onChangeDataView', async () => { const { state, getCurrentUrl } = await getState('/', { savedSearch: savedSearchMock }); const { actions, savedSearchState, dataState, appState } = state; diff --git a/src/plugins/discover/public/application/main/services/discover_state.ts b/src/plugins/discover/public/application/main/services/discover_state.ts index 8994afb8a5f960..af3675156a93d4 100644 --- a/src/plugins/discover/public/application/main/services/discover_state.ts +++ b/src/plugins/discover/public/application/main/services/discover_state.ts @@ -54,7 +54,8 @@ import { getDiscoverGlobalStateContainer, DiscoverGlobalStateContainer, } from './discover_global_state_container'; -interface DiscoverStateContainerParams { + +export interface DiscoverStateContainerParams { /** * Browser history */ diff --git a/src/plugins/discover/public/application/main/services/load_saved_search.ts b/src/plugins/discover/public/application/main/services/load_saved_search.ts index 8b8dcc2beb2f48..a921e7a69e58c7 100644 --- a/src/plugins/discover/public/application/main/services/load_saved_search.ts +++ b/src/plugins/discover/public/application/main/services/load_saved_search.ts @@ -78,7 +78,11 @@ export const loadSavedSearch = async ( savedSearch: nextSavedSearch, }); const dataViewDifferentToAppState = stateDataView.id !== savedSearchDataViewId; - if (stateDataView && (dataViewDifferentToAppState || !savedSearchDataViewId)) { + if ( + !nextSavedSearch.isTextBasedQuery && + stateDataView && + (dataViewDifferentToAppState || !savedSearchDataViewId) + ) { nextSavedSearch.searchSource.setField('index', stateDataView); } } diff --git a/src/plugins/discover/public/application/main/utils/fetch_text_based.ts b/src/plugins/discover/public/application/main/utils/fetch_text_based.ts index a1aa14e47d79b5..98e8bc58461862 100644 --- a/src/plugins/discover/public/application/main/utils/fetch_text_based.ts +++ b/src/plugins/discover/public/application/main/utils/fetch_text_based.ts @@ -62,14 +62,13 @@ export function fetchTextBased( const rows = table?.rows ?? []; textBasedQueryColumns = table?.columns ?? undefined; textBasedHeaderWarning = table.warning ?? undefined; - finalData = rows.map( - (row: Record, idx: number) => - ({ - id: String(idx), - raw: row, - flattened: row, - } as unknown as DataTableRecord) - ); + finalData = rows.map((row: Record, idx: number) => { + return { + id: String(idx), + raw: row, + flattened: row, + } as unknown as DataTableRecord; + }); } }); return lastValueFrom(execution).then(() => { diff --git a/src/plugins/discover/public/application/main/utils/get_data_view_by_text_based_query_lang.ts b/src/plugins/discover/public/application/main/utils/get_data_view_by_text_based_query_lang.ts index 257fa050ba83c9..42e36c7ac9ab8b 100644 --- a/src/plugins/discover/public/application/main/utils/get_data_view_by_text_based_query_lang.ts +++ b/src/plugins/discover/public/application/main/utils/get_data_view_by_text_based_query_lang.ts @@ -5,12 +5,12 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ +import type { AggregateQuery } from '@kbn/es-query'; import { - AggregateQuery, + getESQLAdHocDataview, getIndexPatternFromSQLQuery, getIndexPatternFromESQLQuery, -} from '@kbn/es-query'; -import { getESQLAdHocDataview } from '@kbn/esql-utils'; +} from '@kbn/esql-utils'; import { DataView } from '@kbn/data-views-plugin/common'; import { DiscoverServices } from '../../../build_services'; diff --git a/src/plugins/discover/public/application/types.ts b/src/plugins/discover/public/application/types.ts index d3f8ccd8f990d2..017503fb70b619 100644 --- a/src/plugins/discover/public/application/types.ts +++ b/src/plugins/discover/public/application/types.ts @@ -29,7 +29,7 @@ export interface DiscoverCustomizationContext { /** * Whether or not to show the Log Explorer tabs */ - showLogExplorerTabs: boolean; + showLogsExplorerTabs: boolean; } export interface RecordsFetchResponse { diff --git a/src/plugins/discover/public/application/view_alert/view_alert_route.tsx b/src/plugins/discover/public/application/view_alert/view_alert_route.tsx index 5d8383be5e9359..ee5e9f85a090d9 100644 --- a/src/plugins/discover/public/application/view_alert/view_alert_route.tsx +++ b/src/plugins/discover/public/application/view_alert/view_alert_route.tsx @@ -8,7 +8,7 @@ import { useEffect, useMemo } from 'react'; import { useHistory, useLocation, useParams } from 'react-router-dom'; -import { DiscoverAppLocatorParams } from '../../../common/locator'; +import { DiscoverAppLocatorParams } from '../../../common/app_locator'; import { useDiscoverServices } from '../../hooks/use_discover_services'; import { displayPossibleDocsDiffInfoAlert } from '../main/hooks/use_alert_results_toast'; import { getAlertUtils, QueryParams } from './view_alert_utils'; diff --git a/src/plugins/discover/public/application/view_alert/view_alert_utils.tsx b/src/plugins/discover/public/application/view_alert/view_alert_utils.tsx index cc51f11885ea41..fc732ad08c1249 100644 --- a/src/plugins/discover/public/application/view_alert/view_alert_utils.tsx +++ b/src/plugins/discover/public/application/view_alert/view_alert_utils.tsx @@ -8,7 +8,8 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { getIndexPatternFromESQLQuery, type AggregateQuery } from '@kbn/es-query'; +import type { AggregateQuery } from '@kbn/es-query'; +import { getIndexPatternFromESQLQuery } from '@kbn/esql-utils'; import { CoreStart, ToastsStart } from '@kbn/core/public'; import type { DataView, DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; import type { Rule } from '@kbn/alerting-plugin/common'; @@ -18,7 +19,7 @@ import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { MarkdownSimple } from '@kbn/kibana-react-plugin/public'; import { toMountPoint } from '@kbn/react-kibana-mount'; import { Filter } from '@kbn/es-query'; -import { DiscoverAppLocatorParams } from '../../../common/locator'; +import { DiscoverAppLocatorParams } from '../../../common/app_locator'; export interface SearchThresholdAlertParams extends RuleTypeParams { searchConfiguration: SerializedSearchSourceFields; diff --git a/src/plugins/discover/public/components/discover_container/discover_container.tsx b/src/plugins/discover/public/components/discover_container/discover_container.tsx index 51fdbd0d3432db..79e98ef83d853a 100644 --- a/src/plugins/discover/public/components/discover_container/discover_container.tsx +++ b/src/plugins/discover/public/components/discover_container/discover_container.tsx @@ -48,7 +48,7 @@ const discoverContainerWrapperCss = css` const customizationContext: DiscoverCustomizationContext = { displayMode: 'embedded', - showLogExplorerTabs: false, + showLogsExplorerTabs: false, }; export const DiscoverContainerInternal = ({ diff --git a/src/plugins/discover/public/components/log_explorer_tabs/index.ts b/src/plugins/discover/public/components/logs_explorer_tabs/index.ts similarity index 73% rename from src/plugins/discover/public/components/log_explorer_tabs/index.ts rename to src/plugins/discover/public/components/logs_explorer_tabs/index.ts index b144b8fec104f0..27a0bfc0d46d4b 100644 --- a/src/plugins/discover/public/components/log_explorer_tabs/index.ts +++ b/src/plugins/discover/public/components/logs_explorer_tabs/index.ts @@ -9,6 +9,6 @@ import { withSuspense } from '@kbn/shared-ux-utility'; import { lazy } from 'react'; -export type { LogExplorerTabsProps } from './log_explorer_tabs'; +export type { LogsExplorerTabsProps } from './logs_explorer_tabs'; -export const LogExplorerTabs = withSuspense(lazy(() => import('./log_explorer_tabs'))); +export const LogsExplorerTabs = withSuspense(lazy(() => import('./logs_explorer_tabs'))); diff --git a/src/plugins/discover/public/components/log_explorer_tabs/log_explorer_tabs.test.tsx b/src/plugins/discover/public/components/logs_explorer_tabs/logs_explorer_tabs.test.tsx similarity index 63% rename from src/plugins/discover/public/components/log_explorer_tabs/log_explorer_tabs.test.tsx rename to src/plugins/discover/public/components/logs_explorer_tabs/logs_explorer_tabs.test.tsx index 5e4d295a7c89fa..baa485bf3715be 100644 --- a/src/plugins/discover/public/components/log_explorer_tabs/log_explorer_tabs.test.tsx +++ b/src/plugins/discover/public/components/logs_explorer_tabs/logs_explorer_tabs.test.tsx @@ -10,7 +10,7 @@ import userEvent from '@testing-library/user-event'; import { render, screen } from '@testing-library/react'; import React from 'react'; import { discoverServiceMock } from '../../__mocks__/services'; -import { LogExplorerTabs, LogExplorerTabsProps } from './log_explorer_tabs'; +import { LogsExplorerTabs, LogsExplorerTabsProps } from './logs_explorer_tabs'; import { DISCOVER_APP_LOCATOR } from '../../../common'; import { ALL_DATASETS_LOCATOR_ID } from '@kbn/deeplinks-observability'; @@ -19,10 +19,10 @@ const createMockLocator = (id: string) => ({ getRedirectUrl: jest.fn().mockReturnValue(id), }); -describe('LogExplorerTabs', () => { - const renderTabs = (selectedTab: LogExplorerTabsProps['selectedTab'] = 'discover') => { +describe('LogsExplorerTabs', () => { + const renderTabs = (selectedTab: LogsExplorerTabsProps['selectedTab'] = 'discover') => { const mockDiscoverLocator = createMockLocator(DISCOVER_APP_LOCATOR); - const mockLogExplorerLocator = createMockLocator(ALL_DATASETS_LOCATOR_ID); + const mockLogsExplorerLocator = createMockLocator(ALL_DATASETS_LOCATOR_ID); const services = { ...discoverServiceMock, share: { @@ -35,7 +35,7 @@ describe('LogExplorerTabs', () => { case DISCOVER_APP_LOCATOR: return mockDiscoverLocator; case ALL_DATASETS_LOCATOR_ID: - return mockLogExplorerLocator; + return mockLogsExplorerLocator; default: throw new Error(`Unknown locator id: ${id}`); } @@ -45,42 +45,42 @@ describe('LogExplorerTabs', () => { }, } as unknown as typeof discoverServiceMock; - render(); + render(); return { mockDiscoverLocator, - mockLogExplorerLocator, + mockLogsExplorerLocator, }; }; const getDiscoverTab = () => screen.getByText('Discover').closest('a')!; - const getLogExplorerTab = () => screen.getByText('Logs Explorer').closest('a')!; + const getLogsExplorerTab = () => screen.getByText('Logs Explorer').closest('a')!; it('should render properly', () => { - const { mockDiscoverLocator, mockLogExplorerLocator } = renderTabs(); + const { mockDiscoverLocator, mockLogsExplorerLocator } = renderTabs(); expect(getDiscoverTab()).toBeInTheDocument(); expect(mockDiscoverLocator.getRedirectUrl).toHaveBeenCalledWith({}); expect(getDiscoverTab()).toHaveAttribute('href', DISCOVER_APP_LOCATOR); - expect(getLogExplorerTab()).toBeInTheDocument(); - expect(mockLogExplorerLocator.getRedirectUrl).toHaveBeenCalledWith({}); - expect(getLogExplorerTab()).toHaveAttribute('href', ALL_DATASETS_LOCATOR_ID); + expect(getLogsExplorerTab()).toBeInTheDocument(); + expect(mockLogsExplorerLocator.getRedirectUrl).toHaveBeenCalledWith({}); + expect(getLogsExplorerTab()).toHaveAttribute('href', ALL_DATASETS_LOCATOR_ID); }); it('should render Discover as the selected tab', () => { - const { mockDiscoverLocator, mockLogExplorerLocator } = renderTabs(); + const { mockDiscoverLocator, mockLogsExplorerLocator } = renderTabs(); expect(getDiscoverTab()).toHaveAttribute('aria-selected', 'true'); userEvent.click(getDiscoverTab()); expect(mockDiscoverLocator.navigate).not.toHaveBeenCalled(); - expect(getLogExplorerTab()).toHaveAttribute('aria-selected', 'false'); - userEvent.click(getLogExplorerTab()); - expect(mockLogExplorerLocator.navigate).toHaveBeenCalledWith({}); + expect(getLogsExplorerTab()).toHaveAttribute('aria-selected', 'false'); + userEvent.click(getLogsExplorerTab()); + expect(mockLogsExplorerLocator.navigate).toHaveBeenCalledWith({}); }); it('should render Log Explorer as the selected tab', () => { - const { mockDiscoverLocator, mockLogExplorerLocator } = renderTabs('log-explorer'); - expect(getLogExplorerTab()).toHaveAttribute('aria-selected', 'true'); - userEvent.click(getLogExplorerTab()); - expect(mockLogExplorerLocator.navigate).not.toHaveBeenCalled(); + const { mockDiscoverLocator, mockLogsExplorerLocator } = renderTabs('logs-explorer'); + expect(getLogsExplorerTab()).toHaveAttribute('aria-selected', 'true'); + userEvent.click(getLogsExplorerTab()); + expect(mockLogsExplorerLocator.navigate).not.toHaveBeenCalled(); expect(getDiscoverTab()).toHaveAttribute('aria-selected', 'false'); userEvent.click(getDiscoverTab()); expect(mockDiscoverLocator.navigate).toHaveBeenCalledWith({}); diff --git a/src/plugins/discover/public/components/log_explorer_tabs/log_explorer_tabs.tsx b/src/plugins/discover/public/components/logs_explorer_tabs/logs_explorer_tabs.tsx similarity index 78% rename from src/plugins/discover/public/components/log_explorer_tabs/log_explorer_tabs.tsx rename to src/plugins/discover/public/components/logs_explorer_tabs/logs_explorer_tabs.tsx index fb9895b62b2697..e63e966815a3d1 100644 --- a/src/plugins/discover/public/components/log_explorer_tabs/log_explorer_tabs.tsx +++ b/src/plugins/discover/public/components/logs_explorer_tabs/logs_explorer_tabs.tsx @@ -13,20 +13,20 @@ import React, { MouseEvent } from 'react'; import { DiscoverAppLocatorParams, DISCOVER_APP_LOCATOR } from '../../../common'; import type { DiscoverServices } from '../../build_services'; -export interface LogExplorerTabsProps { +export interface LogsExplorerTabsProps { services: Pick; - selectedTab: 'discover' | 'log-explorer'; + selectedTab: 'discover' | 'logs-explorer'; } const emptyParams = {}; -export const LogExplorerTabs = ({ services, selectedTab }: LogExplorerTabsProps) => { +export const LogsExplorerTabs = ({ services, selectedTab }: LogsExplorerTabsProps) => { const { euiTheme } = useEuiTheme(); const locators = services.share?.url.locators; const discoverLocator = locators?.get(DISCOVER_APP_LOCATOR); - const logExplorerLocator = locators?.get(ALL_DATASETS_LOCATOR_ID); + const logsExplorerLocator = locators?.get(ALL_DATASETS_LOCATOR_ID); const discoverUrl = discoverLocator?.getRedirectUrl(emptyParams); - const logExplorerUrl = logExplorerLocator?.getRedirectUrl(emptyParams); + const logsExplorerUrl = logsExplorerLocator?.getRedirectUrl(emptyParams); const navigateToDiscover = createNavigateHandler(() => { if (selectedTab !== 'discover') { @@ -34,9 +34,9 @@ export const LogExplorerTabs = ({ services, selectedTab }: LogExplorerTabsProps) } }); - const navigateToLogExplorer = createNavigateHandler(() => { - if (selectedTab !== 'log-explorer') { - logExplorerLocator?.navigate(emptyParams); + const navigateToLogsExplorer = createNavigateHandler(() => { + if (selectedTab !== 'logs-explorer') { + logsExplorerLocator?.navigate(emptyParams); } }); @@ -54,9 +54,9 @@ export const LogExplorerTabs = ({ services, selectedTab }: LogExplorerTabsProps) })} @@ -69,7 +69,7 @@ export const LogExplorerTabs = ({ services, selectedTab }: LogExplorerTabsProps) }; // eslint-disable-next-line import/no-default-export -export default LogExplorerTabs; +export default LogsExplorerTabs; const isModifiedEvent = (event: MouseEvent) => event.metaKey || event.altKey || event.ctrlKey || event.shiftKey; diff --git a/src/plugins/discover/public/index.ts b/src/plugins/discover/public/index.ts index 2e9ed1bcabd4f4..5fff8866e7fbc5 100644 --- a/src/plugins/discover/public/index.ts +++ b/src/plugins/discover/public/index.ts @@ -33,4 +33,4 @@ export type { } from './customizations'; export { SEARCH_EMBEDDABLE_TYPE, SEARCH_EMBEDDABLE_CELL_ACTIONS_TRIGGER_ID } from './embeddable'; export { loadSharingDataHelpers } from './utils'; -export { LogExplorerTabs, type LogExplorerTabsProps } from './components/log_explorer_tabs'; +export { LogsExplorerTabs, type LogsExplorerTabsProps } from './components/logs_explorer_tabs'; diff --git a/src/plugins/discover/public/mocks.tsx b/src/plugins/discover/public/mocks.tsx index bef23a464a793c..f472eea20fd288 100644 --- a/src/plugins/discover/public/mocks.tsx +++ b/src/plugins/discover/public/mocks.tsx @@ -17,7 +17,7 @@ export type Start = jest.Mocked; const createSetupContract = (): Setup => { const setupContract: Setup = { locator: sharePluginMock.createLocator(), - showLogExplorerTabs: jest.fn(), + showLogsExplorerTabs: jest.fn(), }; return setupContract; }; diff --git a/src/plugins/discover/public/plugin.tsx b/src/plugins/discover/public/plugin.tsx index 5997e9dfced851..3ed7bd54379b59 100644 --- a/src/plugins/discover/public/plugin.tsx +++ b/src/plugins/discover/public/plugin.tsx @@ -44,7 +44,7 @@ import type { UnifiedDocViewerStart } from '@kbn/unified-doc-viewer-plugin/publi import { setStateToKbnUrl } from '@kbn/kibana-utils-plugin/public'; import type { LensPublicStart } from '@kbn/lens-plugin/public'; import { TRUNCATE_MAX_HEIGHT, ENABLE_ESQL } from '@kbn/discover-utils'; -import { NoDataPagePluginStart } from '@kbn/no-data-page-plugin/public'; +import type { NoDataPagePluginStart } from '@kbn/no-data-page-plugin/public'; import type { ServerlessPluginStart } from '@kbn/serverless/public'; import { PLUGIN_ID } from '../common'; import { @@ -68,7 +68,11 @@ import { DiscoverSingleDocLocator, DiscoverSingleDocLocatorDefinition, } from './application/doc/locator'; -import { DiscoverAppLocator, DiscoverAppLocatorDefinition } from '../common'; +import { + DiscoverAppLocator, + DiscoverAppLocatorDefinition, + DiscoverESQLLocatorDefinition, +} from '../common'; import type { RegisterCustomizationProfile } from './customizations'; import { createRegisterCustomizationProfile, @@ -116,7 +120,7 @@ export interface DiscoverSetup { * ``` */ readonly locator: undefined | DiscoverAppLocator; - readonly showLogExplorerTabs: () => void; + readonly showLogsExplorerTabs: () => void; } export interface DiscoverStart { @@ -159,6 +163,7 @@ export interface DiscoverStart { * @internal */ export interface DiscoverSetupPlugins { + dataViews: DataViewsServicePublic; share?: SharePluginSetup; uiActions: UiActionsSetup; embeddable: EmbeddableSetup; @@ -215,7 +220,7 @@ export class DiscoverPlugin private locator?: DiscoverAppLocator; private contextLocator?: DiscoverContextAppLocator; private singleDocLocator?: DiscoverSingleDocLocator; - private showLogExplorerTabs = false; + private showLogsExplorerTabs = false; setup(core: CoreSetup, plugins: DiscoverSetupPlugins) { const baseUrl = core.http.basePath.prepend('/app/discover'); @@ -333,7 +338,7 @@ export class DiscoverPlugin profileRegistry: this.profileRegistry, customizationContext: { displayMode: 'standalone', - showLogExplorerTabs: this.showLogExplorerTabs, + showLogsExplorerTabs: this.showLogsExplorerTabs, }, isDev, }); @@ -376,8 +381,8 @@ export class DiscoverPlugin return { locator: this.locator, - showLogExplorerTabs: () => { - this.showLogExplorerTabs = true; + showLogsExplorerTabs: () => { + this.showLogsExplorerTabs = true; }, }; } @@ -400,6 +405,17 @@ export class DiscoverPlugin return this.getDiscoverServices(core, plugins); }; + const isEsqlEnabled = core.uiSettings.get(ENABLE_ESQL); + + if (plugins.share && this.locator && isEsqlEnabled) { + plugins.share?.url.locators.create( + new DiscoverESQLLocatorDefinition({ + discoverAppLocator: this.locator, + getIndices: plugins.dataViews.getIndices, + }) + ); + } + return { locator: this.locator, DiscoverContainer: (props: DiscoverContainerProps) => { diff --git a/src/plugins/discover/server/plugin.ts b/src/plugins/discover/server/plugin.ts index dc7761b2ba20db..19800cdc0dbb28 100644 --- a/src/plugins/discover/server/plugin.ts +++ b/src/plugins/discover/server/plugin.ts @@ -14,7 +14,7 @@ import { setStateToKbnUrl } from '@kbn/kibana-utils-plugin/common'; import type { SharePluginSetup } from '@kbn/share-plugin/server'; import { PluginInitializerContext } from '@kbn/core/server'; import type { DiscoverServerPluginStart, DiscoverServerPluginStartDeps } from '.'; -import { DiscoverAppLocatorDefinition } from '../common/locator'; +import { DiscoverAppLocatorDefinition } from '../common'; import { capabilitiesProvider } from './capabilities_provider'; import { createSearchEmbeddableFactory } from './embeddable'; import { initializeLocatorServices } from './locator'; diff --git a/src/plugins/discover/tsconfig.json b/src/plugins/discover/tsconfig.json index bbb9d7495b2b67..24417d17f70d4d 100644 --- a/src/plugins/discover/tsconfig.json +++ b/src/plugins/discover/tsconfig.json @@ -82,7 +82,8 @@ "@kbn/serverless", "@kbn/deeplinks-observability", "@kbn/esql-utils", - "@kbn/managed-content-badge" + "@kbn/managed-content-badge", + "@kbn/deeplinks-analytics" ], "exclude": ["target/**/*"] } diff --git a/src/plugins/embeddable/public/embeddable_panel/types.ts b/src/plugins/embeddable/public/embeddable_panel/types.ts index eecf412d75835f..8463e830aa7716 100644 --- a/src/plugins/embeddable/public/embeddable_panel/types.ts +++ b/src/plugins/embeddable/public/embeddable_panel/types.ts @@ -10,8 +10,6 @@ import { PresentationPanelProps } from '@kbn/presentation-panel-plugin/public'; import { MaybePromise } from '@kbn/utility-types'; import { ReactNode } from 'react'; import { EmbeddableInput, EmbeddableOutput, IEmbeddable } from '../lib'; -import { LegacyEmbeddableAPI } from '../lib/embeddables/i_embeddable'; -import { EmbeddableComponent } from '../registry/types'; export type LegacyCompatibleEmbeddable = IEmbeddable< EmbeddableInput, @@ -26,5 +24,3 @@ export type EmbeddablePanelProps = Omit & { export type UnwrappedEmbeddablePanelProps = Omit & { embeddable: LegacyCompatibleEmbeddable; }; - -export type LegacyEmbeddableCompatibilityComponent = EmbeddableComponent; diff --git a/src/plugins/embeddable/public/index.ts b/src/plugins/embeddable/public/index.ts index 5563696fdde18a..5f9254ae117485 100644 --- a/src/plugins/embeddable/public/index.ts +++ b/src/plugins/embeddable/public/index.ts @@ -92,8 +92,26 @@ export type { EmbeddableStartDependencies, } from './plugin'; export type { EnhancementRegistryDefinition } from './types'; -export type { EmbeddableComponentFactory } from './registry/types'; -export { CreateEmbeddableComponent } from './registry/create_embeddable_component'; + +export { + ReactEmbeddableRenderer, + reactEmbeddableRegistryHasKey, + RegisterReactEmbeddable, + registerReactEmbeddableFactory, + useReactEmbeddableApiHandle, + type DefaultEmbeddableApi, + type ReactEmbeddable, + type ReactEmbeddableFactory, + type ReactEmbeddableRegistration, + type ReactEmbeddableTitlesApi, + type SerializedReactEmbeddableTitles, + ReactEmbeddableParentContext, + useReactEmbeddableParentApi, + useReactEmbeddableUnsavedChanges, + initializeReactEmbeddableUuid, + initializeReactEmbeddableTitles, + serializeReactEmbeddableTitles, +} from './react_embeddable_system'; export function plugin(initializerContext: PluginInitializerContext) { return new EmbeddablePublicPlugin(initializerContext); diff --git a/src/plugins/embeddable/public/lib/containers/container.ts b/src/plugins/embeddable/public/lib/containers/container.ts index 65f7a70f6afbca..d039bd5b80f894 100644 --- a/src/plugins/embeddable/public/lib/containers/container.ts +++ b/src/plugins/embeddable/public/lib/containers/container.ts @@ -8,7 +8,7 @@ import deepEqual from 'fast-deep-equal'; import { isEqual, xor } from 'lodash'; -import { EMPTY, merge, Subscription } from 'rxjs'; +import { EMPTY, merge, Subject, Subscription } from 'rxjs'; import { catchError, combineLatestWith, @@ -21,7 +21,11 @@ import { } from 'rxjs/operators'; import { v4 as uuidv4 } from 'uuid'; -import { PresentationContainer, PanelPackage } from '@kbn/presentation-containers'; +import { + PresentationContainer, + PanelPackage, + SerializedPanelState, +} from '@kbn/presentation-containers'; import { isSavedObjectEmbeddableInput } from '../../../common/lib/saved_object_embeddable'; import { EmbeddableStart } from '../../plugin'; @@ -42,6 +46,7 @@ import { IContainer, PanelState, } from './i_container'; +import { reactEmbeddableRegistryHasKey } from '../../react_embeddable_system'; const getKeys = (o: T): Array => Object.keys(o) as Array; @@ -61,6 +66,12 @@ export abstract class Container< private subscription: Subscription | undefined; private readonly anyChildOutputChange$; + public lastSavedState: Subject = new Subject(); + public getLastSavedStateForChild: (childId: string) => SerializedPanelState | undefined = () => + undefined; + + public registerPanelApi = (id: string, api: ApiType) => {}; + constructor( input: TContainerInput, output: TContainerOutput, @@ -492,6 +503,17 @@ export abstract class Container< } private async onPanelAdded(panel: PanelState) { + // do nothing if this panel's type is in the new Embeddable registry. + if (reactEmbeddableRegistryHasKey(panel.type)) { + this.updateOutput({ + embeddableLoaded: { + ...this.output.embeddableLoaded, + [panel.explicitInput.id]: true, + }, + } as Partial); + return; + } + this.updateOutput({ embeddableLoaded: { ...this.output.embeddableLoaded, diff --git a/src/plugins/embeddable/public/react_embeddable_system/index.ts b/src/plugins/embeddable/public/react_embeddable_system/index.ts new file mode 100644 index 00000000000000..4bfd9e7efa2cf3 --- /dev/null +++ b/src/plugins/embeddable/public/react_embeddable_system/index.ts @@ -0,0 +1,33 @@ +/* + * Copyright 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 { + useReactEmbeddableApiHandle, + initializeReactEmbeddableUuid, + ReactEmbeddableParentContext, + useReactEmbeddableParentApi, +} from './react_embeddable_api'; +export { useReactEmbeddableUnsavedChanges } from './react_embeddable_unsaved_changes'; +export { + reactEmbeddableRegistryHasKey, + RegisterReactEmbeddable, + registerReactEmbeddableFactory, +} from './react_embeddable_registry'; +export { ReactEmbeddableRenderer } from './react_embeddable_renderer'; +export { + initializeReactEmbeddableTitles, + serializeReactEmbeddableTitles, + type ReactEmbeddableTitlesApi, + type SerializedReactEmbeddableTitles, +} from './react_embeddable_titles'; +export type { + DefaultEmbeddableApi, + ReactEmbeddable, + ReactEmbeddableFactory, + ReactEmbeddableRegistration, +} from './types'; diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.test.tsx b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.test.tsx new file mode 100644 index 00000000000000..4ec729119d87ea --- /dev/null +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.test.tsx @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { render, waitFor } from '@testing-library/react'; +import { getMockPresentationContainer } from '@kbn/presentation-containers/mocks'; +import { renderHook } from '@testing-library/react-hooks'; +import React from 'react'; +import { BehaviorSubject } from 'rxjs'; +import { useReactEmbeddableApiHandle, ReactEmbeddableParentContext } from './react_embeddable_api'; +import { DefaultEmbeddableApi } from './types'; + +describe('react embeddable api', () => { + const defaultApi = { + unsavedChanges: new BehaviorSubject(undefined), + resetUnsavedChanges: jest.fn(), + serializeState: jest.fn().mockReturnValue({ bork: 'borkbork' }), + }; + + const parentApi = getMockPresentationContainer(); + + const TestComponent = React.forwardRef((_, ref) => { + useReactEmbeddableApiHandle(defaultApi, ref, '123'); + return
; + }); + + it('returns the given API', () => { + const { result } = renderHook(() => + useReactEmbeddableApiHandle 'bork' }>( + { + ...defaultApi, + bork: jest.fn().mockReturnValue('bork'), + }, + {} as any, + 'superBork' + ) + ); + + expect(result.current.bork()).toEqual('bork'); + expect(result.current.serializeState()).toEqual({ bork: 'borkbork' }); + }); + + it('publishes the API into the provided ref', async () => { + const ref = React.createRef(); + renderHook(() => useReactEmbeddableApiHandle(defaultApi, ref, '123')); + await waitFor(() => expect(ref.current).toBeDefined()); + expect(ref.current?.serializeState); + expect(ref.current?.serializeState()).toEqual({ bork: 'borkbork' }); + }); + + it('publishes the API into an imperative handle', async () => { + const ref = React.createRef(); + render(); + await waitFor(() => expect(ref.current).toBeDefined()); + expect(ref.current?.serializeState); + expect(ref.current?.serializeState()).toEqual({ bork: 'borkbork' }); + }); + + it('returns an API with a parent when rendered inside a parent context', async () => { + const ref = React.createRef(); + render( + + + + ); + await waitFor(() => expect(ref.current).toBeDefined()); + expect(ref.current?.serializeState); + expect(ref.current?.serializeState()).toEqual({ bork: 'borkbork' }); + + expect(ref.current?.parentApi?.getLastSavedStateForChild).toBeDefined(); + expect(ref.current?.parentApi?.registerPanelApi).toBeDefined(); + }); + + it('calls registerPanelApi on its parent', async () => { + const ref = React.createRef(); + render( + + + + ); + expect(parentApi?.registerPanelApi).toHaveBeenCalledWith('123', expect.any(Object)); + }); +}); diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.ts b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.ts new file mode 100644 index 00000000000000..896a9fb05468bd --- /dev/null +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_api.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 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 { apiIsPresentationContainer, PresentationContainer } from '@kbn/presentation-containers'; +import { createContext, useContext, useImperativeHandle, useMemo } from 'react'; +import { v4 as generateId } from 'uuid'; +import { DefaultEmbeddableApi } from './types'; + +/** + * Pushes any API to the passed in ref. Note that any API passed in will not be rebuilt on + * subsequent renders, so it does not support reactive variables. Instead, pass in setter functions + * and publishing subjects to allow other components to listen to changes. + */ +export const useReactEmbeddableApiHandle = < + ApiType extends DefaultEmbeddableApi = DefaultEmbeddableApi +>( + apiToRegister: Omit, + ref: React.ForwardedRef, + uuid: string +) => { + const { parentApi } = useReactEmbeddableParentContext() ?? {}; + + /** + * Publish the api for this embeddable. + */ + const thisApi = useMemo( + () => { + const api = { + ...apiToRegister, + uuid, + + // allow this embeddable access to its parent + parentApi, + } as ApiType; + // register this api with its parent + if (parentApi && apiIsPresentationContainer(parentApi)) + parentApi.registerPanelApi(uuid, api); + return api; + }, + // disabling exhaustive deps because the API should only be rebuilt when the uuid changes. + // eslint-disable-next-line react-hooks/exhaustive-deps + [uuid] + ); + + // eslint-disable-next-line react-hooks/exhaustive-deps + useImperativeHandle(ref, () => thisApi, [uuid]); + + return thisApi; +}; + +export const initializeReactEmbeddableUuid = (maybeId?: string) => maybeId ?? generateId(); + +/** + * Parenting + */ +interface ReactEmbeddableParentContext { + parentApi?: PresentationContainer; +} + +export const ReactEmbeddableParentContext = createContext( + null +); +export const useReactEmbeddableParentApi = (): unknown | null => { + return useContext(ReactEmbeddableParentContext)?.parentApi; +}; + +export const useReactEmbeddableParentContext = (): ReactEmbeddableParentContext | null => { + return useContext(ReactEmbeddableParentContext); +}; diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.test.tsx b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.test.tsx new file mode 100644 index 00000000000000..11d7a58fa08907 --- /dev/null +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.test.tsx @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { + registerReactEmbeddableFactory, + reactEmbeddableRegistryHasKey, + getReactEmbeddableFactory, +} from './react_embeddable_registry'; +import { ReactEmbeddableFactory } from './types'; + +describe('react embeddable registry', () => { + const testEmbeddableFactory: ReactEmbeddableFactory = { + deserializeState: jest.fn(), + getComponent: jest.fn(), + }; + + it('throws an error if requested embeddable factory type is not registered', () => { + expect(() => getReactEmbeddableFactory('notRegistered')).toThrowErrorMatchingInlineSnapshot( + `"No embeddable factory found for type: notRegistered"` + ); + }); + + it('can register and get an embeddable factory', () => { + registerReactEmbeddableFactory('test', testEmbeddableFactory); + expect(getReactEmbeddableFactory('test')).toBe(testEmbeddableFactory); + }); + + it('can check if a factory is registered', () => { + expect(reactEmbeddableRegistryHasKey('test')).toBe(true); + expect(reactEmbeddableRegistryHasKey('notRegistered')).toBe(false); + }); +}); diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts new file mode 100644 index 00000000000000..2f014b84c07ab6 --- /dev/null +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { + DefaultEmbeddableApi, + ReactEmbeddable, + ReactEmbeddableFactory, + ReactEmbeddableRegistration, +} from './types'; + +const registry: { [key: string]: ReactEmbeddableFactory } = {}; + +export const registerReactEmbeddableFactory = < + StateType extends unknown = unknown, + APIType extends DefaultEmbeddableApi = DefaultEmbeddableApi +>( + key: string, + factory: ReactEmbeddableFactory +) => { + if (registry[key] !== undefined) + throw new Error( + i18n.translate('embeddableApi.reactEmbeddable.factoryAlreadyExistsError', { + defaultMessage: 'An embeddable factory for for type: {key} is already registered.', + values: { key }, + }) + ); + registry[key] = factory; +}; + +export const reactEmbeddableRegistryHasKey = (key: string) => registry[key] !== undefined; + +export const getReactEmbeddableFactory = < + StateType extends unknown = unknown, + ApiType extends DefaultEmbeddableApi = DefaultEmbeddableApi +>( + key: string +): ReactEmbeddableFactory => { + if (registry[key] === undefined) + throw new Error( + i18n.translate('embeddableApi.reactEmbeddable.factoryNotFoundError', { + defaultMessage: 'No embeddable factory found for type: {key}', + values: { key }, + }) + ); + return registry[key]; +}; + +/** + * A helper function which transforms a component into an Embeddable component by forwarding a ref which + * should be used with `useEmbeddableApiHandle` to expose an API for your component. + */ +export const RegisterReactEmbeddable: ( + component: ReactEmbeddableRegistration +) => ReactEmbeddable = (component) => React.forwardRef((_, apiRef) => component(apiRef)); diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.test.tsx b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.test.tsx new file mode 100644 index 00000000000000..376923de108d17 --- /dev/null +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.test.tsx @@ -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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { render, waitFor, screen } from '@testing-library/react'; + +import React from 'react'; +import { registerReactEmbeddableFactory } from './react_embeddable_registry'; +import { ReactEmbeddableRenderer } from './react_embeddable_renderer'; +import { ReactEmbeddableFactory } from './types'; + +describe('react embeddable renderer', () => { + const testEmbeddableFactory: ReactEmbeddableFactory<{ name: string; bork: string }> = { + deserializeState: jest.fn(), + getComponent: jest.fn().mockResolvedValue(() => { + return
SUPER TEST COMPONENT
; + }), + }; + + beforeAll(() => { + registerReactEmbeddableFactory('test', testEmbeddableFactory); + }); + + it('deserializes given state', () => { + render(); + expect(testEmbeddableFactory.deserializeState).toHaveBeenCalledWith({ + rawState: { blorp: 'blorp?' }, + }); + }); + + it('renders the given component once it resolves', () => { + render(); + waitFor(() => { + expect(screen.findByText('SUPER TEST COMPONENT')).toBeInTheDocument(); + }); + }); +}); diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx new file mode 100644 index 00000000000000..80b43cde5dd00d --- /dev/null +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { SerializedPanelState } from '@kbn/presentation-containers'; +import { PresentationPanel } from '@kbn/presentation-panel-plugin/public'; +import React, { useMemo } from 'react'; +import { getReactEmbeddableFactory } from './react_embeddable_registry'; + +/** + * Renders a component from the React Embeddable registry into a Presentation Panel. + * + * TODO: Rename this to simply `Embeddable` when the legacy Embeddable system is removed. + */ +export const ReactEmbeddableRenderer = ({ + uuid, + type, + state, +}: { + uuid?: string; + type: string; + state: SerializedPanelState; +}) => { + const componentPromise = useMemo( + () => + (async () => { + const factory = getReactEmbeddableFactory(type); + return await factory.getComponent(factory.deserializeState(state), uuid); + })(), + /** + * Disabling exhaustive deps because we do not want to re-fetch the component + * from the embeddable registry unless the type changes. + */ + // eslint-disable-next-line react-hooks/exhaustive-deps + [type] + ); + return ; +}; diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.test.ts b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.test.ts new file mode 100644 index 00000000000000..be240cafb7ea6b --- /dev/null +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.test.ts @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { + initializeReactEmbeddableTitles, + SerializedReactEmbeddableTitles, +} from './react_embeddable_titles'; + +describe('react embeddable titles', () => { + const rawState: SerializedReactEmbeddableTitles = { + title: 'very cool title', + description: 'less cool description', + hidePanelTitles: false, + }; + + it('should initialize publishing subjects with the provided rawState', () => { + const { titlesApi } = initializeReactEmbeddableTitles(rawState); + expect(titlesApi.panelTitle.value).toBe(rawState.title); + expect(titlesApi.panelDescription.value).toBe(rawState.description); + expect(titlesApi.hidePanelTitle.value).toBe(rawState.hidePanelTitles); + }); + + it('should update publishing subject values when set functions are called', () => { + const { titlesApi } = initializeReactEmbeddableTitles(rawState); + + titlesApi.setPanelTitle('even cooler title'); + titlesApi.setPanelDescription('super uncool description'); + titlesApi.setHidePanelTitle(true); + + expect(titlesApi.panelTitle.value).toEqual('even cooler title'); + expect(titlesApi.panelDescription.value).toEqual('super uncool description'); + expect(titlesApi.hidePanelTitle.value).toBe(true); + }); + + it('should correctly serialize current state', () => { + const { serializeTitles, titlesApi } = initializeReactEmbeddableTitles(rawState); + titlesApi.setPanelTitle('UH OH, A TITLE'); + + const serializedTitles = serializeTitles(); + expect(serializedTitles).toMatchInlineSnapshot(` + Object { + "description": "less cool description", + "hidePanelTitles": false, + "title": "UH OH, A TITLE", + } + `); + }); + + it('should return the correct set of comparators', () => { + const { titleComparators } = initializeReactEmbeddableTitles(rawState); + + expect(titleComparators.title).toBeDefined(); + expect(titleComparators.description).toBeDefined(); + expect(titleComparators.hidePanelTitles).toBeDefined(); + }); + + it('should correctly compare hidePanelTitles with custom comparator', () => { + const { titleComparators } = initializeReactEmbeddableTitles(rawState); + + expect(titleComparators.hidePanelTitles![2]!(true, false)).toBe(false); + expect(titleComparators.hidePanelTitles![2]!(undefined, false)).toBe(true); + expect(titleComparators.hidePanelTitles![2]!(true, undefined)).toBe(false); + }); +}); diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.ts b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.ts new file mode 100644 index 00000000000000..3b65b962694e5b --- /dev/null +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_titles.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 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 { + PublishesWritablePanelDescription, + PublishesWritablePanelTitle, +} from '@kbn/presentation-publishing'; +import { BehaviorSubject } from 'rxjs'; +import { EmbeddableStateComparators } from './types'; + +export interface SerializedReactEmbeddableTitles { + title?: string; + description?: string; + hidePanelTitles?: boolean; +} + +export type ReactEmbeddableTitlesApi = PublishesWritablePanelTitle & + PublishesWritablePanelDescription; + +export const initializeReactEmbeddableTitles = ( + rawState: SerializedReactEmbeddableTitles +): { + titlesApi: ReactEmbeddableTitlesApi; + titleComparators: EmbeddableStateComparators; + serializeTitles: () => SerializedReactEmbeddableTitles; +} => { + const panelTitle = new BehaviorSubject(rawState.title); + const panelDescription = new BehaviorSubject(rawState.description); + const hidePanelTitle = new BehaviorSubject(rawState.hidePanelTitles); + + const setPanelTitle = (value: string | undefined) => panelTitle.next(value); + const setHidePanelTitle = (value: boolean | undefined) => hidePanelTitle.next(value); + const setPanelDescription = (value: string | undefined) => panelDescription.next(value); + + const titleComparators: EmbeddableStateComparators = { + title: [panelTitle, setPanelTitle], + description: [panelDescription, setPanelDescription], + hidePanelTitles: [hidePanelTitle, setHidePanelTitle, (a, b) => Boolean(a) === Boolean(b)], + }; + + const titlesApi = { + panelTitle, + hidePanelTitle, + setPanelTitle, + setHidePanelTitle, + panelDescription, + setPanelDescription, + }; + + return { + serializeTitles: () => serializeReactEmbeddableTitles(titlesApi), + titleComparators, + titlesApi, + }; +}; + +export const serializeReactEmbeddableTitles = ( + titlesApi: ReactEmbeddableTitlesApi +): SerializedReactEmbeddableTitles => { + return { + title: titlesApi.panelTitle.value, + hidePanelTitles: titlesApi.hidePanelTitle.value, + description: titlesApi.panelDescription.value, + }; +}; diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_unsaved_changes.test.tsx b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_unsaved_changes.test.tsx new file mode 100644 index 00000000000000..cdc123f0dc0048 --- /dev/null +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_unsaved_changes.test.tsx @@ -0,0 +1,205 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { + PresentationContainer, + PublishesLastSavedState, + SerializedPanelState, +} from '@kbn/presentation-containers'; +import { getMockPresentationContainer } from '@kbn/presentation-containers/mocks'; +import { PublishesUnsavedChanges } from '@kbn/presentation-publishing'; +import { render, waitFor } from '@testing-library/react'; +import React, { useImperativeHandle } from 'react'; +import { BehaviorSubject, Subject } from 'rxjs'; +import { ReactEmbeddableParentContext } from './react_embeddable_api'; +import { useReactEmbeddableUnsavedChanges } from './react_embeddable_unsaved_changes'; +import { EmbeddableStateComparators, ReactEmbeddableFactory } from './types'; + +interface SuperTestStateType { + name: string; + age: number; + tagline: string; +} + +describe('react embeddable unsaved changes', () => { + let initialState: SuperTestStateType; + let lastSavedState: SuperTestStateType; + let comparators: EmbeddableStateComparators; + let deserializeState: (state: SerializedPanelState) => SuperTestStateType; + let parentApi: (PresentationContainer & PublishesLastSavedState) | null; + + beforeEach(() => { + initialState = { + name: 'Sir Testsalot', + age: 42, + tagline: 'A glutton for testing!', + }; + lastSavedState = { + name: 'Sir Testsalot', + age: 42, + tagline: 'A glutton for testing!', + }; + }); + + const initializeDefaultComparators = () => { + const nameSubject = new BehaviorSubject(initialState.name); + const ageSubject = new BehaviorSubject(initialState.age); + const taglineSubject = new BehaviorSubject(initialState.tagline); + const defaultComparators: EmbeddableStateComparators = { + name: [nameSubject, jest.fn((nextName) => nameSubject.next(nextName))], + age: [ageSubject, jest.fn((nextAge) => ageSubject.next(nextAge))], + tagline: [taglineSubject, jest.fn((nextTagline) => taglineSubject.next(nextTagline))], + }; + return defaultComparators; + }; + + const renderTestComponent = async ( + customComparators?: EmbeddableStateComparators + ) => { + comparators = customComparators ?? initializeDefaultComparators(); + deserializeState = jest.fn((state) => state.rawState as SuperTestStateType); + + parentApi = { + ...getMockPresentationContainer(), + getLastSavedStateForChild: () => ({ rawState: lastSavedState }), + lastSavedState: new Subject(), + }; + + let apiToReturn: PublishesUnsavedChanges | null = null; + const TestComponent = React.forwardRef((props, ref) => { + const unsavedChangesApi = useReactEmbeddableUnsavedChanges( + 'someId', + { deserializeState } as ReactEmbeddableFactory, + comparators + ); + useImperativeHandle(ref, () => unsavedChangesApi); + + return
A Test Component
; + }); + + const componentElement = ( + { + apiToReturn = outApi; + }} + /> + ); + + if (parentApi) { + render( + + {componentElement} + + ); + } else { + render(componentElement); + } + + await waitFor(() => { + expect(apiToReturn).toBeDefined(); + }); + return apiToReturn as unknown as PublishesUnsavedChanges; + }; + + it('should return undefined unsaved changes when used without a parent context to provide the last saved state', async () => { + parentApi = null; + const unsavedChangesApi = await renderTestComponent(); + expect(unsavedChangesApi).toBeDefined(); + expect(unsavedChangesApi.unsavedChanges.value).toBe(undefined); + }); + + it('runs factory deserialize function on last saved state', async () => { + await renderTestComponent(); + expect(deserializeState).toHaveBeenCalledWith({ rawState: lastSavedState }); + }); + + it('should return unsaved changes subject initialized to undefined when no unsaved changes are detected', async () => { + const unsavedChangesApi = await renderTestComponent(); + expect(unsavedChangesApi.unsavedChanges.value).toBe(undefined); + }); + + it('should return unsaved changes subject initialized with diff when unsaved changes are detected', async () => { + initialState.tagline = 'Testing is my speciality!'; + const unsavedChangesApi = await renderTestComponent(); + expect(unsavedChangesApi.unsavedChanges.value).toEqual({ + tagline: 'Testing is my speciality!', + }); + }); + + it('should detect unsaved changes when state changes during the lifetime of the component', async () => { + const unsavedChangesApi = await renderTestComponent(); + expect(unsavedChangesApi.unsavedChanges.value).toBe(undefined); + + comparators.tagline[1]('Testing is my speciality!'); + await waitFor(() => { + expect(unsavedChangesApi.unsavedChanges.value).toEqual({ + tagline: 'Testing is my speciality!', + }); + }); + }); + + it('should detect unsaved changes when last saved state changes during the lifetime of the component', async () => { + const unsavedChangesApi = await renderTestComponent(); + expect(unsavedChangesApi.unsavedChanges.value).toBe(undefined); + + lastSavedState.tagline = 'Some other tagline'; + parentApi?.lastSavedState.next(); + await waitFor(() => { + expect(unsavedChangesApi.unsavedChanges.value).toEqual({ + // we expect `A glutton for testing!` here because that is the current state of the component. + tagline: 'A glutton for testing!', + }); + }); + }); + + it('should reset unsaved changes, calling given setters with last saved values. This should remove all unsaved state', async () => { + const unsavedChangesApi = await renderTestComponent(); + expect(unsavedChangesApi.unsavedChanges.value).toBe(undefined); + + comparators.tagline[1]('Testing is my speciality!'); + await waitFor(() => { + expect(unsavedChangesApi.unsavedChanges.value).toEqual({ + tagline: 'Testing is my speciality!', + }); + }); + + unsavedChangesApi.resetUnsavedChanges(); + expect(comparators.tagline[1]).toHaveBeenCalledWith('A glutton for testing!'); + await waitFor(() => { + expect(unsavedChangesApi.unsavedChanges.value).toBe(undefined); + }); + }); + + it('uses a custom comparator when supplied', async () => { + lastSavedState.age = 20; + initialState.age = 50; + const ageSubject = new BehaviorSubject(initialState.age); + const customComparators: EmbeddableStateComparators = { + ...initializeDefaultComparators(), + age: [ + ageSubject, + jest.fn((nextAge) => ageSubject.next(nextAge)), + (lastAge, currentAge) => lastAge?.toString().length === currentAge?.toString().length, + ], + }; + + const unsavedChangesApi = await renderTestComponent(customComparators); + + // here we expect there to be no unsaved changes, both unsaved state and last saved state have two digits. + expect(unsavedChangesApi.unsavedChanges.value).toBe(undefined); + + comparators.age[1](101); + + await waitFor(() => { + // here we expect there to be unsaved changes, because now the latest state has three digits. + expect(unsavedChangesApi.unsavedChanges.value).toEqual({ + age: 101, + }); + }); + }); +}); diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_unsaved_changes.ts b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_unsaved_changes.ts new file mode 100644 index 00000000000000..1e760b55f748a3 --- /dev/null +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_unsaved_changes.ts @@ -0,0 +1,133 @@ +/* + * Copyright 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 { getLastSavedStateSubjectForChild } from '@kbn/presentation-containers'; +import { PublishingSubject } from '@kbn/presentation-publishing'; +import { useCallback, useEffect, useMemo } from 'react'; +import { BehaviorSubject, combineLatest } from 'rxjs'; +import { combineLatestWith, debounceTime, map } from 'rxjs/operators'; +import { useReactEmbeddableParentContext } from './react_embeddable_api'; +import { EmbeddableStateComparators, ReactEmbeddableFactory } from './types'; + +const defaultComparator = (a: T, b: T) => a === b; + +const getInitialValuesFromComparators = ( + comparators: EmbeddableStateComparators, + comparatorKeys: Array +) => { + const initialValues: Partial = {}; + for (const key of comparatorKeys) { + const comparatorSubject = comparators[key][0]; // 0th element of tuple is the subject + initialValues[key] = comparatorSubject?.value; + } + return initialValues; +}; + +const runComparators = ( + comparators: EmbeddableStateComparators, + comparatorKeys: Array, + lastSavedState: StateType | undefined, + latestState: Partial +) => { + if (!lastSavedState) { + // if the parent API provides last saved state, but it's empty for this panel, all of our latest state is unsaved. + return latestState; + } + const latestChanges: Partial = {}; + for (const key of comparatorKeys) { + const customComparator = comparators[key]?.[2]; // 2nd element of the tuple is the custom comparator + const comparator = customComparator ?? defaultComparator; + if (!comparator(lastSavedState?.[key], latestState[key], lastSavedState, latestState)) { + latestChanges[key] = latestState[key]; + } + } + return Object.keys(latestChanges).length > 0 ? latestChanges : undefined; +}; + +export const useReactEmbeddableUnsavedChanges = ( + uuid: string, + factory: ReactEmbeddableFactory, + comparators: EmbeddableStateComparators +) => { + const { parentApi } = useReactEmbeddableParentContext() ?? {}; + const lastSavedStateSubject = useMemo( + () => getLastSavedStateSubjectForChild(parentApi, uuid, factory.deserializeState), + [factory.deserializeState, parentApi, uuid] + ); + + const { comparatorSubjects, comparatorKeys } = useMemo(() => { + const subjects: Array> = []; + const keys: Array = []; + for (const key of Object.keys(comparators) as Array) { + const comparatorSubject = comparators[key][0]; // 0th element of tuple is the subject + subjects.push(comparatorSubject as PublishingSubject); + keys.push(key); + } + return { comparatorKeys: keys, comparatorSubjects: subjects }; + // disable exhaustive deps because the comparators must be static + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + /** + * set up unsaved changes subject, running an initial diff. If the parent API cannot provide + * last saved state, we return undefined. + */ + const unsavedChanges = useMemo( + () => + new BehaviorSubject | undefined>( + lastSavedStateSubject + ? runComparators( + comparators, + comparatorKeys, + lastSavedStateSubject?.getValue(), + getInitialValuesFromComparators(comparators, comparatorKeys) + ) + : undefined + ), + // disable exhaustive deps because the comparators must be static + // eslint-disable-next-line react-hooks/exhaustive-deps + [] + ); + + useEffect(() => { + if (!lastSavedStateSubject) return; + // subscribe to last saved state subject and all state comparators + const subscription = combineLatest(comparatorSubjects) + .pipe( + debounceTime(100), + map((latestStates) => + comparatorKeys.reduce((acc, key, index) => { + acc[key] = latestStates[index] as StateType[typeof key]; + return acc; + }, {} as Partial) + ), + combineLatestWith(lastSavedStateSubject) + ) + .subscribe(([latestStates, lastSavedState]) => { + unsavedChanges.next( + runComparators(comparators, comparatorKeys, lastSavedState, latestStates) + ); + }); + return () => subscription.unsubscribe(); + // disable exhaustive deps because the comparators must be static + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const resetUnsavedChanges = useCallback(() => { + const lastSaved = lastSavedStateSubject?.getValue(); + for (const key of comparatorKeys) { + const setter = comparators[key][1]; // setter function is the 1st element of the tuple + setter(lastSaved?.[key] as StateType[typeof key]); + } + + // disable exhaustive deps because the comparators must be static + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return { unsavedChanges, resetUnsavedChanges }; +}; diff --git a/src/plugins/embeddable/public/react_embeddable_system/types.ts b/src/plugins/embeddable/public/react_embeddable_system/types.ts new file mode 100644 index 00000000000000..1a8c78476a9638 --- /dev/null +++ b/src/plugins/embeddable/public/react_embeddable_system/types.ts @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { SerializedPanelState } from '@kbn/presentation-containers'; +import { DefaultPresentationPanelApi } from '@kbn/presentation-panel-plugin/public/panel_component/types'; +import { PublishesUnsavedChanges, PublishingSubject } from '@kbn/presentation-publishing'; +import { ReactElement } from 'react'; + +export type ReactEmbeddableRegistration< + ApiType extends DefaultEmbeddableApi = DefaultEmbeddableApi +> = (ref: React.ForwardedRef) => ReactElement | null; + +/** + * The default embeddable API that all Embeddables must implement. + * + * Before adding anything to this interface, please be certain that it belongs in *every* embeddable. + */ +export type DefaultEmbeddableApi = DefaultPresentationPanelApi & + PublishesUnsavedChanges & { + serializeState: () => Promise; + }; + +export type ReactEmbeddable = + React.ForwardRefExoticComponent>; + +export interface ReactEmbeddableFactory< + StateType extends unknown = unknown, + APIType extends DefaultEmbeddableApi = DefaultEmbeddableApi +> { + getComponent: (initialState: StateType, maybeId?: string) => Promise>; + deserializeState: (state: SerializedPanelState) => StateType; + latestVersion?: string; +} + +export type StateTypeFromFactory> = + F extends ReactEmbeddableFactory ? S : never; + +/** + * State comparators + */ +export type EmbeddableComparatorFunction = ( + last: StateType[KeyType] | undefined, + current: StateType[KeyType] | undefined, + lastState?: Partial, + currentState?: Partial +) => boolean; + +export type EmbeddableComparatorDefinition = [ + PublishingSubject, + (value: StateType[KeyType]) => void, + EmbeddableComparatorFunction? +]; + +export type EmbeddableStateComparators = { + [KeyType in keyof StateType]: EmbeddableComparatorDefinition; +}; diff --git a/src/plugins/embeddable/public/registry/create_embeddable_component.ts b/src/plugins/embeddable/public/registry/create_embeddable_component.ts deleted file mode 100644 index 59cb3b174f85a6..00000000000000 --- a/src/plugins/embeddable/public/registry/create_embeddable_component.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 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 { EmbeddableComponent } from './types'; - -export const CreateEmbeddableComponent: ( - component: ( - ref: React.ForwardedRef - ) => React.ReactElement> | null -) => EmbeddableComponent = (component) => - React.forwardRef((_, apiRef) => component(apiRef)); diff --git a/src/plugins/embeddable/public/registry/types.ts b/src/plugins/embeddable/public/registry/types.ts deleted file mode 100644 index 0846b3fb746def..00000000000000 --- a/src/plugins/embeddable/public/registry/types.ts +++ /dev/null @@ -1,18 +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 type EmbeddableComponent = - React.ForwardRefExoticComponent>; - -export interface EmbeddableComponentFactory< - StateType extends unknown = unknown, - APIType extends unknown = unknown -> { - getComponent: (initialState: StateType) => Promise>; - deserializeState: (state: unknown) => StateType; -} diff --git a/src/plugins/expressions/common/expression_types/specs/datatable.ts b/src/plugins/expressions/common/expression_types/specs/datatable.ts index fbba26f3d4dc8c..c2ee9aa7f22da0 100644 --- a/src/plugins/expressions/common/expression_types/specs/datatable.ts +++ b/src/plugins/expressions/common/expression_types/specs/datatable.ts @@ -89,6 +89,7 @@ export interface DatatableColumn { id: string; name: string; meta: DatatableColumnMeta; + isNull?: boolean; } /** diff --git a/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap b/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap index b2741eaf8d3a11..61aa40604fa951 100644 --- a/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap +++ b/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap @@ -727,6 +727,15 @@ exports[`Overview renders correctly when there is no user data view 1`] = ` "hasUserDataView": [MockFunction], } } + share={ + Object { + "url": Object { + "locators": Object { + "get": [Function], + }, + }, + } + } > @@ -1028,6 +1037,15 @@ exports[`Overview renders correctly when there is no user data view 1`] = ` "hasUserDataView": [MockFunction], } } + share={ + Object { + "url": Object { + "locators": Object { + "get": [Function], + }, + }, + } + } > diff --git a/src/plugins/kibana_overview/public/components/overview/overview.tsx b/src/plugins/kibana_overview/public/components/overview/overview.tsx index bdc8c9e0a755e1..2b3f532a0fb522 100644 --- a/src/plugins/kibana_overview/public/components/overview/overview.tsx +++ b/src/plugins/kibana_overview/public/components/overview/overview.tsx @@ -197,6 +197,7 @@ export const Overview: FC = ({ newsFetchResult, solutions, features }) => }, }, dataViewEditor, + share, }; const importPromise = import('@kbn/shared-ux-page-analytics-no-data'); diff --git a/src/plugins/links/public/content_management/save_to_library.tsx b/src/plugins/links/public/content_management/save_to_library.tsx index 6bb00217224cb7..e9dba65a532f58 100644 --- a/src/plugins/links/public/content_management/save_to_library.tsx +++ b/src/plugins/links/public/content_management/save_to_library.tsx @@ -75,7 +75,7 @@ export const runSaveToLibrary = async ( resolve(undefined)} - title={newAttributes.title} + title={newAttributes.title ?? ''} customModalTitle={modalTitle} description={newAttributes.description} showDescription diff --git a/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/customize_panel_action.tsx b/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/customize_panel_action.tsx index e31ff54f21eb66..017203f961a088 100644 --- a/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/customize_panel_action.tsx +++ b/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/customize_panel_action.tsx @@ -11,6 +11,7 @@ import { apiCanAccessViewMode, apiPublishesDataViews, apiPublishesLocalUnifiedSearch, + apiPublishesPanelTitle, CanAccessViewMode, EmbeddableApiContext, getInheritedViewMode, @@ -26,9 +27,9 @@ import { openCustomizePanelFlyout } from './open_customize_panel'; export const ACTION_CUSTOMIZE_PANEL = 'ACTION_CUSTOMIZE_PANEL'; export type CustomizePanelActionApi = CanAccessViewMode & - PublishesDataViews & Partial< - PublishesWritableLocalUnifiedSearch & + PublishesDataViews & + PublishesWritableLocalUnifiedSearch & PublishesWritablePanelDescription & PublishesWritablePanelTitle & HasParentApi @@ -37,7 +38,7 @@ export type CustomizePanelActionApi = CanAccessViewMode & export const isApiCompatibleWithCustomizePanelAction = ( api: unknown | null ): api is CustomizePanelActionApi => - Boolean(apiCanAccessViewMode(api) && apiPublishesDataViews(api)); + apiCanAccessViewMode(api) && (apiPublishesDataViews(api) || apiPublishesPanelTitle(api)); export class CustomizePanelAction implements Action { public type = ACTION_CUSTOMIZE_PANEL; diff --git a/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/filters_details.tsx b/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/filters_details.tsx index 6c6e0cadf17e14..8f29e4fd4aa5dc 100644 --- a/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/filters_details.tsx +++ b/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/filters_details.tsx @@ -37,7 +37,7 @@ interface FiltersDetailsProps { export function FiltersDetails({ editMode, api }: FiltersDetailsProps) { const [queryString, setQueryString] = useState(''); const [queryLanguage, setQueryLanguage] = useState<'sql' | 'esql' | undefined>(); - const dataViews = api.dataViews.value ?? []; + const dataViews = api.dataViews?.value ?? []; const filters = useMemo(() => api.localFilters?.value ?? [], [api]); diff --git a/src/plugins/presentation_panel/public/panel_actions/remove_panel_action/remove_panel_action.test.tsx b/src/plugins/presentation_panel/public/panel_actions/remove_panel_action/remove_panel_action.test.tsx index 4312d0993eaf32..d6163faa87b72e 100644 --- a/src/plugins/presentation_panel/public/panel_actions/remove_panel_action/remove_panel_action.test.tsx +++ b/src/plugins/presentation_panel/public/panel_actions/remove_panel_action/remove_panel_action.test.tsx @@ -9,6 +9,7 @@ import { ViewMode } from '@kbn/presentation-publishing'; import { BehaviorSubject } from 'rxjs'; import { RemovePanelAction, RemovePanelActionApi } from './remove_panel_action'; +import { getMockPresentationContainer } from '@kbn/presentation-containers/mocks'; describe('Remove panel action', () => { let action: RemovePanelAction; @@ -20,11 +21,7 @@ describe('Remove panel action', () => { embeddable: { uuid: 'superId', viewMode: new BehaviorSubject('edit'), - parentApi: { - removePanel: jest.fn(), - canRemovePanels: jest.fn().mockReturnValue(true), - replacePanel: jest.fn(), - }, + parentApi: getMockPresentationContainer(), }, }; }); diff --git a/src/plugins/presentation_panel/public/panel_component/panel_header/presentation_panel_context_menu.tsx b/src/plugins/presentation_panel/public/panel_component/panel_header/presentation_panel_context_menu.tsx index 0a75ab48506e2f..ff9f7766baadf3 100644 --- a/src/plugins/presentation_panel/public/panel_component/panel_header/presentation_panel_context_menu.tsx +++ b/src/plugins/presentation_panel/public/panel_component/panel_header/presentation_panel_context_menu.tsx @@ -43,8 +43,8 @@ export const PresentationPanelContextMenu = ({ const [isContextMenuOpen, setIsContextMenuOpen] = useState(undefined); const [contextMenuPanels, setContextMenuPanels] = useState([]); - const { title, parentViewMode } = useBatchedPublishingSubjects({ - title: api.panelTitle, + const [title, parentViewMode] = useBatchedPublishingSubjects( + api.panelTitle, /** * View mode changes often have the biggest influence over which actions will be compatible, @@ -52,8 +52,8 @@ export const PresentationPanelContextMenu = ({ * actions should eventually all be Frequent Compatibility Change Actions which can track their * own dependencies. */ - parentViewMode: getViewModeSubject(api), - }); + getViewModeSubject(api) + ); useEffect(() => { /** diff --git a/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.test.tsx b/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.test.tsx index 107756e7b79519..116dca0169f9b9 100644 --- a/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.test.tsx +++ b/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.test.tsx @@ -8,6 +8,7 @@ import { waitForEuiPopoverOpen } from '@elastic/eui/lib/test/rtl'; import { DataView } from '@kbn/data-views-plugin/common'; +import { getMockPresentationContainer } from '@kbn/presentation-containers/mocks'; import { PublishesDataViews, PublishesViewMode, ViewMode } from '@kbn/presentation-publishing'; import { render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; @@ -221,9 +222,8 @@ describe('Presentation panel', () => { panelTitle: new BehaviorSubject('SUPER TITLE'), viewMode: new BehaviorSubject('view'), parentApi: { - removePanel: jest.fn(), - replacePanel: jest.fn(), viewMode: new BehaviorSubject('view'), + ...getMockPresentationContainer(), }, }; await renderPresentationPanel({ api }); diff --git a/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.tsx b/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.tsx index 8af8e22cbeede5..5259aedac0cd51 100644 --- a/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.tsx +++ b/src/plugins/presentation_panel/public/panel_component/presentation_panel_internal.tsx @@ -47,27 +47,25 @@ export const PresentationPanelInternal = < if (apiHasParentApi(api) && apiPublishesViewMode(api.parentApi)) return api.parentApi.viewMode; })(); - const { - rawViewMode, + const [ + dataLoading, blockingError, panelTitle, - dataLoading, hidePanelTitle, panelDescription, defaultPanelTitle, + rawViewMode, parentHidePanelTitle, - } = useBatchedPublishingSubjects({ - dataLoading: api?.dataLoading, - blockingError: api?.blockingError, - - panelTitle: api?.panelTitle, - hidePanelTitle: api?.hidePanelTitle, - panelDescription: api?.panelDescription, - defaultPanelTitle: api?.defaultPanelTitle, - - rawViewMode: viewModeSubject, - parentHidePanelTitle: api?.parentApi?.hidePanelTitle, - }); + ] = useBatchedPublishingSubjects( + api?.dataLoading, + api?.blockingError, + api?.panelTitle, + api?.hidePanelTitle, + api?.panelDescription, + api?.defaultPanelTitle, + viewModeSubject, + api?.parentApi?.hidePanelTitle + ); const viewMode = rawViewMode ?? 'view'; const [initialLoadComplete, setInitialLoadComplete] = useState(!dataLoading); diff --git a/src/plugins/presentation_panel/public/panel_component/types.ts b/src/plugins/presentation_panel/public/panel_component/types.ts index 25ef639929235e..654626e5959d60 100644 --- a/src/plugins/presentation_panel/public/panel_component/types.ts +++ b/src/plugins/presentation_panel/public/panel_component/types.ts @@ -56,6 +56,10 @@ export interface PresentationPanelInternalProps< index?: number; } +/** + * The API that any component passed to the `Component` prop of `PresentationPanel` should implement. + * Everything in this API is Partial because it is valid for a component to implement none of these methods. + */ export type DefaultPresentationPanelApi = Partial< HasUniqueId & PublishesPanelTitle & diff --git a/src/plugins/unified_histogram/public/layout/hooks/use_lens_suggestions.ts b/src/plugins/unified_histogram/public/layout/hooks/use_lens_suggestions.ts index e604e8d42b6815..c45a8c1d701a6a 100644 --- a/src/plugins/unified_histogram/public/layout/hooks/use_lens_suggestions.ts +++ b/src/plugins/unified_histogram/public/layout/hooks/use_lens_suggestions.ts @@ -7,11 +7,11 @@ */ import { DataView } from '@kbn/data-views-plugin/common'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; +import { removeDropCommandsFromESQLQuery } from '@kbn/esql-utils'; import { AggregateQuery, isOfAggregateQueryType, getAggregateQueryMode, - cleanupESQLQueryForLensSuggestions, Query, TimeRange, } from '@kbn/es-query'; @@ -79,7 +79,7 @@ export const useLensSuggestions = ({ const interval = computeInterval(timeRange, data); const language = getAggregateQueryMode(query); - const safeQuery = cleanupESQLQueryForLensSuggestions(query[language]); + const safeQuery = removeDropCommandsFromESQLQuery(query[language]); const esqlQuery = `${safeQuery} | EVAL timestamp=DATE_TRUNC(${interval}, ${dataView.timeFieldName}) | stats results = count(*) by timestamp | rename timestamp as \`${dataView.timeFieldName} every ${interval}\``; const context = { dataViewSpec: dataView?.toSpec(), diff --git a/src/plugins/unified_histogram/tsconfig.json b/src/plugins/unified_histogram/tsconfig.json index ec7f2cc102476b..fa266de08ecbff 100644 --- a/src/plugins/unified_histogram/tsconfig.json +++ b/src/plugins/unified_histogram/tsconfig.json @@ -30,6 +30,7 @@ "@kbn/lens-embeddable-utils", "@kbn/i18n-react", "@kbn/field-utils", + "@kbn/esql-utils", ], "exclude": [ "target/**/*", diff --git a/src/plugins/visualizations/public/visualize_app/app.tsx b/src/plugins/visualizations/public/visualize_app/app.tsx index 8ff102e1014792..bba97b60acec85 100644 --- a/src/plugins/visualizations/public/visualize_app/app.tsx +++ b/src/plugins/visualizations/public/visualize_app/app.tsx @@ -18,6 +18,7 @@ import type { NoDataPagePluginStart } from '@kbn/no-data-page-plugin/public'; import { useKibana } from '@kbn/kibana-react-plugin/public'; import type { DataViewsContract } from '@kbn/data-views-plugin/public'; import { withSuspense } from '@kbn/shared-ux-utility'; +import { SharePluginStart } from '@kbn/share-plugin/public'; import { VisualizeServices } from './types'; import { VisualizeEditor, @@ -37,6 +38,7 @@ interface NoDataComponentProps { dataViewEditor: DataViewEditorStart; onDataViewCreated: (dataView: unknown) => void; noDataPage?: NoDataPagePluginStart; + share?: SharePluginStart; } const NoDataComponent = ({ @@ -45,12 +47,14 @@ const NoDataComponent = ({ dataViewEditor, onDataViewCreated, noDataPage, + share, }: NoDataComponentProps) => { const analyticsServices = { coreStart: core, dataViews, dataViewEditor, noDataPage, + share, }; const importPromise = import('@kbn/shared-ux-page-analytics-no-data'); @@ -84,6 +88,7 @@ export const VisualizeApp = ({ onAppLeave }: VisualizeAppProps) => { kbnUrlStateStorage, dataViewEditor, noDataPage, + share, }, } = useKibana(); const { pathname } = useLocation(); @@ -145,6 +150,7 @@ export const VisualizeApp = ({ onAppLeave }: VisualizeAppProps) => { dataViews={dataViews} onDataViewCreated={onDataViewCreated} noDataPage={noDataPage} + share={share} /> ); } diff --git a/test/api_integration/apis/search/bsearch.ts b/test/api_integration/apis/search/bsearch.ts index 96b4bbbf622cfe..867ae83864a74e 100644 --- a/test/api_integration/apis/search/bsearch.ts +++ b/test/api_integration/apis/search/bsearch.ts @@ -428,6 +428,7 @@ export default function ({ getService }: FtrProviderContext) { expect(jsonBody[0].result.requestParams).to.eql({ method: 'POST', path: '/_query', + querystring: 'drop_null_columns', }); }); @@ -456,6 +457,7 @@ export default function ({ getService }: FtrProviderContext) { expect(jsonBody[0].error.attributes.requestParams).to.eql({ method: 'POST', path: '/_query', + querystring: 'drop_null_columns', }); }); }); diff --git a/test/functional/apps/console/_console.ts b/test/functional/apps/console/_console.ts index b8324ce58ce6ca..2d712e4a4c7668 100644 --- a/test/functional/apps/console/_console.ts +++ b/test/functional/apps/console/_console.ts @@ -157,7 +157,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); - describe('with folded/unfolded lines in request body', () => { + // FLAKY: https://github.com/elastic/kibana/issues/152825 + describe.skip('with folded/unfolded lines in request body', () => { const enterRequest = async () => { await PageObjects.console.enterRequest('\nGET test/doc/1 \n{\n\t\t"_source": []'); await PageObjects.console.clickPlay(); diff --git a/test/functional/apps/dashboard_elements/controls/common/range_slider.ts b/test/functional/apps/dashboard_elements/controls/common/range_slider.ts index e088066533250a..36fd494864bb1f 100644 --- a/test/functional/apps/dashboard_elements/controls/common/range_slider.ts +++ b/test/functional/apps/dashboard_elements/controls/common/range_slider.ts @@ -19,6 +19,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const filterBar = getService('filterBar'); const testSubjects = getService('testSubjects'); const kibanaServer = getService('kibanaServer'); + const browser = getService('browser'); const { dashboardControls, common, dashboard, header } = getPageObjects([ 'dashboardControls', 'dashboard', @@ -74,6 +75,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { dataViewTitle: 'logstash-*', fieldName: 'bytes', width: 'small', + additionalSettings: { step: 10 }, }); expect(await dashboardControls.getControlsCount()).to.be(1); await dashboard.clearUnsavedChanges(); @@ -94,6 +96,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { dataViewTitle: 'kibana_sample_data_flights', fieldName: 'AvgTicketPrice', width: 'medium', + additionalSettings: { step: 100 }, }); expect(await dashboardControls.getControlsCount()).to.be(2); const secondId = (await dashboardControls.getAllControlIds())[1]; @@ -177,6 +180,38 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await dashboard.clearUnsavedChanges(); }); + it('can select a range on a defined step interval using arrow keys', async () => { + const secondId = (await dashboardControls.getAllControlIds())[1]; + + await testSubjects.click( + `range-slider-control-${secondId} > rangeSlider__lowerBoundFieldNumber` + ); + + // use arrow key to set lower bound to the next step up + await browser.pressKeys(browser.keys.ARROW_UP); + await dashboardControls.validateRange('value', secondId, '300', ''); + + // use arrow key to set lower bound to the next step up + await browser.pressKeys(browser.keys.ARROW_DOWN); + await dashboardControls.validateRange('value', secondId, '200', ''); + + await dashboardControls.rangeSliderSetUpperBound(secondId, '800'); + + await testSubjects.click( + `range-slider-control-${secondId} > rangeSlider__upperBoundFieldNumber` + ); + + // use arrow key to set upper bound to the next step up + await browser.pressKeys(browser.keys.ARROW_UP); + await dashboardControls.validateRange('value', secondId, '200', '900'); + + // use arrow key to set upper bound to the next step up + await browser.pressKeys(browser.keys.ARROW_DOWN); + await dashboardControls.validateRange('value', secondId, '200', '800'); + + await dashboard.clearUnsavedChanges(); + }); + it('can clear out selections by clicking the reset button', async () => { const firstId = (await dashboardControls.getAllControlIds())[0]; await dashboardControls.clearControlSelections(firstId); diff --git a/test/functional/apps/discover/group1/_no_data.ts b/test/functional/apps/discover/group1/_no_data.ts index 8efc1b1390ef62..1a80955068bd02 100644 --- a/test/functional/apps/discover/group1/_no_data.ts +++ b/test/functional/apps/discover/group1/_no_data.ts @@ -5,6 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ +import expect from '@kbn/expect'; import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { @@ -14,6 +15,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const testSubjects = getService('testSubjects'); + const dataGrid = getService('dataGrid'); const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker']); const createDataView = async (dataViewName: string) => { @@ -53,8 +55,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await kibanaServer.savedObjects.clean({ types: ['search', 'index-pattern'] }); await PageObjects.common.navigateToApp('discover'); - const button = await testSubjects.find('createDataViewButton'); - button.click(); + await testSubjects.click('createDataViewButton'); await retry.waitForWithTimeout('data view editor form to be visible', 15000, async () => { return await (await find.byClassName('indexPatternEditor__form')).isDisplayed(); }); @@ -73,5 +74,23 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { } ); }); + + it('skips to Discover to try ES|QL', async () => { + await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.savedObjects.clean({ types: ['search', 'index-pattern'] }); + await kibanaServer.uiSettings.update({ + 'timepicker:timeDefaults': '{ "from": "2015-09-18T19:37:13.000Z", "to": "now"}', + }); + await PageObjects.common.navigateToApp('discover'); + + await testSubjects.click('tryESQLLink'); + + await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.discover.waitUntilSearchingHasFinished(); + await testSubjects.existOrFail('TextBasedLangEditor'); + await testSubjects.existOrFail('unifiedHistogramChart'); + const rows = await dataGrid.getDocTableRows(); + expect(rows.length).to.be.above(0); + }); }); } diff --git a/test/functional/apps/discover/group3/_sidebar.ts b/test/functional/apps/discover/group3/_sidebar.ts index cae06dd375b468..f2ada0f1927efd 100644 --- a/test/functional/apps/discover/group3/_sidebar.ts +++ b/test/functional/apps/discover/group3/_sidebar.ts @@ -107,6 +107,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.discover.selectTextBaseLang(); + const testQuery = `from logstash-* | limit 10000`; + await monacoEditor.setCodeEditorValue(testQuery); + await testSubjects.click('querySubmitButton'); + await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.unifiedFieldList.waitUntilSidebarHasLoaded(); await PageObjects.unifiedFieldList.openSidebarFieldFilter(); options = await find.allByCssSelector('[data-test-subj*="typeFilter"]'); @@ -125,6 +129,25 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); }); }); + + it('should show empty fields in text-based view', async function () { + await kibanaServer.uiSettings.update({ 'discover:enableESQL': true }); + await browser.refresh(); + + await PageObjects.unifiedFieldList.waitUntilSidebarHasLoaded(); + await PageObjects.discover.selectTextBaseLang(); + + const testQuery = `from logstash-* | limit 10 | keep machine.ram_range, bytes `; + await monacoEditor.setCodeEditorValue(testQuery); + await testSubjects.click('querySubmitButton'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.unifiedFieldList.waitUntilSidebarHasLoaded(); + await PageObjects.unifiedFieldList.openSidebarFieldFilter(); + + expect(await PageObjects.unifiedFieldList.getSidebarAriaDescription()).to.be( + '2 selected fields. 1 available field. 1 empty field.' + ); + }); }); describe('search', function () { @@ -422,6 +445,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); await PageObjects.discover.selectTextBaseLang(); + await monacoEditor.setCodeEditorValue('from logstash-* | limit 10000'); + await testSubjects.click('querySubmitButton'); + await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.unifiedFieldList.waitUntilSidebarHasLoaded(); expect(await PageObjects.unifiedFieldList.getSidebarAriaDescription()).to.be( diff --git a/test/functional/apps/discover/group4/_esql_view.ts b/test/functional/apps/discover/group4/_esql_view.ts index fd9060f9b9ec85..fb388d4277fe1e 100644 --- a/test/functional/apps/discover/group4/_esql_view.ts +++ b/test/functional/apps/discover/group4/_esql_view.ts @@ -133,6 +133,24 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const cell = await dataGrid.getCellElement(0, 2); expect(await cell.getVisibleText()).to.be('1'); }); + + it('should render correctly if there are empty fields', async function () { + await PageObjects.discover.selectTextBaseLang(); + const testQuery = `from logstash-* | limit 10 | keep machine.ram_range, bytes`; + + await monacoEditor.setCodeEditorValue(testQuery); + await testSubjects.click('querySubmitButton'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.discover.waitUntilSearchingHasFinished(); + const cell = await dataGrid.getCellElement(0, 3); + expect(await cell.getVisibleText()).to.be(' - '); + expect(await dataGrid.getHeaders()).to.eql([ + 'Control column', + 'Select column', + 'Numberbytes', + 'machine.ram_range', + ]); + }); }); describe('errors', () => { it('should show error messages for syntax errors in query', async function () { diff --git a/test/functional/fixtures/es_archiver/kibana_sample_data_logs_tsdb/data.json.gz b/test/functional/fixtures/es_archiver/kibana_sample_data_logs_tsdb/data.json.gz index 7c358cfc48ac1e..9b43421504fe63 100644 Binary files a/test/functional/fixtures/es_archiver/kibana_sample_data_logs_tsdb/data.json.gz and b/test/functional/fixtures/es_archiver/kibana_sample_data_logs_tsdb/data.json.gz differ diff --git a/test/functional/fixtures/es_archiver/search/downsampled/data.json.gz b/test/functional/fixtures/es_archiver/search/downsampled/data.json.gz index 45e30c92b5cbc2..deca8f30b1aead 100644 Binary files a/test/functional/fixtures/es_archiver/search/downsampled/data.json.gz and b/test/functional/fixtures/es_archiver/search/downsampled/data.json.gz differ diff --git a/test/functional/page_objects/dashboard_page_controls.ts b/test/functional/page_objects/dashboard_page_controls.ts index f3ca32531995e4..8f7a64260c37ae 100644 --- a/test/functional/page_objects/dashboard_page_controls.ts +++ b/test/functional/page_objects/dashboard_page_controls.ts @@ -30,6 +30,10 @@ interface OptionsListAdditionalSettings { hideSort?: boolean; } +interface RangeSliderAdditionalSettings { + step?: number; +} + export const OPTIONS_LIST_ANIMAL_SOUND_SUGGESTIONS: { [key: string]: number } = { hiss: 5, ruff: 4, @@ -238,7 +242,7 @@ export class DashboardPageControls extends FtrService { width?: ControlWidth; dataViewTitle?: string; grow?: boolean; - additionalSettings?: OptionsListAdditionalSettings; + additionalSettings?: OptionsListAdditionalSettings | RangeSliderAdditionalSettings; }) { this.log.debug(`Creating ${controlType} control ${title ?? fieldName}`); await this.openCreateControlFlyout(); @@ -254,8 +258,13 @@ export class DashboardPageControls extends FtrService { if (additionalSettings) { if (controlType === OPTIONS_LIST_CONTROL) { - // only options lists currently have additional settings - await this.optionsListSetAdditionalSettings(additionalSettings); + await this.optionsListSetAdditionalSettings( + additionalSettings as OptionsListAdditionalSettings + ); + } else if (controlType === RANGE_SLIDER_CONTROL) { + await this.rangeSliderSetAdditionalSettings( + additionalSettings as RangeSliderAdditionalSettings + ); } } @@ -627,6 +636,17 @@ export class DashboardPageControls extends FtrService { return dataViewName; } + // Range Slider editor functions + public async rangeSliderEditorSetStep(value: number) { + this.log.debug(`Setting range slider step to ${value}`); + await this.testSubjects.setValue('rangeSliderControl__stepAdditionalSetting', `${value}`); + } + + public async rangeSliderSetAdditionalSettings({ step }: RangeSliderAdditionalSettings) { + this.log.debug(`Setting range slider step to ${step}`); + if (step) await this.rangeSliderEditorSetStep(step); + } + // Range slider functions public async rangeSliderGetLowerBoundAttribute(controlId: string, attribute: string) { this.log.debug(`Getting range slider lower bound ${attribute} for ${controlId}`); @@ -653,6 +673,7 @@ export class DashboardPageControls extends FtrService { expect(await this.rangeSliderGetLowerBoundAttribute(controlId, 'value')).to.be(value); }); } + public async rangeSliderSetUpperBound(controlId: string, value: string) { this.log.debug(`Setting range slider lower bound to ${value}`); await this.retry.try(async () => { diff --git a/test/plugin_functional/test_suites/core_plugins/rendering.ts b/test/plugin_functional/test_suites/core_plugins/rendering.ts index bc13a0c5a8e2a1..e6434471a08cfc 100644 --- a/test/plugin_functional/test_suites/core_plugins/rendering.ts +++ b/test/plugin_functional/test_suites/core_plugins/rendering.ts @@ -257,7 +257,6 @@ export default function ({ getService }: PluginFunctionalProviderContext) { 'xpack.fleet.agents.enabled (boolean)', 'xpack.fleet.enableExperimental (array)', 'xpack.fleet.internal.activeAgentsSoftLimit (number)', - 'xpack.fleet.internal.disableProxies (boolean)', 'xpack.fleet.internal.fleetServerStandalone (boolean)', 'xpack.fleet.internal.onlyAllowAgentUpgradeToKnownVersions (boolean)', 'xpack.fleet.developer.maxAgentPoliciesWithInactivityTimeout (number)', diff --git a/tsconfig.base.json b/tsconfig.base.json index 9e7531586d5daf..3c6be26411d883 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1682,8 +1682,6 @@ "@kbn/url-drilldown-plugin/*": ["x-pack/plugins/drilldowns/url_drilldown/*"], "@kbn/url-forwarding-plugin": ["src/plugins/url_forwarding"], "@kbn/url-forwarding-plugin/*": ["src/plugins/url_forwarding/*"], - "@kbn/url-state": ["packages/kbn-url-state"], - "@kbn/url-state/*": ["packages/kbn-url-state/*"], "@kbn/usage-collection-plugin": ["src/plugins/usage_collection"], "@kbn/usage-collection-plugin/*": ["src/plugins/usage_collection/*"], "@kbn/usage-collection-test-plugin": ["test/plugin_functional/plugins/usage_collection"], diff --git a/x-pack/examples/third_party_maps_source_example/public/classes/custom_raster_source.tsx b/x-pack/examples/third_party_maps_source_example/public/classes/custom_raster_source.tsx index a33b72652a26e7..9903232054392f 100644 --- a/x-pack/examples/third_party_maps_source_example/public/classes/custom_raster_source.tsx +++ b/x-pack/examples/third_party_maps_source_example/public/classes/custom_raster_source.tsx @@ -122,18 +122,6 @@ export class CustomRasterSource implements IRasterSource { return false; } - getIndexPatternIds(): string[] { - return []; - } - - getQueryableIndexPatternIds(): string[] { - return []; - } - - isESSource(): boolean { - return false; - } - // Returns function used to format value async createFieldFormatter(field: IField): Promise { return null; diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts new file mode 100644 index 00000000000000..0a6281d69d1096 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from 'zod'; + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: Get Evaluate API endpoint + * version: 1 + */ + +export type GetEvaluateResponse = z.infer; +export const GetEvaluateResponse = z.object({ + agentExecutors: z.array(z.string()), +}); diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.schema.yaml b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.schema.yaml new file mode 100644 index 00000000000000..b0c0c218eb9ac3 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.schema.yaml @@ -0,0 +1,40 @@ +openapi: 3.0.0 +info: + title: Get Evaluate API endpoint + version: '1' +paths: + /internal/elastic_assistant/evaluate: + get: + operationId: GetEvaluate + x-codegen-enabled: true + description: Get relevant data for performing an evaluation like available sample data, agents, and evaluators + summary: Get relevant data for performing an evaluation + tags: + - Evaluation API + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + agentExecutors: + type: array + items: + type: string + required: + - agentExecutors + '400': + description: Generic Error + content: + application/json: + schema: + type: object + properties: + statusCode: + type: number + error: + type: string + message: + type: string diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts new file mode 100644 index 00000000000000..d5d1177a9c16e1 --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts @@ -0,0 +1,85 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { z } from 'zod'; + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: Post Evaluate API endpoint + * version: 1 + */ + +export type OutputIndex = z.infer; +export const OutputIndex = z.string().regex(/^.kibana-elastic-ai-assistant-/); + +export type DatasetItem = z.infer; +export const DatasetItem = z.object({ + id: z.string().optional(), + input: z.string(), + prediction: z.string().optional(), + reference: z.string(), + tags: z.array(z.string()).optional(), +}); + +export type Dataset = z.infer; +export const Dataset = z.array(DatasetItem).default([]); + +export type PostEvaluateBody = z.infer; +export const PostEvaluateBody = z.object({ + dataset: Dataset.optional(), + evalPrompt: z.string().optional(), +}); + +export type PostEvaluateRequestQuery = z.infer; +export const PostEvaluateRequestQuery = z.object({ + /** + * Agents parameter description + */ + agents: z.string(), + /** + * Dataset Name parameter description + */ + datasetName: z.string().optional(), + /** + * Evaluation Type parameter description + */ + evaluationType: z.string().optional(), + /** + * Eval Model parameter description + */ + evalModel: z.string().optional(), + /** + * Models parameter description + */ + models: z.string(), + /** + * Output Index parameter description + */ + outputIndex: OutputIndex, + /** + * Project Name parameter description + */ + projectName: z.string().optional(), + /** + * Run Name parameter description + */ + runName: z.string().optional(), +}); +export type PostEvaluateRequestQueryInput = z.input; + +export type PostEvaluateRequestBody = z.infer; +export const PostEvaluateRequestBody = PostEvaluateBody; +export type PostEvaluateRequestBodyInput = z.input; + +export type PostEvaluateResponse = z.infer; +export const PostEvaluateResponse = z.object({ + evaluationId: z.string(), + success: z.boolean(), +}); diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.schema.yaml b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.schema.yaml new file mode 100644 index 00000000000000..41a7230e85ac5a --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.schema.yaml @@ -0,0 +1,126 @@ +openapi: 3.0.0 +info: + title: Post Evaluate API endpoint + version: '1' +paths: + /internal/elastic_assistant/evaluate: + post: + operationId: PostEvaluate + x-codegen-enabled: true + description: Perform an evaluation using sample data against a combination of Agents and Connectors + summary: Performs an evaluation of the Elastic Assistant + tags: + - Evaluation API + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PostEvaluateBody' + parameters: + - name: agents + in: query + description: Agents parameter description + required: true + schema: + type: string + - name: datasetName + in: query + description: Dataset Name parameter description + schema: + type: string + - name: evaluationType + in: query + description: Evaluation Type parameter description + schema: + type: string + - name: evalModel + in: query + description: Eval Model parameter description + schema: + type: string + - name: models + in: query + description: Models parameter description + required: true + schema: + type: string + - name: outputIndex + in: query + description: Output Index parameter description + required: true + schema: + $ref: '#/components/schemas/OutputIndex' + - name: projectName + in: query + description: Project Name parameter description + schema: + type: string + - name: runName + in: query + description: Run Name parameter description + schema: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + evaluationId: + type: string + success: + type: boolean + required: + - evaluationId + - success + '400': + description: Generic Error + content: + application/json: + schema: + type: object + properties: + statusCode: + type: number + error: + type: string + message: + type: string +components: + schemas: + OutputIndex: + type: string + pattern: '^.kibana-elastic-ai-assistant-' + DatasetItem: + type: object + properties: + id: + type: string + input: + type: string + prediction: + type: string + reference: + type: string + tags: + type: array + items: + type: string + required: + - input + - reference + Dataset: + type: array + items: + $ref: '#/components/schemas/DatasetItem' + default: [] + PostEvaluateBody: + type: object + properties: + dataset: + $ref: '#/components/schemas/Dataset' + evalPrompt: + type: string diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts new file mode 100644 index 00000000000000..4257cb9bae149b --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// API versioning constants +export const API_VERSIONS = { + public: { + v1: '2023-10-31', + }, + internal: { + v1: '1', + }, +}; + +export const PUBLIC_API_ACCESS = 'public'; +export const INTERNAL_API_ACCESS = 'internal'; + +// Evaluation Schemas +export * from './evaluation/post_evaluate_route.gen'; +export * from './evaluation/get_evaluate_route.gen'; + +// Capabilities Schemas +export * from './capabilities/get_capabilities_route.gen'; diff --git a/x-pack/packages/kbn-elastic-assistant-common/index.ts b/x-pack/packages/kbn-elastic-assistant-common/index.ts index a2576038c6f51a..e285be395c71cd 100644 --- a/x-pack/packages/kbn-elastic-assistant-common/index.ts +++ b/x-pack/packages/kbn-elastic-assistant-common/index.ts @@ -5,7 +5,8 @@ * 2.0. */ -export { GetCapabilitiesResponse } from './impl/schemas/capabilities/get_capabilities_route.gen'; +// Schema constants +export * from './impl/schemas'; export { defaultAssistantFeatures } from './impl/capabilities'; export type { AssistantFeatures } from './impl/capabilities'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api.test.tsx index 4c71c1e63f8b3e..26a37e12c4e539 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api.test.tsx @@ -13,7 +13,6 @@ import { fetchConnectorExecuteAction, FetchConnectorExecuteAction, getKnowledgeBaseStatus, - postEvaluation, postKnowledgeBase, } from './api'; import type { Conversation, Message } from '../assistant_context/types'; @@ -340,52 +339,4 @@ describe('API tests', () => { await expect(deleteKnowledgeBase(knowledgeBaseArgs)).resolves.toThrowError('simulated error'); }); }); - - describe('postEvaluation', () => { - it('calls the knowledge base API when correct resource path', async () => { - (mockHttp.fetch as jest.Mock).mockResolvedValue({ success: true }); - const testProps = { - http: mockHttp, - evalParams: { - agents: ['not', 'alphabetical'], - dataset: '{}', - datasetName: 'Test Dataset', - projectName: 'Test Project Name', - runName: 'Test Run Name', - evalModel: ['not', 'alphabetical'], - evalPrompt: 'evalPrompt', - evaluationType: ['not', 'alphabetical'], - models: ['not', 'alphabetical'], - outputIndex: 'outputIndex', - }, - }; - - await postEvaluation(testProps); - - expect(mockHttp.fetch).toHaveBeenCalledWith('/internal/elastic_assistant/evaluate', { - method: 'POST', - body: '{"dataset":{},"evalPrompt":"evalPrompt"}', - headers: { 'Content-Type': 'application/json' }, - query: { - models: 'alphabetical,not', - agents: 'alphabetical,not', - datasetName: 'Test Dataset', - evaluationType: 'alphabetical,not', - evalModel: 'alphabetical,not', - outputIndex: 'outputIndex', - projectName: 'Test Project Name', - runName: 'Test Run Name', - }, - signal: undefined, - }); - }); - it('returns error when error is an error', async () => { - const error = 'simulated error'; - (mockHttp.fetch as jest.Mock).mockImplementation(() => { - throw new Error(error); - }); - - await expect(postEvaluation(knowledgeBaseArgs)).resolves.toThrowError('simulated error'); - }); - }); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api.tsx index f04b99c4e46e19..c18193c7fa0a6a 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api.tsx @@ -16,7 +16,6 @@ import { getOptionalRequestParams, hasParsableResponse, } from './helpers'; -import { PerformEvaluationParams } from './settings/evaluation_settings/use_perform_evaluation'; export interface FetchConnectorExecuteAction { isEnabledRAGAlerts: boolean; @@ -335,61 +334,3 @@ export const deleteKnowledgeBase = async ({ return error as IHttpFetchError; } }; - -export interface PostEvaluationParams { - http: HttpSetup; - evalParams?: PerformEvaluationParams; - signal?: AbortSignal | undefined; -} - -export interface PostEvaluationResponse { - evaluationId: string; - success: boolean; -} - -/** - * API call for evaluating models. - * - * @param {Object} options - The options object. - * @param {HttpSetup} options.http - HttpSetup - * @param {string} [options.evalParams] - Params necessary for evaluation - * @param {AbortSignal} [options.signal] - AbortSignal - * - * @returns {Promise} - */ -export const postEvaluation = async ({ - http, - evalParams, - signal, -}: PostEvaluationParams): Promise => { - try { - const path = `/internal/elastic_assistant/evaluate`; - const query = { - agents: evalParams?.agents.sort()?.join(','), - datasetName: evalParams?.datasetName, - evaluationType: evalParams?.evaluationType.sort()?.join(','), - evalModel: evalParams?.evalModel.sort()?.join(','), - outputIndex: evalParams?.outputIndex, - models: evalParams?.models.sort()?.join(','), - projectName: evalParams?.projectName, - runName: evalParams?.runName, - }; - - const response = await http.fetch(path, { - method: 'POST', - body: JSON.stringify({ - dataset: JSON.parse(evalParams?.dataset ?? '[]'), - evalPrompt: evalParams?.evalPrompt ?? '', - }), - headers: { - 'Content-Type': 'application/json', - }, - query, - signal, - }); - - return response as PostEvaluationResponse; - } catch (error) { - return error as IHttpFetchError; - } -}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.test.tsx index b41d7ac1445549..30c113eb0e8036 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.test.tsx @@ -13,7 +13,7 @@ import { API_ERROR } from '../../translations'; jest.mock('@kbn/core-http-browser'); const mockHttp = { - fetch: jest.fn(), + get: jest.fn(), } as unknown as HttpSetup; describe('Capabilities API tests', () => { @@ -25,15 +25,14 @@ describe('Capabilities API tests', () => { it('calls the internal assistant API for fetching assistant capabilities', async () => { await getCapabilities({ http: mockHttp }); - expect(mockHttp.fetch).toHaveBeenCalledWith('/internal/elastic_assistant/capabilities', { - method: 'GET', + expect(mockHttp.get).toHaveBeenCalledWith('/internal/elastic_assistant/capabilities', { signal: undefined, version: '1', }); }); it('returns API_ERROR when the response status is error', async () => { - (mockHttp.fetch as jest.Mock).mockResolvedValue({ status: API_ERROR }); + (mockHttp.get as jest.Mock).mockResolvedValue({ status: API_ERROR }); const result = await getCapabilities({ http: mockHttp }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.tsx index 59927dbf2c4721..96e6660f6bc0ef 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.tsx @@ -6,7 +6,7 @@ */ import { HttpSetup, IHttpFetchError } from '@kbn/core-http-browser'; -import { GetCapabilitiesResponse } from '@kbn/elastic-assistant-common'; +import { API_VERSIONS, GetCapabilitiesResponse } from '@kbn/elastic-assistant-common'; export interface GetCapabilitiesParams { http: HttpSetup; @@ -29,13 +29,10 @@ export const getCapabilities = async ({ try { const path = `/internal/elastic_assistant/capabilities`; - const response = await http.fetch(path, { - method: 'GET', + return await http.get(path, { signal, - version: '1', + version: API_VERSIONS.internal.v1, }); - - return response as GetCapabilitiesResponse; } catch (error) { return error as IHttpFetchError; } diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx index c9e60b806d1bf3..b7648983e6f7ad 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx @@ -11,11 +11,12 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import type { ReactNode } from 'react'; import React from 'react'; import { useCapabilities, UseCapabilitiesParams } from './use_capabilities'; +import { API_VERSIONS } from '@kbn/elastic-assistant-common'; const statusResponse = { assistantModelEvaluation: true, assistantStreamingEnabled: false }; const http = { - fetch: jest.fn().mockResolvedValue(statusResponse), + get: jest.fn().mockResolvedValue(statusResponse), }; const toasts = { addError: jest.fn(), @@ -36,14 +37,10 @@ describe('useFetchRelatedCases', () => { wrapper: createWrapper(), }); - expect(defaultProps.http.fetch).toHaveBeenCalledWith( - '/internal/elastic_assistant/capabilities', - { - method: 'GET', - version: '1', - signal: new AbortController().signal, - } - ); + expect(defaultProps.http.get).toHaveBeenCalledWith('/internal/elastic_assistant/capabilities', { + version: API_VERSIONS.internal.v1, + signal: new AbortController().signal, + }); expect(toasts.addError).not.toHaveBeenCalled(); }); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.test.tsx new file mode 100644 index 00000000000000..d25953370e97ad --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.test.tsx @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { postEvaluation } from './evaluate'; +import { HttpSetup } from '@kbn/core-http-browser'; +import { API_VERSIONS } from '@kbn/elastic-assistant-common'; + +jest.mock('@kbn/core-http-browser'); + +const mockHttp = { + post: jest.fn(), +} as unknown as HttpSetup; + +describe('postEvaluation', () => { + it('calls the knowledge base API when correct resource path', async () => { + (mockHttp.post as jest.Mock).mockResolvedValue({ success: true }); + const testProps = { + http: mockHttp, + evalParams: { + agents: ['not', 'alphabetical'], + dataset: '{}', + datasetName: 'Test Dataset', + projectName: 'Test Project Name', + runName: 'Test Run Name', + evalModel: ['not', 'alphabetical'], + evalPrompt: 'evalPrompt', + evaluationType: ['not', 'alphabetical'], + models: ['not', 'alphabetical'], + outputIndex: 'outputIndex', + }, + }; + + await postEvaluation(testProps); + + expect(mockHttp.post).toHaveBeenCalledWith('/internal/elastic_assistant/evaluate', { + body: '{"dataset":{},"evalPrompt":"evalPrompt"}', + headers: { 'Content-Type': 'application/json' }, + query: { + models: 'alphabetical,not', + agents: 'alphabetical,not', + datasetName: 'Test Dataset', + evaluationType: 'alphabetical,not', + evalModel: 'alphabetical,not', + outputIndex: 'outputIndex', + projectName: 'Test Project Name', + runName: 'Test Run Name', + }, + signal: undefined, + version: API_VERSIONS.internal.v1, + }); + }); + it('returns error when error is an error', async () => { + const error = 'simulated error'; + (mockHttp.post as jest.Mock).mockImplementation(() => { + throw new Error(error); + }); + + const knowledgeBaseArgs = { + resource: 'a-resource', + http: mockHttp, + }; + + await expect(postEvaluation(knowledgeBaseArgs)).resolves.toThrowError('simulated error'); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.tsx new file mode 100644 index 00000000000000..6581e22e77921a --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.tsx @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { HttpSetup, IHttpFetchError } from '@kbn/core-http-browser'; +import { + API_VERSIONS, + GetEvaluateResponse, + PostEvaluateResponse, +} from '@kbn/elastic-assistant-common'; +import { PerformEvaluationParams } from './use_perform_evaluation'; + +export interface PostEvaluationParams { + http: HttpSetup; + evalParams?: PerformEvaluationParams; + signal?: AbortSignal | undefined; +} + +/** + * API call for evaluating models. + * + * @param {Object} options - The options object. + * @param {HttpSetup} options.http - HttpSetup + * @param {string} [options.evalParams] - Params necessary for evaluation + * @param {AbortSignal} [options.signal] - AbortSignal + * + * @returns {Promise} + */ +export const postEvaluation = async ({ + http, + evalParams, + signal, +}: PostEvaluationParams): Promise => { + try { + const path = `/internal/elastic_assistant/evaluate`; + const query = { + agents: evalParams?.agents.sort()?.join(','), + datasetName: evalParams?.datasetName, + evaluationType: evalParams?.evaluationType.sort()?.join(','), + evalModel: evalParams?.evalModel.sort()?.join(','), + outputIndex: evalParams?.outputIndex, + models: evalParams?.models.sort()?.join(','), + projectName: evalParams?.projectName, + runName: evalParams?.runName, + }; + + return await http.post(path, { + body: JSON.stringify({ + dataset: JSON.parse(evalParams?.dataset ?? '[]'), + evalPrompt: evalParams?.evalPrompt ?? '', + }), + headers: { + 'Content-Type': 'application/json', + }, + query, + signal, + version: API_VERSIONS.internal.v1, + }); + } catch (error) { + return error as IHttpFetchError; + } +}; + +export interface GetEvaluationParams { + http: HttpSetup; + signal?: AbortSignal | undefined; +} + +/** + * API call for fetching evaluation data. + * + * @param {Object} options - The options object. + * @param {HttpSetup} options.http - HttpSetup + * @param {AbortSignal} [options.signal] - AbortSignal + * + * @returns {Promise} + */ +export const getEvaluation = async ({ + http, + signal, +}: GetEvaluationParams): Promise => { + try { + const path = `/internal/elastic_assistant/evaluate`; + + return await http.get(path, { + signal, + version: API_VERSIONS.internal.v1, + }); + } catch (error) { + return error as IHttpFetchError; + } +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_evaluation_data.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_evaluation_data.tsx new file mode 100644 index 00000000000000..a37cf18a235ecd --- /dev/null +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_evaluation_data.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 { useQuery } from '@tanstack/react-query'; +import type { HttpSetup, IHttpFetchError, ResponseErrorBody } from '@kbn/core-http-browser'; +import type { IToasts } from '@kbn/core-notifications-browser'; +import { i18n } from '@kbn/i18n'; +import { getEvaluation } from './evaluate'; + +const EVALUATION_DATA_QUERY_KEY = ['elastic-assistant', 'evaluation-data']; + +export interface UseEvaluationDataParams { + http: HttpSetup; + toasts?: IToasts; +} + +/** + * Hook for fetching evaluation data, like available agents, test data, etc + * + * @param {Object} options - The options object. + * @param {HttpSetup} options.http - HttpSetup + * @param {IToasts} [options.toasts] - IToasts + * + * @returns {useMutation} mutation hook for setting up the Knowledge Base + */ +export const useEvaluationData = ({ http, toasts }: UseEvaluationDataParams) => { + return useQuery({ + queryKey: EVALUATION_DATA_QUERY_KEY, + queryFn: ({ signal }) => { + // Optional params workaround: see: https://github.com/TanStack/query/issues/1077#issuecomment-1431247266 + return getEvaluation({ http, signal }); + }, + retry: false, + keepPreviousData: true, + // Deprecated, hoist to `queryCache` w/in `QueryClient. See: https://stackoverflow.com/a/76961109 + onError: (error: IHttpFetchError) => { + if (error.name !== 'AbortError') { + toasts?.addError(error.body && error.body.message ? new Error(error.body.message) : error, { + title: i18n.translate('xpack.elasticAssistant.evaluation.fetchEvaluationDataError', { + defaultMessage: 'Error fetching evaluation data...', + }), + }); + } + }, + }); +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/use_perform_evaluation.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx similarity index 81% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/use_perform_evaluation.test.tsx rename to x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx index b0653384805497..f9fdb2e80b7b2d 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/use_perform_evaluation.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx @@ -7,14 +7,15 @@ import { act, renderHook } from '@testing-library/react-hooks'; import { usePerformEvaluation, UsePerformEvaluationParams } from './use_perform_evaluation'; -import { postEvaluation as _postEvaluation } from '../../api'; +import { postEvaluation as _postEvaluation } from './evaluate'; import { useMutation as _useMutation } from '@tanstack/react-query'; +import { API_VERSIONS } from '@kbn/elastic-assistant-common'; const useMutationMock = _useMutation as jest.Mock; const postEvaluationMock = _postEvaluation as jest.Mock; -jest.mock('../../api', () => { - const actual = jest.requireActual('../../api'); +jest.mock('./evaluate', () => { + const actual = jest.requireActual('./evaluate'); return { ...actual, postEvaluation: jest.fn((...args) => actual.postEvaluation(...args)), @@ -37,7 +38,7 @@ const statusResponse = { }; const http = { - fetch: jest.fn().mockResolvedValue(statusResponse), + post: jest.fn().mockResolvedValue(statusResponse), }; const toasts = { addError: jest.fn(), @@ -53,20 +54,23 @@ describe('usePerformEvaluation', () => { const { waitForNextUpdate } = renderHook(() => usePerformEvaluation(defaultProps)); await waitForNextUpdate(); - expect(defaultProps.http.fetch).toHaveBeenCalledWith('/internal/elastic_assistant/evaluate', { - method: 'POST', + expect(defaultProps.http.post).toHaveBeenCalledWith('/internal/elastic_assistant/evaluate', { body: '{"dataset":[],"evalPrompt":""}', headers: { 'Content-Type': 'application/json', }, query: { agents: undefined, + datasetName: undefined, evalModel: undefined, evaluationType: undefined, models: undefined, outputIndex: undefined, + projectName: undefined, + runName: undefined, }, signal: undefined, + version: API_VERSIONS.internal.v1, }); expect(toasts.addError).not.toHaveBeenCalled(); }); @@ -82,6 +86,8 @@ describe('usePerformEvaluation', () => { evaluationType: ['f', 'e'], models: ['h', 'g'], outputIndex: 'outputIndex', + projectName: 'test project', + runName: 'test run', }); return Promise.resolve(res); } catch (e) { @@ -92,20 +98,23 @@ describe('usePerformEvaluation', () => { const { waitForNextUpdate } = renderHook(() => usePerformEvaluation(defaultProps)); await waitForNextUpdate(); - expect(defaultProps.http.fetch).toHaveBeenCalledWith('/internal/elastic_assistant/evaluate', { - method: 'POST', + expect(defaultProps.http.post).toHaveBeenCalledWith('/internal/elastic_assistant/evaluate', { body: '{"dataset":["kewl"],"evalPrompt":"evalPrompt"}', headers: { 'Content-Type': 'application/json', }, query: { agents: 'c,d', + datasetName: undefined, evalModel: 'a,b', evaluationType: 'e,f', models: 'g,h', outputIndex: 'outputIndex', + projectName: 'test project', + runName: 'test run', }, signal: undefined, + version: API_VERSIONS.internal.v1, }); }); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/use_perform_evaluation.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.tsx similarity index 97% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/use_perform_evaluation.tsx rename to x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.tsx index 158f7159310ad5..30e95d9d804074 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/use_perform_evaluation.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.tsx @@ -9,7 +9,7 @@ import { useMutation } from '@tanstack/react-query'; import type { HttpSetup, IHttpFetchError, ResponseErrorBody } from '@kbn/core-http-browser'; import type { IToasts } from '@kbn/core-notifications-browser'; import { i18n } from '@kbn/i18n'; -import { postEvaluation } from '../../api'; +import { postEvaluation } from './evaluate'; const PERFORM_EVALUATION_MUTATION_KEY = ['elastic-assistant', 'perform-evaluation']; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/evaluation_settings.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/evaluation_settings.tsx index f4fe4d7f8a407f..09cdf6717ca6c3 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/evaluation_settings.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/evaluation_settings.tsx @@ -27,20 +27,16 @@ import { import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; +import type { GetEvaluateResponse, PostEvaluateResponse } from '@kbn/elastic-assistant-common'; import * as i18n from './translations'; import { useAssistantContext } from '../../../assistant_context'; import { useLoadConnectors } from '../../../connectorland/use_load_connectors'; import { getActionTypeTitle, getGenAiConfig } from '../../../connectorland/helpers'; import { PRECONFIGURED_CONNECTOR } from '../../../connectorland/translations'; -import { usePerformEvaluation } from './use_perform_evaluation'; +import { usePerformEvaluation } from '../../api/evaluate/use_perform_evaluation'; import { getApmLink, getDiscoverLink } from './utils'; -import { PostEvaluationResponse } from '../../api'; +import { useEvaluationData } from '../../api/evaluate/use_evaluation_data'; -/** - * See AGENT_EXECUTOR_MAP in `x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts` - * for the agent name -> executor mapping - */ -const DEFAULT_AGENTS = ['DefaultAgentExecutor', 'OpenAIFunctionsExecutor']; const DEFAULT_EVAL_TYPES_OPTIONS = [ { label: 'correctness' }, { label: 'esql-validator', disabled: true }, @@ -65,6 +61,11 @@ export const EvaluationSettings: React.FC = React.memo(({ onEvaluationSet } = usePerformEvaluation({ http, }); + const { data: evalData } = useEvaluationData({ http }); + const defaultAgents = useMemo( + () => (evalData as GetEvaluateResponse)?.agentExecutors ?? [], + [evalData] + ); // Run Details // Project Name @@ -195,8 +196,8 @@ export const EvaluationSettings: React.FC = React.memo(({ onEvaluationSet [selectedAgentOptions] ); const agentOptions = useMemo(() => { - return DEFAULT_AGENTS.map((label) => ({ label })); - }, []); + return defaultAgents.map((label) => ({ label })); + }, [defaultAgents]); // Evaluation // Evaluation Type @@ -283,12 +284,12 @@ export const EvaluationSettings: React.FC = React.memo(({ onEvaluationSet ]); const discoverLink = useMemo( - () => getDiscoverLink(basePath, (evalResponse as PostEvaluationResponse)?.evaluationId ?? ''), + () => getDiscoverLink(basePath, (evalResponse as PostEvaluateResponse)?.evaluationId ?? ''), [basePath, evalResponse] ); const apmLink = useMemo( - () => getApmLink(basePath, (evalResponse as PostEvaluationResponse)?.evaluationId ?? ''), + () => getApmLink(basePath, (evalResponse as PostEvaluateResponse)?.evaluationId ?? ''), [basePath, evalResponse] ); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx index 77ffe90ec8c97a..fb520416327180 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx @@ -12,9 +12,12 @@ import React from 'react'; import { ContextEditor } from '.'; describe('ContextEditor', () => { - const allow = ['field1', 'field2']; + const allow = Array.from({ length: 20 }, (_, i) => `field${i + 1}`); const allowReplacement = ['field1']; - const rawData = { field1: ['value1'], field2: ['value2'] }; + const rawData = allow.reduce( + (acc, field, index) => ({ ...acc, [field]: [`value${index + 1}`] }), + {} + ); const onListUpdated = jest.fn(); @@ -36,13 +39,17 @@ describe('ContextEditor', () => { }); it('renders the select all fields button with the expected count', () => { - expect(screen.getByTestId('selectAllFields')).toHaveTextContent('Select all 2 fields'); + expect(screen.getByTestId('selectAllFields')).toHaveTextContent('Select all 20 fields'); }); it('updates the table selection when "Select all n fields" is clicked', () => { - userEvent.click(screen.getByTestId('selectAllFields')); + // The table select all checkbox should only select the number of rows visible on the page + userEvent.click(screen.getByTestId('checkboxSelectAll')); + expect(screen.getByTestId('selectedFields')).toHaveTextContent('Selected 10 fields'); - expect(screen.getByTestId('selectedFields')).toHaveTextContent('Selected 2 fields'); + // The select all button should select all rows regardless of visibility + userEvent.click(screen.getByTestId('selectAllFields')); + expect(screen.getByTestId('selectedFields')).toHaveTextContent('Selected 20 fields'); }); it('calls onListUpdated with the expected values when the update button is clicked', () => { diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx index 5e9e0b960f5776..e0b19fe26d6726 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx @@ -7,7 +7,7 @@ import { EuiInMemoryTable } from '@elastic/eui'; import type { EuiSearchBarProps, EuiTableSelectionType } from '@elastic/eui'; -import React, { useCallback, useMemo, useRef, useState } from 'react'; +import React, { useCallback, useMemo, useState, useRef } from 'react'; import { getColumns } from './get_columns'; import { getRows } from './get_rows'; @@ -59,16 +59,25 @@ const ContextEditorComponent: React.FC = ({ rawData, pageSize = DEFAULT_PAGE_SIZE, }) => { + const isAllSelected = useRef(false); // Must be a ref and not state in order not to re-render `selectionValue`, which fires `onSelectionChange` twice const [selected, setSelection] = useState([]); const selectionValue: EuiTableSelectionType = useMemo( () => ({ selectable: () => true, - onSelectionChange: (newSelection) => setSelection(newSelection), - initialSelected: [], + onSelectionChange: (newSelection) => { + if (isAllSelected.current === true) { + // If passed every possible row (including non-visible ones), EuiInMemoryTable + // will fire `onSelectionChange` with only the visible rows - we need to + // ignore this call when that happens and continue to pass all rows + isAllSelected.current = false; + } else { + setSelection(newSelection); + } + }, + selected, }), - [] + [selected] ); - const tableRef = useRef | null>(null); const columns = useMemo(() => getColumns({ onListUpdated, rawData }), [onListUpdated, rawData]); @@ -83,9 +92,8 @@ const ContextEditorComponent: React.FC = ({ ); const onSelectAll = useCallback(() => { - tableRef.current?.setSelection(rows); // updates selection in the EuiInMemoryTable - - setTimeout(() => setSelection(rows), 0); // updates selection in the component state + isAllSelected.current = true; + setSelection(rows); }, [rows]); const pagination = useMemo(() => { @@ -106,7 +114,7 @@ const ContextEditorComponent: React.FC = ({ totalFields={rows.length} /> ), - [onListUpdated, onReset, onSelectAll, rawData, rows.length, selected] + [onListUpdated, onReset, onSelectAll, rawData, rows, selected] ); return ( @@ -120,7 +128,6 @@ const ContextEditorComponent: React.FC = ({ itemId={FIELDS.FIELD} items={rows} pagination={pagination} - ref={tableRef} search={search} selection={selectionValue} sorting={defaultSort} 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 ed8923cdb229ae..c421f9ed065963 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 @@ -44,6 +44,16 @@ export enum AppFeatureSecurityKey { */ osqueryAutomatedResponseActions = 'osquery_automated_response_actions', + /** + * Enables Agent Tamper Protection + */ + endpointProtectionUpdates = 'endpoint_protection_updates', + + /** + * Enables Agent Tamper Protection + */ + endpointAgentTamperProtection = 'endpoint_agent_tamper_protection', + /** * Enables managing endpoint exceptions on rules and alerts */ 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 66bbfb4e5ddcd4..2f99b077accdb6 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,6 +106,7 @@ export const securityDefaultAppFeaturesConfig: DefaultSecurityAppFeaturesConfig }, [AppFeatureSecurityKey.osqueryAutomatedResponseActions]: {}, - + [AppFeatureSecurityKey.endpointProtectionUpdates]: {}, + [AppFeatureSecurityKey.endpointAgentTamperProtection]: {}, [AppFeatureSecurityKey.externalRuleActions]: {}, }; diff --git a/x-pack/packages/security-solution/upselling/service/types.ts b/x-pack/packages/security-solution/upselling/service/types.ts index 276a9d08f7fc91..31aace488ab975 100644 --- a/x-pack/packages/security-solution/upselling/service/types.ts +++ b/x-pack/packages/security-solution/upselling/service/types.ts @@ -15,6 +15,8 @@ export type UpsellingSectionId = | 'entity_analytics_panel' | 'endpointPolicyProtections' | 'osquery_automated_response_actions' + | 'endpoint_protection_updates' + | 'endpoint_agent_tamper_protection' | 'ruleDetailsEndpointExceptions'; export type UpsellingMessageId = diff --git a/x-pack/plugins/actions/common/index.ts b/x-pack/plugins/actions/common/index.ts index feeb07fe84477e..b56f6c61238c29 100644 --- a/x-pack/plugins/actions/common/index.ts +++ b/x-pack/plugins/actions/common/index.ts @@ -19,3 +19,7 @@ export * from './execution_log_types'; export const BASE_ACTION_API_PATH = '/api/actions'; export const INTERNAL_BASE_ACTION_API_PATH = '/internal/actions'; export const ACTIONS_FEATURE_ID = 'actions'; + +export const DEFAULT_MICROSOFT_EXCHANGE_URL = 'https://login.microsoftonline.com'; +export const DEFAULT_MICROSOFT_GRAPH_API_URL = 'https://graph.microsoft.com/v1.0'; +export const DEFAULT_MICROSOFT_GRAPH_API_SCOPE = 'https://graph.microsoft.com/.default'; diff --git a/x-pack/plugins/actions/server/actions_client/actions_client.test.ts b/x-pack/plugins/actions/server/actions_client/actions_client.test.ts index b52ce10ab8c4ac..ff5258ef43cca3 100644 --- a/x-pack/plugins/actions/server/actions_client/actions_client.test.ts +++ b/x-pack/plugins/actions/server/actions_client/actions_client.test.ts @@ -8,7 +8,11 @@ import { schema } from '@kbn/config-schema'; import moment from 'moment'; import { ByteSizeValue } from '@kbn/config-schema'; - +import { + DEFAULT_MICROSOFT_EXCHANGE_URL, + DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + DEFAULT_MICROSOFT_GRAPH_API_URL, +} from '../../common'; import { ActionTypeRegistry, ActionTypeRegistryOpts } from '../action_type_registry'; import { ActionsClient } from './actions_client'; import { ExecutorType, ActionType } from '../types'; @@ -596,6 +600,9 @@ describe('create()', () => { proxyVerificationMode: 'full', }, enableFooterInEmail: true, + microsoftGraphApiUrl: DEFAULT_MICROSOFT_GRAPH_API_URL, + microsoftGraphApiScope: DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + microsoftExchangeUrl: DEFAULT_MICROSOFT_EXCHANGE_URL, }); const localActionTypeRegistryParams = { diff --git a/x-pack/plugins/actions/server/actions_config.mock.ts b/x-pack/plugins/actions/server/actions_config.mock.ts index 49f1a807bce9f3..0b95b0d8316559 100644 --- a/x-pack/plugins/actions/server/actions_config.mock.ts +++ b/x-pack/plugins/actions/server/actions_config.mock.ts @@ -5,6 +5,11 @@ * 2.0. */ +import { + DEFAULT_MICROSOFT_EXCHANGE_URL, + DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + DEFAULT_MICROSOFT_GRAPH_API_URL, +} from '../common'; import { ActionsConfigurationUtilities } from './actions_config'; const createActionsConfigMock = () => { @@ -24,7 +29,9 @@ const createActionsConfigMock = () => { timeout: 360000, }), getCustomHostSettings: jest.fn().mockReturnValue(undefined), - getMicrosoftGraphApiUrl: jest.fn().mockReturnValue(undefined), + getMicrosoftGraphApiUrl: jest.fn().mockReturnValue(DEFAULT_MICROSOFT_GRAPH_API_URL), + getMicrosoftGraphApiScope: jest.fn().mockReturnValue(DEFAULT_MICROSOFT_GRAPH_API_SCOPE), + getMicrosoftExchangeUrl: jest.fn().mockReturnValue(DEFAULT_MICROSOFT_EXCHANGE_URL), validateEmailAddresses: jest.fn().mockReturnValue(undefined), getMaxAttempts: jest.fn().mockReturnValue(3), enableFooterInEmail: jest.fn().mockReturnValue(true), diff --git a/x-pack/plugins/actions/server/actions_config.test.ts b/x-pack/plugins/actions/server/actions_config.test.ts index d19fcbc363b884..a6966e0e85c40f 100644 --- a/x-pack/plugins/actions/server/actions_config.test.ts +++ b/x-pack/plugins/actions/server/actions_config.test.ts @@ -7,6 +7,11 @@ import { ByteSizeValue } from '@kbn/config-schema'; import { ActionsConfig } from './config'; +import { + DEFAULT_MICROSOFT_EXCHANGE_URL, + DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + DEFAULT_MICROSOFT_GRAPH_API_URL, +} from '../common'; import { getActionsConfigurationUtilities, AllowedHosts, @@ -34,6 +39,9 @@ const defaultActionsConfig: ActionsConfig = { verificationMode: 'full', }, enableFooterInEmail: true, + microsoftGraphApiUrl: DEFAULT_MICROSOFT_GRAPH_API_URL, + microsoftGraphApiScope: DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + microsoftExchangeUrl: DEFAULT_MICROSOFT_EXCHANGE_URL, }; describe('ensureUriAllowed', () => { diff --git a/x-pack/plugins/actions/server/actions_config.ts b/x-pack/plugins/actions/server/actions_config.ts index 240a65228b4dcc..e77c0528d16a10 100644 --- a/x-pack/plugins/actions/server/actions_config.ts +++ b/x-pack/plugins/actions/server/actions_config.ts @@ -47,7 +47,9 @@ export interface ActionsConfigurationUtilities { getProxySettings: () => undefined | ProxySettings; getResponseSettings: () => ResponseSettings; getCustomHostSettings: (targetUrl: string) => CustomHostSettings | undefined; - getMicrosoftGraphApiUrl: () => undefined | string; + getMicrosoftGraphApiUrl: () => string; + getMicrosoftGraphApiScope: () => string; + getMicrosoftExchangeUrl: () => string; getMaxAttempts: ({ actionTypeMaxAttempts, actionTypeId, @@ -127,10 +129,18 @@ function getProxySettingsFromConfig(config: ActionsConfig): undefined | ProxySet }; } -function getMicrosoftGraphApiUrlFromConfig(config: ActionsConfig): undefined | string { +function getMicrosoftGraphApiUrlFromConfig(config: ActionsConfig): string { return config.microsoftGraphApiUrl; } +function getMicrosoftGraphApiScopeFromConfig(config: ActionsConfig): string { + return config.microsoftGraphApiScope; +} + +function getMicrosoftExchangeUrlFromConfig(config: ActionsConfig): string { + return config.microsoftExchangeUrl; +} + function arrayAsSet(arr: T[] | undefined): Set | undefined { if (!arr) return; return new Set(arr); @@ -209,6 +219,8 @@ export function getActionsConfigurationUtilities( }, getCustomHostSettings: (targetUrl: string) => getCustomHostSettings(config, targetUrl), getMicrosoftGraphApiUrl: () => getMicrosoftGraphApiUrlFromConfig(config), + getMicrosoftGraphApiScope: () => getMicrosoftGraphApiScopeFromConfig(config), + getMicrosoftExchangeUrl: () => getMicrosoftExchangeUrlFromConfig(config), validateEmailAddresses: (addresses: string[], options: ValidateEmailAddressesOptions) => validatedEmailCurried(addresses, options), getMaxAttempts: ({ actionTypeMaxAttempts, actionTypeId }) => { diff --git a/x-pack/plugins/actions/server/config.test.ts b/x-pack/plugins/actions/server/config.test.ts index f5971a86506812..5adc9c18b07a71 100644 --- a/x-pack/plugins/actions/server/config.test.ts +++ b/x-pack/plugins/actions/server/config.test.ts @@ -30,6 +30,9 @@ describe('config validation', () => { "maxResponseContentLength": ByteSizeValue { "valueInBytes": 1048576, }, + "microsoftExchangeUrl": "https://login.microsoftonline.com", + "microsoftGraphApiScope": "https://graph.microsoft.com/.default", + "microsoftGraphApiUrl": "https://graph.microsoft.com/v1.0", "preconfigured": Object {}, "preconfiguredAlertHistoryEsIndex": false, "proxyRejectUnauthorizedCertificates": true, @@ -65,6 +68,9 @@ describe('config validation', () => { "maxResponseContentLength": ByteSizeValue { "valueInBytes": 1048576, }, + "microsoftExchangeUrl": "https://login.microsoftonline.com", + "microsoftGraphApiScope": "https://graph.microsoft.com/.default", + "microsoftGraphApiUrl": "https://graph.microsoft.com/v1.0", "preconfigured": Object { "mySlack1": Object { "actionTypeId": ".slack", @@ -147,7 +153,7 @@ describe('config validation', () => { expect(mockLogger.warn.mock.calls).toMatchInlineSnapshot(` Array [ Array [ - "The confgurations xpack.actions.proxyBypassHosts and xpack.actions.proxyOnlyHosts can not be used at the same time. The configuration xpack.actions.proxyOnlyHosts will be ignored.", + "The configurations xpack.actions.proxyBypassHosts and xpack.actions.proxyOnlyHosts can not be used at the same time. The configuration xpack.actions.proxyOnlyHosts will be ignored.", ], ] `); @@ -169,7 +175,7 @@ describe('config validation', () => { expect(mockLogger.warn.mock.calls).toMatchInlineSnapshot(` Array [ Array [ - "The confguration xpack.actions.proxyUrl: bad url is invalid.", + "The configuration xpack.actions.proxyUrl: bad url is invalid.", ], ] `); @@ -207,6 +213,9 @@ describe('config validation', () => { "maxResponseContentLength": ByteSizeValue { "valueInBytes": 1048576, }, + "microsoftExchangeUrl": "https://login.microsoftonline.com", + "microsoftGraphApiScope": "https://graph.microsoft.com/.default", + "microsoftGraphApiUrl": "https://graph.microsoft.com/v1.0", "preconfigured": Object {}, "preconfiguredAlertHistoryEsIndex": false, "proxyRejectUnauthorizedCertificates": true, diff --git a/x-pack/plugins/actions/server/config.ts b/x-pack/plugins/actions/server/config.ts index a0b6c23883993d..980144117e4e80 100644 --- a/x-pack/plugins/actions/server/config.ts +++ b/x-pack/plugins/actions/server/config.ts @@ -7,6 +7,11 @@ import { schema, TypeOf } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; +import { + DEFAULT_MICROSOFT_EXCHANGE_URL, + DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + DEFAULT_MICROSOFT_GRAPH_API_URL, +} from '../common'; export enum AllowedHosts { Any = '*', @@ -120,7 +125,9 @@ export const configSchema = schema.object({ maxResponseContentLength: schema.byteSize({ defaultValue: '1mb' }), responseTimeout: schema.duration({ defaultValue: '60s' }), customHostSettings: schema.maybe(schema.arrayOf(customHostSettingsSchema)), - microsoftGraphApiUrl: schema.maybe(schema.string()), + microsoftGraphApiUrl: schema.string({ defaultValue: DEFAULT_MICROSOFT_GRAPH_API_URL }), + microsoftGraphApiScope: schema.string({ defaultValue: DEFAULT_MICROSOFT_GRAPH_API_SCOPE }), + microsoftExchangeUrl: schema.string({ defaultValue: DEFAULT_MICROSOFT_EXCHANGE_URL }), email: schema.maybe( schema.object({ domain_allowlist: schema.arrayOf(schema.string()), @@ -155,13 +162,13 @@ export function getValidatedConfig(logger: Logger, originalConfig: ActionsConfig try { new URL(proxyUrl); } catch (err) { - logger.warn(`The confguration xpack.actions.proxyUrl: ${proxyUrl} is invalid.`); + logger.warn(`The configuration xpack.actions.proxyUrl: ${proxyUrl} is invalid.`); } } if (proxyBypassHosts && proxyOnlyHosts) { logger.warn( - 'The confgurations xpack.actions.proxyBypassHosts and xpack.actions.proxyOnlyHosts can not be used at the same time. The configuration xpack.actions.proxyOnlyHosts will be ignored.' + 'The configurations xpack.actions.proxyBypassHosts and xpack.actions.proxyOnlyHosts can not be used at the same time. The configuration xpack.actions.proxyOnlyHosts will be ignored.' ); const tmp: Record = originalConfig; delete tmp.proxyOnlyHosts; diff --git a/x-pack/plugins/actions/server/integration_tests/axios_utils_connection.test.ts b/x-pack/plugins/actions/server/integration_tests/axios_utils_connection.test.ts index 21d2f095377272..200656d339ac3b 100644 --- a/x-pack/plugins/actions/server/integration_tests/axios_utils_connection.test.ts +++ b/x-pack/plugins/actions/server/integration_tests/axios_utils_connection.test.ts @@ -23,6 +23,11 @@ import { createReadySignal } from '@kbn/event-log-plugin/server/lib/ready_signal import { ActionsConfig } from '../config'; import { ActionsConfigurationUtilities, getActionsConfigurationUtilities } from '../actions_config'; import { resolveCustomHosts } from '../lib/custom_host_settings'; +import { + DEFAULT_MICROSOFT_EXCHANGE_URL, + DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + DEFAULT_MICROSOFT_GRAPH_API_URL, +} from '../../common'; const logger = loggingSystemMock.create().get() as jest.Mocked; @@ -683,6 +688,9 @@ const BaseActionsConfig: ActionsConfig = { responseTimeout: momentDuration(1000 * 30), customHostSettings: undefined, enableFooterInEmail: true, + microsoftGraphApiUrl: DEFAULT_MICROSOFT_GRAPH_API_URL, + microsoftGraphApiScope: DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + microsoftExchangeUrl: DEFAULT_MICROSOFT_EXCHANGE_URL, }; function getACUfromConfig(config: Partial = {}): ActionsConfigurationUtilities { diff --git a/x-pack/plugins/actions/server/integration_tests/axios_utils_proxy.test.ts b/x-pack/plugins/actions/server/integration_tests/axios_utils_proxy.test.ts index d5dd8ae91632e5..f29b2a98551865 100644 --- a/x-pack/plugins/actions/server/integration_tests/axios_utils_proxy.test.ts +++ b/x-pack/plugins/actions/server/integration_tests/axios_utils_proxy.test.ts @@ -23,6 +23,11 @@ import { createReadySignal } from '@kbn/event-log-plugin/server/lib/ready_signal import { ActionsConfig } from '../config'; import { ActionsConfigurationUtilities, getActionsConfigurationUtilities } from '../actions_config'; import { resolveCustomHosts } from '../lib/custom_host_settings'; +import { + DEFAULT_MICROSOFT_GRAPH_API_URL, + DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + DEFAULT_MICROSOFT_EXCHANGE_URL, +} from '../../common'; const logger = loggingSystemMock.create().get() as jest.Mocked; @@ -589,6 +594,9 @@ const BaseActionsConfig: ActionsConfig = { responseTimeout: momentDuration(1000 * 30), customHostSettings: undefined, enableFooterInEmail: true, + microsoftGraphApiUrl: DEFAULT_MICROSOFT_GRAPH_API_URL, + microsoftGraphApiScope: DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + microsoftExchangeUrl: DEFAULT_MICROSOFT_EXCHANGE_URL, }; function getACUfromConfig(config: Partial = {}): ActionsConfigurationUtilities { diff --git a/x-pack/plugins/actions/server/lib/custom_host_settings.test.ts b/x-pack/plugins/actions/server/lib/custom_host_settings.test.ts index f5cd9c268bd7e7..818d7fb9bcd0a9 100644 --- a/x-pack/plugins/actions/server/lib/custom_host_settings.test.ts +++ b/x-pack/plugins/actions/server/lib/custom_host_settings.test.ts @@ -15,6 +15,11 @@ import { Logger } from '@kbn/core/server'; import { loggingSystemMock } from '@kbn/core/server/mocks'; import { resolveCustomHosts, getCanonicalCustomHostUrl } from './custom_host_settings'; +import { + DEFAULT_MICROSOFT_GRAPH_API_URL, + DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + DEFAULT_MICROSOFT_EXCHANGE_URL, +} from '../../common'; const CA_DIR = '../../../../../../packages/kbn-dev-utils/certs'; const CA_FILE1 = pathResolve(__filename, pathJoin(CA_DIR, 'ca.crt')); @@ -74,6 +79,9 @@ describe('custom_host_settings', () => { maxResponseContentLength: new ByteSizeValue(1000000), responseTimeout: moment.duration(60000), enableFooterInEmail: true, + microsoftGraphApiUrl: DEFAULT_MICROSOFT_GRAPH_API_URL, + microsoftGraphApiScope: DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + microsoftExchangeUrl: DEFAULT_MICROSOFT_EXCHANGE_URL, }; test('ensure it copies over the config parts that it does not touch', () => { diff --git a/x-pack/plugins/actions/server/lib/mustache_lambdas.test.ts b/x-pack/plugins/actions/server/lib/mustache_lambdas.test.ts index 1e33f8b220cff3..bd5195423986fe 100644 --- a/x-pack/plugins/actions/server/lib/mustache_lambdas.test.ts +++ b/x-pack/plugins/actions/server/lib/mustache_lambdas.test.ts @@ -6,10 +6,16 @@ */ import dedent from 'dedent'; - +import { loggingSystemMock } from '@kbn/core/server/mocks'; import { renderMustacheString } from './mustache_renderer'; +const logger = loggingSystemMock.create().get(); + describe('mustache lambdas', () => { + beforeEach(() => { + jest.resetAllMocks(); + }); + describe('FormatDate', () => { it('date with defaults is successful', () => { const timeStamp = '2022-11-29T15:52:44Z'; @@ -17,7 +23,9 @@ describe('mustache lambdas', () => { {{#FormatDate}} {{timeStamp}} {{/FormatDate}} `.trim(); - expect(renderMustacheString(template, { timeStamp }, 'none')).toEqual('2022-11-29 03:52pm'); + expect(renderMustacheString(logger, template, { timeStamp }, 'none')).toEqual( + '2022-11-29 03:52pm' + ); }); it('date with a time zone is successful', () => { @@ -26,7 +34,9 @@ describe('mustache lambdas', () => { {{#FormatDate}} {{timeStamp}} ; America/New_York {{/FormatDate}} `.trim(); - expect(renderMustacheString(template, { timeStamp }, 'none')).toEqual('2022-11-29 10:52am'); + expect(renderMustacheString(logger, template, { timeStamp }, 'none')).toEqual( + '2022-11-29 10:52am' + ); }); it('date with a format is successful', () => { @@ -35,7 +45,7 @@ describe('mustache lambdas', () => { {{#FormatDate}} {{timeStamp}} ;; dddd MMM Do YYYY HH:mm:ss.SSS {{/FormatDate}} `.trim(); - expect(renderMustacheString(template, { timeStamp }, 'none')).toEqual( + expect(renderMustacheString(logger, template, { timeStamp }, 'none')).toEqual( 'Tuesday Nov 29th 2022 15:52:44.000' ); }); @@ -46,41 +56,48 @@ describe('mustache lambdas', () => { {{#FormatDate}} {{timeStamp}};America/New_York;dddd MMM Do YYYY HH:mm:ss.SSS {{/FormatDate}} `.trim(); - expect(renderMustacheString(template, { timeStamp }, 'none').trim()).toEqual( + expect(renderMustacheString(logger, template, { timeStamp }, 'none').trim()).toEqual( 'Tuesday Nov 29th 2022 10:52:44.000' ); }); - it('empty date produces error', () => { + it('empty date logs and returns error string', () => { const timeStamp = ''; const template = dedent` {{#FormatDate}} {{/FormatDate}} `.trim(); - expect(renderMustacheString(template, { timeStamp }, 'none').trim()).toEqual( - 'error rendering mustache template "{{#FormatDate}} {{/FormatDate}}": date is empty' + expect(renderMustacheString(logger, template, { timeStamp }, 'none').trim()).toEqual( + 'date is empty' ); + expect(logger.warn).toHaveBeenCalledWith(`mustache render error: date is empty`); }); - it('invalid date produces error', () => { + it('invalid date logs and returns error string', () => { const timeStamp = 'this is not a d4t3'; const template = dedent` {{#FormatDate}}{{timeStamp}}{{/FormatDate}} `.trim(); - expect(renderMustacheString(template, { timeStamp }, 'none').trim()).toEqual( - 'error rendering mustache template "{{#FormatDate}}{{timeStamp}}{{/FormatDate}}": invalid date "this is not a d4t3"' + expect(renderMustacheString(logger, template, { timeStamp }, 'none').trim()).toEqual( + 'invalid date "this is not a d4t3"' + ); + expect(logger.warn).toHaveBeenCalledWith( + `mustache render error: invalid date "this is not a d4t3"` ); }); - it('invalid timezone produces error', () => { + it('invalid timezone logs and returns error string', () => { const timeStamp = '2023-04-10T23:52:39'; const template = dedent` {{#FormatDate}}{{timeStamp}};NotATime Zone!{{/FormatDate}} `.trim(); - expect(renderMustacheString(template, { timeStamp }, 'none').trim()).toEqual( - 'error rendering mustache template "{{#FormatDate}}{{timeStamp}};NotATime Zone!{{/FormatDate}}": unknown timeZone value "NotATime Zone!"' + expect(renderMustacheString(logger, template, { timeStamp }, 'none').trim()).toEqual( + 'unknown timeZone value "NotATime Zone!"' + ); + expect(logger.warn).toHaveBeenCalledWith( + `mustache render error: unknown timeZone value "NotATime Zone!"` ); }); @@ -92,7 +109,7 @@ describe('mustache lambdas', () => { // not clear how to force an error, it pretty much does something with // ANY string - expect(renderMustacheString(template, { timeStamp }, 'none').trim()).toEqual( + expect(renderMustacheString(logger, template, { timeStamp }, 'none').trim()).toEqual( 'gamrbamg2' // a => am/pm (so am here); e => day of week ); }); @@ -114,11 +131,11 @@ describe('mustache lambdas', () => { {{/context}} `.trim(); - const result = renderMustacheString(template, vars, 'none'); + const result = renderMustacheString(logger, template, vars, 'none'); expect(result).toEqual(`1\n2\n3\n`); }); - it('invalid expression produces error', () => { + it('invalid expression logs and returns error string', () => { const vars = { context: { a: { b: 1 }, @@ -129,9 +146,12 @@ describe('mustache lambdas', () => { {{#EvalMath}} ) 1 ++++ 0 ( {{/EvalMath}} `.trim(); - const result = renderMustacheString(template, vars, 'none'); + const result = renderMustacheString(logger, template, vars, 'none'); expect(result).toEqual( - `error rendering mustache template "{{#EvalMath}} ) 1 ++++ 0 ( {{/EvalMath}}": error evaluating tinymath expression ") 1 ++++ 0 (": Failed to parse expression. Expected "(", function, literal, or whitespace but ")" found.` + 'error evaluating tinymath expression ") 1 ++++ 0 (": Failed to parse expression. Expected "(", function, literal, or whitespace but ")" found.' + ); + expect(logger.warn).toHaveBeenCalledWith( + `mustache render error: error evaluating tinymath expression ") 1 ++++ 0 (": Failed to parse expression. Expected "(", function, literal, or whitespace but ")" found.` ); }); }); @@ -147,7 +167,7 @@ describe('mustache lambdas', () => { const hjson = ` { # specify rate in requests/second (because comments are helpful!) - rate: 1000 + rate: 1000 a: {{context.a}} a_b: {{context.a.b}} @@ -166,7 +186,7 @@ describe('mustache lambdas', () => { {{#ParseHjson}} ${hjson} {{/ParseHjson}} `.trim(); - const result = renderMustacheString(template, vars, 'none'); + const result = renderMustacheString(logger, template, vars, 'none'); expect(JSON.parse(result)).toMatchInlineSnapshot(` Object { "a": Object { @@ -189,13 +209,18 @@ describe('mustache lambdas', () => { `); }); - it('renders an error message on parse errors', () => { + it('logs an error message and returns error string on parse errors', () => { const template = dedent` {{#ParseHjson}} [1,2,3,,] {{/ParseHjson}} `.trim(); - const result = renderMustacheString(template, {}, 'none'); - expect(result).toMatch(/^error rendering mustache template .*/); + const result = renderMustacheString(logger, template, {}, 'none'); + expect(result).toEqual( + `error parsing Hjson \"[1,2,3,,]\": Found a punctuator character ',' when expecting a quoteless string (check your syntax) at line 1,7 >>>1,2,3,,] ...` + ); + expect(logger.warn).toHaveBeenCalledWith( + `mustache render error: error parsing Hjson \"[1,2,3,,]\": Found a punctuator character ',' when expecting a quoteless string (check your syntax) at line 1,7 >>>1,2,3,,] ...` + ); }); }); @@ -206,16 +231,19 @@ describe('mustache lambdas', () => { {{#FormatNumber}} {{num}}; en-US; style: currency, currency: EUR {{/FormatNumber}} `.trim(); - expect(renderMustacheString(template, { num }, 'none')).toEqual('€42.00'); + expect(renderMustacheString(logger, template, { num }, 'none')).toEqual('€42.00'); }); - it('renders an error message on errors', () => { + it('logs an error message and returns empty string on errors', () => { const num = 'nope;;'; const template = dedent` {{#FormatNumber}} {{num}} {{/FormatNumber}} `.trim(); - expect(renderMustacheString(template, { num }, 'none')).toEqual(`invalid number: 'nope'`); + expect(renderMustacheString(logger, template, { num }, 'none')).toEqual( + `invalid number: 'nope'` + ); + expect(logger.warn).toHaveBeenCalledWith(`mustache render error: invalid number: 'nope'`); }); }); }); diff --git a/x-pack/plugins/actions/server/lib/mustache_lambdas.ts b/x-pack/plugins/actions/server/lib/mustache_lambdas.ts index 02ea659785aad9..8d4a87556b70f2 100644 --- a/x-pack/plugins/actions/server/lib/mustache_lambdas.ts +++ b/x-pack/plugins/actions/server/lib/mustache_lambdas.ts @@ -8,6 +8,7 @@ import * as tinymath from '@kbn/tinymath'; import { parse as hjsonParse } from 'hjson'; import moment from 'moment-timezone'; +import { Logger } from '@kbn/core/server'; import { formatNumber } from './number_formatter'; @@ -16,96 +17,102 @@ type Variables = Record; const DefaultDateTimeZone = 'UTC'; const DefaultDateFormat = 'YYYY-MM-DD hh:mma'; -export function getMustacheLambdas(): Variables { - return getLambdas(); +export function getMustacheLambdas(logger: Logger): Variables { + return getLambdas(logger); } const TimeZoneSet = new Set(moment.tz.names()); type RenderFn = (text: string) => string; -function getLambdas() { +function getLambdas(logger: Logger) { return { EvalMath: () => // mustache invokes lamdas with `this` set to the current "view" (variables) function (this: Variables, text: string, render: RenderFn) { - return evalMath(this, render(text.trim())); + return evalMath(this, render(text.trim()), logger); }, ParseHjson: () => function (text: string, render: RenderFn) { - return parseHjson(render(text.trim())); + return parseHjson(render(text.trim()), logger); }, FormatDate: () => function (text: string, render: RenderFn) { const dateString = render(text.trim()).trim(); - return formatDate(dateString); + return formatDate(dateString, logger); }, FormatNumber: () => function (text: string, render: RenderFn) { const numberString = render(text.trim()).trim(); - return formatNumber(numberString); + return formatNumber(logger, numberString); }, }; } -function evalMath(vars: Variables, o: unknown): string { +function evalMath(vars: Variables, o: unknown, logger: Logger): string { const expr = `${o}`; try { const result = tinymath.evaluate(expr, vars); return `${result}`; } catch (err) { - throw new Error(`error evaluating tinymath expression "${expr}": ${err.message}`); + return logAndReturnErr( + logger, + `error evaluating tinymath expression "${expr}": ${err.message}` + ); } } -function parseHjson(o: unknown): string { +function parseHjson(o: unknown, logger: Logger): string { const hjsonObject = `${o}`; let object: unknown; try { object = hjsonParse(hjsonObject); } catch (err) { - throw new Error(`error parsing Hjson "${hjsonObject}": ${err.message}`); + return logAndReturnErr(logger, `error parsing Hjson "${hjsonObject}": ${err.message}`); } return JSON.stringify(object); } -function formatDate(dateString: unknown): string { +function formatDate(dateString: unknown, logger: Logger): string { const { date, timeZone, format } = splitDateString(`${dateString}`); if (date === '') { - throw new Error(`date is empty`); + return logAndReturnErr(logger, `date is empty`); } if (isNaN(new Date(date).valueOf())) { - throw new Error(`invalid date "${date}"`); + return logAndReturnErr(logger, `invalid date "${date}"`); } let mDate: moment.Moment; try { mDate = moment(date); if (!mDate.isValid()) { - throw new Error(`date is invalid`); + return logAndReturnErr(logger, `invalid date "${date}"`); } } catch (err) { - throw new Error(`error evaluating moment date "${date}": ${err.message}`); + return logAndReturnErr(logger, `error evaluating moment date "${date}": ${err.message}`); } if (!TimeZoneSet.has(timeZone)) { - throw new Error(`unknown timeZone value "${timeZone}"`); + return logAndReturnErr(logger, `unknown timeZone value "${timeZone}"`); } try { mDate.tz(timeZone); } catch (err) { - throw new Error(`error evaluating moment timeZone "${timeZone}": ${err.message}`); + return logAndReturnErr( + logger, + `error evaluating moment timeZone "${timeZone}": ${err.message}` + ); } try { return mDate.format(format); } catch (err) { - throw new Error(`error evaluating moment format "${format}": ${err.message}`); + return logAndReturnErr(logger, `error evaluating moment format "${format}": ${err.message}`); } } @@ -118,3 +125,8 @@ function splitDateString(dateString: string) { format: format || DefaultDateFormat, }; } + +function logAndReturnErr(logger: Logger, errMessage: string): string { + logger.warn(`mustache render error: ${errMessage}`); + return errMessage; +} diff --git a/x-pack/plugins/actions/server/lib/mustache_renderer.test.ts b/x-pack/plugins/actions/server/lib/mustache_renderer.test.ts index 14bd5f47507e7f..ed07b6899a318d 100644 --- a/x-pack/plugins/actions/server/lib/mustache_renderer.test.ts +++ b/x-pack/plugins/actions/server/lib/mustache_renderer.test.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { loggingSystemMock } from '@kbn/core/server/mocks'; import { renderMustacheString, renderMustacheStringNoEscape, @@ -12,6 +13,8 @@ import { Escape, } from './mustache_renderer'; +const logger = loggingSystemMock.create().get(); + const variables = { a: 1, b: '2', @@ -38,97 +41,121 @@ const variables = { }; describe('mustache_renderer', () => { + beforeEach(() => { + jest.resetAllMocks(); + }); + describe('renderMustacheString()', () => { for (const escapeVal of ['none', 'slack', 'markdown', 'json']) { const escape = escapeVal as Escape; it(`handles basic templating that does not need escaping for ${escape}`, () => { - expect(renderMustacheString('', variables, escape)).toBe(''); - expect(renderMustacheString('{{a}}', variables, escape)).toBe('1'); - expect(renderMustacheString('{{b}}', variables, escape)).toBe('2'); - expect(renderMustacheString('{{c}}', variables, escape)).toBe('false'); - expect(renderMustacheString('{{d}}', variables, escape)).toBe(''); - expect(renderMustacheString('{{e}}', variables, escape)).toBe(''); + expect(renderMustacheString(logger, '', variables, escape)).toBe(''); + expect(renderMustacheString(logger, '{{a}}', variables, escape)).toBe('1'); + expect(renderMustacheString(logger, '{{b}}', variables, escape)).toBe('2'); + expect(renderMustacheString(logger, '{{c}}', variables, escape)).toBe('false'); + expect(renderMustacheString(logger, '{{d}}', variables, escape)).toBe(''); + expect(renderMustacheString(logger, '{{e}}', variables, escape)).toBe(''); if (escape === 'json') { - expect(renderMustacheString('{{f}}', variables, escape)).toBe('{\\"g\\":3,\\"h\\":null}'); + expect(renderMustacheString(logger, '{{f}}', variables, escape)).toBe( + '{\\"g\\":3,\\"h\\":null}' + ); } else if (escape === 'markdown') { - expect(renderMustacheString('{{f}}', variables, escape)).toBe('\\{"g":3,"h":null\\}'); + expect(renderMustacheString(logger, '{{f}}', variables, escape)).toBe( + '\\{"g":3,"h":null\\}' + ); } else { - expect(renderMustacheString('{{f}}', variables, escape)).toBe('{"g":3,"h":null}'); + expect(renderMustacheString(logger, '{{f}}', variables, escape)).toBe('{"g":3,"h":null}'); } - expect(renderMustacheString('{{f.g}}', variables, escape)).toBe('3'); - expect(renderMustacheString('{{f.h}}', variables, escape)).toBe(''); - expect(renderMustacheString('{{i}}', variables, escape)).toBe('42,43,44'); + expect(renderMustacheString(logger, '{{f.g}}', variables, escape)).toBe('3'); + expect(renderMustacheString(logger, '{{f.h}}', variables, escape)).toBe(''); + expect(renderMustacheString(logger, '{{i}}', variables, escape)).toBe('42,43,44'); if (escape === 'markdown') { - expect(renderMustacheString('{{i.asJSON}}', variables, escape)).toBe('\\[42,43,44\\]'); + expect(renderMustacheString(logger, '{{i.asJSON}}', variables, escape)).toBe( + '\\[42,43,44\\]' + ); } else { - expect(renderMustacheString('{{i.asJSON}}', variables, escape)).toBe('[42,43,44]'); + expect(renderMustacheString(logger, '{{i.asJSON}}', variables, escape)).toBe( + '[42,43,44]' + ); } }); } it('handles escape:none with commonly escaped strings', () => { - expect(renderMustacheString('{{lt}}', variables, 'none')).toBe(variables.lt); - expect(renderMustacheString('{{gt}}', variables, 'none')).toBe(variables.gt); - expect(renderMustacheString('{{amp}}', variables, 'none')).toBe(variables.amp); - expect(renderMustacheString('{{nl}}', variables, 'none')).toBe(variables.nl); - expect(renderMustacheString('{{dq}}', variables, 'none')).toBe(variables.dq); - expect(renderMustacheString('{{bt}}', variables, 'none')).toBe(variables.bt); - expect(renderMustacheString('{{bs}}', variables, 'none')).toBe(variables.bs); - expect(renderMustacheString('{{st}}', variables, 'none')).toBe(variables.st); - expect(renderMustacheString('{{ul}}', variables, 'none')).toBe(variables.ul); + expect(renderMustacheString(logger, '{{lt}}', variables, 'none')).toBe(variables.lt); + expect(renderMustacheString(logger, '{{gt}}', variables, 'none')).toBe(variables.gt); + expect(renderMustacheString(logger, '{{amp}}', variables, 'none')).toBe(variables.amp); + expect(renderMustacheString(logger, '{{nl}}', variables, 'none')).toBe(variables.nl); + expect(renderMustacheString(logger, '{{dq}}', variables, 'none')).toBe(variables.dq); + expect(renderMustacheString(logger, '{{bt}}', variables, 'none')).toBe(variables.bt); + expect(renderMustacheString(logger, '{{bs}}', variables, 'none')).toBe(variables.bs); + expect(renderMustacheString(logger, '{{st}}', variables, 'none')).toBe(variables.st); + expect(renderMustacheString(logger, '{{ul}}', variables, 'none')).toBe(variables.ul); }); it('handles escape:markdown with commonly escaped strings', () => { - expect(renderMustacheString('{{lt}}', variables, 'markdown')).toBe(variables.lt); - expect(renderMustacheString('{{gt}}', variables, 'markdown')).toBe(variables.gt); - expect(renderMustacheString('{{amp}}', variables, 'markdown')).toBe(variables.amp); - expect(renderMustacheString('{{nl}}', variables, 'markdown')).toBe(variables.nl); - expect(renderMustacheString('{{dq}}', variables, 'markdown')).toBe(variables.dq); - expect(renderMustacheString('{{bt}}', variables, 'markdown')).toBe('\\' + variables.bt); - expect(renderMustacheString('{{bs}}', variables, 'markdown')).toBe('\\' + variables.bs); - expect(renderMustacheString('{{st}}', variables, 'markdown')).toBe('\\' + variables.st); - expect(renderMustacheString('{{ul}}', variables, 'markdown')).toBe('\\' + variables.ul); - expect(renderMustacheString('{{vl}}', variables, 'markdown')).toBe('\\' + variables.vl); + expect(renderMustacheString(logger, '{{lt}}', variables, 'markdown')).toBe(variables.lt); + expect(renderMustacheString(logger, '{{gt}}', variables, 'markdown')).toBe(variables.gt); + expect(renderMustacheString(logger, '{{amp}}', variables, 'markdown')).toBe(variables.amp); + expect(renderMustacheString(logger, '{{nl}}', variables, 'markdown')).toBe(variables.nl); + expect(renderMustacheString(logger, '{{dq}}', variables, 'markdown')).toBe(variables.dq); + expect(renderMustacheString(logger, '{{bt}}', variables, 'markdown')).toBe( + '\\' + variables.bt + ); + expect(renderMustacheString(logger, '{{bs}}', variables, 'markdown')).toBe( + '\\' + variables.bs + ); + expect(renderMustacheString(logger, '{{st}}', variables, 'markdown')).toBe( + '\\' + variables.st + ); + expect(renderMustacheString(logger, '{{ul}}', variables, 'markdown')).toBe( + '\\' + variables.ul + ); + expect(renderMustacheString(logger, '{{vl}}', variables, 'markdown')).toBe( + '\\' + variables.vl + ); }); it('handles triple escapes', () => { - expect(renderMustacheString('{{{bt}}}', variables, 'markdown')).toBe(variables.bt); - expect(renderMustacheString('{{{bs}}}', variables, 'markdown')).toBe(variables.bs); - expect(renderMustacheString('{{{st}}}', variables, 'markdown')).toBe(variables.st); - expect(renderMustacheString('{{{ul}}}', variables, 'markdown')).toBe(variables.ul); + expect(renderMustacheString(logger, '{{{bt}}}', variables, 'markdown')).toBe(variables.bt); + expect(renderMustacheString(logger, '{{{bs}}}', variables, 'markdown')).toBe(variables.bs); + expect(renderMustacheString(logger, '{{{st}}}', variables, 'markdown')).toBe(variables.st); + expect(renderMustacheString(logger, '{{{ul}}}', variables, 'markdown')).toBe(variables.ul); }); it('handles escape:slack with commonly escaped strings', () => { - expect(renderMustacheString('{{lt}}', variables, 'slack')).toBe('<'); - expect(renderMustacheString('{{gt}}', variables, 'slack')).toBe('>'); - expect(renderMustacheString('{{amp}}', variables, 'slack')).toBe('&'); - expect(renderMustacheString('{{nl}}', variables, 'slack')).toBe(variables.nl); - expect(renderMustacheString('{{dq}}', variables, 'slack')).toBe(variables.dq); - expect(renderMustacheString('{{bt}}', variables, 'slack')).toBe(`'`); - expect(renderMustacheString('{{bs}}', variables, 'slack')).toBe(variables.bs); - expect(renderMustacheString('{{st}}', variables, 'slack')).toBe('`*`'); - expect(renderMustacheString('{{ul}}', variables, 'slack')).toBe('`_`'); + expect(renderMustacheString(logger, '{{lt}}', variables, 'slack')).toBe('<'); + expect(renderMustacheString(logger, '{{gt}}', variables, 'slack')).toBe('>'); + expect(renderMustacheString(logger, '{{amp}}', variables, 'slack')).toBe('&'); + expect(renderMustacheString(logger, '{{nl}}', variables, 'slack')).toBe(variables.nl); + expect(renderMustacheString(logger, '{{dq}}', variables, 'slack')).toBe(variables.dq); + expect(renderMustacheString(logger, '{{bt}}', variables, 'slack')).toBe(`'`); + expect(renderMustacheString(logger, '{{bs}}', variables, 'slack')).toBe(variables.bs); + expect(renderMustacheString(logger, '{{st}}', variables, 'slack')).toBe('`*`'); + expect(renderMustacheString(logger, '{{ul}}', variables, 'slack')).toBe('`_`'); // html escapes not needed when using backtic escaping - expect(renderMustacheString('{{st_lt}}', variables, 'slack')).toBe('`*<`'); - expect(renderMustacheString('{{link}}', variables, 'slack')).toBe('https://te_st.com/'); + expect(renderMustacheString(logger, '{{st_lt}}', variables, 'slack')).toBe('`*<`'); + expect(renderMustacheString(logger, '{{link}}', variables, 'slack')).toBe( + 'https://te_st.com/' + ); }); it('handles escape:json with commonly escaped strings', () => { - expect(renderMustacheString('{{lt}}', variables, 'json')).toBe(variables.lt); - expect(renderMustacheString('{{gt}}', variables, 'json')).toBe(variables.gt); - expect(renderMustacheString('{{amp}}', variables, 'json')).toBe(variables.amp); - expect(renderMustacheString('{{nl}}', variables, 'json')).toBe('\\n'); - expect(renderMustacheString('{{dq}}', variables, 'json')).toBe('\\"'); - expect(renderMustacheString('{{bt}}', variables, 'json')).toBe(variables.bt); - expect(renderMustacheString('{{bs}}', variables, 'json')).toBe('\\\\'); - expect(renderMustacheString('{{st}}', variables, 'json')).toBe(variables.st); - expect(renderMustacheString('{{ul}}', variables, 'json')).toBe(variables.ul); + expect(renderMustacheString(logger, '{{lt}}', variables, 'json')).toBe(variables.lt); + expect(renderMustacheString(logger, '{{gt}}', variables, 'json')).toBe(variables.gt); + expect(renderMustacheString(logger, '{{amp}}', variables, 'json')).toBe(variables.amp); + expect(renderMustacheString(logger, '{{nl}}', variables, 'json')).toBe('\\n'); + expect(renderMustacheString(logger, '{{dq}}', variables, 'json')).toBe('\\"'); + expect(renderMustacheString(logger, '{{bt}}', variables, 'json')).toBe(variables.bt); + expect(renderMustacheString(logger, '{{bs}}', variables, 'json')).toBe('\\\\'); + expect(renderMustacheString(logger, '{{st}}', variables, 'json')).toBe(variables.st); + expect(renderMustacheString(logger, '{{ul}}', variables, 'json')).toBe(variables.ul); }); it('handles errors', () => { - expect(renderMustacheString('{{a}', variables, 'none')).toMatchInlineSnapshot( + expect(renderMustacheString(logger, '{{a}', variables, 'none')).toMatchInlineSnapshot( `"error rendering mustache template \\"{{a}\\": Unclosed tag at 4"` ); }); @@ -285,7 +312,7 @@ describe('mustache_renderer', () => { describe('renderMustacheObject()', () => { it('handles deep objects', () => { - expect(renderMustacheObject(object, variables)).toMatchInlineSnapshot(` + expect(renderMustacheObject(logger, object, variables)).toMatchInlineSnapshot(` Object { "list": Array [ "1", @@ -311,12 +338,12 @@ describe('mustache_renderer', () => { }); it('handles primitive objects', () => { - expect(renderMustacheObject(undefined, variables)).toMatchInlineSnapshot(`undefined`); - expect(renderMustacheObject(null, variables)).toMatchInlineSnapshot(`null`); - expect(renderMustacheObject(0, variables)).toMatchInlineSnapshot(`0`); - expect(renderMustacheObject(true, variables)).toMatchInlineSnapshot(`true`); - expect(renderMustacheObject('{{a}}', variables)).toMatchInlineSnapshot(`"1"`); - expect(renderMustacheObject(['{{a}}'], variables)).toMatchInlineSnapshot(` + expect(renderMustacheObject(logger, undefined, variables)).toMatchInlineSnapshot(`undefined`); + expect(renderMustacheObject(logger, null, variables)).toMatchInlineSnapshot(`null`); + expect(renderMustacheObject(logger, 0, variables)).toMatchInlineSnapshot(`0`); + expect(renderMustacheObject(logger, true, variables)).toMatchInlineSnapshot(`true`); + expect(renderMustacheObject(logger, '{{a}}', variables)).toMatchInlineSnapshot(`"1"`); + expect(renderMustacheObject(logger, ['{{a}}'], variables)).toMatchInlineSnapshot(` Array [ "1", ] @@ -324,7 +351,7 @@ describe('mustache_renderer', () => { }); it('handles errors', () => { - expect(renderMustacheObject({ a: '{{a}' }, variables)).toMatchInlineSnapshot(` + expect(renderMustacheObject(logger, { a: '{{a}' }, variables)).toMatchInlineSnapshot(` Object { "a": "error rendering mustache template \\"{{a}\\": Unclosed tag at 4", } @@ -338,7 +365,7 @@ describe('mustache_renderer', () => { b: { c: 2, d: [3, 4] }, e: [5, { f: 6, g: 7 }], }; - expect(renderMustacheObject({ x: '{{a}} - {{b}} -- {{e}} ' }, deepVariables)) + expect(renderMustacheObject(logger, { x: '{{a}} - {{b}} -- {{e}} ' }, deepVariables)) .toMatchInlineSnapshot(` Object { "x": "1 - {\\"c\\":2,\\"d\\":[3,4]} -- 5,{\\"f\\":6,\\"g\\":7} ", @@ -346,10 +373,12 @@ describe('mustache_renderer', () => { `); const expected = '1 - {"c":2,"d":[3,4]} -- 5,{"f":6,"g":7}'; - expect(renderMustacheString('{{a}} - {{b}} -- {{e}}', deepVariables, 'none')).toEqual(expected); + expect(renderMustacheString(logger, '{{a}} - {{b}} -- {{e}}', deepVariables, 'none')).toEqual( + expected + ); - expect(renderMustacheString('{{e}}', deepVariables, 'none')).toEqual('5,{"f":6,"g":7}'); - expect(renderMustacheString('{{e.asJSON}}', deepVariables, 'none')).toEqual( + expect(renderMustacheString(logger, '{{e}}', deepVariables, 'none')).toEqual('5,{"f":6,"g":7}'); + expect(renderMustacheString(logger, '{{e.asJSON}}', deepVariables, 'none')).toEqual( '[5,{"f":6,"g":7}]' ); }); @@ -395,6 +424,7 @@ describe('mustache_renderer', () => { expect( renderMustacheObject( + logger, { x: '{{context.0._source.kibana.alert.rule.category}} - {{context.0._score.test}} - {{context.0._source.kibana.alert.time_range.gte}}', }, @@ -408,6 +438,7 @@ describe('mustache_renderer', () => { expect( renderMustacheString( + logger, '{{context.0._source.kibana.alert.rule.category}} - {{context.0._score.test}} - {{context.0._source.kibana.alert.time_range.gte}}', dotVariables, 'none' @@ -416,12 +447,13 @@ describe('mustache_renderer', () => { }); it('should replace single value with the object', () => { - expect(renderMustacheObject({ x: '{{a}}' }, { a: 1, 'a.b': 2 })).toMatchInlineSnapshot(` + expect(renderMustacheObject(logger, { x: '{{a}}' }, { a: 1, 'a.b': 2 })) + .toMatchInlineSnapshot(` Object { "x": "{\\"b\\":2}", } `); - expect(renderMustacheString('{{a}}', { a: 1, 'a.b': 2 }, 'none')).toEqual('{"b":2}'); + expect(renderMustacheString(logger, '{{a}}', { a: 1, 'a.b': 2 }, 'none')).toEqual('{"b":2}'); }); }); }); diff --git a/x-pack/plugins/actions/server/lib/mustache_renderer.ts b/x-pack/plugins/actions/server/lib/mustache_renderer.ts index c478d7e9ea1c3f..bd35e499fb4260 100644 --- a/x-pack/plugins/actions/server/lib/mustache_renderer.ts +++ b/x-pack/plugins/actions/server/lib/mustache_renderer.ts @@ -7,6 +7,7 @@ import Mustache from 'mustache'; import { isString, isPlainObject, cloneDeepWith, merge } from 'lodash'; +import { Logger } from '@kbn/core/server'; import { getMustacheLambdas } from './mustache_lambdas'; export type Escape = 'markdown' | 'slack' | 'json' | 'none'; @@ -25,9 +26,14 @@ export function renderMustacheStringNoEscape(string: string, variables: Variable } // return a rendered mustache template given the specified variables and escape -export function renderMustacheString(string: string, variables: Variables, escape: Escape): string { +export function renderMustacheString( + logger: Logger, + string: string, + variables: Variables, + escape: Escape +): string { const augmentedVariables = augmentObjectVariables(variables); - const lambdas = getMustacheLambdas(); + const lambdas = getMustacheLambdas(logger); const previousMustacheEscape = Mustache.escape; Mustache.escape = getEscape(escape); @@ -43,13 +49,17 @@ export function renderMustacheString(string: string, variables: Variables, escap } // return a cloned object with all strings rendered as mustache templates -export function renderMustacheObject(params: Params, variables: Variables): Params { +export function renderMustacheObject( + logger: Logger, + params: Params, + variables: Variables +): Params { const augmentedVariables = augmentObjectVariables(variables); const result = cloneDeepWith(params, (value: unknown) => { if (!isString(value)) return; // since we're rendering a JS object, no escaping needed - return renderMustacheString(value, augmentedVariables, 'none'); + return renderMustacheString(logger, value, augmentedVariables, 'none'); }); // The return type signature for `cloneDeep()` ends up taking the return diff --git a/x-pack/plugins/actions/server/lib/number_formatter.test.ts b/x-pack/plugins/actions/server/lib/number_formatter.test.ts index e054b5a7e6ebe7..c8ab55119a343d 100644 --- a/x-pack/plugins/actions/server/lib/number_formatter.test.ts +++ b/x-pack/plugins/actions/server/lib/number_formatter.test.ts @@ -5,52 +5,76 @@ * 2.0. */ +import { loggingSystemMock } from '@kbn/core/server/mocks'; import { formatNumber } from './number_formatter'; +const logger = loggingSystemMock.create().get(); + describe('formatNumber()', () => { + beforeEach(() => { + jest.restoreAllMocks(); + }); + it('using defaults is successful', () => { - expect(formatNumber('1;;')).toMatchInlineSnapshot(`"1"`); + expect(formatNumber(logger, '1;;')).toMatchInlineSnapshot(`"1"`); }); it('error cases handled', () => { - expect(formatNumber('1')).toMatchInlineSnapshot(`"invalid format, missing semicolons: '1'"`); - expect(formatNumber('nope;;')).toMatchInlineSnapshot(`"invalid number: 'nope'"`); - expect(formatNumber('1;; nah')).toMatchInlineSnapshot( - `"invalid options: missing colon in option: 'nah'"` + expect(formatNumber(logger, '1')).toEqual(`invalid format, missing semicolons: '1'`); + expect(logger.warn).toHaveBeenCalledWith( + `mustache render error: invalid format, missing semicolons: '1'` + ); + + expect(formatNumber(logger, 'nope;;')).toEqual(`invalid number: 'nope'`); + expect(logger.warn).toHaveBeenCalledWith(`mustache render error: invalid number: 'nope'`); + + expect(formatNumber(logger, '1;; nah')).toEqual( + `invalid options: missing colon in option: 'nah'` ); - expect(formatNumber('1;; minimumIntegerDigits: N.O.')).toMatchInlineSnapshot( - `"error formatting number: minimumIntegerDigits value is out of range."` + expect(logger.warn).toHaveBeenCalledWith( + `mustache render error: invalid options: missing colon in option: 'nah'` + ); + + expect(formatNumber(logger, '1;; minimumIntegerDigits: N.O.')).toEqual( + 'error formatting number: minimumIntegerDigits value is out of range.' ); - expect(formatNumber('1;; compactDisplay: uhuh')).toMatchInlineSnapshot( - `"error formatting number: Value uhuh out of range for Intl.NumberFormat options property compactDisplay"` + expect(logger.warn).toHaveBeenCalledWith( + `mustache render error: error formatting number: minimumIntegerDigits value is out of range.` + ); + + expect(formatNumber(logger, '1;; compactDisplay: uhuh')).toEqual( + 'error formatting number: Value uhuh out of range for Intl.NumberFormat options property compactDisplay' + ); + expect(logger.warn).toHaveBeenCalledWith( + `mustache render error: error formatting number: Value uhuh out of range for Intl.NumberFormat options property compactDisplay` ); }); it('using locales is successful', () => { - expect(formatNumber('1000; de-DE;')).toMatchInlineSnapshot(`"1.000"`); + expect(formatNumber(logger, '1000; de-DE;')).toMatchInlineSnapshot(`"1.000"`); }); it('option compactDisplay is successful', () => { expect( - formatNumber(' 1000;; notation: compact, compactDisplay: short, ') + formatNumber(logger, ' 1000;; notation: compact, compactDisplay: short, ') ).toMatchInlineSnapshot(`"1K"`); }); it('option currency is successful', () => { - expect(formatNumber('1000;; currency: EUR, style: currency')).toMatchInlineSnapshot( + expect(formatNumber(logger, '1000;; currency: EUR, style: currency')).toMatchInlineSnapshot( `"€1,000.00"` ); }); it('option currencyDisplay is successful', () => { expect( - formatNumber('1000;; currency: EUR, style: currency, currencyDisplay: name') + formatNumber(logger, '1000;; currency: EUR, style: currency, currencyDisplay: name') ).toMatchInlineSnapshot(`"1,000.00 euros"`); }); it('option currencySign is successful', () => { expect( - formatNumber('-1;; currency: EUR, style: currency, currencySign: accounting') + formatNumber(logger, '-1;; currency: EUR, style: currency, currencySign: accounting') ).toMatchInlineSnapshot(`"(€1.00)"`); }); @@ -60,34 +84,36 @@ describe('formatNumber()', () => { it.skip('option localeMatcher is successful', () => {}); it('option notation is successful', () => { - expect(formatNumber('1000;; notation: engineering')).toMatchInlineSnapshot(`"1E3"`); + expect(formatNumber(logger, '1000;; notation: engineering')).toMatchInlineSnapshot(`"1E3"`); }); it('option numberingSystem is successful', () => { - expect(formatNumber('1;; numberingSystem: fullwide')).toMatchInlineSnapshot(`"1"`); + expect(formatNumber(logger, '1;; numberingSystem: fullwide')).toMatchInlineSnapshot(`"1"`); }); it('option signDisplay is successful', () => { - expect(formatNumber('1;; signDisplay: always')).toMatchInlineSnapshot(`"+1"`); + expect(formatNumber(logger, '1;; signDisplay: always')).toMatchInlineSnapshot(`"+1"`); }); it('option style is successful', () => { - expect(formatNumber('1;; style: percent')).toMatchInlineSnapshot(`"100%"`); + expect(formatNumber(logger, '1;; style: percent')).toMatchInlineSnapshot(`"100%"`); }); it('option unit is successful', () => { - expect(formatNumber('1;; style: unit, unit: acre-per-liter')).toMatchInlineSnapshot(`"1 ac/L"`); + expect(formatNumber(logger, '1;; style: unit, unit: acre-per-liter')).toMatchInlineSnapshot( + `"1 ac/L"` + ); }); it('option unitDisplay is successful', () => { expect( - formatNumber('1;; style: unit, unit: petabyte, unitDisplay: narrow') + formatNumber(logger, '1;; style: unit, unit: petabyte, unitDisplay: narrow') ).toMatchInlineSnapshot(`"1PB"`); }); it('option useGrouping is successful', () => { - expect(formatNumber('1000;; useGrouping: true ')).toMatchInlineSnapshot(`"1,000"`); - expect(formatNumber('1000;; useGrouping: false')).toMatchInlineSnapshot(`"1000"`); + expect(formatNumber(logger, '1000;; useGrouping: true ')).toMatchInlineSnapshot(`"1,000"`); + expect(formatNumber(logger, '1000;; useGrouping: false')).toMatchInlineSnapshot(`"1000"`); }); // not yet supported in node.js @@ -103,22 +129,28 @@ describe('formatNumber()', () => { it.skip('option trailingZeroDisplay is successful', () => {}); it('option minimumIntegerDigits is successful', () => { - expect(formatNumber('1;; minimumIntegerDigits: 7')).toMatchInlineSnapshot(`"0,000,001"`); + expect(formatNumber(logger, '1;; minimumIntegerDigits: 7')).toMatchInlineSnapshot( + `"0,000,001"` + ); }); it('option minimumFractionDigits is successful', () => { - expect(formatNumber('1;; minimumFractionDigits: 3')).toMatchInlineSnapshot(`"1.000"`); + expect(formatNumber(logger, '1;; minimumFractionDigits: 3')).toMatchInlineSnapshot(`"1.000"`); }); it('option maximumFractionDigits is successful', () => { - expect(formatNumber('1.234;; maximumFractionDigits: 2')).toMatchInlineSnapshot(`"1.23"`); + expect(formatNumber(logger, '1.234;; maximumFractionDigits: 2')).toMatchInlineSnapshot( + `"1.23"` + ); }); it('option minimumSignificantDigits is successful', () => { - expect(formatNumber('1;; minimumSignificantDigits: 3')).toMatchInlineSnapshot(`"1.00"`); + expect(formatNumber(logger, '1;; minimumSignificantDigits: 3')).toMatchInlineSnapshot(`"1.00"`); }); it('option maximumSignificantDigits is successful', () => { - expect(formatNumber('123456;; maximumSignificantDigits: 4')).toMatchInlineSnapshot(`"123,500"`); + expect(formatNumber(logger, '123456;; maximumSignificantDigits: 4')).toMatchInlineSnapshot( + `"123,500"` + ); }); }); diff --git a/x-pack/plugins/actions/server/lib/number_formatter.ts b/x-pack/plugins/actions/server/lib/number_formatter.ts index b8a13efa39828c..f1a2b3367d52f2 100644 --- a/x-pack/plugins/actions/server/lib/number_formatter.ts +++ b/x-pack/plugins/actions/server/lib/number_formatter.ts @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { Logger } from '@kbn/core/server'; const DEFAULT_LOCALES = ['en-US']; @@ -30,24 +31,28 @@ const DEFAULT_LOCALES = ['en-US']; * @param numberAndFormat string containing a number and formatting options * @returns number formatted according to the options */ -export function formatNumber(numberLocalesOptions: string): string { +export function formatNumber(logger: Logger, numberLocalesOptions: string): string { const [numString, localesString, optionsString] = splitNumberLocalesOptions(numberLocalesOptions); if (localesString === undefined || optionsString === undefined) { - return `invalid format, missing semicolons: '${numberLocalesOptions}'`; + return logAndReturnErr(logger, `invalid format, missing semicolons: '${numberLocalesOptions}'`); } const num = parseFloat(numString); - if (isNaN(num)) return `invalid number: '${numString}'`; + if (isNaN(num)) { + return logAndReturnErr(logger, `invalid number: '${numString}'`); + } const locales = getLocales(localesString); const [options, optionsError] = getOptions(optionsString); - if (optionsError) return `invalid options: ${optionsError}`; + if (optionsError) { + return logAndReturnErr(logger, `invalid options: ${optionsError}`); + } try { return new Intl.NumberFormat(locales, options).format(num); } catch (err) { - return `error formatting number: ${err.message}`; + return logAndReturnErr(logger, `error formatting number: ${err.message}`); } } @@ -110,3 +115,8 @@ function splitNumberLocalesOptions( const [num, locales, options] = numberLocalesOptions.split(';', 3); return [num.trim(), locales?.trim(), options?.trim()]; } + +function logAndReturnErr(logger: Logger, errMessage: string): string { + logger.warn(`mustache render error: ${errMessage}`); + return errMessage; +} diff --git a/x-pack/plugins/actions/server/mocks.ts b/x-pack/plugins/actions/server/mocks.ts index 70a2cfd9f8e85d..7655ad6de945da 100644 --- a/x-pack/plugins/actions/server/mocks.ts +++ b/x-pack/plugins/actions/server/mocks.ts @@ -59,7 +59,14 @@ export function renderActionParameterTemplatesDefault( params: Record, variables: Record ) { - return renderActionParameterTemplates(undefined, actionTypeId, actionId, params, variables); + return renderActionParameterTemplates( + logger, + undefined, + actionTypeId, + actionId, + params, + variables + ); } const createServicesMock = () => { diff --git a/x-pack/plugins/actions/server/plugin.test.ts b/x-pack/plugins/actions/server/plugin.test.ts index dd936600d7055b..004da4cac03398 100644 --- a/x-pack/plugins/actions/server/plugin.test.ts +++ b/x-pack/plugins/actions/server/plugin.test.ts @@ -24,7 +24,12 @@ import { ActionsPluginsStart, PluginSetupContract, } from './plugin'; -import { AlertHistoryEsIndexConnectorId } from '../common'; +import { + AlertHistoryEsIndexConnectorId, + DEFAULT_MICROSOFT_EXCHANGE_URL, + DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + DEFAULT_MICROSOFT_GRAPH_API_URL, +} from '../common'; const executor: ExecutorType<{}, {}, {}, void> = async (options) => { return { status: 'ok', actionId: options.actionId }; @@ -51,6 +56,9 @@ function getConfig(overrides = {}) { maxResponseContentLength: new ByteSizeValue(1000000), responseTimeout: moment.duration('60s'), enableFooterInEmail: true, + microsoftGraphApiUrl: DEFAULT_MICROSOFT_GRAPH_API_URL, + microsoftGraphApiScope: DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + microsoftExchangeUrl: DEFAULT_MICROSOFT_EXCHANGE_URL, ...overrides, }; } @@ -73,6 +81,9 @@ describe('Actions Plugin', () => { maxResponseContentLength: new ByteSizeValue(1000000), responseTimeout: moment.duration(60000), enableFooterInEmail: true, + microsoftGraphApiUrl: DEFAULT_MICROSOFT_GRAPH_API_URL, + microsoftGraphApiScope: DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + microsoftExchangeUrl: DEFAULT_MICROSOFT_EXCHANGE_URL, }); plugin = new ActionsPlugin(context); coreSetup = coreMock.createSetup(); @@ -534,6 +545,9 @@ describe('Actions Plugin', () => { maxResponseContentLength: new ByteSizeValue(1000000), responseTimeout: moment.duration(60000), enableFooterInEmail: true, + microsoftGraphApiUrl: DEFAULT_MICROSOFT_GRAPH_API_URL, + microsoftGraphApiScope: DEFAULT_MICROSOFT_GRAPH_API_SCOPE, + microsoftExchangeUrl: DEFAULT_MICROSOFT_EXCHANGE_URL, }); plugin = new ActionsPlugin(context); coreSetup = coreMock.createSetup(); diff --git a/x-pack/plugins/actions/server/plugin.ts b/x-pack/plugins/actions/server/plugin.ts index 60a27eb04e411f..6479ed1b1d05ac 100644 --- a/x-pack/plugins/actions/server/plugin.ts +++ b/x-pack/plugins/actions/server/plugin.ts @@ -585,7 +585,7 @@ export class ActionsPlugin implements Plugin - renderActionParameterTemplates(actionTypeRegistry, ...args), + renderActionParameterTemplates(this.logger, actionTypeRegistry, ...args), }; } @@ -743,6 +743,7 @@ export class ActionsPlugin implements Plugin( + logger: Logger, actionTypeRegistry: ActionTypeRegistry | undefined, actionTypeId: string, actionId: string, @@ -751,8 +752,8 @@ export function renderActionParameterTemplates { const actionId = 'action-id'; const { renderParameterTemplates } = actionTypeRegistry.register.mock.calls[0][0]; - const rendered = renderParameterTemplates?.(params, variables, actionId); + const rendered = renderParameterTemplates?.(logger, params, variables, actionId); - expect(mockRenderParameterTemplates).toHaveBeenCalledWith(params, variables, actionId); + expect(mockRenderParameterTemplates).toHaveBeenCalledWith(logger, params, variables, actionId); expect(rendered).toBe(renderedVariables); }); }); diff --git a/x-pack/plugins/actions/server/types.ts b/x-pack/plugins/actions/server/types.ts index 0d9cc99ac61861..343d9b3dde4f6a 100644 --- a/x-pack/plugins/actions/server/types.ts +++ b/x-pack/plugins/actions/server/types.ts @@ -119,6 +119,7 @@ export interface ActionValidationService { } export type RenderParameterTemplates = ( + logger: Logger, params: Params, variables: Record, actionId?: string diff --git a/x-pack/plugins/aiops/common/api/log_categorization/create_categorize_query.ts b/x-pack/plugins/aiops/common/api/log_categorization/create_categorize_query.ts index 1c5f5cbbbc0cdc..c3289d1527f2b4 100644 --- a/x-pack/plugins/aiops/common/api/log_categorization/create_categorize_query.ts +++ b/x-pack/plugins/aiops/common/api/log_categorization/create_categorize_query.ts @@ -10,11 +10,11 @@ import { cloneDeep } from 'lodash'; import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; export function createCategorizeQuery( - queryIn: QueryDslQueryContainer, + queryIn: QueryDslQueryContainer | undefined, timeField: string, timeRange: { from: number; to: number } | undefined ) { - const query = cloneDeep(queryIn); + const query = cloneDeep(queryIn ?? { match_all: {} }); if (query.bool === undefined) { query.bool = {}; diff --git a/x-pack/plugins/aiops/public/application/url_state/common.test.ts b/x-pack/plugins/aiops/public/application/url_state/common.test.ts new file mode 100644 index 00000000000000..5a972eec7715b0 --- /dev/null +++ b/x-pack/plugins/aiops/public/application/url_state/common.test.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isDefaultSearchQuery } from './common'; + +describe('isDefaultSearchQuery', () => { + it('returns true for default search query', () => { + expect(isDefaultSearchQuery({ match_all: {} })).toBe(true); + }); + + it('returns false for non default search query', () => { + expect( + isDefaultSearchQuery({ + bool: { must_not: [{ term: { 'the-term': 'the-value' } }] }, + }) + ).toBe(false); + }); +}); diff --git a/x-pack/plugins/aiops/public/application/url_state/common.ts b/x-pack/plugins/aiops/public/application/url_state/common.ts index 8ca9ec848150ce..eb037dabb9648d 100644 --- a/x-pack/plugins/aiops/public/application/url_state/common.ts +++ b/x-pack/plugins/aiops/public/application/url_state/common.ts @@ -8,11 +8,16 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { Filter, Query } from '@kbn/es-query'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { SEARCH_QUERY_LANGUAGE, type SearchQueryLanguage } from '@kbn/ml-query-utils'; const defaultSearchQuery = { match_all: {}, +} as const; + +export const isDefaultSearchQuery = (arg: unknown): arg is typeof defaultSearchQuery => { + return isPopulatedObject(arg, ['match_all']); }; export interface AiOpsPageUrlState { diff --git a/x-pack/plugins/aiops/public/components/log_categorization/use_discover_links.ts b/x-pack/plugins/aiops/public/components/log_categorization/use_discover_links.ts index 8d83a884156891..9d80758797324f 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/use_discover_links.ts +++ b/x-pack/plugins/aiops/public/components/log_categorization/use_discover_links.ts @@ -56,10 +56,7 @@ export function useDiscoverLinks() { }, }); - let path = basePath.get(); - path += '/app/discover#/'; - path += '?_g=' + _g; - path += '&_a=' + encodeURIComponent(_a); + const path = `${basePath.get()}/app/discover#/?_g=${_g}&_a=${encodeURIComponent(_a)}`; window.open(path, '_blank'); }; diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx index 51244a23006345..daac98f67f7502 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content.tsx @@ -77,7 +77,7 @@ export interface LogRateAnalysisContentProps { /** Optional callback that exposes data of the completed analysis */ onAnalysisCompleted?: (d: LogRateAnalysisResultsData) => void; /** Optional callback that exposes current window parameters */ - onWindowParametersChange?: (wp?: WindowParameters) => void; + onWindowParametersChange?: (wp?: WindowParameters, replace?: boolean) => void; /** Identifier to indicate the plugin utilizing the component */ embeddingOrigin: string; } @@ -126,7 +126,7 @@ export const LogRateAnalysisContent: FC = ({ windowParametersTouched.current = true; if (onWindowParametersChange) { - onWindowParametersChange(windowParameters); + onWindowParametersChange(windowParameters, true); } }, [onWindowParametersChange, windowParameters]); diff --git a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_page.tsx b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_page.tsx index 4931503b7366e8..22b6a68006a5e6 100644 --- a/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_page.tsx +++ b/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_page.tsx @@ -113,10 +113,14 @@ export const LogRateAnalysisPage: FC = ({ stickyHistogram }) => { useEffect(() => { if (globalState?.time !== undefined) { - timefilter.setTime({ - from: globalState.time.from, - to: globalState.time.to, - }); + if ( + !isEqual({ from: globalState.time.from, to: globalState.time.to }, timefilter.getTime()) + ) { + timefilter.setTime({ + from: globalState.time.from, + to: globalState.time.to, + }); + } } // eslint-disable-next-line react-hooks/exhaustive-deps }, [JSON.stringify(globalState?.time), timefilter]); @@ -136,11 +140,14 @@ export const LogRateAnalysisPage: FC = ({ stickyHistogram }) => { }); }, [dataService, searchQueryLanguage, searchString]); - const onWindowParametersHandler = (wp?: WindowParameters) => { - if (!isEqual(wp, stateFromUrl.wp)) { - setUrlState({ - wp: windowParametersToAppState(wp), - }); + const onWindowParametersHandler = (wp?: WindowParameters, replace = false) => { + if (!isEqual(windowParametersToAppState(wp), stateFromUrl.wp)) { + setUrlState( + { + wp: windowParametersToAppState(wp), + }, + replace + ); } }; diff --git a/x-pack/plugins/aiops/public/hooks/use_data.ts b/x-pack/plugins/aiops/public/hooks/use_data.ts index 934a470588960b..4f0e2526d7a1db 100644 --- a/x-pack/plugins/aiops/public/hooks/use_data.ts +++ b/x-pack/plugins/aiops/public/hooks/use_data.ts @@ -54,9 +54,14 @@ export const useData = ( timeRangeSelector: selectedDataView?.timeFieldName !== undefined, autoRefreshSelector: true, }); + const timeRangeMemoized = useMemo( + () => timefilter.getActiveBounds(), + // eslint-disable-next-line react-hooks/exhaustive-deps + [JSON.stringify(timefilter.getActiveBounds())] + ); const fieldStatsRequest: DocumentStatsSearchStrategyParams | undefined = useMemo(() => { - const timefilterActiveBounds = timeRange ?? timefilter.getActiveBounds(); + const timefilterActiveBounds = timeRange ?? timeRangeMemoized; if (timefilterActiveBounds !== undefined) { _timeBuckets.setInterval('auto'); _timeBuckets.setBounds(timefilterActiveBounds); @@ -72,7 +77,7 @@ export const useData = ( }; } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [lastRefresh, searchQuery, timeRange]); + }, [lastRefresh, searchQuery, timeRange, timeRangeMemoized]); const overallStatsRequest = useMemo(() => { return fieldStatsRequest diff --git a/x-pack/plugins/aiops/public/hooks/use_search.ts b/x-pack/plugins/aiops/public/hooks/use_search.ts index 8c62db36289fdc..060e87dab59c5a 100644 --- a/x-pack/plugins/aiops/public/hooks/use_search.ts +++ b/x-pack/plugins/aiops/public/hooks/use_search.ts @@ -9,9 +9,15 @@ import { useMemo } from 'react'; import type { DataView } from '@kbn/data-views-plugin/public'; import type { SavedSearch } from '@kbn/saved-search-plugin/public'; +import { isQuery } from '@kbn/data-plugin/public'; import { getEsQueryFromSavedSearch } from '../application/utils/search_utils'; -import type { AiOpsIndexBasedAppState } from '../application/url_state/common'; +import { + isDefaultSearchQuery, + type AiOpsIndexBasedAppState, +} from '../application/url_state/common'; +import { createMergedEsQuery } from '../application/utils/search_utils'; + import { useAiopsAppContext } from './use_aiops_app_context'; export const useSearch = ( @@ -37,23 +43,44 @@ export const useSearch = ( [dataView, uiSettings, savedSearch, filterManager] ); - if (searchData === undefined || (aiopsListState && aiopsListState.searchString !== '')) { - if (aiopsListState?.filters && readOnly === false) { - const globalFilters = filterManager?.getGlobalFilters(); + return useMemo(() => { + if (searchData === undefined || (aiopsListState && aiopsListState.searchString !== '')) { + if (aiopsListState?.filters && readOnly === false) { + const globalFilters = filterManager?.getGlobalFilters(); + + if (filterManager) filterManager.setFilters(aiopsListState.filters); + if (globalFilters) filterManager?.addFilters(globalFilters); + } + + // In cases where the url state contains only a KQL query and not yet + // the transformed ES query we regenerate it. This may happen if we restore + // url state on page load coming from another page like ML's Single Metric Viewer. + let searchQuery = aiopsListState?.searchQuery; + const query = { + language: aiopsListState?.searchQueryLanguage, + query: aiopsListState?.searchString, + }; + if ( + (aiopsListState.searchString !== '' || + (Array.isArray(aiopsListState.filters) && aiopsListState.filters.length > 0)) && + (isDefaultSearchQuery(searchQuery) || searchQuery === undefined) && + isQuery(query) + ) { + searchQuery = createMergedEsQuery(query, aiopsListState.filters, dataView, uiSettings); + } - if (filterManager) filterManager.setFilters(aiopsListState.filters); - if (globalFilters) filterManager?.addFilters(globalFilters); + return { + ...(isDefaultSearchQuery(searchQuery) ? {} : { searchQuery }), + searchString: aiopsListState?.searchString, + searchQueryLanguage: aiopsListState?.searchQueryLanguage, + }; + } else { + return { + searchQuery: searchData.searchQuery, + searchString: searchData.searchString, + searchQueryLanguage: searchData.queryLanguage, + }; } - return { - searchQuery: aiopsListState?.searchQuery, - searchString: aiopsListState?.searchString, - searchQueryLanguage: aiopsListState?.searchQueryLanguage, - }; - } else { - return { - searchQuery: searchData.searchQuery, - searchString: searchData.searchString, - searchQueryLanguage: searchData.queryLanguage, - }; - } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [JSON.stringify([searchData, aiopsListState])]); }; diff --git a/x-pack/plugins/apm/public/components/app/settings/general_settings/index.tsx b/x-pack/plugins/apm/public/components/app/settings/general_settings/index.tsx index 114d080fb3a343..5eae7486a92909 100644 --- a/x-pack/plugins/apm/public/components/app/settings/general_settings/index.tsx +++ b/x-pack/plugins/apm/public/components/app/settings/general_settings/index.tsx @@ -30,7 +30,6 @@ import { useUiTracker, } from '@kbn/observability-shared-plugin/public'; import { FieldRowProvider } from '@kbn/management-settings-components-field-row'; -import { ValueValidation } from '@kbn/core-ui-settings-browser/src/types'; import { useApmFeatureFlag } from '../../../../hooks/use_apm_feature_flag'; import { ApmFeatureFlagName } from '../../../../../common/apm_feature_flags'; import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; @@ -66,7 +65,7 @@ function getApmSettingsKeys(isProfilingIntegrationEnabled: boolean) { export function GeneralSettings() { const trackApmEvent = useUiTracker({ app: 'apm' }); - const { docLinks, notifications } = useApmPluginContext().core; + const { docLinks, notifications, settings } = useApmPluginContext().core; const isProfilingIntegrationEnabled = useApmFeatureFlag( ApmFeatureFlagName.ProfilingIntegrationAvailable ); @@ -101,11 +100,9 @@ export function GeneralSettings() { } } - // We don't validate the user input on these settings - const settingsValidationResponse: ValueValidation = { - successfulValidation: true, - valid: true, - }; + const hasInvalidChanges = Object.values(unsavedChanges).some( + ({ isInvalid }) => isInvalid + ); return ( <> @@ -118,7 +115,8 @@ export function GeneralSettings() { links: docLinks.links.management, showDanger: (message: string) => notifications.toasts.addDanger(message), - validateChange: async () => settingsValidationResponse, + validateChange: (key: string, value: any) => + settings.client.validateValue(key, value), }} > )} diff --git a/x-pack/plugins/apm/public/components/shared/transaction_action_menu/sections.test.ts b/x-pack/plugins/apm/public/components/shared/transaction_action_menu/sections.test.ts index dd1cfa389453f4..5e9e9d999a88e2 100644 --- a/x-pack/plugins/apm/public/components/shared/transaction_action_menu/sections.test.ts +++ b/x-pack/plugins/apm/public/components/shared/transaction_action_menu/sections.test.ts @@ -15,7 +15,7 @@ import { } from '../../routing/apm_route_config'; import { logsLocatorsMock, - observabilityLogExplorerLocatorsMock, + observabilityLogsExplorerLocatorsMock, } from '../../../context/apm_plugin/mock_apm_plugin_context'; const apmRouter = { @@ -24,7 +24,7 @@ const apmRouter = { `some-basepath/app/apm${apmRouterBase.link(...args)}`, } as ApmRouter; -const { allDatasetsLocator } = observabilityLogExplorerLocatorsMock; +const { allDatasetsLocator } = observabilityLogsExplorerLocatorsMock; const { nodeLogsLocator, traceLogsLocator } = logsLocatorsMock; const expectLogsLocatorsToBeCalled = () => { diff --git a/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx b/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx index 708e9fad578891..8c306354aa4ff9 100644 --- a/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx +++ b/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx @@ -132,7 +132,7 @@ const mockPlugin = { }, }; -export const observabilityLogExplorerLocatorsMock = { +export const observabilityLogsExplorerLocatorsMock = { allDatasetsLocator: sharePluginMock.createLocator(), singleDatasetLocator: sharePluginMock.createLocator(), }; diff --git a/x-pack/plugins/cases/public/components/all_cases/all_cases_list.tsx b/x-pack/plugins/cases/public/components/all_cases/all_cases_list.tsx index 449f7a190f6f00..735ff95a5edf79 100644 --- a/x-pack/plugins/cases/public/components/all_cases/all_cases_list.tsx +++ b/x-pack/plugins/cases/public/components/all_cases/all_cases_list.tsx @@ -5,8 +5,8 @@ * 2.0. */ -import React, { useCallback, useMemo, useRef, useState } from 'react'; -import type { EuiBasicTable, EuiTableSelectionType } from '@elastic/eui'; +import React, { useCallback, useMemo, useState } from 'react'; +import type { EuiTableSelectionType } from '@elastic/eui'; import { EuiProgress } from '@elastic/eui'; import { difference, head, isEmpty } from 'lodash/fp'; import styled, { css } from 'styled-components'; @@ -112,11 +112,8 @@ export const AllCasesList = React.memo( [queryParams.sortField, queryParams.sortOrder] ); - const tableRef = useRef(null); - const deselectCases = useCallback(() => { setSelectedCases([]); - tableRef.current?.setSelection([]); }, [setSelectedCases]); const tableOnChangeCallback = useCallback( @@ -175,7 +172,7 @@ export const AllCasesList = React.memo( const euiBasicTableSelectionProps = useMemo>( () => ({ onSelectionChange: setSelectedCases, - initialSelected: selectedCases, + selected: selectedCases, selectable: () => !isReadOnlyPermissions(permissions), }), [permissions, selectedCases] @@ -229,7 +226,6 @@ export const AllCasesList = React.memo( selectedCases={selectedCases} selection={euiBasicTableSelectionProps} sorting={sorting} - tableRef={tableRef} tableRowProps={tableRowProps} deselectCases={deselectCases} selectedColumns={selectedColumns} diff --git a/x-pack/plugins/cases/public/components/all_cases/table.tsx b/x-pack/plugins/cases/public/components/all_cases/table.tsx index e50d54b8a9d6f8..edd7ab7e9955b7 100644 --- a/x-pack/plugins/cases/public/components/all_cases/table.tsx +++ b/x-pack/plugins/cases/public/components/all_cases/table.tsx @@ -35,7 +35,7 @@ interface CasesTableProps { selectedCases: CasesUI; selection: EuiTableSelectionType; sorting: EuiBasicTableProps['sorting']; - tableRef: MutableRefObject; + tableRef?: MutableRefObject; tableRowProps: EuiBasicTableProps['rowProps']; deselectCases: () => void; selectedColumns: CasesColumnSelection[]; diff --git a/x-pack/plugins/cloud_defend/server/plugin.test.ts b/x-pack/plugins/cloud_defend/server/plugin.test.ts index 2822385cd49e45..8f2b7fd9998fc1 100644 --- a/x-pack/plugins/cloud_defend/server/plugin.test.ts +++ b/x-pack/plugins/cloud_defend/server/plugin.test.ts @@ -55,9 +55,6 @@ const createMockFleetStartContract = (): DeeplyMockedKeys => fromRequest: jest.fn(async (_) => createFleetAuthzMock()), }, fleetSetupCompleted: jest.fn().mockResolvedValue(undefined), - esIndexPatternService: { - getESIndexPattern: jest.fn().mockResolvedValue(undefined), - }, // @ts-expect-error 2322 agentService: createMockAgentService(), // @ts-expect-error 2322 diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts index dd893ff3568651..db6883810d672e 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_stats_api.ts @@ -15,8 +15,8 @@ import { } from '../../../common/constants'; // TODO: consolidate both hooks into one hook with a dynamic key -const getCspmStatsKey = ['csp_cspm_dashboard_stats']; -const getKspmStatsKey = ['csp_kspm_dashboard_stats']; +export const getCspmStatsKey = ['csp_cspm_dashboard_stats']; +export const getKspmStatsKey = ['csp_kspm_dashboard_stats']; export const getStatsRoute = (policyTemplate: PosturePolicyTemplate) => { return STATS_ROUTE_PATH.replace('{policy_template}', policyTemplate); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx index bf2c38a54e377d..13b4750317810c 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks.tsx @@ -131,7 +131,7 @@ const BenchmarkSearchField = ({ isLoading={isLoading} placeholder={i18n.translate( 'xpack.csp.benchmarks.benchmarkSearchField.searchPlaceholder', - { defaultMessage: 'Search by benchmark Name' } + { defaultMessage: 'Search by Benchmark Name' } )} incremental /> @@ -151,9 +151,11 @@ export const Benchmarks = () => { }); const queryResult = useCspBenchmarkIntegrationsV2(); + const lowerCaseQueryName = query.name.toLowerCase(); const benchmarkResult = - queryResult.data?.items.filter((obj) => getBenchmarkCisName(obj.id)?.includes(query.name)) || - []; + queryResult.data?.items.filter((obj) => + getBenchmarkCisName(obj.id)?.toLowerCase().includes(lowerCaseQueryName) + ) || []; const totalItemCount = queryResult.data?.items.length || 0; // Check if we have any CSP Integration or not diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx index 8eaac69ec4e787..25690410a9780c 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/benchmarks_table.tsx @@ -16,7 +16,7 @@ import { EuiFlexItem, EuiLink, } from '@elastic/eui'; -import React from 'react'; +import React, { useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { generatePath } from 'react-router-dom'; @@ -243,6 +243,12 @@ export const BenchmarksTable = ({ totalItemCount, }; + const benchmarksSorted = useMemo(() => { + return [...benchmarks].sort((benchmarkDataA, benchmarkDataB) => + benchmarkDataA.id.localeCompare(benchmarkDataB.id) + ); + }, [benchmarks]); + const onChange = ({ page }: CriteriaWithPagination) => { setQuery({ page: { ...page, index: page.index + 1 } }); }; @@ -254,7 +260,7 @@ export const BenchmarksTable = ({ return ( [item.id, item.version].join('/')} pagination={pagination} diff --git a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts index 1683c3e63d2bd4..3b21e7978e8390 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/benchmarks/use_csp_benchmark_integrations.ts @@ -12,8 +12,7 @@ import { useKibana } from '../../common/hooks/use_kibana'; import type { GetBenchmarkResponse } from '../../../common/types/latest'; import type { GetBenchmarkResponse as GetBenchmarkResponseV1 } from '../../../common/types/benchmarks/v1'; -const QUERY_KEY_V1 = 'csp_benchmark_integrations_v1'; -const QUERY_KEY_V2 = 'csp_benchmark_integrations_v2'; +const BENCHMARK_INTEGRATION_QUERY_KEY_V1 = 'csp_benchmark_integrations_v1'; export interface UseCspBenchmarkIntegrationsProps { name: string; @@ -40,7 +39,7 @@ export const useCspBenchmarkIntegrationsV1 = ({ }; return useQuery( - [QUERY_KEY_V1, query], + [BENCHMARK_INTEGRATION_QUERY_KEY_V1, query], () => http.get(BENCHMARKS_ROUTE_PATH, { query, @@ -50,11 +49,13 @@ export const useCspBenchmarkIntegrationsV1 = ({ ); }; +export const BENCHMARK_INTEGRATION_QUERY_KEY_V2 = ['csp_benchmark_integrations_v2']; + export const useCspBenchmarkIntegrationsV2 = () => { const { http } = useKibana().services; return useQuery( - [QUERY_KEY_V2], + BENCHMARK_INTEGRATION_QUERY_KEY_V2, () => http.get(BENCHMARKS_ROUTE_PATH, { version: '2', diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx index d986d5a97c2f65..aff4feeed048ac 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_charts/compliance_score_chart.tsx @@ -163,7 +163,8 @@ const PercentageLabels = ({ ); }; -const getPostureScorePercentage = (postureScore: number): string => `${Math.round(postureScore)}%`; +export const getPostureScorePercentage = (postureScore: number): string => + `${Math.round(postureScore)}%`; const PercentageInfo = ({ compact, diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts index a0c957907c0af6..ceada5c3148ebc 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_get_benchmark_rules_state_api.ts @@ -13,15 +13,13 @@ import { } from '../../../../common/constants'; import { useKibana } from '../../../common/hooks/use_kibana'; -const getRuleStatesKey = 'get_rules_state_key'; +export const getRuleStatesKey = ['get_rules_state_key']; export const useGetCspBenchmarkRulesStatesApi = () => { const { http } = useKibana().services; - return useQuery( - [getRuleStatesKey], - () => - http.get(CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH, { - version: CSP_GET_BENCHMARK_RULES_STATE_API_CURRENT_VERSION, - }) + return useQuery(getRuleStatesKey, () => + http.get(CSP_GET_BENCHMARK_RULES_STATE_ROUTE_PATH, { + version: CSP_GET_BENCHMARK_RULES_STATE_API_CURRENT_VERSION, + }) ); }; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts index 9968bb9c414bf0..5a516920df1bd2 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/latest_findings/use_latest_findings.ts @@ -133,7 +133,7 @@ export const useLatestFindings = (options: UseFindingsOptions) => { * the last loaded record to be used as a from parameter to fetch the next chunk of data. */ return useInfiniteQuery( - ['csp_findings', { params: options }], + ['csp_findings', { params: options }, rulesStates], async ({ pageParam }) => { const { rawResponse: { hits, aggregations }, diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/change_csp_rule_state.ts b/x-pack/plugins/cloud_security_posture/public/pages/rules/change_csp_rule_state.ts index 68fca9056e74ed..a574ec5f3efee4 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/change_csp_rule_state.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/change_csp_rule_state.ts @@ -6,6 +6,10 @@ */ import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { useQueryClient } from '@tanstack/react-query'; +import { getRuleStatesKey } from '../configurations/latest_findings/use_get_benchmark_rules_state_api'; +import { getCspmStatsKey, getKspmStatsKey } from '../../common/api'; +import { BENCHMARK_INTEGRATION_QUERY_KEY_V2 } from '../benchmarks/use_csp_benchmark_integrations'; import { CspBenchmarkRulesBulkActionRequestSchema, RuleStateAttributes, @@ -15,18 +19,26 @@ import { CSP_BENCHMARK_RULES_BULK_ACTION_ROUTE_PATH } from '../../../common/cons export type RuleStateAttributesWithoutStates = Omit; export const useChangeCspRuleState = () => { const { http } = useKibana().services; + const queryClient = useQueryClient(); return async (actionOnRule: 'mute' | 'unmute', ruleIds: RuleStateAttributesWithoutStates[]) => { const query = { action: actionOnRule, rules: ruleIds, }; - return await http?.post( + + const cspRuleBulkActionResponse = await http?.post( CSP_BENCHMARK_RULES_BULK_ACTION_ROUTE_PATH, { version: '1', body: JSON.stringify(query), } ); + await queryClient.invalidateQueries(BENCHMARK_INTEGRATION_QUERY_KEY_V2); // causing rules counters refetch + await queryClient.invalidateQueries(getCspmStatsKey); // causing cloud dashboard refetch + await queryClient.invalidateQueries(getKspmStatsKey); // causing kubernetes dashboard refetch + await queryClient.invalidateQueries(getRuleStatesKey); // the rule states are part of the findings query key, invalidating them will cause the latest findings to refetch only after the rules states were changed + + return cspRuleBulkActionResponse; }; }; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_container.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_container.tsx index 7fb1fb3a58f555..62d1371b01f3f8 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_container.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_container.tsx @@ -67,9 +67,8 @@ const MAX_ITEMS_PER_PAGE = 10000; export const RulesContainer = () => { const params = useParams(); const [selectedRuleId, setSelectedRuleId] = useState(null); - const { pageSize, setPageSize } = usePageSize(LOCAL_STORAGE_PAGE_SIZE_RULES_KEY); - const [enabledDisabledItemsFilter, setEnabledDisabledItemsFilter] = useState('no-filter'); + const { pageSize, setPageSize } = usePageSize(LOCAL_STORAGE_PAGE_SIZE_RULES_KEY); const [rulesQuery, setRulesQuery] = useState({ section: undefined, @@ -89,7 +88,7 @@ export const RulesContainer = () => { page: 1, perPage: MAX_ITEMS_PER_PAGE, sortField: 'metadata.benchmark.rule_number', - sortOrder: 'asc', + sortOrder: rulesQuery.sortOrder, }, params.benchmarkId, params.benchmarkVersion @@ -109,6 +108,7 @@ export const RulesContainer = () => { const rulesStates = useCspGetRulesStates(); const arrayRulesStates: RuleStateAttributes[] = Object.values(rulesStates.data || {}); + const filteredRulesStates: RuleStateAttributes[] = arrayRulesStates.filter( (ruleState: RuleStateAttributes) => ruleState.benchmark_id === params.benchmarkId && @@ -135,6 +135,8 @@ export const RulesContainer = () => { }); }, [data, rulesStates?.data]); + const mutedRulesCount = rulesWithStates.filter((rule) => rule.state === 'muted').length; + const filteredRulesWithStates: CspBenchmarkRulesWithStates[] = useMemo(() => { if (enabledDisabledItemsFilter === 'disabled') return rulesWithStates?.filter((rule) => rule?.state === 'muted'); @@ -147,13 +149,16 @@ export const RulesContainer = () => { () => allRules.data?.items.map((rule) => rule.metadata.section), [allRules.data] ); + const ruleNumberList = useMemo( () => allRules.data?.items.map((rule) => rule.metadata.benchmark.rule_number || ''), [allRules.data] ); + const cleanedSectionList = [...new Set(sectionList)].sort((a, b) => { return a.localeCompare(b, 'en', { sensitivity: 'base' }); }); + const cleanedRuleNumberList = [...new Set(ruleNumberList)].sort(compareVersions); const rulesPageData = useMemo( @@ -181,7 +186,10 @@ export const RulesContainer = () => { return (
- + @@ -200,12 +208,15 @@ export const RulesContainer = () => { selectedRules={selectedRules} refetchRulesStates={rulesStates.refetch} setEnabledDisabledItemsFilter={setEnabledDisabledItemsFilter} - currentEnabledDisabledItemsFilterState={enabledDisabledItemsFilter} + enabledDisabledItemsFilterState={enabledDisabledItemsFilter} setSelectAllRules={setSelectAllRules} setSelectedRules={setSelectedRules} /> + setRulesQuery((currentQuery) => ({ ...currentQuery, sortOrder: value })) + } rules_page={rulesPageData.rules_page} total={rulesPageData.total} error={rulesPageData.error} diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx index 469d2eff5f42da..9c311406fe172b 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_counters.tsx @@ -18,6 +18,8 @@ import { i18n } from '@kbn/i18n'; import { useParams } from 'react-router-dom'; import { Chart, Partition, PartitionLayout, Settings } from '@elastic/charts'; import { FormattedMessage } from '@kbn/i18n-react'; +import { getPostureScorePercentage } from '../compliance_dashboard/compliance_charts/compliance_score_chart'; +import { RULE_COUNTERS_TEST_SUBJ } from './test_subjects'; import noDataIllustration from '../../assets/illustrations/no_data_illustration.svg'; import { BenchmarksCisId } from '../../../common/types/benchmarks/v2'; import { useCspIntegrationLink } from '../../common/navigation/use_csp_integration_link'; @@ -88,7 +90,13 @@ const EvaluationPieChart = ({ failed, passed }: { failed: number; passed: number ); }; -export const RulesCounters = () => { +export const RulesCounters = ({ + mutedRulesCount, + setEnabledDisabledItemsFilter, +}: { + mutedRulesCount: number; + setEnabledDisabledItemsFilter: (filterState: string) => void; +}) => { const { http } = useKibana().services; const rulesPageParams = useParams<{ benchmarkId: string; benchmarkVersion: string }>(); const getBenchmarks = useCspBenchmarkIntegrationsV2(); @@ -156,6 +164,7 @@ export const RulesCounters = () => { if (benchmarkRulesStats.score.totalFindings === 0) { return ( { const counters = [ { - id: 'rules-counters-posture-score', + id: RULE_COUNTERS_TEST_SUBJ.POSTURE_SCORE_COUNTER, description: i18n.translate('xpack.csp.rulesCounters.postureScoreTitle', { defaultMessage: 'Posture Score', }), @@ -239,11 +248,14 @@ export const RulesCounters = () => { passed={benchmarkRulesStats.score.totalPassed} /> - {`${benchmarkRulesStats.score.postureScore}%`} + + {getPostureScorePercentage(benchmarkRulesStats.score.postureScore)} + ), button: ( @@ -254,7 +266,7 @@ export const RulesCounters = () => { ), }, { - id: 'rules-counters-evaluated', + id: RULE_COUNTERS_TEST_SUBJ.INTEGRATIONS_EVALUATED_COUNTER, description: i18n.translate('xpack.csp.rulesCounters.accountsEvaluatedTitle', { defaultMessage: '{resourceName} Evaluated', values: { @@ -264,6 +276,7 @@ export const RulesCounters = () => { title: benchmarkRulesStats.evaluation || 0, button: ( @@ -278,7 +291,7 @@ export const RulesCounters = () => { ), }, { - id: 'rules-counters-failed-findings', + id: RULE_COUNTERS_TEST_SUBJ.FAILED_FINDINGS_COUNTER, description: i18n.translate('xpack.csp.rulesCounters.failedFindingsTitle', { defaultMessage: 'Failed Findings', }), @@ -286,6 +299,7 @@ export const RulesCounters = () => { titleColor: benchmarkRulesStats.score.totalFailed > 0 ? statusColors.failed : undefined, button: ( navToFindings({ @@ -302,13 +316,17 @@ export const RulesCounters = () => { ), }, { - id: 'rules-counters-disabled-rules', + id: RULE_COUNTERS_TEST_SUBJ.DISABLED_RULES_COUNTER, description: i18n.translate('xpack.csp.rulesCounters.disabledRulesCounterTitle', { defaultMessage: 'Disabled Rules', }), - title: 'WIP', + title: mutedRulesCount, button: ( - + setEnabledDisabledItemsFilter('disabled')} + > {i18n.translate('xpack.csp.rulesCounters.disabledRulesCounterButton', { defaultMessage: 'View all disabled rules', })} diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx index b792ab851fa748..a5423ae912de28 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx @@ -16,6 +16,7 @@ import { EuiCheckbox, EuiFlexGroup, EuiFlexItem, + EuiTableSortingType, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { uniqBy } from 'lodash'; @@ -36,6 +37,7 @@ type RulesTableProps = Pick< refetchRulesStates: () => void; selectedRules: CspBenchmarkRulesWithStates[]; setSelectedRules: (rules: CspBenchmarkRulesWithStates[]) => void; + onSortChange: (value: 'asc' | 'desc') => void; }; type GetColumnProps = Pick< @@ -68,6 +70,7 @@ export const RulesTable = ({ refetchRulesStates, selectedRules, setSelectedRules, + onSortChange, }: RulesTableProps) => { const { euiTheme } = useEuiTheme(); const euiPagination: EuiBasicTableProps['pagination'] = { @@ -76,10 +79,24 @@ export const RulesTable = ({ totalItemCount: total, pageSizeOptions: [10, 25, 100], }; + const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc'); + const sorting: EuiTableSortingType = { + sort: { + field: 'metadata.benchmark.rule_number' as keyof CspBenchmarkRulesWithStates, + direction: sortDirection, + }, + }; - const onTableChange = ({ page: pagination }: Criteria) => { + const onTableChange = ({ + page: pagination, + sort: sortOrder, + }: Criteria) => { if (!pagination) return; - setPagination({ page: pagination.index, perPage: pagination.size }); + if (pagination) setPagination({ page: pagination.index, perPage: pagination.size }); + if (sortOrder) { + setSortDirection(sortOrder.direction); + onSortChange(sortOrder.direction); + } }; const rowProps = (row: CspBenchmarkRulesWithStates) => ({ @@ -149,6 +166,7 @@ export const RulesTable = ({ onChange={onTableChange} itemId={(v) => v.metadata.id} rowProps={rowProps} + sorting={sorting} /> ); @@ -221,7 +239,7 @@ const getColumns = ({ name: i18n.translate('xpack.csp.rules.rulesTable.ruleNumberColumnLabel', { defaultMessage: 'Rule Number', }), - width: '100px', + width: '120px', sortable: true, }, { diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx index 366ae740c3e94d..28ab839515dfb1 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx @@ -51,7 +51,7 @@ interface RulesTableToolbarProps { selectedRules: CspBenchmarkRulesWithStates[]; refetchRulesStates: () => void; setEnabledDisabledItemsFilter: (filterState: string) => void; - currentEnabledDisabledItemsFilterState: string; + enabledDisabledItemsFilterState: string; setSelectAllRules: () => void; setSelectedRules: (rules: CspBenchmarkRulesWithStates[]) => void; } @@ -78,7 +78,7 @@ export const RulesTableHeader = ({ selectedRules, refetchRulesStates, setEnabledDisabledItemsFilter, - currentEnabledDisabledItemsFilterState, + enabledDisabledItemsFilterState, setSelectAllRules, setSelectedRules, }: RulesTableToolbarProps) => { @@ -92,26 +92,14 @@ export const RulesTableHeader = ({ key: option, label: option, })); - const [isEnabledRulesFilterOn, setIsEnabledRulesFilterOn] = useState(false); - const [isDisabledRulesFilterOn, setisDisabledRulesFilterOn] = useState(false); const toggleEnabledRulesFilter = () => { - setIsEnabledRulesFilterOn(!isEnabledRulesFilterOn); - setisDisabledRulesFilterOn( - isDisabledRulesFilterOn && !isEnabledRulesFilterOn ? false : isDisabledRulesFilterOn - ); - if (currentEnabledDisabledItemsFilterState === 'enabled') - setEnabledDisabledItemsFilter('no-filter'); + if (enabledDisabledItemsFilterState === 'enabled') setEnabledDisabledItemsFilter('no-filter'); else setEnabledDisabledItemsFilter('enabled'); }; const toggleDisabledRulesFilter = () => { - setisDisabledRulesFilterOn(!isDisabledRulesFilterOn); - setIsEnabledRulesFilterOn( - isEnabledRulesFilterOn && !isDisabledRulesFilterOn ? false : isEnabledRulesFilterOn - ); - if (currentEnabledDisabledItemsFilterState === 'disabled') - setEnabledDisabledItemsFilter('no-filter'); + if (enabledDisabledItemsFilterState === 'disabled') setEnabledDisabledItemsFilter('no-filter'); else setEnabledDisabledItemsFilter('disabled'); }; @@ -186,7 +174,7 @@ export const RulesTableHeader = ({ @@ -196,7 +184,7 @@ export const RulesTableHeader = ({ /> diff --git a/x-pack/plugins/cloud_security_posture/public/pages/rules/test_subjects.ts b/x-pack/plugins/cloud_security_posture/public/pages/rules/test_subjects.ts index 5f7de364846090..43b209c6ce7d40 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/rules/test_subjects.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/rules/test_subjects.ts @@ -13,5 +13,17 @@ export const CSP_RULES_TABLE = 'csp_rules_table'; export const CSP_RULES_TABLE_ROW_ITEM_NAME = 'csp_rules_table_row_item_name'; export const CSP_RULES_FLYOUT_CONTAINER = 'csp_rules_flyout_container'; +export const RULE_COUNTERS_TEST_SUBJ = { + RULE_COUNTERS_EMPTY_STATE: 'rules-counters-empty-state', + POSTURE_SCORE_COUNTER: 'rules-counters-posture-score-counter', + POSTURE_SCORE_BUTTON: 'rules-counters-posture-score-button', + INTEGRATIONS_EVALUATED_COUNTER: 'rules-counters-integrations-evaluated-counter', + INTEGRATIONS_EVALUATED_BUTTON: 'rules-counters-integrations-evaluated-button', + FAILED_FINDINGS_COUNTER: 'rules-counters-failed-findings-counter', + FAILED_FINDINGS_BUTTON: 'rules-counters-failed-findings-button', + DISABLED_RULES_COUNTER: 'rules-counters-disabled-rules-counter', + DISABLED_RULES_BUTTON: 'rules-counters-disabled-rules-button', +}; + export const getCspBenchmarkRuleTableRowItemTestId = (id: string) => `${CSP_RULES_TABLE_ROW_ITEM_NAME}_${id}`; diff --git a/x-pack/plugins/cloud_security_posture/server/plugin.test.ts b/x-pack/plugins/cloud_security_posture/server/plugin.test.ts index 4a3b85b41a1593..5b755bf0971287 100644 --- a/x-pack/plugins/cloud_security_posture/server/plugin.test.ts +++ b/x-pack/plugins/cloud_security_posture/server/plugin.test.ts @@ -32,10 +32,10 @@ import { UpdatePackagePolicy, } from '@kbn/fleet-plugin/common'; import { - ExternalCallback, FleetStartContract, PostPackagePolicyPostDeleteCallback, PostPackagePolicyPostCreateCallback, + ExternalCallback, } from '@kbn/fleet-plugin/server'; import { CLOUD_SECURITY_POSTURE_PACKAGE_NAME } from '../common/constants'; import Chance from 'chance'; @@ -62,9 +62,6 @@ const createMockFleetStartContract = (): DeeplyMockedKeys => fromRequest: jest.fn(async (_) => createFleetAuthzMock()), }, fleetSetupCompleted: jest.fn().mockResolvedValue(undefined), - esIndexPatternService: { - getESIndexPattern: jest.fn().mockResolvedValue(undefined), - }, // @ts-expect-error 2322 agentService: createMockAgentService(), // @ts-expect-error 2322 diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts index 2a0130c0f0fd74..a2814e4b48ff0a 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/find.test.ts @@ -20,7 +20,7 @@ describe('getSortedCspBenchmarkRules', () => { { metadata: { benchmark: {} } }, ] as CspBenchmarkRule[]; - const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules); + const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules, 'asc'); expect(sortedCspBenchmarkRules).toEqual([ { metadata: { benchmark: { rule_number: '1.0.0' } } }, @@ -36,7 +36,7 @@ describe('getSortedCspBenchmarkRules', () => { it('edge case - returns empty array if input is empty', () => { const cspBenchmarkRules: CspBenchmarkRule[] = []; - const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules); + const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules, 'asc'); expect(sortedCspBenchmarkRules).toEqual([]); }); @@ -46,7 +46,7 @@ describe('getSortedCspBenchmarkRules', () => { { metadata: { benchmark: { rule_number: '1.0.0' } } }, ] as CspBenchmarkRule[]; - const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules); + const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules, 'asc'); expect(sortedCspBenchmarkRules).toEqual([ { metadata: { benchmark: { rule_number: '1.0.0' } } }, @@ -61,7 +61,7 @@ describe('getSortedCspBenchmarkRules', () => { { metadata: { benchmark: { rule_number: null } } }, ] as CspBenchmarkRule[]; - const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules); + const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules, 'asc'); expect(sortedCspBenchmarkRules).toEqual([ { metadata: { benchmark: { rule_number: '1.0.0' } } }, @@ -78,7 +78,7 @@ describe('getSortedCspBenchmarkRules', () => { { metadata: { benchmark: { rule_number: '3.0.0' } } }, ] as CspBenchmarkRule[]; - const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules); + const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules, 'asc'); expect(sortedCspBenchmarkRules).toEqual([ { metadata: { benchmark: { rule_number: '1.0.0' } } }, diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/utils.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/utils.ts index 2f57dc40ca5f9a..f118ed0e8c56d0 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/utils.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/utils.ts @@ -13,7 +13,10 @@ import { getBenchmarkFromPackagePolicy } from '../../../../common/utils/helpers' import type { CspBenchmarkRule } from '../../../../common/types/latest'; -export const getSortedCspBenchmarkRulesTemplates = (cspBenchmarkRules: CspBenchmarkRule[]) => { +export const getSortedCspBenchmarkRulesTemplates = ( + cspBenchmarkRules: CspBenchmarkRule[], + sortDirection: 'asc' | 'desc' +) => { return cspBenchmarkRules.slice().sort((a, b) => { const ruleNumberA = a?.metadata?.benchmark?.rule_number; const ruleNumberB = b?.metadata?.benchmark?.rule_number; @@ -22,12 +25,19 @@ export const getSortedCspBenchmarkRulesTemplates = (cspBenchmarkRules: CspBenchm const versionB = semverValid(ruleNumberB); if (versionA !== null && versionB !== null) { - return semverCompare(versionA, versionB); + return sortDirection === 'asc' + ? semverCompare(versionA, versionB) + : semverCompare(versionB, versionA); } else { - return String(ruleNumberA).localeCompare(String(ruleNumberB), undefined, { - numeric: true, - sensitivity: 'base', - }); + return sortDirection === 'asc' + ? String(ruleNumberA).localeCompare(String(ruleNumberB), undefined, { + numeric: true, + sensitivity: 'base', + }) + : String(ruleNumberB).localeCompare(String(ruleNumberA), undefined, { + numeric: true, + sensitivity: 'base', + }); } }); }; diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v1.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v1.ts index 4971098cb8067e..a1d5668ba8c228 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v1.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v1.ts @@ -45,7 +45,7 @@ export const findBenchmarkRuleHandler = async ( ); // Semantic version sorting using semver for valid versions and custom comparison for invalid versions - const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules); + const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules, 'asc'); return { items: sortedCspBenchmarkRules, diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v2.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v2.ts index 5054fc211a5292..e7db9544b7dd3c 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v2.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v2.ts @@ -45,7 +45,7 @@ export const findBenchmarkRuleHandler = async ( ); // Semantic version sorting using semver for valid versions and custom comparison for invalid versions - const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules); + const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules, 'asc'); return { items: sortedCspBenchmarkRules, diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v3.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v3.ts index dff6cd3add9660..c3b77a1a38ac34 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v3.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/find/v3.ts @@ -35,6 +35,7 @@ export const findBenchmarkRuleHandler = async ( page: options.page, perPage: options.perPage, sortField: options.sortField, + sortOrder: options.sortOrder, fields: options?.fields, filter: getBenchmarkFilterQueryV2(benchmarkId, options.benchmarkVersion || '', { section: sectionFilter, @@ -47,7 +48,10 @@ export const findBenchmarkRuleHandler = async ( ); // Semantic version sorting using semver for valid versions and custom comparison for invalid versions - const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates(cspBenchmarkRules); + const sortedCspBenchmarkRules = getSortedCspBenchmarkRulesTemplates( + cspBenchmarkRules, + options.sortOrder + ); return { items: diff --git a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx index 5307d2aaa77fe1..5bd16597c0b542 100644 --- a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx +++ b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx @@ -68,6 +68,7 @@ export class FlyoutCreateDrilldownAction implements Action { } public async isCompatible(context: EmbeddableContext) { + if (!context.embeddable?.getInput) return false; const isEditMode = context.embeddable.getInput().viewMode === 'edit'; return isEditMode && this.isEmbeddableCompatible(context); } diff --git a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx index a97cce9ecf75cc..aed94cd1c4adc1 100644 --- a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx +++ b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx @@ -46,6 +46,7 @@ export class FlyoutEditDrilldownAction implements Action { public readonly MenuItem = MenuItem as any; public async isCompatible({ embeddable }: EmbeddableContext) { + if (!embeddable?.getInput) return false; if (embeddable.getInput().viewMode !== ViewMode.EDIT) return false; if (!isEnhancedEmbeddable(embeddable)) return false; return embeddable.enhancements.dynamicActions.state.get().events.length > 0; diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_esql.tsx b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_esql.tsx index 2edd03e7f27af6..0faa236e30c6f3 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_esql.tsx +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_esql.tsx @@ -33,7 +33,7 @@ import { } from '@elastic/eui'; import { usePageUrlState, useUrlState } from '@kbn/ml-url-state'; import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; -import { getIndexPatternFromSQLQuery, getIndexPatternFromESQLQuery } from '@kbn/es-query'; +import { getIndexPatternFromSQLQuery, getIndexPatternFromESQLQuery } from '@kbn/esql-utils'; import type { DataView } from '@kbn/data-views-plugin/common'; import { KBN_FIELD_TYPES } from '@kbn/field-types'; import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; diff --git a/x-pack/plugins/data_visualizer/tsconfig.json b/x-pack/plugins/data_visualizer/tsconfig.json index 9f30b3db0eb8d8..af962ac08b6e82 100644 --- a/x-pack/plugins/data_visualizer/tsconfig.json +++ b/x-pack/plugins/data_visualizer/tsconfig.json @@ -74,7 +74,8 @@ "@kbn/text-based-languages", "@kbn/code-editor", "@kbn/es-types", - "@kbn/ui-theme" + "@kbn/ui-theme", + "@kbn/esql-utils" ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/dataset_quality/common/translations.ts b/x-pack/plugins/dataset_quality/common/translations.ts index 1353491f146f7b..43752f324fcca1 100644 --- a/x-pack/plugins/dataset_quality/common/translations.ts +++ b/x-pack/plugins/dataset_quality/common/translations.ts @@ -35,8 +35,8 @@ export const flyoutCancelText = i18n.translate('xpack.datasetQuality.flyoutCance defaultMessage: 'Cancel', }); -export const flyoutOpenInLogExplorerText = i18n.translate( - 'xpack.datasetQuality.flyoutOpenInLogExplorerText', +export const flyoutOpenInLogsExplorerText = i18n.translate( + 'xpack.datasetQuality.flyoutOpenInLogsExplorerText', { defaultMessage: 'Open in Logs Explorer', } diff --git a/x-pack/plugins/dataset_quality/public/components/dataset_quality/columns.tsx b/x-pack/plugins/dataset_quality/public/components/dataset_quality/columns.tsx index 2f2febddc1150e..fe50c291f9fcf8 100644 --- a/x-pack/plugins/dataset_quality/public/components/dataset_quality/columns.tsx +++ b/x-pack/plugins/dataset_quality/public/components/dataset_quality/columns.tsx @@ -31,7 +31,7 @@ import { import { DataStreamStat } from '../../../common/data_streams_stats/data_stream_stat'; import { QualityIndicator, QualityPercentageIndicator } from '../quality_indicator'; import { IntegrationIcon } from '../common'; -import { useLinkToLogExplorer } from '../../hooks'; +import { useLinkToLogsExplorer } from '../../hooks'; import { FlyoutDataset } from '../../state_machines/dataset_quality_controller'; const expandDatasetAriaLabel = i18n.translate('xpack.datasetQuality.expandLabel', { @@ -208,21 +208,21 @@ export const getDatasetQualityTableColumns = ({ { name: actionsColumnName, render: (dataStreamStat: DataStreamStat) => ( - + ), width: '100px', }, ]; }; -const LogExplorerLink = ({ +const LogsExplorerLink = ({ dataStreamStat, title, }: { dataStreamStat: DataStreamStat; title: string; }) => { - const logExplorerLinkProps = useLinkToLogExplorer({ dataStreamStat }); + const logsExplorerLinkProps = useLinkToLogsExplorer({ dataStreamStat }); - return {title}; + return {title}; }; diff --git a/x-pack/plugins/dataset_quality/public/components/flyout/header.tsx b/x-pack/plugins/dataset_quality/public/components/flyout/header.tsx index 2559c62d26991f..c6f283cb662949 100644 --- a/x-pack/plugins/dataset_quality/public/components/flyout/header.tsx +++ b/x-pack/plugins/dataset_quality/public/components/flyout/header.tsx @@ -16,8 +16,8 @@ import { } from '@elastic/eui'; import { css } from '@emotion/react'; import React from 'react'; -import { flyoutOpenInLogExplorerText } from '../../../common/translations'; -import { useLinkToLogExplorer } from '../../hooks'; +import { flyoutOpenInLogsExplorerText } from '../../../common/translations'; +import { useLinkToLogsExplorer } from '../../hooks'; import { FlyoutDataset } from '../../state_machines/dataset_quality_controller'; import { IntegrationIcon } from '../common'; @@ -25,7 +25,7 @@ export function Header({ dataStreamStat }: { dataStreamStat: FlyoutDataset }) { const { integration, title } = dataStreamStat; const euiShadow = useEuiShadow('s'); const { euiTheme } = useEuiTheme(); - const logExplorerLinkProps = useLinkToLogExplorer({ dataStreamStat }); + const logsExplorerLinkProps = useLinkToLogsExplorer({ dataStreamStat }); return ( @@ -55,8 +55,8 @@ export function Header({ dataStreamStat }: { dataStreamStat: FlyoutDataset }) { justifyContent="flexEnd" alignItems="center" > - - {flyoutOpenInLogExplorerText} + + {flyoutOpenInLogsExplorerText} diff --git a/x-pack/plugins/dataset_quality/public/hooks/index.ts b/x-pack/plugins/dataset_quality/public/hooks/index.ts index 29425c9b326d7e..fec2164b37f735 100644 --- a/x-pack/plugins/dataset_quality/public/hooks/index.ts +++ b/x-pack/plugins/dataset_quality/public/hooks/index.ts @@ -7,4 +7,4 @@ export * from './use_dataset_quality_table'; export * from './use_dataset_quality_flyout'; -export * from './use_link_to_log_explorer'; +export * from './use_link_to_logs_explorer'; diff --git a/x-pack/plugins/dataset_quality/public/hooks/use_link_to_log_explorer.ts b/x-pack/plugins/dataset_quality/public/hooks/use_link_to_logs_explorer.ts similarity index 81% rename from x-pack/plugins/dataset_quality/public/hooks/use_link_to_log_explorer.ts rename to x-pack/plugins/dataset_quality/public/hooks/use_link_to_logs_explorer.ts index e9f279c1eaecca..1c8ccff71d7383 100644 --- a/x-pack/plugins/dataset_quality/public/hooks/use_link_to_log_explorer.ts +++ b/x-pack/plugins/dataset_quality/public/hooks/use_link_to_logs_explorer.ts @@ -14,7 +14,7 @@ import { DataStreamStat } from '../../common/data_streams_stats/data_stream_stat import { FlyoutDataset } from '../state_machines/dataset_quality_controller'; import { useKibanaContextForPlugin } from '../utils'; -export const useLinkToLogExplorer = ({ +export const useLinkToLogsExplorer = ({ dataStreamStat, }: { dataStreamStat: DataStreamStat | FlyoutDataset; @@ -41,16 +41,16 @@ export const useLinkToLogExplorer = ({ const singleDatasetLocator = share.url.locators.get(SINGLE_DATASET_LOCATOR_ID); - const urlToLogExplorer = singleDatasetLocator?.getRedirectUrl(params); + const urlToLogsExplorer = singleDatasetLocator?.getRedirectUrl(params); - const navigateToLogExplorer = () => { + const navigateToLogsExplorer = () => { singleDatasetLocator?.navigate(params) as Promise; }; - const logExplorerLinkProps = getRouterLinkProps({ - href: urlToLogExplorer, - onClick: navigateToLogExplorer, + const logsExplorerLinkProps = getRouterLinkProps({ + href: urlToLogsExplorer, + onClick: navigateToLogsExplorer, }); - return logExplorerLinkProps; + return logsExplorerLinkProps; }; diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/request.ts b/x-pack/plugins/elastic_assistant/server/__mocks__/request.ts index 930374567533bf..3551ef6b126c3f 100644 --- a/x-pack/plugins/elastic_assistant/server/__mocks__/request.ts +++ b/x-pack/plugins/elastic_assistant/server/__mocks__/request.ts @@ -7,9 +7,9 @@ import { httpServerMock } from '@kbn/core/server/mocks'; import { CAPABILITIES, EVALUATE, KNOWLEDGE_BASE } from '../../common/constants'; import { - PostEvaluateBodyInputs, - PostEvaluatePathQueryInputs, -} from '../schemas/evaluate/post_evaluate'; + PostEvaluateRequestBodyInput, + PostEvaluateRequestQueryInput, +} from '@kbn/elastic-assistant-common'; export const requestMock = { create: httpServerMock.createKibanaRequest, @@ -46,8 +46,8 @@ export const getPostEvaluateRequest = ({ body, query, }: { - body: PostEvaluateBodyInputs; - query: PostEvaluatePathQueryInputs; + body: PostEvaluateRequestBodyInput; + query: PostEvaluateRequestQueryInput; }) => requestMock.create({ body, diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/index.ts b/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/index.ts new file mode 100644 index 00000000000000..b36081ce4bead0 --- /dev/null +++ b/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AgentExecutor } from './types'; +import { callAgentExecutor } from '../execute_custom_llm_chain'; +import { callOpenAIFunctionsExecutor } from './openai_functions_executor'; + +/** + * To support additional Agent Executors from the UI, add them to this map + * and reference your specific AgentExecutor function + */ +export const AGENT_EXECUTOR_MAP: Record = { + DefaultAgentExecutor: callAgentExecutor, + OpenAIFunctionsExecutor: callOpenAIFunctionsExecutor, +}; diff --git a/x-pack/plugins/elastic_assistant/server/lib/model_evaluator/evaluation.ts b/x-pack/plugins/elastic_assistant/server/lib/model_evaluator/evaluation.ts index 54040d3d1b58e6..291aa9d8c25193 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/model_evaluator/evaluation.ts +++ b/x-pack/plugins/elastic_assistant/server/lib/model_evaluator/evaluation.ts @@ -12,8 +12,8 @@ import { chunk as createChunks } from 'lodash/fp'; import { Logger } from '@kbn/core/server'; import { ToolingLog } from '@kbn/tooling-log'; import { LangChainTracer, RunCollectorCallbackHandler } from 'langchain/callbacks'; +import { Dataset } from '@kbn/elastic-assistant-common'; import { AgentExecutorEvaluatorWithMetadata } from '../langchain/executors/types'; -import { Dataset } from '../../schemas/evaluate/post_evaluate'; import { callAgentWithRetry, getMessageFromLangChainResponse } from './utils'; import { ResponseBody } from '../langchain/types'; import { isLangSmithEnabled, writeLangSmithFeedback } from '../../routes/evaluate/utils'; @@ -102,7 +102,6 @@ export const performEvaluation = async ({ const chunk = requestChunks.shift() ?? []; const chunkNumber = totalChunks - requestChunks.length; logger.info(`Prediction request chunk: ${chunkNumber} of ${totalChunks}`); - logger.debug(chunk); // Note, order is kept between chunk and dataset, and is preserved w/ Promise.allSettled const chunkResults = await Promise.allSettled(chunk.map((r) => r.request())); diff --git a/x-pack/plugins/elastic_assistant/server/plugin.ts b/x-pack/plugins/elastic_assistant/server/plugin.ts index bbc2c63381fc92..eec0a08ccb8cd3 100755 --- a/x-pack/plugins/elastic_assistant/server/plugin.ts +++ b/x-pack/plugins/elastic_assistant/server/plugin.ts @@ -43,6 +43,7 @@ import { GetRegisteredTools, } from './services/app_context'; import { getCapabilitiesRoute } from './routes/capabilities/get_capabilities_route'; +import { getEvaluateRoute } from './routes/evaluate/get_evaluate'; interface CreateRouteHandlerContextParams { core: CoreSetup; @@ -124,6 +125,7 @@ export class ElasticAssistantPlugin postActionsConnectorExecuteRoute(router, getElserId); // Evaluate postEvaluateRoute(router, getElserId); + getEvaluateRoute(router); // Capabilities getCapabilitiesRoute(router); return { diff --git a/x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts b/x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts index 105e1676fb8089..7c470cdfc2d94b 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts +++ b/x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts @@ -8,12 +8,17 @@ import { IKibanaResponse, IRouter } from '@kbn/core/server'; import { transformError } from '@kbn/securitysolution-es-utils'; -import type { GetCapabilitiesResponse } from '@kbn/elastic-assistant-common'; +import { + API_VERSIONS, + GetCapabilitiesResponse, + INTERNAL_API_ACCESS, +} from '@kbn/elastic-assistant-common'; import { CAPABILITIES } from '../../../common/constants'; import { ElasticAssistantRequestHandlerContext } from '../../types'; import { buildResponse } from '../../lib/build_response'; import { DEFAULT_PLUGIN_NAME, getPluginNameFromRequest } from '../helpers'; +import { buildRouteValidationWithZod } from '../../schemas/common'; /** * Get the assistant capabilities for the requesting plugin @@ -23,7 +28,7 @@ import { DEFAULT_PLUGIN_NAME, getPluginNameFromRequest } from '../helpers'; export const getCapabilitiesRoute = (router: IRouter) => { router.versioned .get({ - access: 'internal', + access: INTERNAL_API_ACCESS, path: CAPABILITIES, options: { tags: ['access:elasticAssistant'], @@ -31,8 +36,14 @@ export const getCapabilitiesRoute = (router: IRouter> => { const resp = buildResponse(response); diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts b/x-pack/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts new file mode 100644 index 00000000000000..bc9922ef5f35a6 --- /dev/null +++ b/x-pack/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.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 { type IKibanaResponse, IRouter } from '@kbn/core/server'; +import { transformError } from '@kbn/securitysolution-es-utils'; + +import { + API_VERSIONS, + INTERNAL_API_ACCESS, + GetEvaluateResponse, +} from '@kbn/elastic-assistant-common'; +import { buildResponse } from '../../lib/build_response'; +import { ElasticAssistantRequestHandlerContext } from '../../types'; +import { EVALUATE } from '../../../common/constants'; +import { DEFAULT_PLUGIN_NAME, getPluginNameFromRequest } from '../helpers'; +import { buildRouteValidationWithZod } from '../../schemas/common'; +import { AGENT_EXECUTOR_MAP } from '../../lib/langchain/executors'; + +export const getEvaluateRoute = (router: IRouter) => { + router.versioned + .get({ + access: INTERNAL_API_ACCESS, + path: EVALUATE, + options: { + tags: ['access:elasticAssistant'], + }, + }) + .addVersion( + { + version: API_VERSIONS.internal.v1, + validate: { + response: { + 200: { + body: buildRouteValidationWithZod(GetEvaluateResponse), + }, + }, + }, + }, + async (context, request, response): Promise> => { + const assistantContext = await context.elasticAssistant; + const logger = assistantContext.logger; + + // Validate evaluation feature is enabled + const pluginName = getPluginNameFromRequest({ + request, + defaultPluginName: DEFAULT_PLUGIN_NAME, + logger, + }); + const registeredFeatures = assistantContext.getRegisteredFeatures(pluginName); + if (!registeredFeatures.assistantModelEvaluation) { + return response.notFound(); + } + + try { + return response.ok({ body: { agentExecutors: Object.keys(AGENT_EXECUTOR_MAP) } }); + } catch (err) { + logger.error(err); + const error = transformError(err); + + const resp = buildResponse(response); + return resp.error({ + body: { error: error.message }, + statusCode: error.statusCode, + }); + } + } + ); +}; diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.test.ts b/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.test.ts index 3ae64f1d89f3b3..64ec69fa5e943d 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.test.ts +++ b/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.test.ts @@ -9,17 +9,17 @@ import { postEvaluateRoute } from './post_evaluate'; import { serverMock } from '../../__mocks__/server'; import { requestContextMock } from '../../__mocks__/request_context'; import { getPostEvaluateRequest } from '../../__mocks__/request'; -import { - PostEvaluateBodyInputs, - PostEvaluatePathQueryInputs, -} from '../../schemas/evaluate/post_evaluate'; +import type { + PostEvaluateRequestBodyInput, + PostEvaluateRequestQueryInput, +} from '@kbn/elastic-assistant-common'; -const defaultBody: PostEvaluateBodyInputs = { +const defaultBody: PostEvaluateRequestBodyInput = { dataset: undefined, evalPrompt: undefined, }; -const defaultQueryParams: PostEvaluatePathQueryInputs = { +const defaultQueryParams: PostEvaluateRequestQueryInput = { agents: 'agents', datasetName: undefined, evaluationType: undefined, diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts b/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts index aa041175b75ee0..33d19d6fb61e05 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts +++ b/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts @@ -5,23 +5,23 @@ * 2.0. */ -import { IRouter, KibanaRequest } from '@kbn/core/server'; +import { type IKibanaResponse, IRouter, KibanaRequest } from '@kbn/core/server'; import { transformError } from '@kbn/securitysolution-es-utils'; import { v4 as uuidv4 } from 'uuid'; +import { + API_VERSIONS, + INTERNAL_API_ACCESS, + PostEvaluateBody, + PostEvaluateRequestQuery, + PostEvaluateResponse, +} from '@kbn/elastic-assistant-common'; import { ESQL_RESOURCE } from '../knowledge_base/constants'; import { buildResponse } from '../../lib/build_response'; -import { buildRouteValidation } from '../../schemas/common'; import { ElasticAssistantRequestHandlerContext, GetElser } from '../../types'; import { EVALUATE } from '../../../common/constants'; -import { PostEvaluateBody, PostEvaluatePathQuery } from '../../schemas/evaluate/post_evaluate'; import { performEvaluation } from '../../lib/model_evaluator/evaluation'; -import { callAgentExecutor } from '../../lib/langchain/execute_custom_llm_chain'; -import { callOpenAIFunctionsExecutor } from '../../lib/langchain/executors/openai_functions_executor'; -import { - AgentExecutor, - AgentExecutorEvaluatorWithMetadata, -} from '../../lib/langchain/executors/types'; +import { AgentExecutorEvaluatorWithMetadata } from '../../lib/langchain/executors/types'; import { ActionsClientLlm } from '../../lib/langchain/llm/actions_client_llm'; import { indexEvaluations, @@ -30,15 +30,8 @@ import { import { fetchLangSmithDataset, getConnectorName, getLangSmithTracer, getLlmType } from './utils'; import { RequestBody } from '../../lib/langchain/types'; import { DEFAULT_PLUGIN_NAME, getPluginNameFromRequest } from '../helpers'; - -/** - * To support additional Agent Executors from the UI, add them to this map - * and reference your specific AgentExecutor function - */ -const AGENT_EXECUTOR_MAP: Record = { - DefaultAgentExecutor: callAgentExecutor, - OpenAIFunctionsExecutor: callOpenAIFunctionsExecutor, -}; +import { buildRouteValidationWithZod } from '../../schemas/common'; +import { AGENT_EXECUTOR_MAP } from '../../lib/langchain/executors'; const DEFAULT_SIZE = 20; @@ -46,200 +39,215 @@ export const postEvaluateRoute = ( router: IRouter, getElser: GetElser ) => { - router.post( - { + router.versioned + .post({ + access: INTERNAL_API_ACCESS, path: EVALUATE, - validate: { - body: buildRouteValidation(PostEvaluateBody), - query: buildRouteValidation(PostEvaluatePathQuery), + options: { + tags: ['access:elasticAssistant'], }, - }, - async (context, request, response) => { - const assistantContext = await context.elasticAssistant; - const logger = assistantContext.logger; - const telemetry = assistantContext.telemetry; - - // Validate evaluation feature is enabled - const pluginName = getPluginNameFromRequest({ - request, - defaultPluginName: DEFAULT_PLUGIN_NAME, - logger, - }); - const registeredFeatures = assistantContext.getRegisteredFeatures(pluginName); - if (!registeredFeatures.assistantModelEvaluation) { - return response.notFound(); - } - - try { - const evaluationId = uuidv4(); - const { - evalModel, - evaluationType, - outputIndex, - datasetName, - projectName = 'default', - runName = evaluationId, - } = request.query; - const { dataset: customDataset = [], evalPrompt } = request.body; - const connectorIds = request.query.models?.split(',') || []; - const agentNames = request.query.agents?.split(',') || []; - - const dataset = - datasetName != null ? await fetchLangSmithDataset(datasetName, logger) : customDataset; - - logger.info('postEvaluateRoute:'); - logger.info(`request.query:\n${JSON.stringify(request.query, null, 2)}`); - logger.info(`request.body:\n${JSON.stringify(request.body, null, 2)}`); - logger.info(`Evaluation ID: ${evaluationId}`); - - const totalExecutions = connectorIds.length * agentNames.length * dataset.length; - logger.info('Creating agents:'); - logger.info(`\tconnectors/models: ${connectorIds.length}`); - logger.info(`\tagents: ${agentNames.length}`); - logger.info(`\tdataset: ${dataset.length}`); - logger.warn(`\ttotal baseline agent executions: ${totalExecutions} `); - if (totalExecutions > 50) { - logger.warn( - `Total baseline agent executions >= 50! This may take a while, and cost some money...` - ); + }) + .addVersion( + { + version: API_VERSIONS.internal.v1, + validate: { + request: { + body: buildRouteValidationWithZod(PostEvaluateBody), + query: buildRouteValidationWithZod(PostEvaluateRequestQuery), + }, + response: { + 200: { + body: buildRouteValidationWithZod(PostEvaluateResponse), + }, + }, + }, + }, + async (context, request, response): Promise> => { + const assistantContext = await context.elasticAssistant; + const logger = assistantContext.logger; + const telemetry = assistantContext.telemetry; + + // Validate evaluation feature is enabled + const pluginName = getPluginNameFromRequest({ + request, + defaultPluginName: DEFAULT_PLUGIN_NAME, + logger, + }); + const registeredFeatures = assistantContext.getRegisteredFeatures(pluginName); + if (!registeredFeatures.assistantModelEvaluation) { + return response.notFound(); } - // Get the actions plugin start contract from the request context for the agents - const actions = (await context.elasticAssistant).actions; + try { + const evaluationId = uuidv4(); + const { + evalModel, + evaluationType, + outputIndex, + datasetName, + projectName = 'default', + runName = evaluationId, + } = request.query; + const { dataset: customDataset = [], evalPrompt } = request.body; + const connectorIds = request.query.models?.split(',') || []; + const agentNames = request.query.agents?.split(',') || []; + + const dataset = + datasetName != null ? await fetchLangSmithDataset(datasetName, logger) : customDataset; + + logger.info('postEvaluateRoute:'); + logger.info(`request.query:\n${JSON.stringify(request.query, null, 2)}`); + logger.info(`request.body:\n${JSON.stringify(request.body, null, 2)}`); + logger.info(`Evaluation ID: ${evaluationId}`); + + const totalExecutions = connectorIds.length * agentNames.length * dataset.length; + logger.info('Creating agents:'); + logger.info(`\tconnectors/models: ${connectorIds.length}`); + logger.info(`\tagents: ${agentNames.length}`); + logger.info(`\tdataset: ${dataset.length}`); + logger.warn(`\ttotal baseline agent executions: ${totalExecutions} `); + if (totalExecutions > 50) { + logger.warn( + `Total baseline agent executions >= 50! This may take a while, and cost some money...` + ); + } + + // Get the actions plugin start contract from the request context for the agents + const actions = (await context.elasticAssistant).actions; + + // Fetch all connectors from the actions plugin, so we can set the appropriate `llmType` on ActionsClientLlm + const actionsClient = await actions.getActionsClientWithRequest(request); + const connectors = await actionsClient.getBulk({ + ids: connectorIds, + throwIfSystemAction: false, + }); - // Fetch all connectors from the actions plugin, so we can set the appropriate `llmType` on ActionsClientLlm - const actionsClient = await actions.getActionsClientWithRequest(request); - const connectors = await actionsClient.getBulk({ - ids: connectorIds, - throwIfSystemAction: false, - }); + // Fetch any tools registered by the request's originating plugin + const assistantTools = (await context.elasticAssistant).getRegisteredTools( + 'securitySolution' + ); - // Fetch any tools registered by the request's originating plugin - const assistantTools = (await context.elasticAssistant).getRegisteredTools( - 'securitySolution' - ); - - // Get a scoped esClient for passing to the agents for retrieval, and - // writing results to the output index - const esClient = (await context.core).elasticsearch.client.asCurrentUser; - - // Default ELSER model - const elserId = await getElser(request, (await context.core).savedObjects.getClient()); - - // Skeleton request from route to pass to the agents - // params will be passed to the actions executor - const skeletonRequest: KibanaRequest = { - ...request, - body: { - alertsIndexPattern: '', - allow: [], - allowReplacement: [], - params: { - subAction: 'invokeAI', - subActionParams: { - messages: [], + // Get a scoped esClient for passing to the agents for retrieval, and + // writing results to the output index + const esClient = (await context.core).elasticsearch.client.asCurrentUser; + + // Default ELSER model + const elserId = await getElser(request, (await context.core).savedObjects.getClient()); + + // Skeleton request from route to pass to the agents + // params will be passed to the actions executor + const skeletonRequest: KibanaRequest = { + ...request, + body: { + alertsIndexPattern: '', + allow: [], + allowReplacement: [], + params: { + subAction: 'invokeAI', + subActionParams: { + messages: [], + }, }, + replacements: {}, + size: DEFAULT_SIZE, + isEnabledKnowledgeBase: true, + isEnabledRAGAlerts: true, }, - replacements: {}, - size: DEFAULT_SIZE, - isEnabledKnowledgeBase: true, - isEnabledRAGAlerts: true, - }, - }; - - // Create an array of executor functions to call in batches - // One for each connector/model + agent combination - // Hoist `langChainMessages` so they can be batched by dataset.input in the evaluator - const agents: AgentExecutorEvaluatorWithMetadata[] = []; - connectorIds.forEach((connectorId) => { - agentNames.forEach((agentName) => { - logger.info(`Creating agent: ${connectorId} + ${agentName}`); - const llmType = getLlmType(connectorId, connectors); - const connectorName = - getConnectorName(connectorId, connectors) ?? '[unknown connector]'; - const detailedRunName = `${runName} - ${connectorName} + ${agentName}`; - agents.push({ - agentEvaluator: (langChainMessages, exampleId) => - AGENT_EXECUTOR_MAP[agentName]({ - actions, - isEnabledKnowledgeBase: true, - assistantTools, - connectorId, - esClient, - elserId, - langChainMessages, - llmType, - logger, - request: skeletonRequest, - kbResource: ESQL_RESOURCE, - telemetry, - traceOptions: { - exampleId, - projectName, - runName: detailedRunName, - evaluationId, - tags: [ - 'security-assistant-prediction', - ...(connectorName != null ? [connectorName] : []), - runName, - ], - tracers: getLangSmithTracer(detailedRunName, exampleId, logger), - }, - }), - metadata: { - connectorName, - runName: detailedRunName, - }, + }; + + // Create an array of executor functions to call in batches + // One for each connector/model + agent combination + // Hoist `langChainMessages` so they can be batched by dataset.input in the evaluator + const agents: AgentExecutorEvaluatorWithMetadata[] = []; + connectorIds.forEach((connectorId) => { + agentNames.forEach((agentName) => { + logger.info(`Creating agent: ${connectorId} + ${agentName}`); + const llmType = getLlmType(connectorId, connectors); + const connectorName = + getConnectorName(connectorId, connectors) ?? '[unknown connector]'; + const detailedRunName = `${runName} - ${connectorName} + ${agentName}`; + agents.push({ + agentEvaluator: (langChainMessages, exampleId) => + AGENT_EXECUTOR_MAP[agentName]({ + actions, + isEnabledKnowledgeBase: true, + assistantTools, + connectorId, + esClient, + elserId, + langChainMessages, + llmType, + logger, + request: skeletonRequest, + kbResource: ESQL_RESOURCE, + telemetry, + traceOptions: { + exampleId, + projectName, + runName: detailedRunName, + evaluationId, + tags: [ + 'security-assistant-prediction', + ...(connectorName != null ? [connectorName] : []), + runName, + ], + tracers: getLangSmithTracer(detailedRunName, exampleId, logger), + }, + }), + metadata: { + connectorName, + runName: detailedRunName, + }, + }); }); }); - }); - logger.info(`Agents created: ${agents.length}`); - - // Evaluator Model is optional to support just running predictions - const evaluatorModel = - evalModel == null || evalModel === '' - ? undefined - : new ActionsClientLlm({ - actions, - connectorId: evalModel, - request: skeletonRequest, - logger, - }); + logger.info(`Agents created: ${agents.length}`); - const { evaluationResults, evaluationSummary } = await performEvaluation({ - agentExecutorEvaluators: agents, - dataset, - evaluationId, - evaluatorModel, - evaluationPrompt: evalPrompt, - evaluationType, - logger, - runName, - }); + // Evaluator Model is optional to support just running predictions + const evaluatorModel = + evalModel == null || evalModel === '' + ? undefined + : new ActionsClientLlm({ + actions, + connectorId: evalModel, + request: skeletonRequest, + logger, + }); + + const { evaluationResults, evaluationSummary } = await performEvaluation({ + agentExecutorEvaluators: agents, + dataset, + evaluationId, + evaluatorModel, + evaluationPrompt: evalPrompt, + evaluationType, + logger, + runName, + }); - logger.info(`Writing evaluation results to index: ${outputIndex}`); - await setupEvaluationIndex({ esClient, index: outputIndex, logger }); - await indexEvaluations({ - esClient, - evaluationResults, - evaluationSummary, - index: outputIndex, - logger, - }); + logger.info(`Writing evaluation results to index: ${outputIndex}`); + await setupEvaluationIndex({ esClient, index: outputIndex, logger }); + await indexEvaluations({ + esClient, + evaluationResults, + evaluationSummary, + index: outputIndex, + logger, + }); - return response.ok({ - body: { evaluationId, success: true }, - }); - } catch (err) { - logger.error(err); - const error = transformError(err); - - const resp = buildResponse(response); - return resp.error({ - body: { success: false, error: error.message }, - statusCode: error.statusCode, - }); + return response.ok({ + body: { evaluationId, success: true }, + }); + } catch (err) { + logger.error(err); + const error = transformError(err); + + const resp = buildResponse(response); + return resp.error({ + body: { success: false, error: error.message }, + statusCode: error.statusCode, + }); + } } - } - ); + ); }; diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/utils.ts b/x-pack/plugins/elastic_assistant/server/routes/evaluate/utils.ts index 550e89667256e3..11f8cb9c2f692b 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/evaluate/utils.ts +++ b/x-pack/plugins/elastic_assistant/server/routes/evaluate/utils.ts @@ -12,7 +12,7 @@ import type { Logger } from '@kbn/core/server'; import type { Run } from 'langsmith/schemas'; import { ToolingLog } from '@kbn/tooling-log'; import { LangChainTracer } from 'langchain/callbacks'; -import { Dataset } from '../../schemas/evaluate/post_evaluate'; +import { Dataset } from '@kbn/elastic-assistant-common'; /** * Returns the LangChain `llmType` for the given connectorId/connectors diff --git a/x-pack/plugins/elastic_assistant/server/schemas/common.ts b/x-pack/plugins/elastic_assistant/server/schemas/common.ts index 00e97a9326c5e6..5e847aef69fc08 100644 --- a/x-pack/plugins/elastic_assistant/server/schemas/common.ts +++ b/x-pack/plugins/elastic_assistant/server/schemas/common.ts @@ -14,6 +14,8 @@ import type { RouteValidationResultFactory, RouteValidationError, } from '@kbn/core/server'; +import type { TypeOf, ZodType } from 'zod'; +import { stringifyZodError } from '@kbn/zod-helpers'; type RequestValidationResult = | { @@ -36,3 +38,14 @@ export const buildRouteValidation = (validatedInput: A) => validationResult.ok(validatedInput) ) ); + +export const buildRouteValidationWithZod = + >(schema: T): RouteValidationFunction => + (inputValue: unknown, validationResult: RouteValidationResultFactory) => { + const decoded = schema.safeParse(inputValue); + if (decoded.success) { + return validationResult.ok(decoded.data); + } else { + return validationResult.badRequest(stringifyZodError(decoded.error)); + } + }; diff --git a/x-pack/plugins/elastic_assistant/server/schemas/evaluate/post_evaluate.ts b/x-pack/plugins/elastic_assistant/server/schemas/evaluate/post_evaluate.ts deleted file mode 100644 index f520bf9bf93b6b..00000000000000 --- a/x-pack/plugins/elastic_assistant/server/schemas/evaluate/post_evaluate.ts +++ /dev/null @@ -1,58 +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'; - -/** Validates Output Index starts with `.kibana-elastic-ai-assistant-` */ -const outputIndex = new t.Type( - 'OutputIndexPrefixed', - (input): input is string => - typeof input === 'string' && input.startsWith('.kibana-elastic-ai-assistant-'), - (input, context) => - typeof input === 'string' && input.startsWith('.kibana-elastic-ai-assistant-') - ? t.success(input) - : t.failure( - input, - context, - `Type error: Output Index does not start with '.kibana-elastic-ai-assistant-'` - ), - t.identity -); - -/** Validates the URL path of a POST request to the `/evaluate` endpoint */ -export const PostEvaluatePathQuery = t.type({ - agents: t.string, - datasetName: t.union([t.string, t.undefined]), - evaluationType: t.union([t.string, t.undefined]), - evalModel: t.union([t.string, t.undefined]), - models: t.string, - outputIndex, - projectName: t.union([t.string, t.undefined]), - runName: t.union([t.string, t.undefined]), -}); - -export type PostEvaluatePathQueryInputs = t.TypeOf; - -export type DatasetItem = t.TypeOf; -export const DatasetItem = t.type({ - id: t.union([t.string, t.undefined]), - input: t.string, - reference: t.string, - tags: t.union([t.array(t.string), t.undefined]), - prediction: t.union([t.string, t.undefined]), -}); - -export type Dataset = t.TypeOf; -export const Dataset = t.array(DatasetItem); - -/** Validates the body of a POST request to the `/evaluate` endpoint */ -export const PostEvaluateBody = t.type({ - dataset: t.union([Dataset, t.undefined]), - evalPrompt: t.union([t.string, t.undefined]), -}); - -export type PostEvaluateBodyInputs = t.TypeOf; diff --git a/x-pack/plugins/elastic_assistant/tsconfig.json b/x-pack/plugins/elastic_assistant/tsconfig.json index dfca7893b20365..2717da8d33a3ac 100644 --- a/x-pack/plugins/elastic_assistant/tsconfig.json +++ b/x-pack/plugins/elastic_assistant/tsconfig.json @@ -35,6 +35,7 @@ "@kbn/core-analytics-server", "@kbn/elastic-assistant-common", "@kbn/core-http-router-server-mocks", + "@kbn/zod-helpers", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/embeddable_enhanced/public/actions/panel_notifications_action.ts b/x-pack/plugins/embeddable_enhanced/public/actions/panel_notifications_action.ts index 9b1c013f0946e4..8c1de7cf56b344 100644 --- a/x-pack/plugins/embeddable_enhanced/public/actions/panel_notifications_action.ts +++ b/x-pack/plugins/embeddable_enhanced/public/actions/panel_notifications_action.ts @@ -46,7 +46,7 @@ export class PanelNotificationsAction implements ActionDefinition { + if (!embeddable?.getInput) return false; if (embeddable.getInput().viewMode !== ViewMode.EDIT) return false; return this.getEventCount(embeddable) > 0; }; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/search_indices.mock.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/search_indices.mock.ts index e91917144c7021..38affc5fd9c571 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/search_indices.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/search_indices.mock.ts @@ -33,6 +33,7 @@ export const indices: ElasticsearchIndexWithIngestion[] = [ { connector: { api_key_id: null, + api_key_secret_id: null, configuration: { foo: { default_value: '', @@ -159,6 +160,7 @@ export const indices: ElasticsearchIndexWithIngestion[] = [ { connector: { api_key_id: null, + api_key_secret_id: null, configuration: { foo: { default_value: '', diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/view_index.mock.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/view_index.mock.ts index 388bb91c9a7c32..c50bf7acf39517 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/view_index.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/__mocks__/view_index.mock.ts @@ -42,6 +42,7 @@ export const apiIndex: ApiViewIndex = { export const connectorIndex: ConnectorViewIndex = { connector: { api_key_id: null, + api_key_secret_id: null, configuration: { foo: { default_value: '', @@ -172,6 +173,7 @@ export const connectorIndex: ConnectorViewIndex = { export const crawlerIndex: CrawlerViewIndex = { connector: { api_key_id: null, + api_key_secret_id: null, configuration: { foo: { default_value: '', diff --git a/x-pack/plugins/enterprise_search/server/lib/connectors/add_connector.test.ts b/x-pack/plugins/enterprise_search/server/lib/connectors/add_connector.test.ts index 9bb2a18d6a4bb4..de2d2d2db3927b 100644 --- a/x-pack/plugins/enterprise_search/server/lib/connectors/add_connector.test.ts +++ b/x-pack/plugins/enterprise_search/server/lib/connectors/add_connector.test.ts @@ -11,11 +11,14 @@ import { createConnector, fetchConnectorByIndexName, deleteConnectorById, + createConnectorSecret, + updateConnectorApiKeyId, } from '@kbn/search-connectors'; import { ErrorCode } from '../../../common/types/error_codes'; import { fetchCrawlerByIndexName } from '../crawler/fetch_crawlers'; +import { generateApiKey } from '../indices/generate_api_key'; import { textAnalysisSettings } from '../indices/text_analysis'; import { addConnector } from './add_connector'; @@ -24,8 +27,11 @@ jest.mock('@kbn/search-connectors', () => ({ createConnector: jest.fn(), deleteConnectorById: jest.fn(), fetchConnectorByIndexName: jest.fn(), + createConnectorSecret: jest.fn(), + updateConnectorApiKeyId: jest.fn(), })); jest.mock('../crawler/fetch_crawlers', () => ({ fetchCrawlerByIndexName: jest.fn() })); +jest.mock('../indices/generate_api_key', () => ({ generateApiKey: jest.fn() })); describe('addConnector lib function', () => { const mockClient = { @@ -71,6 +77,10 @@ describe('addConnector lib function', () => { (fetchCrawlerByIndexName as jest.Mock).mockImplementation(() => undefined); mockClient.asCurrentUser.indices.getMapping.mockImplementation(() => connectorsIndicesMapping); + (generateApiKey as jest.Mock).mockImplementation(() => undefined); + (createConnectorSecret as jest.Mock).mockImplementation(() => undefined); + (updateConnectorApiKeyId as jest.Mock).mockImplementation(() => undefined); + await expect( addConnector(mockClient as unknown as IScopedClusterClient, { indexName: 'index_name', @@ -95,6 +105,65 @@ describe('addConnector lib function', () => { mappings: {}, settings: { ...textAnalysisSettings('fr'), auto_expand_replicas: '0-3', number_of_shards: 2 }, }); + + // non-native connector should not generate API key or update secrets storage + expect(generateApiKey).toBeCalledTimes(0); + expect(createConnectorSecret).toBeCalledTimes(0); + expect(updateConnectorApiKeyId).toBeCalledTimes(0); + }); + + it('should add a native connector', async () => { + mockClient.asCurrentUser.index.mockImplementation(() => ({ _id: 'fakeId' })); + (createConnector as jest.Mock).mockImplementation(() => ({ + id: 'fakeId', + index_name: 'index_name', + })); + mockClient.asCurrentUser.indices.exists.mockImplementation(() => false); + (fetchConnectorByIndexName as jest.Mock).mockImplementation(() => undefined); + (fetchCrawlerByIndexName as jest.Mock).mockImplementation(() => undefined); + mockClient.asCurrentUser.indices.getMapping.mockImplementation(() => connectorsIndicesMapping); + + (generateApiKey as jest.Mock).mockImplementation(() => ({ + id: 'api-key-id', + encoded: 'encoded-api-key', + })); + (createConnectorSecret as jest.Mock).mockImplementation(() => ({ id: 'connector-secret-id' })); + (updateConnectorApiKeyId as jest.Mock).mockImplementation(() => ({ acknowledged: true })); + + await expect( + addConnector(mockClient as unknown as IScopedClusterClient, { + indexName: 'index_name', + isNative: true, + language: 'ja', + }) + ).resolves.toEqual(expect.objectContaining({ id: 'fakeId', index_name: 'index_name' })); + expect(createConnector).toHaveBeenCalledWith(mockClient.asCurrentUser, { + indexName: 'index_name', + isNative: true, + language: 'ja', + name: 'index_name', + pipeline: { + extract_binary_content: true, + name: 'ent-search-generic-ingestion', + reduce_whitespace: true, + run_ml_inference: true, + }, + }); + expect(mockClient.asCurrentUser.indices.create).toHaveBeenCalledWith({ + index: 'index_name', + mappings: {}, + settings: { ...textAnalysisSettings('ja'), auto_expand_replicas: '0-3', number_of_shards: 2 }, + }); + + // native connector should generate API key and update secrets storage + expect(generateApiKey).toHaveBeenCalledWith(mockClient, 'index_name'); + expect(createConnectorSecret).toHaveBeenCalledWith(mockClient.asCurrentUser, 'encoded-api-key'); + expect(updateConnectorApiKeyId).toHaveBeenCalledWith( + mockClient.asCurrentUser, + 'fakeId', + 'api-key-id', + 'connector-secret-id' + ); }); it('should reject if index already exists', async () => { @@ -186,6 +255,13 @@ describe('addConnector lib function', () => { (fetchCrawlerByIndexName as jest.Mock).mockImplementation(() => undefined); mockClient.asCurrentUser.indices.getMapping.mockImplementation(() => connectorsIndicesMapping); + (generateApiKey as jest.Mock).mockImplementation(() => ({ + id: 'api-key-id', + encoded: 'encoded-api-key', + })); + (createConnectorSecret as jest.Mock).mockImplementation(() => ({ id: 'connector-secret-id' })); + (updateConnectorApiKeyId as jest.Mock).mockImplementation(() => ({ acknowledged: true })); + await expect( addConnector(mockClient as unknown as IScopedClusterClient, { deleteExistingConnector: true, diff --git a/x-pack/plugins/enterprise_search/server/lib/connectors/add_connector.ts b/x-pack/plugins/enterprise_search/server/lib/connectors/add_connector.ts index 623b2f21c2c05d..3c5265234bb9af 100644 --- a/x-pack/plugins/enterprise_search/server/lib/connectors/add_connector.ts +++ b/x-pack/plugins/enterprise_search/server/lib/connectors/add_connector.ts @@ -9,9 +9,11 @@ import { IScopedClusterClient } from '@kbn/core/server'; import { createConnector, + createConnectorSecret, Connector, - deleteConnectorById, ConnectorStatus, + deleteConnectorById, + updateConnectorApiKeyId, } from '@kbn/search-connectors'; import { fetchConnectorByIndexName, NATIVE_CONNECTOR_DEFINITIONS } from '@kbn/search-connectors'; @@ -19,10 +21,10 @@ import { fetchConnectorByIndexName, NATIVE_CONNECTOR_DEFINITIONS } from '@kbn/se import { ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE } from '../../../common/constants'; import { ErrorCode } from '../../../common/types/error_codes'; -import { stripSearchPrefix } from '../../../common/utils/strip_search_prefix'; import { fetchCrawlerByIndexName } from '../crawler/fetch_crawlers'; import { createIndex } from '../indices/create_index'; +import { generateApiKey } from '../indices/generate_api_key'; import { getDefaultPipeline } from '../pipelines/get_default_pipeline'; export const addConnector = async ( @@ -82,10 +84,28 @@ export const addConnector = async ( } : {}; - return await createConnector(client.asCurrentUser, { + const connector = await createConnector(client.asCurrentUser, { ...input, - name: stripSearchPrefix(input.indexName || ''), + name: input.indexName || '', ...nativeFields, pipeline: await getDefaultPipeline(client), }); + + // Only create API key for native connectors and if index name was provided + if ( + index && + input.isNative && + input.serviceType !== ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE + ) { + const apiKey = await generateApiKey(client, index); + const connectorSecret = await createConnectorSecret(client.asCurrentUser, apiKey.encoded); + await updateConnectorApiKeyId( + client.asCurrentUser, + connector.id, + apiKey.id, + connectorSecret.id + ); + } + + return connector; }; diff --git a/x-pack/plugins/enterprise_search/server/lib/crawler/post_connector.test.ts b/x-pack/plugins/enterprise_search/server/lib/crawler/post_connector.test.ts index 7a8f5edd803304..034fbebc35855a 100644 --- a/x-pack/plugins/enterprise_search/server/lib/crawler/post_connector.test.ts +++ b/x-pack/plugins/enterprise_search/server/lib/crawler/post_connector.test.ts @@ -30,6 +30,7 @@ describe('recreateConnectorDocument lib function', () => { expect(mockClient.asCurrentUser.index).toHaveBeenCalledWith({ document: { api_key_id: null, + api_key_secret_id: null, configuration: {}, custom_scheduling: {}, description: null, diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/connectors.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/connectors.ts index e1b5b399dc3a0c..91899c88d73fcc 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/connectors.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/connectors.ts @@ -11,7 +11,7 @@ import { deleteConnectorById, fetchConnectorById, fetchConnectors, - fetchSyncJobsByConnectorId, + fetchSyncJobs, putUpdateNative, updateConnectorConfiguration, updateConnectorNameAndDescription, @@ -248,7 +248,7 @@ export function registerConnectorRoutes({ router, log }: RouteDependencies) { }, elasticsearchErrorHandler(log, async (context, request, response) => { const { client } = (await context.core).elasticsearch; - const result = await fetchSyncJobsByConnectorId( + const result = await fetchSyncJobs( client.asCurrentUser, request.params.connectorId, request.query.from, diff --git a/x-pack/plugins/file_upload/common/types.ts b/x-pack/plugins/file_upload/common/types.ts index e8906bbfe469ce..f752d5e5a85078 100644 --- a/x-pack/plugins/file_upload/common/types.ts +++ b/x-pack/plugins/file_upload/common/types.ts @@ -69,6 +69,7 @@ export interface FindFileStructureResponse { joda_timestamp_formats?: string[]; timestamp_field?: string; should_trim_fields?: boolean; + ecs_compatibility?: string; } export interface FindFileStructureErrorResponse { diff --git a/x-pack/plugins/file_upload/public/importer/geo/abstract_geo_file_importer.tsx b/x-pack/plugins/file_upload/public/importer/geo/abstract_geo_file_importer.tsx index 07a0d4acfb4c64..2b366eef42b84f 100644 --- a/x-pack/plugins/file_upload/public/importer/geo/abstract_geo_file_importer.tsx +++ b/x-pack/plugins/file_upload/public/importer/geo/abstract_geo_file_importer.tsx @@ -314,7 +314,7 @@ export class AbstractGeoFileImporter extends Importer implements GeoFileImporter throw new Error('read(data: ArrayBuffer) not supported, use previewFile and import instead.'); } - protected _createDocs(text: string): CreateDocsResponse { + protected _createDocs(text: string): CreateDocsResponse { throw new Error('_createDocs not implemented.'); } } diff --git a/x-pack/plugins/file_upload/public/importer/importer.ts b/x-pack/plugins/file_upload/public/importer/importer.ts index ba43c3c0849a90..94a15b9905ff0b 100644 --- a/x-pack/plugins/file_upload/public/importer/importer.ts +++ b/x-pack/plugins/file_upload/public/importer/importer.ts @@ -73,7 +73,7 @@ export abstract class Importer implements IImporter { return { success: true }; } - protected abstract _createDocs(t: string, isLastPart: boolean): CreateDocsResponse; + protected abstract _createDocs(t: string, isLastPart: boolean): CreateDocsResponse; public async initializeImport( index: string, diff --git a/x-pack/plugins/file_upload/public/importer/index.ts b/x-pack/plugins/file_upload/public/importer/index.ts index 22465ae2df8a77..238adb3afa6b71 100644 --- a/x-pack/plugins/file_upload/public/importer/index.ts +++ b/x-pack/plugins/file_upload/public/importer/index.ts @@ -8,3 +8,4 @@ export { importerFactory } from './importer_factory'; export { validateFile } from './validate_file'; export * from './types'; +export { MessageImporter } from './message_importer'; diff --git a/x-pack/plugins/file_upload/public/importer/message_importer.ts b/x-pack/plugins/file_upload/public/importer/message_importer.ts index 1322437f471d00..2ab7bd8750c9a1 100644 --- a/x-pack/plugins/file_upload/public/importer/message_importer.ts +++ b/x-pack/plugins/file_upload/public/importer/message_importer.ts @@ -6,8 +6,8 @@ */ import { Importer } from './importer'; -import { ImportDocMessage } from '../../common/types'; -import { CreateDocsResponse, ImportFactoryOptions } from './types'; +import type { ImportDocMessage } from '../../common/types'; +import type { CreateDocsResponse, ImportFactoryOptions } from './types'; export class MessageImporter extends Importer { private _excludeLinesRegex: RegExp | null; @@ -30,7 +30,11 @@ export class MessageImporter extends Importer { // multiline_start_pattern regex // if it does, it is a legitimate end of line and can be pushed into the list, // if not, it must be a newline char inside a field value, so keep looking. - protected _createDocs(text: string, isLastPart: boolean): CreateDocsResponse { + protected _createDocs( + text: string, + isLastPart: boolean, + lineLimit?: number + ): CreateDocsResponse { let remainder = 0; try { const docs: ImportDocMessage[] = []; @@ -53,6 +57,10 @@ export class MessageImporter extends Importer { } else { line += char; } + + if (lineLimit !== undefined && docs.length >= lineLimit) { + break; + } } remainder = line.length; diff --git a/x-pack/plugins/file_upload/public/importer/ndjson_importer.ts b/x-pack/plugins/file_upload/public/importer/ndjson_importer.ts index 617fd95681cfe7..87b316c43cfc61 100644 --- a/x-pack/plugins/file_upload/public/importer/ndjson_importer.ts +++ b/x-pack/plugins/file_upload/public/importer/ndjson_importer.ts @@ -13,7 +13,7 @@ export class NdjsonImporter extends Importer { super(); } - protected _createDocs(json: string, isLastPart: boolean): CreateDocsResponse { + protected _createDocs(json: string, isLastPart: boolean): CreateDocsResponse { let remainder = 0; try { const splitJson = json.split(/}\s*\n/); diff --git a/x-pack/plugins/file_upload/public/importer/types.ts b/x-pack/plugins/file_upload/public/importer/types.ts index fbd248f0455ff5..1199bb5a15c6a6 100644 --- a/x-pack/plugins/file_upload/public/importer/types.ts +++ b/x-pack/plugins/file_upload/public/importer/types.ts @@ -25,17 +25,16 @@ export interface ImportResults { error?: any; } -export interface CreateDocsResponse { +export interface CreateDocsResponse { success: boolean; remainder: number; - docs: ImportDoc[]; + docs: T[]; error?: any; } export interface ImportFactoryOptions { excludeLinesPattern?: string; multilineStartPattern?: string; - importConfig: ImportConfig; } export interface IImporter { diff --git a/x-pack/plugins/file_upload/public/index.ts b/x-pack/plugins/file_upload/public/index.ts index b97ed0f0963d89..6cf25214c569a8 100644 --- a/x-pack/plugins/file_upload/public/index.ts +++ b/x-pack/plugins/file_upload/public/index.ts @@ -16,3 +16,4 @@ export type { Props as IndexNameFormProps } from './components/geo_upload_form/i export type { FileUploadPluginStart } from './plugin'; export type { FileUploadComponentProps, FileUploadGeoResults } from './lazy_load_bundle'; export type { IImporter } from './importer/types'; +export { MessageImporter } from './importer'; diff --git a/x-pack/plugins/fleet/README.md b/x-pack/plugins/fleet/README.md index ebe65d77e3bbf6..07dd4bfd67c005 100644 --- a/x-pack/plugins/fleet/README.md +++ b/x-pack/plugins/fleet/README.md @@ -170,9 +170,11 @@ You can also run a specific test by passing the filepath as an argument, e.g.: yarn jest --config x-pack/plugins/fleet/jest.config.js x-pack/plugins/fleet/common/services/validate_package_policy.test.ts ``` -#### API integration tests +#### API integration tests (stateful) -You need to have `docker` to run ingest manager api integration tests. +API integration tests are run using the functional test runner (FTR). When developing or troubleshooting tests, it is convenient to run the server and tests separately as detailed below. + +Note: Docker needs to be running to run these tests. 1. In one terminal, run the server from the Kibana root directory with @@ -188,22 +190,38 @@ You need to have `docker` to run ingest manager api integration tests. 1. In a second terminal, run the tests from the Kibana root directory with - ``` + ```bash FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:runner --config x-pack/test/fleet_api_integration/ ``` Optionally, you can filter which tests you want to run using `--grep` - ``` + ```bash FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:runner --config x-pack/test/fleet_api_integration/ --grep='fleet' ``` -**Note** you can also supply which docker image to use for the package registry via the `FLEET_PACKAGE_REGISTRY_DOCKER_IMAGE` env variable. For example, +Note: you can also supply which Docker image to use for the Package Registry via the `FLEET_PACKAGE_REGISTRY_DOCKER_IMAGE` env variable. For example, -``` +```bash FLEET_PACKAGE_REGISTRY_DOCKER_IMAGE='docker.elastic.co/package-registry/distribution:production' FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:runner ``` +#### API integration tests (serverless) + +The process for running serverless API integration tests is similar as above. Security and observability project types have Fleet enabled. At the time of writing, the same tests exist for Fleet under these two project types. + +Security: +```bash +FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:server --config x-pack/test_serverless/api_integration/test_suites/security/fleet/config.ts +FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:runner --config x-pack/test_serverless/api_integration/test_suites/security/fleet/config.ts +``` + +Observability: +```bash +FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:server --config x-pack/test_serverless/api_integration/test_suites/observability/fleet/config.ts +FLEET_PACKAGE_REGISTRY_PORT=12345 yarn test:ftr:runner --config x-pack/test_serverless/api_integration/test_suites/observability/fleet/config.ts +``` + #### Cypress tests We support UI end-to-end testing with Cypress. Refer to [cypress/README.md](./cypress/README.md) for how to run these tests. diff --git a/x-pack/plugins/fleet/common/constants/epm.ts b/x-pack/plugins/fleet/common/constants/epm.ts index 3548fee93fbf2f..3909605e5b71be 100644 --- a/x-pack/plugins/fleet/common/constants/epm.ts +++ b/x-pack/plugins/fleet/common/constants/epm.ts @@ -33,6 +33,8 @@ export const DATASET_VAR_NAME = 'data_stream.dataset'; export const CUSTOM_INTEGRATION_PACKAGE_SPEC_VERSION = '2.9.0'; +export const GENERIC_DATASET_NAME = 'generic'; + /* Package rules: | | autoUpdatePackages | diff --git a/x-pack/plugins/fleet/common/constants/fleet_server_policy_config.ts b/x-pack/plugins/fleet/common/constants/fleet_server_policy_config.ts index db8cacb91d6d7d..11582a2631dfae 100644 --- a/x-pack/plugins/fleet/common/constants/fleet_server_policy_config.ts +++ b/x-pack/plugins/fleet/common/constants/fleet_server_policy_config.ts @@ -12,3 +12,5 @@ export const DEFAULT_FLEET_SERVER_HOST_ID = 'fleet-default-fleet-server-host'; export const FLEET_PROXY_SAVED_OBJECT_TYPE = 'fleet-proxy'; export const PROXY_URL_REGEX = /^(http[s]?|socks5):\/\/[^\s$.?#].[^\s]*$/gm; + +export const SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID = 'default-fleet-server'; diff --git a/x-pack/plugins/fleet/common/constants/output.ts b/x-pack/plugins/fleet/common/constants/output.ts index cdd52a42f3e6c4..aa54126a6060ba 100644 --- a/x-pack/plugins/fleet/common/constants/output.ts +++ b/x-pack/plugins/fleet/common/constants/output.ts @@ -26,6 +26,8 @@ export const DEFAULT_OUTPUT: NewOutput = { hosts: [''], }; +export const SERVERLESS_DEFAULT_OUTPUT_ID = 'es-default-output'; + export const LICENCE_FOR_PER_POLICY_OUTPUT = 'platinum'; /** diff --git a/x-pack/plugins/fleet/common/openapi/bundled.json b/x-pack/plugins/fleet/common/openapi/bundled.json index c04f0da6a3d85a..008e1d1f0ba37b 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.json +++ b/x-pack/plugins/fleet/common/openapi/bundled.json @@ -5083,6 +5083,9 @@ "is_default": { "type": "boolean" }, + "is_internal": { + "type": "boolean" + }, "host_urls": { "type": "array", "items": { @@ -5195,6 +5198,9 @@ "is_default": { "type": "boolean" }, + "is_internal": { + "type": "boolean" + }, "host_urls": { "type": "array", "items": { @@ -8904,6 +8910,9 @@ "is_default": { "type": "boolean" }, + "is_internal": { + "type": "boolean" + }, "is_preconfigured": { "type": "boolean" }, diff --git a/x-pack/plugins/fleet/common/openapi/bundled.yaml b/x-pack/plugins/fleet/common/openapi/bundled.yaml index ab486bb2fb8c2b..849c22b47069ae 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.yaml +++ b/x-pack/plugins/fleet/common/openapi/bundled.yaml @@ -3171,6 +3171,8 @@ paths: type: string is_default: type: boolean + is_internal: + type: boolean host_urls: type: array items: @@ -3241,6 +3243,8 @@ paths: type: string is_default: type: boolean + is_internal: + type: boolean host_urls: type: array items: @@ -5762,6 +5766,8 @@ components: type: string is_default: type: boolean + is_internal: + type: boolean is_preconfigured: type: boolean host_urls: diff --git a/x-pack/plugins/fleet/common/openapi/components/schemas/fleet_server_host.yaml b/x-pack/plugins/fleet/common/openapi/components/schemas/fleet_server_host.yaml index 133bc7fcce13cd..2bb08f3acc2a36 100644 --- a/x-pack/plugins/fleet/common/openapi/components/schemas/fleet_server_host.yaml +++ b/x-pack/plugins/fleet/common/openapi/components/schemas/fleet_server_host.yaml @@ -7,6 +7,8 @@ properties: type: string is_default: type: boolean + is_internal: + type: boolean is_preconfigured: type: boolean host_urls: diff --git a/x-pack/plugins/fleet/common/openapi/paths/fleet_server_hosts.yaml b/x-pack/plugins/fleet/common/openapi/paths/fleet_server_hosts.yaml index d7668f3683b7b9..987f61cd7619b8 100644 --- a/x-pack/plugins/fleet/common/openapi/paths/fleet_server_hosts.yaml +++ b/x-pack/plugins/fleet/common/openapi/paths/fleet_server_hosts.yaml @@ -51,6 +51,8 @@ post: type: string is_default: type: boolean + is_internal: + type: boolean host_urls: type: array items: diff --git a/x-pack/plugins/fleet/common/openapi/paths/fleet_server_hosts@{item_id}.yaml b/x-pack/plugins/fleet/common/openapi/paths/fleet_server_hosts@{item_id}.yaml index d46a8b86fb7f60..21d5342d18a5eb 100644 --- a/x-pack/plugins/fleet/common/openapi/paths/fleet_server_hosts@{item_id}.yaml +++ b/x-pack/plugins/fleet/common/openapi/paths/fleet_server_hosts@{item_id}.yaml @@ -59,6 +59,8 @@ put: type: string is_default: type: boolean + is_internal: + type: boolean host_urls: type: array items: diff --git a/x-pack/plugins/fleet/common/services/policy_template.test.ts b/x-pack/plugins/fleet/common/services/policy_template.test.ts index 078dac911f8428..87ce2121b8b59a 100644 --- a/x-pack/plugins/fleet/common/services/policy_template.test.ts +++ b/x-pack/plugins/fleet/common/services/policy_template.test.ts @@ -236,7 +236,7 @@ describe('getNormalizedDataStreams', () => { title: expect.any(String), release: 'ga', package: 'nginx', - path: 'nginx', + path: 'nginx.bar', streams: [ { input: 'string', diff --git a/x-pack/plugins/fleet/common/services/policy_template.ts b/x-pack/plugins/fleet/common/services/policy_template.ts index 717e020fc3259f..ed390e0c6b45d2 100644 --- a/x-pack/plugins/fleet/common/services/policy_template.ts +++ b/x-pack/plugins/fleet/common/services/policy_template.ts @@ -80,13 +80,15 @@ export const getNormalizedDataStreams = ( } return policyTemplates.map((policyTemplate) => { + const dataset = datasetName || createDefaultDatasetName(packageInfo, policyTemplate); + const dataStream: RegistryDataStream = { type: policyTemplate.type, - dataset: datasetName || createDefaultDatasetName(packageInfo, policyTemplate), + dataset, title: policyTemplate.title + ' Dataset', release: packageInfo.release || 'ga', package: packageInfo.name, - path: packageInfo.name, + path: dataset, elasticsearch: packageInfo.elasticsearch || {}, streams: [ { diff --git a/x-pack/plugins/fleet/common/types/index.ts b/x-pack/plugins/fleet/common/types/index.ts index b2c66a01dfcaab..61e28828492362 100644 --- a/x-pack/plugins/fleet/common/types/index.ts +++ b/x-pack/plugins/fleet/common/types/index.ts @@ -51,7 +51,6 @@ export interface FleetConfigType { }; internal?: { disableILMPolicies: boolean; - disableProxies: boolean; fleetServerStandalone: boolean; onlyAllowAgentUpgradeToKnownVersions: boolean; activeAgentsSoftLimit?: number; diff --git a/x-pack/plugins/fleet/common/types/models/fleet_server_policy_config.ts b/x-pack/plugins/fleet/common/types/models/fleet_server_policy_config.ts index 5609853a4ad2eb..1e634df2b766dd 100644 --- a/x-pack/plugins/fleet/common/types/models/fleet_server_policy_config.ts +++ b/x-pack/plugins/fleet/common/types/models/fleet_server_policy_config.ts @@ -11,6 +11,7 @@ export interface NewFleetServerHost { host_urls: string[]; is_default: boolean; is_preconfigured: boolean; + is_internal?: boolean; proxy_id?: string | null; } diff --git a/x-pack/plugins/fleet/common/types/rest_spec/fleet_server_hosts.ts b/x-pack/plugins/fleet/common/types/rest_spec/fleet_server_hosts.ts index 4a334c7e71b62a..f07e96a0b927ba 100644 --- a/x-pack/plugins/fleet/common/types/rest_spec/fleet_server_hosts.ts +++ b/x-pack/plugins/fleet/common/types/rest_spec/fleet_server_hosts.ts @@ -19,6 +19,7 @@ export interface PutFleetServerHostsRequest { name?: string; host_urls?: string[]; is_default?: boolean; + is_internal?: boolean; proxy_id?: string | null; }; } @@ -29,6 +30,7 @@ export interface PostFleetServerHostsRequest { name?: string; host_urls?: string[]; is_default?: boolean; + is_internal?: boolean; proxy_id?: string | null; }; } diff --git a/x-pack/plugins/fleet/cypress/e2e/fleet_settings.cy.ts b/x-pack/plugins/fleet/cypress/e2e/fleet_settings.cy.ts index 34bf23739495b6..cd73a174c41dd2 100644 --- a/x-pack/plugins/fleet/cypress/e2e/fleet_settings.cy.ts +++ b/x-pack/plugins/fleet/cypress/e2e/fleet_settings.cy.ts @@ -28,6 +28,13 @@ describe('Edit settings', () => { host_urls: ['https://localhost:8220'], is_default: true, }, + { + id: 'fleet-internal-host', + name: 'Internal Host', + host_urls: ['https://internal:8220'], + is_default: false, + is_internal: true, + }, ], page: 1, perPage: 10000, @@ -160,4 +167,8 @@ describe('Edit settings', () => { expect(interception.request.body.name).to.equal('output-logstash-1'); }); }); + + it('should not display internal fleet server hosts', () => { + cy.getBySel(SETTINGS_FLEET_SERVER_HOSTS.TABLE).should('not.contain', 'Internal Host'); + }); }); diff --git a/x-pack/plugins/fleet/cypress/screens/fleet.ts b/x-pack/plugins/fleet/cypress/screens/fleet.ts index b48a720001c1bd..d7b1b5abf7ac7a 100644 --- a/x-pack/plugins/fleet/cypress/screens/fleet.ts +++ b/x-pack/plugins/fleet/cypress/screens/fleet.ts @@ -190,6 +190,7 @@ export const SETTINGS_OUTPUTS_KAFKA = { export const SETTINGS_FLEET_SERVER_HOSTS = { ADD_BUTTON: 'settings.fleetServerHosts.addFleetServerHostBtn', EDIT_BUTTON: 'fleetServerHostsTable.edit.btn', + TABLE: 'settingsFleetServerHostsTable', }; export const AGENT_POLICY_FORM = { diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.test.tsx index b9f653db37e1e2..0094d5120625b4 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.test.tsx @@ -11,7 +11,7 @@ import { useLicense } from '../../../../../../hooks/use_license'; import type { LicenseService } from '../../../../services'; import type { AgentPolicy } from '../../../../types'; -import { useOutputOptions } from './hooks'; +import { useOutputOptions, useFleetServerHostsOptions } from './hooks'; jest.mock('../../../../../../hooks/use_license'); @@ -153,6 +153,35 @@ const mockApiCallsWithInternalOutputs = (http: MockedFleetStartServices['http']) }); }; +const mockApiCallsWithInternalFleetServerHost = (http: MockedFleetStartServices['http']) => { + http.get.mockImplementation(async (path) => { + if (typeof path !== 'string') { + throw new Error('Invalid request'); + } + if (path === '/api/fleet/fleet_server_hosts') { + return { + data: { + items: [ + { + id: 'default-host', + name: 'Default', + is_default: true, + }, + { + id: 'internal-output', + name: 'Internal', + is_default: false, + is_internal: true, + }, + ], + }, + }; + } + + return defaultHttpClientGetImplementation(path); + }); +}; + describe('useOutputOptions', () => { it('should generate enabled options if the licence is platinium', async () => { const testRenderer = createFleetTestRendererMock(); @@ -636,3 +665,30 @@ describe('useOutputOptions', () => { `); }); }); + +describe('useFleetServerHostsOptions', () => { + it('should not enable internal fleet server hosts', async () => { + const testRenderer = createFleetTestRendererMock(); + mockApiCallsWithInternalFleetServerHost(testRenderer.startServices.http); + const { result, waitForNextUpdate } = testRenderer.renderHook(() => + useFleetServerHostsOptions({} as AgentPolicy) + ); + expect(result.current.isLoading).toBeTruthy(); + + await waitForNextUpdate(); + expect(result.current.fleetServerHostsOptions).toMatchInlineSnapshot(` + Array [ + Object { + "disabled": undefined, + "inputDisplay": "Default (currently Default)", + "value": "@@##DEFAULT_SELECT##@@", + }, + Object { + "disabled": true, + "inputDisplay": "Internal", + "value": "internal-output", + }, + ] + `); + }); +}); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.tsx index 5b36fd831bb656..7409f75a593dd0 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.tsx @@ -224,9 +224,12 @@ export function useFleetServerHostsOptions(agentPolicy: Partial !item.is_default) .map((item) => { + const isInternalFleetServerHost = !!item.is_internal; + return { value: item.id, inputDisplay: item.name, + disabled: isInternalFleetServerHost, }; }), ]; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx index 0060258fe905fb..47ae8234797026 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useState, useMemo } from 'react'; +import React, { useState, useMemo, Suspense } from 'react'; import { EuiDescribedFormGroup, EuiFormRow, @@ -35,7 +35,13 @@ import { DEFAULT_MAX_AGENT_POLICIES_WITH_INACTIVITY_TIMEOUT, } from '../../../../../../../common/constants'; import type { NewAgentPolicy, AgentPolicy } from '../../../../types'; -import { useStartServices, useConfig, useGetAgentPolicies, useLicense } from '../../../../hooks'; +import { + useStartServices, + useConfig, + useGetAgentPolicies, + useLicense, + useUIExtension, +} from '../../../../hooks'; import { AgentPolicyPackageBadge } from '../../../../components'; import { UninstallCommandFlyout } from '../../../../../../components'; @@ -67,11 +73,16 @@ export const AgentPolicyAdvancedOptionsContent: React.FunctionComponent = isEditing = false, }) => { const { docLinks } = useStartServices(); + const AgentTamperProtectionWrapper = useUIExtension( + 'endpoint', + 'endpoint-agent-tamper-protection' + ); const config = useConfig(); const maxAgentPoliciesWithInactivityTimeout = config.developer?.maxAgentPoliciesWithInactivityTimeout ?? DEFAULT_MAX_AGENT_POLICIES_WITH_INACTIVITY_TIMEOUT; const [touchedFields, setTouchedFields] = useState<{ [key: string]: boolean }>({}); + const { dataOutputOptions, monitoringOutputOptions, @@ -102,6 +113,98 @@ export const AgentPolicyAdvancedOptionsContent: React.FunctionComponent = const [isUninstallCommandFlyoutOpen, setIsUninstallCommandFlyoutOpen] = useState(false); const policyHasElasticDefend = useMemo(() => hasElasticDefend(agentPolicy), [agentPolicy]); + const AgentTamperProtectionSectionContent = useMemo( + () => ( + + + + } + description={ + Get uninstall command }} + /> + } + > + + + {!policyHasElasticDefend && ( + + + + )} + + } + checked={agentPolicy.is_protected ?? false} + onChange={(e) => { + updateAgentPolicy({ is_protected: e.target.checked }); + }} + disabled={!policyHasElasticDefend} + data-test-subj="tamperProtectionSwitch" + /> + {agentPolicy.id && ( + <> + + { + setIsUninstallCommandFlyoutOpen(true); + }} + disabled={!agentPolicy.is_protected || !policyHasElasticDefend} + data-test-subj="uninstallCommandLink" + > + {i18n.translate('xpack.fleet.agentPolicyForm.tamperingUninstallLink', { + defaultMessage: 'Get uninstall command', + })} + + + )} + + ), + [agentPolicy.id, agentPolicy.is_protected, policyHasElasticDefend, updateAgentPolicy] + ); + + const AgentTamperProtectionSection = useMemo(() => { + if (agentTamperProtectionEnabled && licenseService.isPlatinum() && !agentPolicy.is_managed) { + if (AgentTamperProtectionWrapper) { + return ( + + + {AgentTamperProtectionSectionContent} + + + ); + } + return AgentTamperProtectionSectionContent; + } + }, [ + agentTamperProtectionEnabled, + licenseService, + agentPolicy.is_managed, + AgentTamperProtectionWrapper, + AgentTamperProtectionSectionContent, + ]); + return ( <> = }} /> - {agentTamperProtectionEnabled && licenseService.isPlatinum() && !agentPolicy.is_managed && ( - - - - } - description={ - Get uninstall command }} - /> - } - > - - {' '} - {!policyHasElasticDefend && ( - - - - )} - - } - checked={agentPolicy.is_protected ?? false} - onChange={(e) => { - updateAgentPolicy({ is_protected: e.target.checked }); - }} - disabled={!policyHasElasticDefend} - data-test-subj="tamperProtectionSwitch" - /> - {agentPolicy.id && ( - <> - - { - setIsUninstallCommandFlyoutOpen(true); - }} - disabled={!agentPolicy.is_protected || !policyHasElasticDefend} - data-test-subj="uninstallCommandLink" - > - {i18n.translate('xpack.fleet.agentPolicyForm.tamperingUninstallLink', { - defaultMessage: 'Get uninstall command', - })} - - - )} - - )} + + {AgentTamperProtectionSection} + diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_delete_provider.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_delete_provider.tsx index 84f40ee4b692f9..0f7f2cdf45e5fb 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_delete_provider.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_delete_provider.tsx @@ -12,15 +12,15 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { useHistory } from 'react-router-dom'; -import { AGENTS_PREFIX } from '../../../constants'; +import { SO_SEARCH_LIMIT } from '../../../../../constants'; + import { useStartServices, useConfig, - sendRequest, useLink, useDeleteAgentPolicyMutation, + sendGetAgents, } from '../../../hooks'; -import { API_VERSIONS } from '../../../../../../common/constants'; interface Props { children: (deleteAgentPolicy: DeleteAgentPolicy) => React.ReactElement; @@ -111,15 +111,13 @@ export const AgentPolicyDeleteProvider: React.FunctionComponent = ({ return; } setIsLoadingAgentsCount(true); - const { data } = await sendRequest<{ total: number }>({ - path: `/api/fleet/agents`, - method: 'get', - query: { - kuery: `${AGENTS_PREFIX}.policy_id : ${agentPolicyToCheck}`, - }, - version: API_VERSIONS.public.v1, + // filtering out the unenrolled agents assigned to this policy + const agents = await sendGetAgents({ + showInactive: true, + kuery: `policy_id:"${agentPolicyToCheck}" and not status: unenrolled`, + perPage: SO_SEARCH_LIMIT, }); - setAgentsCount(data?.total || 0); + setAgentsCount(agents.data?.total ?? 0); setIsLoadingAgentsCount(false); }; @@ -168,6 +166,7 @@ export const AgentPolicyDeleteProvider: React.FunctionComponent = ({ ) : agentsCount ? ( void; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx index 303629a99bb692..901426e10f12b9 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx @@ -13,6 +13,7 @@ import { createFleetTestRendererMock } from '../../../../../mock'; import { useUIExtension, + sendGetAgentStatus, sendGetOneAgentPolicy, sendGetOnePackagePolicy, sendUpgradePackagePolicyDryRun, @@ -176,6 +177,11 @@ const mockPackagePolicyNewVersion = { package: { name: 'nginx', title: 'Nginx', version: '1.4.0' }, }; +const mockPackagePolicyAgentless = { + ...mockPackagePolicy, + policy_id: 'agentless', +}; + const TestComponent = async () => { return { default: () => { @@ -416,4 +422,36 @@ describe('edit package policy page', () => { expect(renderResult.getByText('Review field conflicts')).toBeInTheDocument(); }); }); + + it('should not show confirmation modal if package is on agentless policy', async () => { + (sendGetAgentStatus as MockFn).mockResolvedValue({ data: { results: { total: 1 } } }); + (useGetOnePackagePolicy as MockFn).mockReturnValue({ + data: { + item: mockPackagePolicyAgentless, + }, + }); + (sendGetOnePackagePolicy as MockFn).mockResolvedValue({ + data: { + item: mockPackagePolicyAgentless, + }, + }); + (sendGetOneAgentPolicy as MockFn).mockResolvedValue({ + data: { item: { id: 'agentless', name: 'Agentless policy', namespace: 'default' } }, + }); + + render(); + + await waitFor(() => { + expect(renderResult.getByText('Collect logs from Nginx instances')).toBeInTheDocument(); + }); + act(() => { + fireEvent.click(renderResult.getByRole('switch')); + }); + + await act(async () => { + fireEvent.click(renderResult.getByText('Save integration').closest('button')!); + }); + + expect(sendUpdatePackagePolicy).toHaveBeenCalled(); + }); }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx index 033c083882f45a..412939f649eca7 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx @@ -46,6 +46,7 @@ import { StepConfigurePackagePolicy, StepDefinePackagePolicy, } from '../create_package_policy_page/components'; +import { AGENTLESS_POLICY_ID } from '../create_package_policy_page/single_page_layout/hooks/setup_technology'; import { HIDDEN_API_REFERENCE_PACKAGES } from '../../../../../../common/constants'; import type { PackagePolicyEditExtensionComponentProps } from '../../../types'; @@ -187,7 +188,7 @@ export const EditPackagePolicyForm = memo<{ setFormState('INVALID'); return; } - if (agentCount !== 0 && formState !== 'CONFIRM') { + if (agentCount !== 0 && policyId !== AGENTLESS_POLICY_ID && formState !== 'CONFIRM') { setFormState('CONFIRM'); return; } diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_activity_flyout.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_activity_flyout.tsx index d23358726c11ea..d4c1129a08e285 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_activity_flyout.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_activity_flyout.tsx @@ -58,7 +58,7 @@ const FlyoutFooterWPadding = styled(EuiFlyoutFooter)` padding: 16px 24px !important; `; -const MAX_VIEW_AGENTS_COUNT = 2000; +const MAX_VIEW_AGENTS_COUNT = 1000; export const AgentActivityFlyout: React.FunctionComponent<{ onClose: () => void; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/search_and_filter_bar.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/search_and_filter_bar.tsx index 8013a490103afd..76fd2911551390 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/search_and_filter_bar.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/search_and_filter_bar.tsx @@ -21,7 +21,6 @@ import { useIsFirstTimeAgentUserQuery } from '../../../../../integrations/sectio import type { Agent, AgentPolicy } from '../../../../types'; import { SearchBar } from '../../../../components'; import { AGENTS_INDEX, AGENTS_PREFIX } from '../../../../constants'; -import { useFleetServerStandalone } from '../../../../hooks'; import { AgentBulkActions } from './bulk_actions'; import type { SelectionMode } from './types'; @@ -90,10 +89,8 @@ export const SearchAndFilterBar: React.FunctionComponent { - const { isFleetServerStandalone } = useFleetServerStandalone(); const { isFirstTimeAgentUser, isLoading: isFirstTimeAgentUserLoading } = useIsFirstTimeAgentUserQuery(); - const showAddFleetServerBtn = !isFleetServerStandalone; return ( <> @@ -110,25 +107,23 @@ export const SearchAndFilterBar: React.FunctionComponent - {showAddFleetServerBtn && ( - - - } - > - - - - - - )} + + + } + > + + + + + void; proxies: FleetProxy[]; } export const EditOutputFlyout: React.FunctionComponent = ({ + defaultOuput, onClose, output, proxies, }) => { useBreadcrumbs('settings'); - const form = useOutputForm(onClose, output); + const form = useOutputForm(onClose, output, defaultOuput); const inputs = form.inputs; const { docLinks, cloud } = useStartServices(); const { euiTheme } = useEuiTheme(); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_elasticsearch.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_elasticsearch.tsx index 877c285e391c6c..21e43fcba001ae 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_elasticsearch.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_elasticsearch.tsx @@ -36,6 +36,14 @@ export const OutputFormElasticsearchSection: React.FunctionComponent = (p )} {...inputs.elasticsearchUrlInput.props} isUrl + helpText={ + inputs.elasticsearchUrlInput.props.disabled && ( + + ) + } /> void, output?: Output) { +export function useOutputForm(onSucess: () => void, output?: Output, defaultOuput?: Output) { const fleetStatus = useFleetStatus(); const { showExperimentalShipperOptions } = ExperimentalFeaturesService.get(); @@ -166,7 +166,7 @@ export function useOutputForm(onSucess: () => void, output?: Output) { ); const [isLoading, setIsloading] = useState(false); - const { notifications } = useStartServices(); + const { notifications, cloud } = useStartServices(); const { confirm } = useConfirmModal(); // preconfigured output do not allow edition @@ -208,11 +208,17 @@ export function useOutputForm(onSucess: () => void, output?: Output) { validateCATrustedFingerPrint, isDisabled('ca_trusted_fingerprint') ); + // ES output's host URL is restricted to default in serverless + const isServerless = cloud?.isServerlessEnabled; + // Set the hosts to default for new ES output in serverless. + const elasticsearchUrlDefaultValue = + isServerless && !output?.hosts ? defaultOuput?.hosts || [] : output?.hosts || []; + const elasticsearchUrlDisabled = isServerless || isDisabled('hosts'); const elasticsearchUrlInput = useComboInput( 'esHostsComboxBox', - output?.hosts ?? [], + elasticsearchUrlDefaultValue, validateESHosts, - isDisabled('hosts') + elasticsearchUrlDisabled ); const presetInput = useInput( diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_flyout/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_flyout/index.tsx index f8dfc630f5a513..f564bdd8cbd748 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_flyout/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_flyout/index.tsx @@ -40,17 +40,19 @@ import { useFleetServerHostsForm } from './use_fleet_server_host_form'; export interface FleetServerHostsFlyoutProps { onClose: () => void; fleetServerHost?: FleetServerHost; + defaultFleetServerHost?: FleetServerHost; proxies: FleetProxy[]; } export const FleetServerHostsFlyout: React.FunctionComponent = ({ onClose, fleetServerHost, + defaultFleetServerHost, proxies, }) => { - const { docLinks } = useStartServices(); + const { docLinks, cloud } = useStartServices(); - const form = useFleetServerHostsForm(fleetServerHost, onClose); + const form = useFleetServerHostsForm(fleetServerHost, onClose, defaultFleetServerHost); const { inputs } = form; const proxiesOptions = useMemo( @@ -61,39 +63,54 @@ export const FleetServerHostsFlyout: React.FunctionComponent - -

- {fleetServerHost ? ( - - ) : ( - - )} -

-
+ <> + +

+ {fleetServerHost ? ( + + ) : ( + + )} +

+
+ {!fleetServerHost && ( + <> + + + + + + )} +
- + } + > - } - > - - +
+ )} <> - - - - - ), - }} - /> - - + {!cloud?.isServerlessEnabled && ( + <> + + + + + ), + }} + /> + + + + )} + ) + } /> diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_flyout/use_fleet_server_host_form.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_flyout/use_fleet_server_host_form.tsx index 5a85fa3b9e111b..781d6d6141ffe8 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_flyout/use_fleet_server_host_form.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_flyout/use_fleet_server_host_form.tsx @@ -115,10 +115,11 @@ export function validateName(value: string) { export function useFleetServerHostsForm( fleetServerHost: FleetServerHost | undefined, - onSuccess: () => void + onSuccess: () => void, + defaultFleetServerHost?: FleetServerHost ) { const [isLoading, setIsLoading] = useState(false); - const { notifications } = useStartServices(); + const { notifications, cloud } = useStartServices(); const { confirm } = useConfirmModal(); const isPreconfigured = fleetServerHost?.is_preconfigured ?? false; @@ -128,11 +129,18 @@ export function useFleetServerHostsForm( isPreconfigured || fleetServerHost?.is_default ); + const isServerless = cloud?.isServerlessEnabled; + // Set the host URLs to default for new Fleet server host in serverless. + const hostUrlsDefaultValue = + isServerless && !fleetServerHost?.host_urls + ? defaultFleetServerHost?.host_urls || [] + : fleetServerHost?.host_urls || []; + const hostUrlsDisabled = isPreconfigured || isServerless; const hostUrlsInput = useComboInput( 'hostUrls', - fleetServerHost?.host_urls || [], + hostUrlsDefaultValue, validateFleetServerHosts, - isPreconfigured + hostUrlsDisabled ); const proxyIdInput = useInput(fleetServerHost?.proxy_id ?? '', () => undefined, isPreconfigured); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_table/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_table/index.tsx index 053baaf4e4f8ad..d85d3f2848a6f8 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_table/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_table/index.tsx @@ -152,5 +152,11 @@ export const FleetServerHostsTable: React.FunctionComponent; + return ( + + ); }; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/settings_page/fleet_server_hosts_section.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/settings_page/fleet_server_hosts_section.tsx index e748c379215026..1114efb814a217 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/settings_page/fleet_server_hosts_section.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/settings_page/fleet_server_hosts_section.tsx @@ -11,7 +11,7 @@ import { EuiTitle, EuiLink, EuiText, EuiSpacer, EuiButtonEmpty } from '@elastic/ import { FormattedMessage } from '@kbn/i18n-react'; import type { FleetServerHost } from '../../../../types'; -import { useLink, useStartServices, useConfig } from '../../../../hooks'; +import { useLink, useStartServices } from '../../../../hooks'; import { FleetServerHostsTable } from '../fleet_server_hosts_table'; export interface FleetServerHostsSectionProps { @@ -25,7 +25,6 @@ export const FleetServerHostsSection: React.FunctionComponent { const { docLinks } = useStartServices(); const { getHref } = useLink(); - const showAddButton = useConfig().internal?.fleetServerStandalone !== true; return ( <> @@ -59,21 +58,17 @@ export const FleetServerHostsSection: React.FunctionComponent - {showAddButton && ( - <> - - - - - - )} + + + + ); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/settings_page/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/settings_page/index.tsx index a50eec2eed7f5c..809639ecae6924 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/settings_page/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/settings_page/index.tsx @@ -9,7 +9,6 @@ import React from 'react'; import { EuiSpacer } from '@elastic/eui'; import type { Output, DownloadSource, FleetServerHost, FleetProxy } from '../../../../types'; -import { useConfig } from '../../../../hooks'; import { FleetServerHostsSection } from './fleet_server_hosts_section'; import { OutputSection } from './output_section'; @@ -37,8 +36,6 @@ export const SettingsPage: React.FunctionComponent = ({ deleteDownloadSource, deleteFleetProxy, }) => { - const showProxySection = useConfig().internal?.disableProxies !== true; - return ( <> @@ -53,12 +50,8 @@ export const SettingsPage: React.FunctionComponent = ({ downloadSources={downloadSources} deleteDownloadSource={deleteDownloadSource} /> - {showProxySection && ( - <> - - - - )} + + ); }; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/index.tsx index 889635a9df71c9..2fc729cb76c822 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/index.tsx @@ -17,10 +17,15 @@ import { useGetFleetServerHosts, useFlyoutContext, useGetFleetProxies, + useStartServices, } from '../../hooks'; import { FLEET_ROUTING_PATHS, pagePathGetters } from '../../constants'; import { DefaultLayout } from '../../layouts'; import { Loading } from '../../components'; +import { + SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID, + SERVERLESS_DEFAULT_OUTPUT_ID, +} from '../../../../../common/constants'; import { FleetServerFlyout } from '../../components'; @@ -50,6 +55,7 @@ export const SettingsApp = withConfirmModalProvider(() => { const { outputs, fleetServerHosts, downloadSources, proxies } = useSettingsAppData(); const outputItems = outputs.data?.items.filter((item) => !item.is_internal); + const fleetServerHostsItems = fleetServerHosts.data?.items.filter((item) => !item.is_internal); const { deleteOutput } = useDeleteOutput(outputs.resendRequest); const { deleteDownloadSource } = useDeleteDownloadSource(downloadSources.resendRequest); @@ -77,11 +83,13 @@ export const SettingsApp = withConfirmModalProvider(() => { history, ]); + const { cloud } = useStartServices(); + if ( (outputs.isLoading && outputs.isInitialRequest) || !outputItems || (fleetServerHosts.isLoading && fleetServerHosts.isInitialRequest) || - !fleetServerHosts.data?.items || + !fleetServerHostsItems || (downloadSources.isLoading && downloadSources.isInitialRequest) || !downloadSources.data?.items || (proxies.isLoading && proxies.isInitialRequest) || @@ -99,7 +107,7 @@ export const SettingsApp = withConfirmModalProvider(() => { {(route: { match: { params: { itemId: string } } }) => { - const fleetServerHost = fleetServerHosts.data?.items.find( + const fleetServerHost = fleetServerHostsItems.find( (o) => route.match.params.itemId === o.id ); if (!fleetServerHost) { @@ -119,12 +127,26 @@ export const SettingsApp = withConfirmModalProvider(() => { - + {cloud?.isServerlessEnabled ? ( + o.id === SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID + )} + /> + ) : ( + + )} - + o.id === SERVERLESS_DEFAULT_OUTPUT_ID)} + /> @@ -160,6 +182,9 @@ export const SettingsApp = withConfirmModalProvider(() => { proxies={proxies.data?.items ?? []} onClose={onCloseCallback} output={output} + defaultOuput={outputs.data?.items.find( + (o) => o.id === SERVERLESS_DEFAULT_OUTPUT_ID + )} /> ); @@ -198,7 +223,7 @@ export const SettingsApp = withConfirmModalProvider(() => { deleteFleetProxy={deleteFleetProxy} proxies={proxies.data.items} outputs={outputItems} - fleetServerHosts={fleetServerHosts.data.items} + fleetServerHosts={fleetServerHostsItems} deleteOutput={deleteOutput} deleteFleetServerHost={deleteFleetServerHost} downloadSources={downloadSources.data.items} diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/overview/details.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/overview/details.tsx index f905ac8ca55fa8..ed91c37408b5da 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/overview/details.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/overview/details.tsx @@ -21,12 +21,15 @@ import { import { euiStyled } from '@kbn/kibana-react-plugin/common'; import { withSuspense, LazyReplacementCard } from '@kbn/custom-integrations-plugin/public'; +import { uniq } from 'lodash'; import type { PackageInfo, PackageSpecCategory, AssetTypeToParts, KibanaAssetType, + RegistryPolicyTemplate, + RegistryPolicyIntegrationTemplate, } from '../../../../../types'; import { entries } from '../../../../../types'; import { useGetCategoriesQuery } from '../../../../../hooks'; @@ -41,6 +44,7 @@ const ReplacementCard = withSuspense(LazyReplacementCard); interface Props { packageInfo: PackageInfo; + integrationInfo?: RegistryPolicyTemplate; } const Replacements = euiStyled(EuiFlexItem)` @@ -60,16 +64,32 @@ const Replacements = euiStyled(EuiFlexItem)` } `; -export const Details: React.FC = memo(({ packageInfo }) => { +export const Details: React.FC = memo(({ packageInfo, integrationInfo }) => { const { data: categoriesData, isLoading: isLoadingCategories } = useGetCategoriesQuery(); + + const mergedCategories: Array = useMemo(() => { + let allCategories: Array = []; + + if (packageInfo?.categories) { + allCategories = packageInfo.categories; + } + if ((integrationInfo as RegistryPolicyIntegrationTemplate)?.categories) { + allCategories = uniq([ + ...allCategories, + ...((integrationInfo as RegistryPolicyIntegrationTemplate)?.categories || []), + ]); + } + return allCategories; + }, [integrationInfo, packageInfo?.categories]); + const packageCategories: string[] = useMemo(() => { if (!isLoadingCategories && categoriesData?.items) { return categoriesData.items - .filter((category) => packageInfo.categories?.includes(category.id as PackageSpecCategory)) + .filter((category) => mergedCategories?.includes(category.id as PackageSpecCategory)) .map((category) => category.title); } return []; - }, [categoriesData, isLoadingCategories, packageInfo.categories]); + }, [categoriesData, isLoadingCategories, mergedCategories]); const [isNoticeModalOpen, setIsNoticeModalOpen] = useState(false); const toggleNoticeModal = useCallback(() => { diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/overview/overview.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/overview/overview.tsx index 3d10dacc040bd2..75e23078f4b339 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/overview/overview.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/overview/overview.tsx @@ -328,7 +328,7 @@ export const OverviewPage: React.FC = memo( ) : null} -
+
diff --git a/x-pack/plugins/fleet/public/types/index.ts b/x-pack/plugins/fleet/public/types/index.ts index fe1c49af887d9b..9f540a2c049c1c 100644 --- a/x-pack/plugins/fleet/public/types/index.ts +++ b/x-pack/plugins/fleet/public/types/index.ts @@ -138,6 +138,7 @@ export type { GetInputsTemplatesRequest, GetInputsTemplatesResponse, BulkGetAgentPoliciesResponse, + RegistryPolicyIntegrationTemplate, } from '../../common/types'; export { entries, diff --git a/x-pack/plugins/fleet/public/types/ui_extensions.ts b/x-pack/plugins/fleet/public/types/ui_extensions.ts index b5ae9dacf54bce..a041762438b8d5 100644 --- a/x-pack/plugins/fleet/public/types/ui_extensions.ts +++ b/x-pack/plugins/fleet/public/types/ui_extensions.ts @@ -113,6 +113,12 @@ export interface PackagePolicyResponseExtension { Component: LazyExoticComponent; } +export interface EndpointAgentTamperProtectionExtension { + package: string; + view: 'endpoint-agent-tamper-protection'; + Component: LazyExoticComponent; +} + export interface PackageGenericErrorsListExtension { package: string; view: 'package-generic-errors-list'; @@ -219,4 +225,5 @@ export type UIExtensionPoint = | PackageAssetsExtension | PackageGenericErrorsListExtension | AgentEnrollmentFlyoutFinalStepExtension - | PackagePolicyCreateMultiStepExtension; + | PackagePolicyCreateMultiStepExtension + | EndpointAgentTamperProtectionExtension; diff --git a/x-pack/plugins/fleet/server/config.ts b/x-pack/plugins/fleet/server/config.ts index a47058a80c8287..d339642492bb91 100644 --- a/x-pack/plugins/fleet/server/config.ts +++ b/x-pack/plugins/fleet/server/config.ts @@ -39,7 +39,6 @@ export const config: PluginConfigDescriptor = { }, internal: { fleetServerStandalone: true, - disableProxies: true, activeAgentsSoftLimit: true, onlyAllowAgentUpgradeToKnownVersions: true, }, @@ -184,9 +183,6 @@ export const config: PluginConfigDescriptor = { disableILMPolicies: schema.boolean({ defaultValue: false, }), - disableProxies: schema.boolean({ - defaultValue: false, - }), fleetServerStandalone: schema.boolean({ defaultValue: false, }), diff --git a/x-pack/plugins/fleet/server/constants/index.ts b/x-pack/plugins/fleet/server/constants/index.ts index 2a608b927f58cf..e134c0a47a82eb 100644 --- a/x-pack/plugins/fleet/server/constants/index.ts +++ b/x-pack/plugins/fleet/server/constants/index.ts @@ -51,6 +51,7 @@ export { // Defaults DEFAULT_OUTPUT, DEFAULT_OUTPUT_ID, + SERVERLESS_DEFAULT_OUTPUT_ID, PACKAGE_POLICY_DEFAULT_INDEX_PRIVILEGES, AGENT_POLICY_DEFAULT_MONITORING_DATASETS, // Fleet Server index @@ -71,6 +72,7 @@ export { // Fleet server host DEFAULT_FLEET_SERVER_HOST_ID, FLEET_SERVER_HOST_SAVED_OBJECT_TYPE, + SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID, // Proxy FLEET_PROXY_SAVED_OBJECT_TYPE, // Authz diff --git a/x-pack/plugins/fleet/server/index.ts b/x-pack/plugins/fleet/server/index.ts index 829e017c67de04..906a6926795b4a 100644 --- a/x-pack/plugins/fleet/server/index.ts +++ b/x-pack/plugins/fleet/server/index.ts @@ -11,7 +11,6 @@ export { buildAgentStatusRuntimeField } from './services/agents/build_status_run export type { AgentService, AgentClient, - ESIndexPatternService, PackageService, PackageClient, AgentPolicyServiceInterface, diff --git a/x-pack/plugins/fleet/server/mocks/index.ts b/x-pack/plugins/fleet/server/mocks/index.ts index ec8ada164623d5..fb6dd7d075cea5 100644 --- a/x-pack/plugins/fleet/server/mocks/index.ts +++ b/x-pack/plugins/fleet/server/mocks/index.ts @@ -157,6 +157,7 @@ export const createMockAgentPolicyService = (): jest.Mocked; }; - esIndexPatternService: ESIndexPatternService; packageService: PackageService; agentService: AgentService; /** @@ -583,6 +574,9 @@ export class FleetPlugin } ); + // initialize (generate/encrypt/validate) Uninstall Tokens asynchronously + this.initializeUninstallTokens(); + this.fleetStatus$.next({ level: ServiceStatusLevels.available, summary: 'Fleet is available', @@ -610,7 +604,6 @@ export class FleetPlugin fromRequest: getAuthzFromRequest, }, fleetSetupCompleted: () => fleetSetupPromise, - esIndexPatternService: new ESIndexPatternSavedObjectService(), packageService: this.setupPackageService( core.elasticsearch.client.asInternalUser, internalSoClient @@ -624,6 +617,7 @@ export class FleetPlugin list: agentPolicyService.list, getFullAgentPolicy: agentPolicyService.getFullAgentPolicy, getByIds: agentPolicyService.getByIDs, + bumpRevision: agentPolicyService.bumpRevision.bind(agentPolicyService), }, packagePolicyService, registerExternalCallback: (type: ExternalCallback[0], callback: ExternalCallback[1]) => { @@ -698,4 +692,54 @@ export class FleetPlugin return this.logger; } + + private async initializeUninstallTokens() { + try { + await this.generateUninstallTokens(); + } catch (error) { + appContextService + .getLogger() + .error('Error happened during uninstall token generation.', { error: { message: error } }); + } + + try { + await this.validateUninstallTokens(); + } catch (error) { + appContextService + .getLogger() + .error('Error happened during uninstall token validation.', { error: { message: error } }); + } + } + + private async generateUninstallTokens() { + const logger = appContextService.getLogger(); + + logger.debug('Generating Agent uninstall tokens'); + if (!appContextService.getEncryptedSavedObjectsSetup()?.canEncrypt) { + logger.warn( + 'xpack.encryptedSavedObjects.encryptionKey is not configured, agent uninstall tokens are being stored in plain text' + ); + } + await appContextService.getUninstallTokenService()?.generateTokensForAllPolicies(); + + if (appContextService.getEncryptedSavedObjectsSetup()?.canEncrypt) { + logger.debug('Checking for and encrypting plain text uninstall tokens'); + await appContextService.getUninstallTokenService()?.encryptTokens(); + } + } + + private async validateUninstallTokens() { + const logger = appContextService.getLogger(); + logger.debug('Validating uninstall tokens'); + + const unintallTokenValidationError = await appContextService + .getUninstallTokenService() + ?.checkTokenValidityForAllPolicies(); + + if (unintallTokenValidationError) { + logger.warn(unintallTokenValidationError.error.message); + } else { + logger.debug('Uninstall tokens validation successful.'); + } + } } diff --git a/x-pack/plugins/fleet/server/routes/agent_policy/handlers.ts b/x-pack/plugins/fleet/server/routes/agent_policy/handlers.ts index ba348e9e639e2b..68237bb4e0ac93 100644 --- a/x-pack/plugins/fleet/server/routes/agent_policy/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/agent_policy/handlers.ts @@ -195,6 +195,12 @@ export const createAgentPolicyHandler: FleetRequestHandler< body, }); } catch (error) { + if (error.statusCode) { + return response.customError({ + statusCode: error.statusCode, + body: { message: error.message }, + }); + } return defaultFleetErrorHandler({ error, response }); } }; @@ -229,6 +235,12 @@ export const updateAgentPolicyHandler: FleetRequestHandler< body, }); } catch (error) { + if (error.statusCode) { + return response.customError({ + statusCode: error.statusCode, + body: { message: error.message }, + }); + } return defaultFleetErrorHandler({ error, response }); } }; diff --git a/x-pack/plugins/fleet/server/routes/fleet_proxies/handler.ts b/x-pack/plugins/fleet/server/routes/fleet_proxies/handler.ts index 333f6d50bb8801..b636ebb53a9eb5 100644 --- a/x-pack/plugins/fleet/server/routes/fleet_proxies/handler.ts +++ b/x-pack/plugins/fleet/server/routes/fleet_proxies/handler.ts @@ -22,7 +22,7 @@ import { updateFleetProxy, getFleetProxyRelatedSavedObjects, } from '../../services/fleet_proxies'; -import { defaultFleetErrorHandler, FleetProxyUnauthorizedError } from '../../errors'; +import { defaultFleetErrorHandler } from '../../errors'; import type { GetOneFleetProxyRequestSchema, PostFleetProxyRequestSchema, @@ -31,7 +31,7 @@ import type { Output, DownloadSource, } from '../../types'; -import { agentPolicyService, appContextService } from '../../services'; +import { agentPolicyService } from '../../services'; async function bumpRelatedPolicies( soClient: SavedObjectsClientContract, @@ -81,12 +81,6 @@ async function bumpRelatedPolicies( } } -function checkProxiesAvailable() { - if (appContextService.getConfig()?.internal?.disableProxies) { - throw new FleetProxyUnauthorizedError('Proxies write APIs are disabled'); - } -} - export const postFleetProxyHandler: RequestHandler< undefined, undefined, @@ -95,7 +89,6 @@ export const postFleetProxyHandler: RequestHandler< const coreContext = await context.core; const soClient = coreContext.savedObjects.client; try { - checkProxiesAvailable(); const { id, ...data } = request.body; const proxy = await createFleetProxy(soClient, { ...data, is_preconfigured: false }, { id }); @@ -115,7 +108,6 @@ export const putFleetProxyHandler: RequestHandler< TypeOf > = async (context, request, response) => { try { - checkProxiesAvailable(); const proxyId = request.params.itemId; const coreContext = await await context.core; const soClient = coreContext.savedObjects.client; @@ -167,7 +159,6 @@ export const deleteFleetProxyHandler: RequestHandler< TypeOf > = async (context, request, response) => { try { - checkProxiesAvailable(); const proxyId = request.params.itemId; const coreContext = await context.core; const soClient = coreContext.savedObjects.client; diff --git a/x-pack/plugins/fleet/server/routes/fleet_server_hosts/handler.test.ts b/x-pack/plugins/fleet/server/routes/fleet_server_hosts/handler.test.ts new file mode 100644 index 00000000000000..e65942a50c9345 --- /dev/null +++ b/x-pack/plugins/fleet/server/routes/fleet_server_hosts/handler.test.ts @@ -0,0 +1,134 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID } from '../../constants'; +import { agentPolicyService, appContextService } from '../../services'; +import * as fleetServerService from '../../services/fleet_server_host'; + +import { postFleetServerHost, putFleetServerHostHandler } from './handler'; + +describe('fleet server hosts handler', () => { + const mockContext = { + core: Promise.resolve({ + savedObjects: {}, + elasticsearch: { + client: {}, + }, + }), + } as any; + const mockResponse = { + customError: jest.fn().mockImplementation((options) => options), + ok: jest.fn().mockImplementation((options) => options), + }; + + beforeEach(() => { + jest.spyOn(appContextService, 'getLogger').mockReturnValue({ error: jest.fn() } as any); + jest + .spyOn(fleetServerService, 'createFleetServerHost') + .mockResolvedValue({ id: 'host1' } as any); + jest + .spyOn(fleetServerService, 'updateFleetServerHost') + .mockResolvedValue({ id: 'host1' } as any); + jest.spyOn(fleetServerService, 'listFleetServerHosts').mockResolvedValue({ + items: [ + { id: SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID, host_urls: ['http://elasticsearch:9200'] }, + ] as any, + total: 1, + page: 1, + perPage: 1, + }); + jest + .spyOn(agentPolicyService, 'bumpAllAgentPoliciesForFleetServerHosts') + .mockResolvedValue({} as any); + }); + + it('should return error on post in serverless if host url is different from default', async () => { + jest.spyOn(appContextService, 'getCloud').mockReturnValue({ isServerlessEnabled: true } as any); + + const res = await postFleetServerHost( + mockContext, + { body: { id: 'host1', host_urls: ['http://localhost:8080'] } } as any, + mockResponse as any + ); + + expect(res).toEqual({ + body: { + message: 'Fleet server host must have default URL in serverless: http://elasticsearch:9200', + }, + statusCode: 403, + }); + }); + + it('should return ok on post in serverless if host url is same as default', async () => { + jest.spyOn(appContextService, 'getCloud').mockReturnValue({ isServerlessEnabled: true } as any); + + const res = await postFleetServerHost( + mockContext, + { body: { id: 'host1', host_urls: ['http://elasticsearch:9200'] } } as any, + mockResponse as any + ); + + expect(res).toEqual({ body: { item: { id: 'host1' } } }); + }); + + it('should return ok on post in stateful if host url is different from default', async () => { + jest + .spyOn(appContextService, 'getCloud') + .mockReturnValue({ isServerlessEnabled: false } as any); + + const res = await postFleetServerHost( + mockContext, + { body: { id: 'host1', host_urls: ['http://localhost:8080'] } } as any, + mockResponse as any + ); + + expect(res).toEqual({ body: { item: { id: 'host1' } } }); + }); + + it('should return error on put in serverless if host url is different from default', async () => { + jest.spyOn(appContextService, 'getCloud').mockReturnValue({ isServerlessEnabled: true } as any); + + const res = await putFleetServerHostHandler( + mockContext, + { body: { host_urls: ['http://localhost:8080'] }, params: { outputId: 'host1' } } as any, + mockResponse as any + ); + + expect(res).toEqual({ + body: { + message: 'Fleet server host must have default URL in serverless: http://elasticsearch:9200', + }, + statusCode: 403, + }); + }); + + it('should return ok on put in serverless if host url is same as default', async () => { + jest.spyOn(appContextService, 'getCloud').mockReturnValue({ isServerlessEnabled: true } as any); + + const res = await putFleetServerHostHandler( + mockContext, + { body: { host_urls: ['http://elasticsearch:9200'] }, params: { outputId: 'host1' } } as any, + mockResponse as any + ); + + expect(res).toEqual({ body: { item: { id: 'host1' } } }); + }); + + // it('should return ok on put in stateful if host url is different from default', async () => { + // jest + // .spyOn(appContextService, 'getCloud') + // .mockReturnValue({ isServerlessEnabled: false } as any); + + // const res = await putFleetServerHostHandler( + // mockContext, + // { body: { host_urls: ['http://localhost:8080'] }, params: { outputId: 'host1' } } as any, + // mockResponse as any + // ); + + // expect(res).toEqual({ body: { item: { id: 'host1' } } }); + // }); +}); diff --git a/x-pack/plugins/fleet/server/routes/fleet_server_hosts/handler.ts b/x-pack/plugins/fleet/server/routes/fleet_server_hosts/handler.ts index 4ba6143c45b63a..eddce8df7c3e0b 100644 --- a/x-pack/plugins/fleet/server/routes/fleet_server_hosts/handler.ts +++ b/x-pack/plugins/fleet/server/routes/fleet_server_hosts/handler.ts @@ -6,8 +6,11 @@ */ import type { TypeOf } from '@kbn/config-schema'; -import type { RequestHandler } from '@kbn/core/server'; +import type { RequestHandler, SavedObjectsClientContract } from '@kbn/core/server'; import { SavedObjectsErrorHelpers } from '@kbn/core/server'; +import { isEqual } from 'lodash'; + +import { SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID } from '../../constants'; import { defaultFleetErrorHandler, FleetServerHostUnauthorizedError } from '../../errors'; import { agentPolicyService, appContextService } from '../../services'; @@ -24,13 +27,36 @@ import type { PutFleetServerHostRequestSchema, } from '../../types'; -function checkFleetServerHostsWriteAPIsAllowed() { - const config = appContextService.getConfig(); - if (config?.internal?.fleetServerStandalone) { - throw new FleetServerHostUnauthorizedError('Fleet server host write APIs are disabled'); +async function checkFleetServerHostsWriteAPIsAllowed( + soClient: SavedObjectsClientContract, + hostUrls: string[] +) { + const cloudSetup = appContextService.getCloud(); + if (!cloudSetup?.isServerlessEnabled) { + return; + } + + const defaultFleetServerHost = await getDefaultFleetServerHost(soClient); + if ( + defaultFleetServerHost === undefined || + !isEqual(hostUrls, defaultFleetServerHost.host_urls) + ) { + throw new FleetServerHostUnauthorizedError( + `Fleet server host must have default URL in serverless${ + defaultFleetServerHost ? ': ' + defaultFleetServerHost.host_urls : '' + }` + ); } } +async function getDefaultFleetServerHost(soClient: SavedObjectsClientContract) { + const res = await listFleetServerHosts(soClient); + const fleetServerHosts = res.items; + return fleetServerHosts.find( + (fleetServerHost) => fleetServerHost.id === SERVERLESS_DEFAULT_FLEET_SERVER_HOST_ID + ); +} + export const postFleetServerHost: RequestHandler< undefined, undefined, @@ -41,7 +67,8 @@ export const postFleetServerHost: RequestHandler< const esClient = coreContext.elasticsearch.client.asInternalUser; try { - checkFleetServerHostsWriteAPIsAllowed(); + // In serverless, allow create fleet server host if host url is same as default. + await checkFleetServerHostsWriteAPIsAllowed(soClient, request.body.host_urls); const { id, ...data } = request.body; const FleetServerHost = await createFleetServerHost( @@ -89,11 +116,10 @@ export const deleteFleetServerHostHandler: RequestHandler< TypeOf > = async (context, request, response) => { try { - checkFleetServerHostsWriteAPIsAllowed(); - const coreContext = await context.core; const soClient = coreContext.savedObjects.client; const esClient = coreContext.elasticsearch.client.asInternalUser; + await deleteFleetServerHost(soClient, esClient, request.params.itemId); const body = { id: request.params.itemId, @@ -117,12 +143,15 @@ export const putFleetServerHostHandler: RequestHandler< TypeOf > = async (context, request, response) => { try { - checkFleetServerHostsWriteAPIsAllowed(); - const coreContext = await await context.core; const esClient = coreContext.elasticsearch.client.asInternalUser; const soClient = coreContext.savedObjects.client; + // In serverless, allow update fleet server host if host url is same as default. + if (request.body.host_urls) { + await checkFleetServerHostsWriteAPIsAllowed(soClient, request.body.host_urls); + } + const item = await updateFleetServerHost(soClient, request.params.itemId, request.body); const body = { item, diff --git a/x-pack/plugins/fleet/server/routes/output/handler.test.ts b/x-pack/plugins/fleet/server/routes/output/handler.test.ts index 5cf3b544e1553b..be1c162d7056b6 100644 --- a/x-pack/plugins/fleet/server/routes/output/handler.test.ts +++ b/x-pack/plugins/fleet/server/routes/output/handler.test.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { SERVERLESS_DEFAULT_OUTPUT_ID } from '../../constants'; import { agentPolicyService, appContextService, outputService } from '../../services'; import { postOutputHandler, putOutputHandler } from './handler'; @@ -27,7 +28,13 @@ describe('output handler', () => { jest.spyOn(appContextService, 'getLogger').mockReturnValue({ error: jest.fn() } as any); jest.spyOn(outputService, 'create').mockResolvedValue({ id: 'output1' } as any); jest.spyOn(outputService, 'update').mockResolvedValue({ id: 'output1' } as any); - jest.spyOn(outputService, 'get').mockResolvedValue({ id: 'output1' } as any); + jest.spyOn(outputService, 'get').mockImplementation((_, id: string) => { + if (id === SERVERLESS_DEFAULT_OUTPUT_ID) { + return { hosts: ['http://elasticsearch:9200'] } as any; + } else { + return { id: 'output1' } as any; + } + }); jest.spyOn(agentPolicyService, 'bumpAllAgentPoliciesForOutput').mockResolvedValue({} as any); }); @@ -65,7 +72,7 @@ describe('output handler', () => { const res = await putOutputHandler( mockContext, - { body: { id: 'output1', type: 'remote_elasticsearch' } } as any, + { body: { type: 'remote_elasticsearch' }, params: { outputId: 'output1' } } as any, mockResponse as any ); @@ -89,6 +96,105 @@ describe('output handler', () => { expect(res).toEqual({ body: { item: { id: 'output1' } } }); }); + it('should return error on post elasticsearch output in serverless if host url is different from default', async () => { + jest.spyOn(appContextService, 'getCloud').mockReturnValue({ isServerlessEnabled: true } as any); + + const res = await postOutputHandler( + mockContext, + { body: { id: 'output1', type: 'elasticsearch', hosts: ['http://localhost:8080'] } } as any, + mockResponse as any + ); + + expect(res).toEqual({ + body: { + message: + 'Elasticsearch output host must have default URL in serverless: http://elasticsearch:9200', + }, + statusCode: 400, + }); + }); + + it('should return ok on post elasticsearch output in serverless if host url is same as default', async () => { + jest.spyOn(appContextService, 'getCloud').mockReturnValue({ isServerlessEnabled: true } as any); + + const res = await postOutputHandler( + mockContext, + { + body: { id: 'output1', type: 'elasticsearch', hosts: ['http://elasticsearch:9200'] }, + } as any, + mockResponse as any + ); + + expect(res).toEqual({ body: { item: { id: 'output1' } } }); + }); + + it('should return ok on post elasticsearch output in stateful if host url is different from default', async () => { + jest + .spyOn(appContextService, 'getCloud') + .mockReturnValue({ isServerlessEnabled: false } as any); + + const res = await postOutputHandler( + mockContext, + { body: { id: 'output1', type: 'elasticsearch', hosts: ['http://localhost:8080'] } } as any, + mockResponse as any + ); + + expect(res).toEqual({ body: { item: { id: 'output1' } } }); + }); + + it('should return error on put elasticsearch output in serverless if host url is different from default', async () => { + jest.spyOn(appContextService, 'getCloud').mockReturnValue({ isServerlessEnabled: true } as any); + + const res = await putOutputHandler( + mockContext, + { + body: { type: 'elasticsearch', hosts: ['http://localhost:8080'] }, + params: { outputId: 'output1' }, + } as any, + mockResponse as any + ); + + expect(res).toEqual({ + body: { + message: + 'Elasticsearch output host must have default URL in serverless: http://elasticsearch:9200', + }, + statusCode: 400, + }); + }); + + it('should return ok on put elasticsearch output in serverless if host url is same as default', async () => { + jest.spyOn(appContextService, 'getCloud').mockReturnValue({ isServerlessEnabled: true } as any); + + const res = await putOutputHandler( + mockContext, + { + body: { type: 'elasticsearch', hosts: ['http://elasticsearch:9200'] }, + params: { outputId: 'output1' }, + } as any, + mockResponse as any + ); + + expect(res).toEqual({ body: { item: { id: 'output1' } } }); + }); + + it('should return ok on put elasticsearch output in stateful if host url is different from default', async () => { + jest + .spyOn(appContextService, 'getCloud') + .mockReturnValue({ isServerlessEnabled: false } as any); + + const res = await putOutputHandler( + mockContext, + { + body: { type: 'elasticsearch', hosts: ['http://localhost:8080'] }, + params: { outputId: 'output1' }, + } as any, + mockResponse as any + ); + + expect(res).toEqual({ body: { item: { id: 'output1' } } }); + }); + it('should return error if both service_token and secrets.service_token is provided for remote_elasticsearch output', async () => { jest .spyOn(appContextService, 'getCloud') diff --git a/x-pack/plugins/fleet/server/routes/output/handler.ts b/x-pack/plugins/fleet/server/routes/output/handler.ts index a63838e7a2063f..237ff2986703c5 100644 --- a/x-pack/plugins/fleet/server/routes/output/handler.ts +++ b/x-pack/plugins/fleet/server/routes/output/handler.ts @@ -5,14 +5,14 @@ * 2.0. */ -import type { RequestHandler } from '@kbn/core/server'; +import type { RequestHandler, SavedObjectsClientContract } from '@kbn/core/server'; import type { TypeOf } from '@kbn/config-schema'; import Boom from '@hapi/boom'; -import type { ValueOf } from '@elastic/eui'; +import { isEqual } from 'lodash'; -import { outputType } from '../../../common/constants'; +import { SERVERLESS_DEFAULT_OUTPUT_ID, outputType } from '../../../common/constants'; import type { DeleteOutputRequestSchema, @@ -26,7 +26,6 @@ import type { GetOneOutputResponse, GetOutputsResponse, Output, - OutputType, PostLogstashApiKeyResponse, } from '../../../common/types'; import { outputService } from '../../services/output'; @@ -105,7 +104,7 @@ export const putOutputHandler: RequestHandler< const esClient = coreContext.elasticsearch.client.asInternalUser; const outputUpdate = request.body; try { - validateOutputServerless(outputUpdate.type); + await validateOutputServerless(outputUpdate, soClient, request.params.outputId); ensureNoDuplicateSecrets(outputUpdate); await outputService.update(soClient, esClient, request.params.outputId, outputUpdate); const output = await outputService.get(soClient, request.params.outputId); @@ -141,7 +140,7 @@ export const postOutputHandler: RequestHandler< const esClient = coreContext.elasticsearch.client.asInternalUser; try { const { id, ...newOutput } = request.body; - validateOutputServerless(newOutput.type); + await validateOutputServerless(newOutput, soClient); ensureNoDuplicateSecrets(newOutput); const output = await outputService.create(soClient, esClient, newOutput, { id }); if (output.is_default || output.is_default_monitoring) { @@ -158,11 +157,30 @@ export const postOutputHandler: RequestHandler< } }; -function validateOutputServerless(type?: ValueOf): void { +async function validateOutputServerless( + output: Partial, + soClient: SavedObjectsClientContract, + outputId?: string +): Promise { const cloudSetup = appContextService.getCloud(); - if (cloudSetup?.isServerlessEnabled && type === outputType.RemoteElasticsearch) { + if (!cloudSetup?.isServerlessEnabled) { + return; + } + if (output.type === outputType.RemoteElasticsearch) { throw Boom.badRequest('Output type remote_elasticsearch not supported in serverless'); } + // Elasticsearch outputs must have the default host URL in serverless. + const defaultOutput = await outputService.get(soClient, SERVERLESS_DEFAULT_OUTPUT_ID); + let originalOutput; + if (outputId) { + originalOutput = await outputService.get(soClient, outputId); + } + const type = output.type || originalOutput?.type; + if (type === outputType.Elasticsearch && !isEqual(output.hosts, defaultOutput.hosts)) { + throw Boom.badRequest( + `Elasticsearch output host must have default URL in serverless: ${defaultOutput.hosts}` + ); + } } export const deleteOutputHandler: RequestHandler< diff --git a/x-pack/plugins/fleet/server/saved_objects/index.ts b/x-pack/plugins/fleet/server/saved_objects/index.ts index a1d6e61c0fa665..d1c40ad2b84b92 100644 --- a/x-pack/plugins/fleet/server/saved_objects/index.ts +++ b/x-pack/plugins/fleet/server/saved_objects/index.ts @@ -626,11 +626,24 @@ const getSavedObjectTypes = (): { [key: string]: SavedObjectsType } => ({ properties: { name: { type: 'keyword' }, is_default: { type: 'boolean' }, + is_internal: { type: 'boolean', index: false }, host_urls: { type: 'keyword', index: false }, is_preconfigured: { type: 'boolean' }, proxy_id: { type: 'keyword' }, }, }, + modelVersions: { + '1': { + changes: [ + { + type: 'mappings_addition', + addedMappings: { + is_internal: { type: 'boolean', index: false }, + }, + }, + ], + }, + }, }, [FLEET_PROXY_SAVED_OBJECT_TYPE]: { name: FLEET_PROXY_SAVED_OBJECT_TYPE, diff --git a/x-pack/plugins/fleet/server/services/agent_policy.test.ts b/x-pack/plugins/fleet/server/services/agent_policy.test.ts index 277ca1f05b807f..26c1a3dcee2682 100644 --- a/x-pack/plugins/fleet/server/services/agent_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/agent_policy.test.ts @@ -387,6 +387,18 @@ describe('agent policy', () => { savedObjectType: AGENT_POLICY_SAVED_OBJECT_TYPE, }); }); + + it('should throw error if active agents are assigned to the policy', async () => { + (getAgentsByKuery as jest.Mock).mockResolvedValue({ + agents: [], + total: 2, + page: 1, + perPage: 10, + }); + await expect(agentPolicyService.delete(soClient, esClient, 'mocked')).rejects.toThrowError( + 'Cannot delete an agent policy that is assigned to any active or inactive agents' + ); + }); }); describe('bumpRevision', () => { diff --git a/x-pack/plugins/fleet/server/services/agent_policy.ts b/x-pack/plugins/fleet/server/services/agent_policy.ts index 8c521d88819d63..6795d81f28946a 100644 --- a/x-pack/plugins/fleet/server/services/agent_policy.ts +++ b/x-pack/plugins/fleet/server/services/agent_policy.ts @@ -44,6 +44,9 @@ import type { FullAgentPolicy, ListWithKuery, NewPackagePolicy, + PostAgentPolicyCreateCallback, + PostAgentPolicyUpdateCallback, + ExternalCallback, } from '../types'; import { getAllowedOutputTypeForPolicy, @@ -234,6 +237,43 @@ class AgentPolicyService { return policyHasSyntheticsIntegration(agentPolicy); } + public async runExternalCallbacks( + externalCallbackType: ExternalCallback[0], + agentPolicy: NewAgentPolicy | Partial + ): Promise> { + const logger = appContextService.getLogger(); + logger.debug(`Running external callbacks for ${externalCallbackType}`); + try { + const externalCallbacks = appContextService.getExternalCallbacks(externalCallbackType); + let newAgentPolicy = agentPolicy; + + if (externalCallbacks && externalCallbacks.size > 0) { + let updatedNewAgentPolicy = newAgentPolicy; + for (const callback of externalCallbacks) { + let result; + if (externalCallbackType === 'agentPolicyCreate') { + result = await (callback as PostAgentPolicyCreateCallback)( + newAgentPolicy as NewAgentPolicy + ); + updatedNewAgentPolicy = result; + } + if (externalCallbackType === 'agentPolicyUpdate') { + result = await (callback as PostAgentPolicyUpdateCallback)( + newAgentPolicy as Partial + ); + updatedNewAgentPolicy = result; + } + } + newAgentPolicy = updatedNewAgentPolicy; + } + return newAgentPolicy; + } catch (error) { + logger.error(`Error running external callbacks for ${externalCallbackType}`); + logger.error(error); + throw error; + } + } + public async create( soClient: SavedObjectsClientContract, esClient: ElasticsearchClient, @@ -254,7 +294,7 @@ class AgentPolicyService { id: options.id, savedObjectType: AGENT_POLICY_SAVED_OBJECT_TYPE, }); - + await this.runExternalCallbacks('agentPolicyCreate', agentPolicy); this.checkTamperProtectionLicense(agentPolicy); const logger = appContextService.getLogger(); @@ -519,7 +559,14 @@ class AgentPolicyService { if (!existingAgentPolicy) { throw new AgentPolicyNotFoundError('Agent policy not found'); } - + try { + await this.runExternalCallbacks('agentPolicyUpdate', agentPolicy); + } catch (error) { + logger.error(`Error running external callbacks for agentPolicyUpdate`); + if (error.apiPassThrough) { + throw error; + } + } this.checkTamperProtectionLicense(agentPolicy); await this.checkForValidUninstallToken(agentPolicy, id); @@ -853,16 +900,18 @@ class AgentPolicyService { if (agentPolicy.is_managed && !options?.force) { throw new HostedAgentPolicyRestrictionRelatedError(`Cannot delete hosted agent policy ${id}`); } - + // Prevent deleting policy when assigned agents are inactive const { total } = await getAgentsByKuery(esClient, soClient, { - showInactive: false, + showInactive: true, perPage: 0, page: 1, - kuery: `${AGENTS_PREFIX}.policy_id:${id}`, + kuery: `${AGENTS_PREFIX}.policy_id:${id} and not status: unenrolled`, }); if (total > 0) { - throw new FleetError('Cannot delete agent policy that is assigned to agent(s)'); + throw new FleetError( + 'Cannot delete an agent policy that is assigned to any active or inactive agents' + ); } const packagePolicies = await packagePolicyService.findAllForAgentPolicy(soClient, id); diff --git a/x-pack/plugins/fleet/server/services/app_context.ts b/x-pack/plugins/fleet/server/services/app_context.ts index 9e40bcd64c8c80..65a0fb6c08f356 100644 --- a/x-pack/plugins/fleet/server/services/app_context.ts +++ b/x-pack/plugins/fleet/server/services/app_context.ts @@ -42,6 +42,8 @@ import type { PostPackagePolicyPostDeleteCallback, PostPackagePolicyPostCreateCallback, PutPackagePolicyUpdateCallback, + PostAgentPolicyCreateCallback, + PostAgentPolicyUpdateCallback, } from '../types'; import type { FleetAppContext } from '../plugin'; import type { TelemetryEventsSender } from '../telemetry/sender'; @@ -245,7 +247,11 @@ class AppContextService { type: T ): | Set< - T extends 'packagePolicyCreate' + T extends 'agentPolicyCreate' + ? PostAgentPolicyCreateCallback + : T extends 'agentPolicyUpdate' + ? PostAgentPolicyUpdateCallback + : T extends 'packagePolicyCreate' ? PostPackagePolicyCreateCallback : T extends 'packagePolicyDelete' ? PostPackagePolicyDeleteCallback @@ -258,7 +264,11 @@ class AppContextService { | undefined { if (this.externalCallbacks) { return this.externalCallbacks.get(type) as Set< - T extends 'packagePolicyCreate' + T extends 'agentPolicyCreate' + ? PostAgentPolicyCreateCallback + : T extends 'agentPolicyUpdate' + ? PostAgentPolicyUpdateCallback + : T extends 'packagePolicyCreate' ? PostPackagePolicyCreateCallback : T extends 'packagePolicyDelete' ? PostPackagePolicyDeleteCallback diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/install.ts index 78db39b48cfd62..6a14c1c301aa88 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/datastream_ilm/install.ts @@ -12,7 +12,7 @@ import { type PackageInstallContext, } from '../../../../../common/types/models'; import type { EsAssetReference, RegistryDataStream } from '../../../../../common/types/models'; -import { updateEsAssetReferences } from '../../packages/install'; +import { updateEsAssetReferences } from '../../packages/es_assets_reference'; import { getAssetFromAssetsMap } from '../../archive'; import { getESAssetMetadata } from '../meta'; diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts index 08feb1e95585a5..6596650a94c533 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts @@ -11,7 +11,7 @@ import type { EsAssetReference } from '../../../../types'; import { ElasticsearchAssetType } from '../../../../types'; import { getAssetFromAssetsMap, getPathParts } from '../../archive'; -import { updateEsAssetReferences } from '../../packages/install'; +import { updateEsAssetReferences } from '../../packages/es_assets_reference'; import { getESAssetMetadata } from '../meta'; import { retryTransientEsErrors } from '../retry'; import { PackageInvalidArchiveError } from '../../../../errors'; diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/remove.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/remove.ts index 02e39d89b14f7c..aab876652756ce 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/remove.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/remove.ts @@ -11,7 +11,7 @@ import { appContextService } from '../../..'; import { ElasticsearchAssetType } from '../../../../types'; import { FleetError } from '../../../../errors'; import type { EsAssetReference } from '../../../../../common/types'; -import { updateEsAssetReferences } from '../../packages/install'; +import { updateEsAssetReferences } from '../../packages/es_assets_reference'; export const deletePreviousPipelines = async ( esClient: ElasticsearchClient, diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/install.ts index d48a65dc593ef5..5057e5cfd68fe5 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ml_model/install.ts @@ -17,7 +17,7 @@ import type { EsAssetReference } from '../../../../../common/types/models'; import { retryTransientEsErrors } from '../retry'; -import { updateEsAssetReferences } from '../../packages/install'; +import { updateEsAssetReferences } from '../../packages/es_assets_reference'; interface MlModelInstallation { installationName: string; diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts index 2afe341485139c..a07449c2cbabe9 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts @@ -28,7 +28,7 @@ import { import { isFields, processFields } from '../../fields/field'; import { generateMappings } from '../template/template'; import { getESAssetMetadata } from '../meta'; -import { updateEsAssetReferences } from '../../packages/install'; +import { updateEsAssetReferences } from '../../packages/es_assets_reference'; import { getAssetFromAssetsMap, getPathParts } from '../../archive'; import { ElasticsearchAssetType, diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/reauthorize.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/reauthorize.ts index 7bba68d84bcf89..783d498d6254d1 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/reauthorize.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/reauthorize.ts @@ -12,7 +12,7 @@ import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-ser import { sortBy, uniqBy } from 'lodash'; import type { SecondaryAuthorizationHeader } from '../../../../../common/types/models/transform_api_key'; -import { updateEsAssetReferences } from '../../packages/install'; +import { updateEsAssetReferences } from '../../packages/es_assets_reference'; import type { Installation } from '../../../../../common'; import { ElasticsearchAssetType, PACKAGES_SAVED_OBJECT_TYPE } from '../../../../../common'; diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts index ce416a6277313e..7568dafe248ac4 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts @@ -31,6 +31,7 @@ jest.mock('../kibana/assets/install'); jest.mock('../kibana/index_pattern/install'); jest.mock('./install'); jest.mock('./get'); +jest.mock('./install_index_template_pipeline'); jest.mock('../archive/storage'); jest.mock('../elasticsearch/ilm/install'); @@ -41,7 +42,8 @@ import { installKibanaAssetsAndReferences } from '../kibana/assets/install'; import { MAX_TIME_COMPLETE_INSTALL } from '../../../../common/constants'; -import { installIndexTemplatesAndPipelines, restartInstallation } from './install'; +import { restartInstallation } from './install'; +import { installIndexTemplatesAndPipelines } from './install_index_template_pipeline'; import { _installPackage } from './_install_package'; @@ -138,7 +140,6 @@ describe('_installPackage', () => { createAppContextStartContractMock({ internal: { disableILMPolicies: true, - disableProxies: false, fleetServerStandalone: false, onlyAllowAgentUpgradeToKnownVersions: false, retrySetupOnBoot: false, @@ -199,7 +200,6 @@ describe('_installPackage', () => { appContextService.start( createAppContextStartContractMock({ internal: { - disableProxies: false, disableILMPolicies: false, fleetServerStandalone: false, onlyAllowAgentUpgradeToKnownVersions: false, @@ -277,7 +277,6 @@ describe('_installPackage', () => { createAppContextStartContractMock({ internal: { disableILMPolicies: true, - disableProxies: false, fleetServerStandalone: false, onlyAllowAgentUpgradeToKnownVersions: false, retrySetupOnBoot: false, @@ -392,7 +391,6 @@ describe('_installPackage', () => { createAppContextStartContractMock({ internal: { disableILMPolicies: false, - disableProxies: false, fleetServerStandalone: false, onlyAllowAgentUpgradeToKnownVersions: false, retrySetupOnBoot: false, diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts index e182fd8721075d..8b8a44b55e2224 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts @@ -50,13 +50,10 @@ import { appContextService, packagePolicyService } from '../..'; import { auditLoggingService } from '../../audit_logging'; -import { - createInstallation, - restartInstallation, - installIndexTemplatesAndPipelines, -} from './install'; +import { createInstallation, restartInstallation } from './install'; import { withPackageSpan } from './utils'; import { clearLatestFailedAttempts } from './install_errors_helpers'; +import { installIndexTemplatesAndPipelines } from './install_index_template_pipeline'; // this is only exported for testing // use a leading underscore to indicate it's not the supported path diff --git a/x-pack/plugins/fleet/server/services/epm/packages/es_assets_reference.ts b/x-pack/plugins/fleet/server/services/epm/packages/es_assets_reference.ts new file mode 100644 index 00000000000000..8f10b48ae6b72c --- /dev/null +++ b/x-pack/plugins/fleet/server/services/epm/packages/es_assets_reference.ts @@ -0,0 +1,149 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { SavedObjectsClientContract } from '@kbn/core/server'; +import { SavedObjectsErrorHelpers } from '@kbn/core/server'; +import pRetry from 'p-retry'; +import { uniqBy } from 'lodash'; + +import type { EsAssetReference, Installation } from '../../../types'; + +import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../constants'; +import { auditLoggingService } from '../../audit_logging'; + +/** + * Utility function for updating the installed_es field of a package + */ +export const updateEsAssetReferences = async ( + savedObjectsClient: SavedObjectsClientContract, + pkgName: string, + currentAssets: EsAssetReference[], + { + assetsToAdd = [], + assetsToRemove = [], + refresh = false, + }: { + assetsToAdd?: EsAssetReference[]; + assetsToRemove?: EsAssetReference[]; + /** + * Whether or not the update should force a refresh on the SO index. + * Defaults to `false` for faster updates, should only be `wait_for` if the update needs to be queried back from ES + * immediately. + */ + refresh?: 'wait_for' | false; + } +): Promise => { + const withAssetsRemoved = currentAssets.filter(({ type, id }) => { + if ( + assetsToRemove.some( + ({ type: removeType, id: removeId }) => removeType === type && removeId === id + ) + ) { + return false; + } + return true; + }); + + const deduplicatedAssets = uniqBy( + [...withAssetsRemoved, ...assetsToAdd], + ({ type, id }) => `${type}-${id}` + ); + + auditLoggingService.writeCustomSoAuditLog({ + action: 'update', + id: pkgName, + savedObjectType: PACKAGES_SAVED_OBJECT_TYPE, + }); + + const { + attributes: { installed_es: updatedAssets }, + } = + // Because Kibana assets are installed in parallel with ES assets with refresh: false, we almost always run into an + // issue that causes a conflict error due to this issue: https://github.com/elastic/kibana/issues/126240. This is safe + // to retry constantly until it succeeds to optimize this critical user journey path as much as possible. + await pRetry( + () => + savedObjectsClient.update( + PACKAGES_SAVED_OBJECT_TYPE, + pkgName, + { + installed_es: deduplicatedAssets, + }, + { + refresh, + } + ), + // Use a lower number of retries for ES assets since they're installed in serial and can only conflict with + // the single Kibana update call. + { retries: 5 } + ); + + return updatedAssets ?? []; +}; +/** + * Utility function for adding assets the installed_es field of a package + * uses optimistic concurrency control to prevent missed updates + */ +export const optimisticallyAddEsAssetReferences = async ( + savedObjectsClient: SavedObjectsClientContract, + pkgName: string, + assetsToAdd: EsAssetReference[], + esIndexPatterns?: Record +): Promise => { + const addEsAssets = async () => { + // TODO: Should this be replaced by a `get()` call from epm/get.ts? + const so = await savedObjectsClient.get(PACKAGES_SAVED_OBJECT_TYPE, pkgName); + auditLoggingService.writeCustomSoAuditLog({ + action: 'get', + id: pkgName, + savedObjectType: PACKAGES_SAVED_OBJECT_TYPE, + }); + + const installedEs = so.attributes.installed_es ?? []; + + const deduplicatedAssets = uniqBy( + [...installedEs, ...assetsToAdd], + ({ type, id }) => `${type}-${id}` + ); + + const deduplicatedIndexPatterns = Object.assign( + {}, + so.attributes.es_index_patterns ?? {}, + esIndexPatterns + ); + + auditLoggingService.writeCustomSoAuditLog({ + action: 'update', + id: pkgName, + savedObjectType: PACKAGES_SAVED_OBJECT_TYPE, + }); + + const { + attributes: { installed_es: updatedAssets }, + } = await savedObjectsClient.update( + PACKAGES_SAVED_OBJECT_TYPE, + pkgName, + { + installed_es: deduplicatedAssets, + es_index_patterns: deduplicatedIndexPatterns, + }, + { + version: so.version, + } + ); + + return updatedAssets ?? []; + }; + + const onlyRetryConflictErrors = (err: Error) => { + if (!SavedObjectsErrorHelpers.isConflictError(err)) { + throw err; + } + }; + + return pRetry(addEsAssets, { retries: 10, onFailedAttempt: onlyRetryConflictErrors }); +}; diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts index fc85609c4703c8..2a5ae1346d6b38 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.test.ts @@ -16,16 +16,27 @@ import { sendTelemetryEvents } from '../../upgrade_sender'; import { licenseService } from '../../license'; import { auditLoggingService } from '../../audit_logging'; import { appContextService } from '../../app_context'; -import { ConcurrentInstallOperationError, FleetError } from '../../../errors'; +import { ConcurrentInstallOperationError, FleetError, PackageNotFoundError } from '../../../errors'; import * as Registry from '../registry'; - -import { createInstallation, handleInstallPackageFailure, installPackage } from './install'; +import { dataStreamService } from '../../data_streams'; + +import { + createInstallation, + handleInstallPackageFailure, + installAssetsForInputPackagePolicy, + installPackage, +} from './install'; import * as install from './_install_package'; import { getBundledPackageByPkgKey } from './bundled_packages'; -import * as obj from '.'; +import { getInstalledPackageWithAssets, getInstallationObject } from './get'; +import { optimisticallyAddEsAssetReferences } from './es_assets_reference'; +jest.mock('../../data_streams'); +jest.mock('./get'); +jest.mock('./install_index_template_pipeline'); +jest.mock('./es_assets_reference'); jest.mock('../../app_context', () => { const logger = { error: jest.fn(), debug: jest.fn(), warn: jest.fn(), info: jest.fn() }; const mockedSavedObjectTagging = { @@ -228,8 +239,9 @@ describe('install', () => { it('should send telemetry on update success', async () => { jest - .spyOn(obj, 'getInstallationObject') - .mockImplementationOnce(() => Promise.resolve({ attributes: { version: '1.2.0' } } as any)); + .mocked(getInstallationObject) + .mockResolvedValueOnce({ attributes: { version: '1.2.0' } } as any); + jest.spyOn(licenseService, 'hasAtLeast').mockReturnValue(true); await installPackage({ spaceId: DEFAULT_SPACE_ID, @@ -319,16 +331,14 @@ describe('install', () => { }); it('should do nothing if same version is installed', async () => { - jest.spyOn(obj, 'getInstallationObject').mockImplementationOnce(() => - Promise.resolve({ - attributes: { - version: '1.2.0', - install_status: 'installed', - installed_es: [], - installed_kibana: [], - }, - } as any) - ); + jest.mocked(getInstallationObject).mockResolvedValueOnce({ + attributes: { + version: '1.2.0', + install_status: 'installed', + installed_es: [], + installed_kibana: [], + }, + } as any); jest.spyOn(licenseService, 'hasAtLeast').mockReturnValue(true); const response = await installPackage({ spaceId: DEFAULT_SPACE_ID, @@ -365,8 +375,9 @@ describe('install', () => { .mocked(appContextService.getInternalUserSOClientForSpaceId) .mockReturnValue(mockedTaggingSo); jest - .spyOn(obj, 'getInstallationObject') - .mockImplementationOnce(() => Promise.resolve({ attributes: { version: '1.2.0' } } as any)); + .mocked(getInstallationObject) + .mockResolvedValueOnce({ attributes: { version: '1.2.0' } } as any); + jest.spyOn(licenseService, 'hasAtLeast').mockReturnValue(true); await installPackage({ spaceId: 'test', @@ -395,8 +406,8 @@ describe('install', () => { describe('upload', () => { it('should send telemetry on update', async () => { jest - .spyOn(obj, 'getInstallationObject') - .mockImplementationOnce(() => Promise.resolve({ attributes: { version: '1.2.0' } } as any)); + .mocked(getInstallationObject) + .mockResolvedValueOnce({ attributes: { version: '1.2.0' } } as any); jest.spyOn(licenseService, 'hasAtLeast').mockReturnValue(true); await installPackage({ spaceId: DEFAULT_SPACE_ID, @@ -463,6 +474,97 @@ describe('install', () => { }); }); }); + +describe('installAssetsForInputPackagePolicy', () => { + beforeEach(() => { + jest.mocked(optimisticallyAddEsAssetReferences).mockReset(); + }); + it('should do nothing for non input package', async () => { + const mockedLogger = jest.mocked(appContextService.getLogger()); + await installAssetsForInputPackagePolicy({ + pkgInfo: { + type: 'integration', + } as any, + soClient: savedObjectsClientMock.create(), + esClient: {} as ElasticsearchClient, + force: false, + logger: mockedLogger, + packagePolicy: {} as any, + }); + }); + const TEST_PKG_INFO_INPUT = { + type: 'input', + name: 'test', + version: '1.0.0', + policy_templates: [ + { + name: 'log', + type: 'log', + }, + ], + }; + it('should throw for input package if package is not installed', async () => { + jest.mocked(dataStreamService).getMatchingDataStreams.mockResolvedValue([]); + jest.mocked(getInstalledPackageWithAssets).mockResolvedValue(undefined); + const mockedLogger = jest.mocked(appContextService.getLogger()); + + await expect(() => + installAssetsForInputPackagePolicy({ + pkgInfo: TEST_PKG_INFO_INPUT as any, + soClient: savedObjectsClientMock.create(), + esClient: {} as ElasticsearchClient, + force: false, + logger: mockedLogger, + packagePolicy: { + inputs: [{ type: 'log', streams: [{ type: 'log', vars: { dataset: 'test.tata' } }] }], + } as any, + }) + ).rejects.toThrowError(PackageNotFoundError); + }); + + it('should install es index patterns for input package if package is installed', async () => { + jest.mocked(dataStreamService).getMatchingDataStreams.mockResolvedValue([]); + + jest.mocked(getInstalledPackageWithAssets).mockResolvedValue({ + installation: { + name: 'test', + version: '1.0.0', + }, + packageInfo: TEST_PKG_INFO_INPUT, + assetsMap: new Map(), + paths: [], + } as any); + const mockedLogger = jest.mocked(appContextService.getLogger()); + + await installAssetsForInputPackagePolicy({ + pkgInfo: TEST_PKG_INFO_INPUT as any, + + soClient: savedObjectsClientMock.create(), + esClient: {} as ElasticsearchClient, + force: false, + logger: mockedLogger, + packagePolicy: { + inputs: [ + { + name: 'log', + type: 'log', + streams: [{ type: 'log', vars: { 'data_stream.dataset': { value: 'test.tata' } } }], + }, + ], + } as any, + }); + + expect(jest.mocked(optimisticallyAddEsAssetReferences)).toBeCalledWith( + expect.anything(), + expect.anything(), + expect.anything(), + { + 'test.tata': 'log-test.tata-*', + } + ); + }); +}); + describe('handleInstallPackageFailure', () => { const mockedLogger = jest.mocked(appContextService.getLogger()); beforeEach(() => { @@ -541,6 +643,7 @@ describe('handleInstallPackageFailure', () => { }, }, } as any; + jest.mocked(getInstallationObject).mockResolvedValueOnce(installedPkg); await handleInstallPackageFailure({ savedObjectsClient, error: new FleetError('test 123'), @@ -585,6 +688,7 @@ describe('handleInstallPackageFailure', () => { }, }, } as any; + await handleInstallPackageFailure({ savedObjectsClient, error: new Error('test 123'), diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.ts index f34ddf598a6157..6c79ff1e59d41a 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.ts @@ -18,7 +18,6 @@ import type { import { SavedObjectsErrorHelpers } from '@kbn/core/server'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common/constants'; import pRetry from 'p-retry'; -import { uniqBy } from 'lodash'; import type { LicenseType } from '@kbn/licensing-plugin/server'; import type { PackageDataStreamTypes, PackageInstallContext } from '../../../../common/types'; @@ -30,7 +29,6 @@ import type { ArchivePackage, BulkInstallPackageInfo, EpmPackageInstallStatus, - EsAssetReference, InstallablePackage, Installation, InstallResult, @@ -40,12 +38,12 @@ import type { NewPackagePolicy, PackageInfo, PackageVerificationResult, - RegistryDataStream, } from '../../../types'; import { AUTO_UPGRADE_POLICIES_PACKAGES, CUSTOM_INTEGRATION_PACKAGE_SPEC_VERSION, DATASET_VAR_NAME, + GENERIC_DATASET_NAME, } from '../../../../common/constants'; import { FleetError, @@ -69,19 +67,16 @@ import { toAssetReference } from '../kibana/assets/install'; import type { ArchiveAsset } from '../kibana/assets/install'; import type { PackageUpdateEvent } from '../../upgrade_sender'; import { sendTelemetryEvents, UpdateEventType } from '../../upgrade_sender'; -import { prepareToInstallPipelines } from '../elasticsearch/ingest_pipeline'; -import { prepareToInstallTemplates } from '../elasticsearch/template/install'; import { auditLoggingService } from '../../audit_logging'; import { getFilteredInstallPackages } from '../filtered_packages'; import { formatVerificationResultForSO } from './package_verification'; -import { getInstallation, getInstallationObject } from '.'; +import { getInstallation, getInstallationObject } from './get'; import { removeInstallation } from './remove'; import { getInstalledPackageWithAssets, getPackageSavedObjects } from './get'; import { _installPackage } from './_install_package'; import { removeOldAssets } from './cleanup'; import { getBundledPackageByPkgKey } from './bundled_packages'; -import { withPackageSpan } from './utils'; import { convertStringToTitle, generateDescription } from './custom_integrations/utils'; import { INITIAL_VERSION } from './custom_integrations/constants'; import { createAssets } from './custom_integrations'; @@ -89,6 +84,8 @@ import { generateDatastreamEntries } from './custom_integrations/assets/dataset/ import { checkForNamingCollision } from './custom_integrations/validation/check_naming_collision'; import { checkDatasetsNameFormat } from './custom_integrations/validation/check_dataset_name_format'; import { addErrorToLatestFailedAttempts } from './install_errors_helpers'; +import { installIndexTemplatesAndPipelines } from './install_index_template_pipeline'; +import { optimisticallyAddEsAssetReferences } from './es_assets_reference'; export async function isPackageInstalled(options: { savedObjectsClient: SavedObjectsClientContract; @@ -379,6 +376,7 @@ async function installPackageFromRegistry({ try { // get the currently installed package + const installedPkg = await getInstallationObject({ savedObjectsClient, pkgName }); installType = getInstallType({ pkgVersion, installedPkg }); @@ -986,7 +984,9 @@ export async function createInstallation(options: { }) { const { savedObjectsClient, packageInfo, installSource, verificationResult } = options; const { name: pkgName, version: pkgVersion } = packageInfo; - const toSaveESIndexPatterns = generateESIndexPatterns(packageInfo.data_streams); + const toSaveESIndexPatterns = generateESIndexPatterns( + getNormalizedDataStreams(packageInfo, GENERIC_DATASET_NAME) + ); // For "stack-aligned" packages, default the `keep_policies_up_to_date` setting to true. For all other // packages, default it to undefined. Use undefined rather than false to allow us to differentiate @@ -1064,131 +1064,6 @@ export const saveKibanaAssetsRefs = async ( return assetRefs; }; -/** - * Utility function for updating the installed_es field of a package - */ -export const updateEsAssetReferences = async ( - savedObjectsClient: SavedObjectsClientContract, - pkgName: string, - currentAssets: EsAssetReference[], - { - assetsToAdd = [], - assetsToRemove = [], - refresh = false, - }: { - assetsToAdd?: EsAssetReference[]; - assetsToRemove?: EsAssetReference[]; - /** - * Whether or not the update should force a refresh on the SO index. - * Defaults to `false` for faster updates, should only be `wait_for` if the update needs to be queried back from ES - * immediately. - */ - refresh?: 'wait_for' | false; - } -): Promise => { - const withAssetsRemoved = currentAssets.filter(({ type, id }) => { - if ( - assetsToRemove.some( - ({ type: removeType, id: removeId }) => removeType === type && removeId === id - ) - ) { - return false; - } - return true; - }); - - const deduplicatedAssets = uniqBy( - [...withAssetsRemoved, ...assetsToAdd], - ({ type, id }) => `${type}-${id}` - ); - - auditLoggingService.writeCustomSoAuditLog({ - action: 'update', - id: pkgName, - savedObjectType: PACKAGES_SAVED_OBJECT_TYPE, - }); - - const { - attributes: { installed_es: updatedAssets }, - } = - // Because Kibana assets are installed in parallel with ES assets with refresh: false, we almost always run into an - // issue that causes a conflict error due to this issue: https://github.com/elastic/kibana/issues/126240. This is safe - // to retry constantly until it succeeds to optimize this critical user journey path as much as possible. - await pRetry( - () => - savedObjectsClient.update( - PACKAGES_SAVED_OBJECT_TYPE, - pkgName, - { - installed_es: deduplicatedAssets, - }, - { - refresh, - } - ), - // Use a lower number of retries for ES assets since they're installed in serial and can only conflict with - // the single Kibana update call. - { retries: 5 } - ); - - return updatedAssets ?? []; -}; -/** - * Utility function for adding assets the installed_es field of a package - * uses optimistic concurrency control to prevent missed updates - */ -export const optimisticallyAddEsAssetReferences = async ( - savedObjectsClient: SavedObjectsClientContract, - pkgName: string, - assetsToAdd: EsAssetReference[] -): Promise => { - const addEsAssets = async () => { - // TODO: Should this be replaced by a `get()` call from epm/get.ts? - const so = await savedObjectsClient.get(PACKAGES_SAVED_OBJECT_TYPE, pkgName); - auditLoggingService.writeCustomSoAuditLog({ - action: 'get', - id: pkgName, - savedObjectType: PACKAGES_SAVED_OBJECT_TYPE, - }); - - const installedEs = so.attributes.installed_es ?? []; - - const deduplicatedAssets = uniqBy( - [...installedEs, ...assetsToAdd], - ({ type, id }) => `${type}-${id}` - ); - - auditLoggingService.writeCustomSoAuditLog({ - action: 'update', - id: pkgName, - savedObjectType: PACKAGES_SAVED_OBJECT_TYPE, - }); - - const { - attributes: { installed_es: updatedAssets }, - } = await savedObjectsClient.update( - PACKAGES_SAVED_OBJECT_TYPE, - pkgName, - { - installed_es: deduplicatedAssets, - }, - { - version: so.version, - } - ); - - return updatedAssets ?? []; - }; - - const onlyRetryConflictErrors = (err: Error) => { - if (!SavedObjectsErrorHelpers.isConflictError(err)) { - throw err; - } - }; - - return pRetry(addEsAssets, { retries: 10, onFailedAttempt: onlyRetryConflictErrors }); -}; - export async function ensurePackagesCompletedInstall( savedObjectsClient: SavedObjectsClientContract, esClient: ElasticsearchClient @@ -1223,92 +1098,6 @@ export async function ensurePackagesCompletedInstall( return installingPackages; } -export async function installIndexTemplatesAndPipelines({ - installedPkg, - packageInstallContext, - esReferences, - savedObjectsClient, - esClient, - logger, - onlyForDataStreams, -}: { - installedPkg?: Installation; - packageInstallContext: PackageInstallContext; - esReferences: EsAssetReference[]; - savedObjectsClient: SavedObjectsClientContract; - esClient: ElasticsearchClient; - logger: Logger; - onlyForDataStreams?: RegistryDataStream[]; -}) { - /** - * In order to install assets in parallel, we need to split the preparation step from the installation step. This - * allows us to know which asset references are going to be installed so that we can save them on the packages - * SO before installation begins. In the case of a failure during installing any individual asset, we'll have the - * references necessary to remove any assets in that were successfully installed during the rollback phase. - * - * This split of prepare/install could be extended to all asset types. Besides performance, it also allows us to - * more easily write unit tests against the asset generation code without needing to mock ES responses. - */ - const experimentalDataStreamFeatures = installedPkg?.experimental_data_stream_features ?? []; - - const preparedIngestPipelines = prepareToInstallPipelines( - packageInstallContext, - onlyForDataStreams - ); - const preparedIndexTemplates = prepareToInstallTemplates( - packageInstallContext, - esReferences, - experimentalDataStreamFeatures, - onlyForDataStreams - ); - - // Update the references for the templates and ingest pipelines together. Need to be done together to avoid race - // conditions on updating the installed_es field at the same time - // These must be saved before we actually attempt to install the templates or pipelines so that we know what to - // cleanup in the case that a single asset fails to install. - let newEsReferences: EsAssetReference[] = []; - - if (onlyForDataStreams) { - // if onlyForDataStreams is present that means we are in create package policy flow - // not install flow, meaning we do not have a lock on the installation SO - // so we need to use optimistic concurrency control - newEsReferences = await optimisticallyAddEsAssetReferences( - savedObjectsClient, - packageInstallContext.packageInfo.name, - [...preparedIngestPipelines.assetsToAdd, ...preparedIndexTemplates.assetsToAdd] - ); - } else { - newEsReferences = await updateEsAssetReferences( - savedObjectsClient, - packageInstallContext.packageInfo.name, - esReferences, - { - assetsToRemove: preparedIndexTemplates.assetsToRemove, - assetsToAdd: [ - ...preparedIngestPipelines.assetsToAdd, - ...preparedIndexTemplates.assetsToAdd, - ], - } - ); - } - - // Install index templates and ingest pipelines in parallel since they typically take the longest - const [installedTemplates] = await Promise.all([ - withPackageSpan('Install index templates', () => - preparedIndexTemplates.install(esClient, logger) - ), - // installs versionized pipelines without removing currently installed ones - withPackageSpan('Install ingest pipelines', () => - preparedIngestPipelines.install(esClient, logger) - ), - ]); - - return { - esReferences: newEsReferences, - installedTemplates, - }; -} - export async function installAssetsForInputPackagePolicy(opts: { pkgInfo: PackageInfo; logger: Logger; @@ -1347,7 +1136,7 @@ export async function installAssetsForInputPackagePolicy(opts: { ); } else { logger.info( - `Data stream ${dataStream.name} already exists, skipping index template creation for ${packagePolicy.id}` + `Data stream for dataset ${datasetName} already exists, skipping index template creation for ${packagePolicy.id}` ); return; } @@ -1414,6 +1203,13 @@ export async function installAssetsForInputPackagePolicy(opts: { logger, onlyForDataStreams: [dataStream], }); + // Upate ES index patterns + await optimisticallyAddEsAssetReferences( + soClient, + installedPkgWithAssets.installation.name, + [], + generateESIndexPatterns([dataStream]) + ); } interface NoPkgArgs { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install_index_template_pipeline.ts b/x-pack/plugins/fleet/server/services/epm/packages/install_index_template_pipeline.ts new file mode 100644 index 00000000000000..8092a133490af7 --- /dev/null +++ b/x-pack/plugins/fleet/server/services/epm/packages/install_index_template_pipeline.ts @@ -0,0 +1,110 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { ElasticsearchClient, SavedObjectsClientContract, Logger } from '@kbn/core/server'; + +import type { PackageInstallContext } from '../../../../common/types'; +import type { EsAssetReference, Installation, RegistryDataStream } from '../../../types'; + +import { prepareToInstallPipelines } from '../elasticsearch/ingest_pipeline'; +import { prepareToInstallTemplates } from '../elasticsearch/template/install'; + +import { withPackageSpan } from './utils'; +import { optimisticallyAddEsAssetReferences, updateEsAssetReferences } from './es_assets_reference'; + +export async function installIndexTemplatesAndPipelines({ + installedPkg, + packageInstallContext, + esReferences, + savedObjectsClient, + esClient, + logger, + onlyForDataStreams, +}: { + installedPkg?: Installation; + packageInstallContext: PackageInstallContext; + esReferences: EsAssetReference[]; + savedObjectsClient: SavedObjectsClientContract; + esClient: ElasticsearchClient; + logger: Logger; + onlyForDataStreams?: RegistryDataStream[]; +}) { + /** + * In order to install assets in parallel, we need to split the preparation step from the installation step. This + * allows us to know which asset references are going to be installed so that we can save them on the packages + * SO before installation begins. In the case of a failure during installing any individual asset, we'll have the + * references necessary to remove any assets in that were successfully installed during the rollback phase. + * + * This split of prepare/install could be extended to all asset types. Besides performance, it also allows us to + * more easily write unit tests against the asset generation code without needing to mock ES responses. + */ + const experimentalDataStreamFeatures = installedPkg?.experimental_data_stream_features ?? []; + + const preparedIngestPipelines = prepareToInstallPipelines( + packageInstallContext, + onlyForDataStreams + ); + const preparedIndexTemplates = prepareToInstallTemplates( + packageInstallContext, + esReferences, + experimentalDataStreamFeatures, + onlyForDataStreams + ); + + // Update the references for the templates and ingest pipelines together. Need to be done together to avoid race + // conditions on updating the installed_es field at the same time + // These must be saved before we actually attempt to install the templates or pipelines so that we know what to + // cleanup in the case that a single asset fails to install. + let newEsReferences: EsAssetReference[] = []; + + if (onlyForDataStreams) { + // if onlyForDataStreams is present that means we are in create package policy flow + // not install flow, meaning we do not have a lock on the installation SO + // so we need to use optimistic concurrency control + newEsReferences = await optimisticallyAddEsAssetReferences( + savedObjectsClient, + packageInstallContext.packageInfo.name, + [...preparedIngestPipelines.assetsToAdd, ...preparedIndexTemplates.assetsToAdd] + ); + } else { + newEsReferences = await updateEsAssetReferences( + savedObjectsClient, + packageInstallContext.packageInfo.name, + esReferences, + { + assetsToRemove: preparedIndexTemplates.assetsToRemove, + assetsToAdd: [ + ...preparedIngestPipelines.assetsToAdd, + ...preparedIndexTemplates.assetsToAdd, + ], + } + ); + } + + // Install index templates and ingest pipelines in parallel since they typically take the longest + const [installedTemplates] = await Promise.all([ + withPackageSpan('Install index templates', () => + preparedIndexTemplates.install(esClient, logger) + ), + // installs versionized pipelines without removing currently installed ones + withPackageSpan('Install ingest pipelines', () => + preparedIngestPipelines.install(esClient, logger) + ), + ]); + + return { + esReferences: newEsReferences, + installedTemplates, + }; +} diff --git a/x-pack/plugins/fleet/server/services/es_index_pattern.ts b/x-pack/plugins/fleet/server/services/es_index_pattern.ts deleted file mode 100644 index acf537303a97e4..00000000000000 --- a/x-pack/plugins/fleet/server/services/es_index_pattern.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { SavedObjectsClientContract } from '@kbn/core/server'; - -import type { ESIndexPatternService } from '..'; - -import { getInstallation } from './epm/packages'; - -export class ESIndexPatternSavedObjectService implements ESIndexPatternService { - public async getESIndexPattern( - savedObjectsClient: SavedObjectsClientContract, - pkgName: string, - datasetPath: string - ): Promise { - const installation = await getInstallation({ savedObjectsClient, pkgName }); - return installation?.es_index_patterns[datasetPath]; - } -} diff --git a/x-pack/plugins/fleet/server/services/index.ts b/x-pack/plugins/fleet/server/services/index.ts index 323d091cae1d2f..ff219fd0d1ab69 100644 --- a/x-pack/plugins/fleet/server/services/index.ts +++ b/x-pack/plugins/fleet/server/services/index.ts @@ -5,25 +5,11 @@ * 2.0. */ -import type { SavedObjectsClientContract } from '@kbn/core/server'; - import type { agentPolicyService } from './agent_policy'; import * as settingsService from './settings'; -export { ESIndexPatternSavedObjectService } from './es_index_pattern'; export { getRegistryUrl } from './epm/registry/registry_url'; -/** - * Service to return the index pattern of EPM packages - */ -export interface ESIndexPatternService { - getESIndexPattern( - savedObjectsClient: SavedObjectsClientContract, - pkgName: string, - datasetPath: string - ): Promise; -} - /** * Service that provides exported function that return information about EPM packages */ @@ -33,6 +19,7 @@ export interface AgentPolicyServiceInterface { list: typeof agentPolicyService['list']; getFullAgentPolicy: typeof agentPolicyService['getFullAgentPolicy']; getByIds: typeof agentPolicyService['getByIDs']; + bumpRevision: typeof agentPolicyService['bumpRevision']; } // Agent services diff --git a/x-pack/plugins/fleet/server/services/preconfiguration.test.ts b/x-pack/plugins/fleet/server/services/preconfiguration.test.ts index bf70ef7652d9ae..fa81ae68a04455 100644 --- a/x-pack/plugins/fleet/server/services/preconfiguration.test.ts +++ b/x-pack/plugins/fleet/server/services/preconfiguration.test.ts @@ -283,6 +283,7 @@ jest.mock('./app_context', () => ({ getUninstallTokenService: () => ({ generateTokenForPolicyId: jest.fn(), }), + getExternalCallbacks: jest.fn(), }, })); diff --git a/x-pack/plugins/fleet/server/services/preconfiguration/fleet_server_host.test.ts b/x-pack/plugins/fleet/server/services/preconfiguration/fleet_server_host.test.ts index 330400fd4ba1f3..22651dfae14052 100644 --- a/x-pack/plugins/fleet/server/services/preconfiguration/fleet_server_host.test.ts +++ b/x-pack/plugins/fleet/server/services/preconfiguration/fleet_server_host.test.ts @@ -4,20 +4,29 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { savedObjectsClientMock } from '@kbn/core/server/mocks'; +import { savedObjectsClientMock, elasticsearchServiceMock } from '@kbn/core/server/mocks'; import { securityMock } from '@kbn/security-plugin/server/mocks'; import { appContextService } from '../app_context'; -import { getDefaultFleetServerHost, createFleetServerHost } from '../fleet_server_host'; +import { + getDefaultFleetServerHost, + createFleetServerHost, + bulkGetFleetServerHosts, + updateFleetServerHost, +} from '../fleet_server_host'; import { createCloudFleetServerHostIfNeeded, getCloudFleetServersHosts, getPreconfiguredFleetServerHostFromConfig, + createOrUpdatePreconfiguredFleetServerHosts, } from './fleet_server_host'; +import type { FleetServerHost } from '../../../common/types'; + jest.mock('../fleet_server_host'); jest.mock('../app_context'); +jest.mock('../agent_policy'); const mockedAppContextService = appContextService as jest.Mocked; mockedAppContextService.getSecuritySetup.mockImplementation(() => ({ @@ -30,6 +39,12 @@ const mockedGetDefaultFleetServerHost = getDefaultFleetServerHost as jest.Mocked const mockedCreateFleetServerHost = createFleetServerHost as jest.MockedFunction< typeof createFleetServerHost >; +const mockedUpdateFleetServerHost = updateFleetServerHost as jest.MockedFunction< + typeof updateFleetServerHost +>; +const mockedBulkGetFleetServerHosts = bulkGetFleetServerHosts as jest.MockedFunction< + typeof bulkGetFleetServerHosts +>; describe('getPreconfiguredFleetServerHostFromConfig', () => { it('should work with preconfigured fleetServerHosts', () => { @@ -85,6 +100,30 @@ describe('getPreconfiguredFleetServerHostFromConfig', () => { expect(res.map(({ id }) => id)).toEqual(['fleet-123', 'fleet-default-fleet-server-host']); }); + it('should work with preconfigured internal fleetServerHosts', () => { + const config = { + fleetServerHosts: [ + { + id: 'fleet-123', + name: 'TEST', + is_default: true, + host_urls: ['http://test.fr'], + }, + { + id: 'fleet-internal', + name: 'TEST_INTERNAL', + is_default: false, + is_internal: true, + host_urls: ['http://test-internal.fr'], + }, + ], + }; + + const res = getPreconfiguredFleetServerHostFromConfig(config); + + expect(res).toEqual(config.fleetServerHosts); + }); + it('should throw if there is multiple default outputs', () => { const config = { agents: { fleet_server: { hosts: ['http://test.fr'] } }, @@ -174,10 +213,8 @@ describe('getCloudFleetServersHosts', () => { }); describe('createCloudFleetServerHostIfNeeded', () => { - beforeEach(() => { - mockedCreateFleetServerHost.mockReset(); - }); afterEach(() => { + mockedCreateFleetServerHost.mockReset(); mockedAppContextService.getCloud.mockReset(); }); it('should do nothing if there is no cloud fleet server hosts', async () => { @@ -243,3 +280,45 @@ describe('createCloudFleetServerHostIfNeeded', () => { ); }); }); + +describe('createOrUpdatePreconfiguredFleetServerHosts', () => { + beforeEach(() => { + mockedBulkGetFleetServerHosts.mockResolvedValue([ + { + id: 'fleet-123', + name: 'TEST', + is_default: true, + host_urls: ['http://test.fr'], + }, + { + id: 'fleet-internal', + name: 'TEST_INTERNAL', + is_default: false, + is_internal: false, + host_urls: ['http://test-internal.fr'], + }, + ] as FleetServerHost[]); + }); + afterEach(() => { + mockedBulkGetFleetServerHosts.mockReset(); + }); + + it('should update preconfigured fleet server hosts if is_internal flag changes', async () => { + const soClient = savedObjectsClientMock.create(); + const esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; + + await createOrUpdatePreconfiguredFleetServerHosts(soClient, esClient, [ + { + id: 'fleet-internal', + name: 'TEST_INTERNAL', + is_default: false, + is_internal: true, + host_urls: ['http://test-internal.fr'], + is_preconfigured: false, + }, + ]); + + expect(mockedCreateFleetServerHost).not.toBeCalled(); + expect(mockedUpdateFleetServerHost).toBeCalled(); + }); +}); diff --git a/x-pack/plugins/fleet/server/services/preconfiguration/fleet_server_host.ts b/x-pack/plugins/fleet/server/services/preconfiguration/fleet_server_host.ts index f622b1115e16ef..5959cc25288cec 100644 --- a/x-pack/plugins/fleet/server/services/preconfiguration/fleet_server_host.ts +++ b/x-pack/plugins/fleet/server/services/preconfiguration/fleet_server_host.ts @@ -110,6 +110,7 @@ export async function createOrUpdatePreconfiguredFleetServerHosts( (!existingHost.is_preconfigured || existingHost.is_default !== preconfiguredFleetServerHost.is_default || existingHost.name !== preconfiguredFleetServerHost.name || + isDifferent(existingHost.is_internal, preconfiguredFleetServerHost.is_internal) || isDifferent( existingHost.host_urls.map(normalizeHostsForAgents), preconfiguredFleetServerHost.host_urls.map(normalizeHostsForAgents) diff --git a/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.test.ts b/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.test.ts index 5dfd1e5c951f04..5cca694d844ab4 100644 --- a/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.test.ts +++ b/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.test.ts @@ -31,6 +31,16 @@ import { agentPolicyService } from '../../agent_policy'; import { UninstallTokenService, type UninstallTokenServiceInterface } from '.'; +interface TokenSO { + id: string; + attributes: { + policy_id: string; + token?: string; + token_plain?: string; + }; + created_at: string; +} + describe('UninstallTokenService', () => { const now = new Date().toISOString(); const aDayAgo = new Date(Date.now() - 24 * 3600 * 1000).toISOString(); @@ -41,7 +51,7 @@ describe('UninstallTokenService', () => { let mockBuckets: any[] = []; let uninstallTokenService: UninstallTokenServiceInterface; - function getDefaultSO(encrypted: boolean = true) { + function getDefaultSO(encrypted: boolean = true): TokenSO { return encrypted ? { id: 'test-so-id', @@ -61,7 +71,7 @@ describe('UninstallTokenService', () => { }; } - function getDefaultSO2(encrypted: boolean = true) { + function getDefaultSO2(encrypted: boolean = true): TokenSO { return encrypted ? { id: 'test-so-id-two', @@ -81,6 +91,20 @@ describe('UninstallTokenService', () => { }; } + const decorateSOWithError = (so: TokenSO) => ({ + ...so, + error: new Error('error reason'), + }); + + const decorateSOWithMissingToken = (so: TokenSO) => ({ + ...so, + attributes: { + ...so.attributes, + token: undefined, + token_plain: undefined, + }, + }); + function getDefaultBuckets(encrypted: boolean = true) { const defaultSO = getDefaultSO(encrypted); const defaultSO2 = getDefaultSO2(encrypted); @@ -227,6 +251,26 @@ describe('UninstallTokenService', () => { } ); }); + + it('throws error if token is missing', async () => { + const so = decorateSOWithMissingToken(getDefaultSO(canEncrypt)); + mockCreatePointInTimeFinderAsInternalUser([so]); + + await expect(uninstallTokenService.getToken(so.id)).rejects.toThrowError( + new UninstallTokenError( + 'Invalid uninstall token: Saved object is missing the token attribute.' + ) + ); + }); + + it("throws error if there's a depcryption error", async () => { + const so = decorateSOWithError(getDefaultSO2(canEncrypt)); + mockCreatePointInTimeFinderAsInternalUser([so]); + + await expect(uninstallTokenService.getToken(so.id)).rejects.toThrowError( + new UninstallTokenError("Error when reading Uninstall Token with id 'test-so-id-two'.") + ); + }); }); describe('getTokenMetadata', () => { @@ -507,18 +551,9 @@ describe('UninstallTokenService', () => { describe('check validity of tokens', () => { const okaySO = getDefaultSO(canEncrypt); - const errorWithDecryptionSO2 = { - ...getDefaultSO2(canEncrypt), - error: new Error('error reason'), - }; - const missingTokenSO2 = { - ...getDefaultSO2(canEncrypt), - attributes: { - ...getDefaultSO2(canEncrypt).attributes, - token: undefined, - token_plain: undefined, - }, - }; + const errorWithDecryptionSO1 = decorateSOWithError(getDefaultSO(canEncrypt)); + const errorWithDecryptionSO2 = decorateSOWithError(getDefaultSO2(canEncrypt)); + const missingTokenSO2 = decorateSOWithMissingToken(getDefaultSO2(canEncrypt)); describe('checkTokenValidityForAllPolicies', () => { it('returns null if all of the tokens are available', async () => { @@ -578,20 +613,31 @@ describe('UninstallTokenService', () => { uninstallTokenService.checkTokenValidityForAllPolicies() ).resolves.toStrictEqual({ error: new UninstallTokenError( - 'Invalid uninstall token: Saved object is missing the token attribute.' + 'Failed to validate Uninstall Tokens: 1 of 2 tokens are invalid' ), }); }); - it('returns error if token decryption gives error', async () => { + it('returns error if some of the tokens cannot be decrypted', async () => { mockCreatePointInTimeFinderAsInternalUser([okaySO, errorWithDecryptionSO2]); await expect( uninstallTokenService.checkTokenValidityForAllPolicies() ).resolves.toStrictEqual({ - error: new UninstallTokenError( - "Error when reading Uninstall Token with id 'test-so-id-two'." - ), + error: new UninstallTokenError('Failed to decrypt 1 of 2 Uninstall Token(s)'), + }); + }); + + it('returns error if none of the tokens can be decrypted', async () => { + mockCreatePointInTimeFinderAsInternalUser([ + errorWithDecryptionSO1, + errorWithDecryptionSO2, + ]); + + await expect( + uninstallTokenService.checkTokenValidityForAllPolicies() + ).resolves.toStrictEqual({ + error: new UninstallTokenError('Failed to decrypt 2 of 2 Uninstall Token(s)'), }); }); @@ -607,7 +653,7 @@ describe('UninstallTokenService', () => { }); describe('checkTokenValidityForPolicy', () => { - it('returns empty array if token is available', async () => { + it('returns null if token is available', async () => { mockCreatePointInTimeFinderAsInternalUser(); await expect( @@ -616,28 +662,26 @@ describe('UninstallTokenService', () => { }); it('returns error if token is missing', async () => { - mockCreatePointInTimeFinderAsInternalUser([okaySO, missingTokenSO2]); + mockCreatePointInTimeFinderAsInternalUser([missingTokenSO2]); await expect( uninstallTokenService.checkTokenValidityForPolicy(missingTokenSO2.attributes.policy_id) ).resolves.toStrictEqual({ error: new UninstallTokenError( - 'Invalid uninstall token: Saved object is missing the token attribute.' + 'Failed to validate Uninstall Tokens: 1 of 1 tokens are invalid' ), }); }); it('returns error if token decryption gives error', async () => { - mockCreatePointInTimeFinderAsInternalUser([okaySO, errorWithDecryptionSO2]); + mockCreatePointInTimeFinderAsInternalUser([errorWithDecryptionSO2]); await expect( uninstallTokenService.checkTokenValidityForPolicy( errorWithDecryptionSO2.attributes.policy_id ) ).resolves.toStrictEqual({ - error: new UninstallTokenError( - "Error when reading Uninstall Token with id 'test-so-id-two'." - ), + error: new UninstallTokenError('Failed to decrypt 1 of 1 Uninstall Token(s)'), }); }); diff --git a/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.ts b/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.ts index 2215035684c679..3d43f280ba1164 100644 --- a/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.ts +++ b/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.ts @@ -169,9 +169,9 @@ export class UninstallTokenService implements UninstallTokenServiceInterface { public async getToken(id: string): Promise { const filter = `${UNINSTALL_TOKENS_SAVED_OBJECT_TYPE}.id: "${UNINSTALL_TOKENS_SAVED_OBJECT_TYPE}:${id}"`; - const uninstallTokens = await this.getDecryptedTokens({ filter }); + const tokenObjects = await this.getDecryptedTokenObjects({ filter }); - return uninstallTokens.length === 1 ? uninstallTokens[0] : null; + return tokenObjects.length === 1 ? this.convertTokenObjectToToken(tokenObjects[0]) : null; } public async getTokenMetadata( @@ -201,6 +201,14 @@ export class UninstallTokenService implements UninstallTokenServiceInterface { } private async getDecryptedTokensForPolicyIds(policyIds: string[]): Promise { + const tokenObjects = await this.getDecryptedTokenObjectsForPolicyIds(policyIds); + + return tokenObjects.map(this.convertTokenObjectToToken); + } + + private async getDecryptedTokenObjectsForPolicyIds( + policyIds: string[] + ): Promise>> { const tokenObjectHits = await this.getTokenObjectsByIncludeFilter(policyIds); if (tokenObjectHits.length === 0) { @@ -211,15 +219,33 @@ export class UninstallTokenService implements UninstallTokenServiceInterface { ({ _id }) => `${UNINSTALL_TOKENS_SAVED_OBJECT_TYPE}.id: "${_id}"` ); - const uninstallTokenChunks: UninstallToken[][] = await asyncMap( - chunk(filterEntries, this.getUninstallTokenVerificationBatchSize()), - (entries) => { - const filter = entries.join(' or '); - return this.getDecryptedTokens({ filter }); + let tokenObjectChunks: Array>> = []; + + try { + tokenObjectChunks = await asyncMap( + chunk(filterEntries, this.getUninstallTokenVerificationBatchSize()), + async (entries) => { + const filter = entries.join(' or '); + return this.getDecryptedTokenObjects({ filter }); + } + ); + } catch (error) { + if (isResponseError(error) && error.message.includes('too_many_nested_clauses')) { + // `too_many_nested_clauses` is considered non-fatal + const errorMessage = + 'Failed to validate uninstall tokens: `too_many_nested_clauses` error received. ' + + 'Setting/decreasing the value of `xpack.fleet.setup.uninstallTokenVerificationBatchSize` in your kibana.yml should help. ' + + `Current value is ${this.getUninstallTokenVerificationBatchSize()}.`; + + appContextService.getLogger().warn(`${errorMessage}: '${error}'`); + + throw new UninstallTokenError(errorMessage); + } else { + throw error; } - ); + } - return uninstallTokenChunks.flat(); + return tokenObjectChunks.flat(); } private getUninstallTokenVerificationBatchSize = () => { @@ -232,9 +258,9 @@ export class UninstallTokenService implements UninstallTokenServiceInterface { return config?.setup?.uninstallTokenVerificationBatchSize ?? 500; }; - private getDecryptedTokens = async ( + private async getDecryptedTokenObjects( options: Partial - ): Promise => { + ): Promise>> { const tokensFinder = await this.esoClient.createPointInTimeFinderDecryptedAsInternalUser( { @@ -243,34 +269,37 @@ export class UninstallTokenService implements UninstallTokenServiceInterface { ...options, } ); - let tokenObject: Array> = []; + let tokenObjects: Array> = []; for await (const result of tokensFinder.find()) { - tokenObject = result.saved_objects; + tokenObjects = result.saved_objects; break; } tokensFinder.close(); - const uninstallTokens: UninstallToken[] = tokenObject.map( - ({ id: _id, attributes, created_at: createdAt, error }) => { - if (error) { - throw new UninstallTokenError(`Error when reading Uninstall Token with id '${_id}'.`); - } + return tokenObjects; + } - this.assertPolicyId(attributes); - this.assertToken(attributes); - this.assertCreatedAt(createdAt); + private convertTokenObjectToToken = ({ + id: _id, + attributes, + created_at: createdAt, + error, + }: SavedObjectsFindResult): UninstallToken => { + if (error) { + throw new UninstallTokenError(`Error when reading Uninstall Token with id '${_id}'.`); + } - return { - id: _id, - policy_id: attributes.policy_id, - token: attributes.token || attributes.token_plain, - created_at: createdAt, - }; - } - ); + this.assertPolicyId(attributes); + this.assertToken(attributes); + this.assertCreatedAt(createdAt); - return uninstallTokens; + return { + id: _id, + policy_id: attributes.policy_id, + token: attributes.token || attributes.token_plain, + created_at: createdAt, + }; }; private async getTokenObjectsByIncludeFilter( @@ -521,33 +550,44 @@ export class UninstallTokenService implements UninstallTokenServiceInterface { public async checkTokenValidityForPolicy( policyId: string ): Promise { - return await this.checkTokenValidity([policyId]); + return await this.checkTokenValidityForPolicies([policyId]); } public async checkTokenValidityForAllPolicies(): Promise { const policyIds = await this.getAllPolicyIds(); - return await this.checkTokenValidity(policyIds); + return await this.checkTokenValidityForPolicies(policyIds); } - private async checkTokenValidity( + private async checkTokenValidityForPolicies( policyIds: string[] ): Promise { try { - await this.getDecryptedTokensForPolicyIds(policyIds); + const tokenObjects = await this.getDecryptedTokenObjectsForPolicyIds(policyIds); + + const numberOfDecryptionErrors = tokenObjects.filter(({ error }) => error).length; + if (numberOfDecryptionErrors > 0) { + return { + error: new UninstallTokenError( + `Failed to decrypt ${numberOfDecryptionErrors} of ${tokenObjects.length} Uninstall Token(s)` + ), + }; + } + + const numberOfTokensWithMissingData = tokenObjects.filter( + ({ attributes, created_at: createdAt }) => + !createdAt || !attributes.policy_id || (!attributes.token && !attributes.token_plain) + ).length; + if (numberOfTokensWithMissingData > 0) { + return { + error: new UninstallTokenError( + `Failed to validate Uninstall Tokens: ${numberOfTokensWithMissingData} of ${tokenObjects.length} tokens are invalid` + ), + }; + } } catch (error) { if (error instanceof UninstallTokenError) { // known errors are considered non-fatal return { error }; - } else if (isResponseError(error) && error.message.includes('too_many_nested_clauses')) { - // `too_many_nested_clauses` is considered non-fatal - const errorMessage = - 'Failed to validate uninstall tokens: `too_many_nested_clauses` error received. ' + - 'Setting/decreasing the value of `xpack.fleet.setup.uninstallTokenVerificationBatchSize` in your kibana.yml should help. ' + - `Current value is ${this.getUninstallTokenVerificationBatchSize()}.`; - - appContextService.getLogger().warn(`${errorMessage}: '${error}'`); - - return { error: new UninstallTokenError(errorMessage) }; } else { const errorMessage = 'Unknown error happened while checking Uninstall Tokens validity'; appContextService.getLogger().error(`${errorMessage}: '${error}'`); diff --git a/x-pack/plugins/fleet/server/services/setup.test.ts b/x-pack/plugins/fleet/server/services/setup.test.ts index 56b398c17fafbd..fbabfde0316f90 100644 --- a/x-pack/plugins/fleet/server/services/setup.test.ts +++ b/x-pack/plugins/fleet/server/services/setup.test.ts @@ -65,6 +65,7 @@ describe('setupFleet', () => { (upgradeManagedPackagePolicies as jest.Mock).mockResolvedValue([]); + soClient.get.mockResolvedValue({ attributes: {} } as any); soClient.find.mockResolvedValue({ saved_objects: [] } as any); soClient.bulkGet.mockResolvedValue({ saved_objects: [] } as any); }); diff --git a/x-pack/plugins/fleet/server/services/setup.ts b/x-pack/plugins/fleet/server/services/setup.ts index 8d343e56b10355..af2c19c42c70b7 100644 --- a/x-pack/plugins/fleet/server/services/setup.ts +++ b/x-pack/plugins/fleet/server/services/setup.ts @@ -197,24 +197,6 @@ async function createSetupSideEffects( throw error; } } - - logger.debug('Generating Agent uninstall tokens'); - if (!appContextService.getEncryptedSavedObjectsSetup()?.canEncrypt) { - logger.warn( - 'xpack.encryptedSavedObjects.encryptionKey is not configured, agent uninstall tokens are being stored in plain text' - ); - } - await appContextService.getUninstallTokenService()?.generateTokensForAllPolicies(); - - if (appContextService.getEncryptedSavedObjectsSetup()?.canEncrypt) { - logger.debug('Checking for and encrypting plain text uninstall tokens'); - await appContextService.getUninstallTokenService()?.encryptTokens(); - } - - logger.debug('Checking validity of Uninstall Tokens'); - const uninstallTokenError = await appContextService - .getUninstallTokenService() - ?.checkTokenValidityForAllPolicies(); stepSpan?.end(); stepSpan = apm.startSpan('Upgrade agent policy schema', 'preconfiguration'); @@ -234,7 +216,6 @@ async function createSetupSideEffects( ...preconfiguredPackagesNonFatalErrors, ...packagePolicyUpgradeErrors, ...(messageSigningServiceNonFatalError ? [messageSigningServiceNonFatalError] : []), - ...(uninstallTokenError ? [uninstallTokenError] : []), ]; if (nonFatalErrors.length > 0) { diff --git a/x-pack/plugins/fleet/server/types/extensions.ts b/x-pack/plugins/fleet/server/types/extensions.ts index ca5a0d84c958e4..594e16f6195567 100644 --- a/x-pack/plugins/fleet/server/types/extensions.ts +++ b/x-pack/plugins/fleet/server/types/extensions.ts @@ -16,6 +16,8 @@ import type { UpdatePackagePolicy, PackagePolicy, DeletePackagePoliciesResponse, + NewAgentPolicy, + AgentPolicy, } from '../../common/types'; export type PostPackagePolicyDeleteCallback = ( @@ -58,6 +60,14 @@ export type PutPackagePolicyUpdateCallback = ( request?: KibanaRequest ) => Promise; +export type PostAgentPolicyCreateCallback = ( + agentPolicy: NewAgentPolicy +) => Promise; + +export type PostAgentPolicyUpdateCallback = ( + agentPolicy: Partial +) => Promise>; + export type ExternalCallbackCreate = ['packagePolicyCreate', PostPackagePolicyCreateCallback]; export type ExternalCallbackPostCreate = [ 'packagePolicyPostCreate', @@ -71,6 +81,15 @@ export type ExternalCallbackPostDelete = [ ]; export type ExternalCallbackUpdate = ['packagePolicyUpdate', PutPackagePolicyUpdateCallback]; +export type ExternalCallbackAgentPolicyCreate = [ + 'agentPolicyCreate', + PostAgentPolicyCreateCallback +]; +export type ExternalCallbackAgentPolicyUpdate = [ + 'agentPolicyUpdate', + PostAgentPolicyUpdateCallback +]; + /** * Callbacks supported by the Fleet plugin */ @@ -79,6 +98,8 @@ export type ExternalCallback = | ExternalCallbackPostCreate | ExternalCallbackDelete | ExternalCallbackPostDelete - | ExternalCallbackUpdate; + | ExternalCallbackUpdate + | ExternalCallbackAgentPolicyCreate + | ExternalCallbackAgentPolicyUpdate; export type ExternalCallbacksStorage = Map>; diff --git a/x-pack/plugins/fleet/server/types/models/preconfiguration.ts b/x-pack/plugins/fleet/server/types/models/preconfiguration.ts index 7572da134bd995..e814616268d3da 100644 --- a/x-pack/plugins/fleet/server/types/models/preconfiguration.ts +++ b/x-pack/plugins/fleet/server/types/models/preconfiguration.ts @@ -103,6 +103,7 @@ export const PreconfiguredFleetServerHostsSchema = schema.arrayOf( id: schema.string(), name: schema.string(), is_default: schema.boolean({ defaultValue: false }), + is_internal: schema.maybe(schema.boolean()), host_urls: schema.arrayOf(schema.string(), { minSize: 1 }), proxy_id: schema.nullable(schema.string()), }), diff --git a/x-pack/plugins/fleet/server/types/rest_spec/fleet_server_policy_config.ts b/x-pack/plugins/fleet/server/types/rest_spec/fleet_server_policy_config.ts index bf112a7d9abfe1..d3f2f36a1624f0 100644 --- a/x-pack/plugins/fleet/server/types/rest_spec/fleet_server_policy_config.ts +++ b/x-pack/plugins/fleet/server/types/rest_spec/fleet_server_policy_config.ts @@ -13,6 +13,7 @@ export const PostFleetServerHostRequestSchema = { name: schema.string(), host_urls: schema.arrayOf(schema.string(), { minSize: 1 }), is_default: schema.boolean({ defaultValue: false }), + is_internal: schema.maybe(schema.boolean()), proxy_id: schema.nullable(schema.string()), }), }; @@ -27,6 +28,7 @@ export const PutFleetServerHostRequestSchema = { name: schema.maybe(schema.string()), host_urls: schema.maybe(schema.arrayOf(schema.string(), { minSize: 1 })), is_default: schema.maybe(schema.boolean({ defaultValue: false })), + is_internal: schema.maybe(schema.boolean()), proxy_id: schema.nullable(schema.string()), }), }; diff --git a/x-pack/plugins/fleet/server/types/so_attributes.ts b/x-pack/plugins/fleet/server/types/so_attributes.ts index 09b49440fe3c36..05b2cc1b05baef 100644 --- a/x-pack/plugins/fleet/server/types/so_attributes.ts +++ b/x-pack/plugins/fleet/server/types/so_attributes.ts @@ -104,6 +104,7 @@ export interface FleetServerHostSOAttributes { host_urls: string[]; is_default: boolean; is_preconfigured: boolean; + is_internal?: boolean; proxy_id?: string | null; } diff --git a/x-pack/plugins/index_lifecycle_management/server/plugin.ts b/x-pack/plugins/index_lifecycle_management/server/plugin.ts index 6b21a477866bb2..8c72c3408268fc 100644 --- a/x-pack/plugins/index_lifecycle_management/server/plugin.ts +++ b/x-pack/plugins/index_lifecycle_management/server/plugin.ts @@ -26,7 +26,8 @@ const indexLifecycleDataEnricher = async ( } const { indices: ilmIndicesData } = await client.asCurrentUser.ilm.explainLifecycle({ - index: '*', + index: '*,.*', + only_managed: true, }); return indicesList.map((index: Index) => { return { diff --git a/x-pack/plugins/infra/common/constants.ts b/x-pack/plugins/infra/common/constants.ts index 12d89484570c62..7d0b94705f9e61 100644 --- a/x-pack/plugins/infra/common/constants.ts +++ b/x-pack/plugins/infra/common/constants.ts @@ -21,6 +21,8 @@ export const TIEBREAKER_FIELD = '_doc'; export const HOST_FIELD = 'host.name'; export const CONTAINER_FIELD = 'container.id'; export const POD_FIELD = 'kubernetes.pod.uid'; +export const CMDLINE_FIELD = 'system.process.cmdline'; +export const HOST_NAME_FIELD = 'host.name'; export const O11Y_AAD_FIELDS = [ 'cloud.*', diff --git a/x-pack/plugins/infra/common/http_api/host_details/get_infra_services.ts b/x-pack/plugins/infra/common/http_api/host_details/get_infra_services.ts new file mode 100644 index 00000000000000..56b5a4757bdb24 --- /dev/null +++ b/x-pack/plugins/infra/common/http_api/host_details/get_infra_services.ts @@ -0,0 +1,78 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + createLiteralValueFromUndefinedRT, + inRangeFromStringRt, + dateRt, + datemathStringRt, +} from '@kbn/io-ts-utils'; +import * as rt from 'io-ts'; + +export const sizeRT = rt.union([ + inRangeFromStringRt(1, 100), + createLiteralValueFromUndefinedRT(10), +]); +export const assetDateRT = rt.union([dateRt, datemathStringRt]); + +export const servicesFiltersRT = rt.strict({ + ['host.name']: rt.string, +}); + +export type ServicesFilter = rt.TypeOf; + +export const GetServicesRequestQueryRT = rt.intersection([ + rt.strict({ from: assetDateRT, to: assetDateRT, filters: rt.string }), + rt.partial({ + size: sizeRT, + validatedFilters: servicesFiltersRT, + }), +]); + +export type GetServicesRequestQuery = rt.TypeOf; + +export interface ServicesAPIRequest { + filters: ServicesFilter; + from: string; + to: string; + size?: number; +} + +const AgentNameRT = rt.union([rt.string, rt.null]); + +export const ServicesAPIQueryAggregationRT = rt.type({ + services: rt.type({ + buckets: rt.array( + rt.type({ + key: rt.string, + latestAgent: rt.type({ + top: rt.array( + rt.type({ + sort: rt.array(rt.string), + metrics: rt.type({ + 'agent.name': AgentNameRT, + }), + }) + ), + }), + }) + ), + }), +}); + +export type ServicesAPIQueryAggregation = rt.TypeOf; + +export const ServiceRT = rt.type({ + 'service.name': rt.string, + 'agent.name': AgentNameRT, +}); + +export type Service = rt.TypeOf; + +export const ServicesAPIResponseRT = rt.type({ + services: rt.array(ServiceRT), +}); diff --git a/x-pack/plugins/infra/common/http_api/host_details/index.ts b/x-pack/plugins/infra/common/http_api/host_details/index.ts index 4defa8052cde70..1ff12a5190b576 100644 --- a/x-pack/plugins/infra/common/http_api/host_details/index.ts +++ b/x-pack/plugins/infra/common/http_api/host_details/index.ts @@ -6,3 +6,4 @@ */ export * from './process_list'; +export * from './get_infra_services'; diff --git a/x-pack/plugins/infra/kibana.jsonc b/x-pack/plugins/infra/kibana.jsonc index 7b2705117675d1..8f59853b97101a 100644 --- a/x-pack/plugins/infra/kibana.jsonc +++ b/x-pack/plugins/infra/kibana.jsonc @@ -33,7 +33,8 @@ "uiActions", "unifiedSearch", "usageCollection", - "visTypeTimeseries" + "visTypeTimeseries", + "apmDataAccess" ], "optionalPlugins": ["spaces", "ml", "home", "embeddable", "osquery", "cloud", "profilingDataAccess"], "requiredBundles": [ diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/common/popover.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/common/popover.tsx index a021632a6d5aed..43fb037eacd186 100644 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/common/popover.tsx +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/common/popover.tsx @@ -27,7 +27,13 @@ export const Popover = ({ +