diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index 1d3ea8c5dd4d0..c10bf18e5e917 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -151,6 +151,7 @@ enabled: - x-pack/test/functional_synthetics/config.js - x-pack/test/functional_with_es_ssl/config.ts - x-pack/test/functional/apps/advanced_settings/config.ts + - x-pack/test/functional/apps/aiops/config.ts - x-pack/test/functional/apps/api_keys/config.ts - x-pack/test/functional/apps/apm/config.ts - x-pack/test/functional/apps/canvas/config.ts @@ -249,6 +250,7 @@ enabled: - x-pack/test/security_functional/oidc.config.ts - x-pack/test/security_functional/saml.config.ts - x-pack/test/security_functional/insecure_cluster_warning.config.ts + - x-pack/test/security_functional/user_profiles.config.ts - x-pack/test/security_solution_endpoint_api_int/config.ts - x-pack/test/security_solution_endpoint/config.ts - x-pack/test/session_view/basic/config.ts diff --git a/.buildkite/pipelines/bazel_cache.yml b/.buildkite/pipelines/bazel_cache.yml index 9aa961bcddbd2..030443d1e005b 100644 --- a/.buildkite/pipelines/bazel_cache.yml +++ b/.buildkite/pipelines/bazel_cache.yml @@ -26,10 +26,18 @@ steps: concurrency_group: bazel_macos concurrency: 1 concurrency_method: eager + retry: + automatic: + - exit_status: '*' + limit: 1 - command: .buildkite/scripts/steps/bazel_cache/bootstrap_mac.sh label: Bootstrap (MacOS ARM) priority: $${PRIORITY} agents: queue: macos-arm timeout_in_minutes: 60 + retry: + automatic: + - exit_status: '*' + limit: 1 YAML diff --git a/.buildkite/scripts/bootstrap.sh b/.buildkite/scripts/bootstrap.sh index b4ec748b863e2..4646da7600ecf 100755 --- a/.buildkite/scripts/bootstrap.sh +++ b/.buildkite/scripts/bootstrap.sh @@ -7,6 +7,11 @@ source .buildkite/scripts/common/setup_bazel.sh echo "--- yarn install and bootstrap" +BOOTSTRAP_PARAMS=() +if [[ "${BOOTSTRAP_ALWAYS_FORCE_INSTALL:-}" ]]; then + BOOTSTRAP_PARAMS+=(--force-install) +fi + # Use the node_modules that is baked into the agent image, if it exists, as a cache # But only for agents not mounting the workspace on a local ssd or in memory # It actually ends up being slower to move all of the tiny files between the disks vs extracting archives from the yarn cache @@ -15,7 +20,7 @@ if [[ -d ~/.kibana/node_modules && "$(pwd)" != *"/local-ssd/"* && "$(pwd)" != "/ mv ~/.kibana/node_modules ./ fi -if ! yarn kbn bootstrap; then +if ! yarn kbn bootstrap "${BOOTSTRAP_PARAMS[@]}"; then echo "bootstrap failed, trying again in 15 seconds" sleep 15 diff --git a/.buildkite/scripts/build_kibana.sh b/.buildkite/scripts/build_kibana.sh index 54e5273eb4c68..90f9da8ac8de4 100755 --- a/.buildkite/scripts/build_kibana.sh +++ b/.buildkite/scripts/build_kibana.sh @@ -9,17 +9,12 @@ export KBN_NP_PLUGINS_BUILT=true echo "--- Build Kibana Distribution" BUILD_ARGS="" -if is_pr_with_label "ci:build-all-platforms"; then - BUILD_ARGS="--all-platforms --skip-os-packages" -fi -if is_pr_with_label "ci:build-os-packages"; then - BUILD_ARGS="--all-platforms --docker-cross-compile" -fi -if ! is_pr_with_label "ci:build-canvas-shareable-runtime"; then - BUILD_ARGS="$BUILD_ARGS --skip-canvas-shareable-runtime" -fi - -node scripts/build "$BUILD_ARGS" +is_pr_with_label "ci:build-all-platforms" && BUILD_ARGS="--all-platforms" +is_pr_with_label "ci:build-docker-cross-compile" && BUILD_ARG="$BUILD_ARGS --docker-cross-compile" +is_pr_with_label "ci:build-os-packages" || BUILD_ARGS="$BUILD_ARGS --skip-os-packages" +is_pr_with_label "ci:build-canvas-shareable-runtime" || BUILD_ARGS="$BUILD_ARGS --skip-canvas-shareable-runtime" +is_pr_with_label "ci:build-docker-contexts" || BUILD_ARGS="$BUILD_ARGS --skip-docker-contexts" +node scripts/build $BUILD_ARGS if is_pr_with_label "ci:build-cloud-image"; then echo "$KIBANA_DOCKER_PASSWORD" | docker login -u "$KIBANA_DOCKER_USERNAME" --password-stdin docker.elastic.co diff --git a/.buildkite/scripts/build_kibana_plugins.sh b/.buildkite/scripts/build_kibana_plugins.sh index fafd68d86a65d..4e566008b3351 100755 --- a/.buildkite/scripts/build_kibana_plugins.sh +++ b/.buildkite/scripts/build_kibana_plugins.sh @@ -3,4 +3,5 @@ set -euo pipefail echo "--- Build Platform Plugins" -node scripts/build_kibana_platform_plugins --examples --test-plugins +THREADS=$(grep -c ^processor /proc/cpuinfo) +node scripts/build_kibana_platform_plugins --examples --test-plugins --workers "$THREADS" --no-inspect-workers --no-progress diff --git a/.buildkite/scripts/steps/bazel_cache/bootstrap_mac.sh b/.buildkite/scripts/steps/bazel_cache/bootstrap_mac.sh index ab642ec431486..91886c855402d 100755 --- a/.buildkite/scripts/steps/bazel_cache/bootstrap_mac.sh +++ b/.buildkite/scripts/steps/bazel_cache/bootstrap_mac.sh @@ -7,6 +7,9 @@ source .buildkite/scripts/common/util.sh export BAZEL_CACHE_MODE=populate-local-gcs export DISABLE_BOOTSTRAP_VALIDATION=true +# Because we're manually deleting node_modules and bazel directories in-between runs, we need to --force-install +export BOOTSTRAP_ALWAYS_FORCE_INSTALL=true + # Clear out bazel cache between runs to make sure that any artifacts that don't exist in the cache are uploaded rm -rf ~/.bazel-cache diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c51571ebaece6..19d2f1cdb27ef 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -85,6 +85,7 @@ /x-pack/plugins/runtime_fields @elastic/kibana-app-services /x-pack/test/search_sessions_integration/ @elastic/kibana-app-services /src/plugins/dashboard/public/application/embeddable/viewport/print_media @elastic/kibana-app-services +x-pack/plugins/files @elastic/kibana-app-services ### Observability Plugins diff --git a/STYLEGUIDE.mdx b/STYLEGUIDE.mdx index b06cfa44a4973..8e043cba92249 100644 --- a/STYLEGUIDE.mdx +++ b/STYLEGUIDE.mdx @@ -2,7 +2,7 @@ id: kibStyleGuide slug: /kibana-dev-docs/contributing/styleguide title: Style Guide -summary: JavaScript/TypeScript styleguide. +description: JavaScript/TypeScript styleguide. date: 2021-05-06 tags: ['kibana', 'onboarding', 'dev', 'styleguide', 'typescript', 'javascript'] --- diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index c1274e9de8d53..f282d76f832a9 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibActionsPluginApi slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github -summary: API docs for the actions plugin -date: 2022-08-10 +description: API docs for the actions plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] -warning: 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. --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 6b898e269d87e..d2ceaab33973d 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibAdvancedSettingsPluginApi slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github -summary: API docs for the advancedSettings plugin -date: 2022-08-10 +description: API docs for the advancedSettings plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] -warning: 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. --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 1612fec6b3e97..187f9343d71c4 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibAiopsPluginApi slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github -summary: API docs for the aiops plugin -date: 2022-08-10 +description: API docs for the aiops plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] -warning: 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. --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index f0d87090462c6..dc6b0afa761ed 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibAlertingPluginApi slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github -summary: API docs for the alerting plugin -date: 2022-08-10 +description: API docs for the alerting plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] -warning: 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. --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index a997550a52c4f..7300c7c4e6e79 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibApmPluginApi slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github -summary: API docs for the apm plugin -date: 2022-08-10 +description: API docs for the apm plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] -warning: 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. --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index c230845985c7b..0b0ed7407957d 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibBannersPluginApi slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github -summary: API docs for the banners plugin -date: 2022-08-10 +description: API docs for the banners plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] -warning: 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. --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index 73e3f00fe1e78..d69a594d888e1 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibBfetchPluginApi slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github -summary: API docs for the bfetch plugin -date: 2022-08-10 +description: API docs for the bfetch plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] -warning: 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. --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 95ec1ae2cbe63..e7815d47682ee 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibCanvasPluginApi slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github -summary: API docs for the canvas plugin -date: 2022-08-10 +description: API docs for the canvas plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] -warning: 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. --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 8aa1a1c9687c5..303a1b51161d5 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibCasesPluginApi slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github -summary: API docs for the cases plugin -date: 2022-08-10 +description: API docs for the cases plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] -warning: 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. --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index a019fbfd8f7cc..2f719228ffca3 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibChartsPluginApi slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github -summary: API docs for the charts plugin -date: 2022-08-10 +description: API docs for the charts plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] -warning: 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. --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index aef9a98b87d14..92fb236da4dfe 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibCloudPluginApi slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github -summary: API docs for the cloud plugin -date: 2022-08-10 +description: API docs for the cloud plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] -warning: 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. --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index cdff3aa52f2fa..3187f3c79b136 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibCloudSecurityPosturePluginApi slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github -summary: API docs for the cloudSecurityPosture plugin -date: 2022-08-10 +description: API docs for the cloudSecurityPosture plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] -warning: 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. --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 94d35af8f5f82..c8fa214ebb827 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibConsolePluginApi slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github -summary: API docs for the console plugin -date: 2022-08-10 +description: API docs for the console plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] -warning: 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. --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 09460acd1b129..3bf15c15f0ecf 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibControlsPluginApi slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github -summary: API docs for the controls plugin -date: 2022-08-10 +description: API docs for the controls plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] -warning: 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. --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/core.mdx b/api_docs/core.mdx index 2f8691e5706b4..3574957c8e0fc 100644 --- a/api_docs/core.mdx +++ b/api_docs/core.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibCorePluginApi slug: /kibana-dev-docs/api/core title: "core" image: https://source.unsplash.com/400x175/?github -summary: API docs for the core plugin -date: 2022-08-10 +description: API docs for the core plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] -warning: 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. --- import coreObj from './core.devdocs.json'; diff --git a/api_docs/core_application.mdx b/api_docs/core_application.mdx index 351723d723c6b..c3589c46a0469 100644 --- a/api_docs/core_application.mdx +++ b/api_docs/core_application.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibCoreApplicationPluginApi slug: /kibana-dev-docs/api/core-application title: "core.application" image: https://source.unsplash.com/400x175/?github -summary: API docs for the core.application plugin -date: 2022-08-10 +description: API docs for the core.application plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.application'] -warning: 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. --- import coreApplicationObj from './core_application.devdocs.json'; diff --git a/api_docs/core_chrome.mdx b/api_docs/core_chrome.mdx index abfb4f3cda316..7bace2a507a6c 100644 --- a/api_docs/core_chrome.mdx +++ b/api_docs/core_chrome.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibCoreChromePluginApi slug: /kibana-dev-docs/api/core-chrome title: "core.chrome" image: https://source.unsplash.com/400x175/?github -summary: API docs for the core.chrome plugin -date: 2022-08-10 +description: API docs for the core.chrome plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.chrome'] -warning: 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. --- import coreChromeObj from './core_chrome.devdocs.json'; diff --git a/api_docs/core_saved_objects.mdx b/api_docs/core_saved_objects.mdx index d84d7af14c1ee..6fcd60f4851a4 100644 --- a/api_docs/core_saved_objects.mdx +++ b/api_docs/core_saved_objects.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibCoreSavedObjectsPluginApi slug: /kibana-dev-docs/api/core-savedObjects title: "core.savedObjects" image: https://source.unsplash.com/400x175/?github -summary: API docs for the core.savedObjects plugin -date: 2022-08-10 +description: API docs for the core.savedObjects plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.savedObjects'] -warning: 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. --- import coreSavedObjectsObj from './core_saved_objects.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 86a28528ef9ef..43bfe0acae309 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibCustomIntegrationsPluginApi slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github -summary: API docs for the customIntegrations plugin -date: 2022-08-10 +description: API docs for the customIntegrations plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] -warning: 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. --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.devdocs.json b/api_docs/dashboard.devdocs.json index cf48ab9df40cd..01decee7cd29b 100644 --- a/api_docs/dashboard.devdocs.json +++ b/api_docs/dashboard.devdocs.json @@ -81,6 +81,82 @@ "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx", "deprecated": false }, + { + "parentPluginId": "dashboard", + "id": "def-public.DashboardContainer.getAllDataViews", + "type": "Function", + "tags": [], + "label": "getAllDataViews", + "description": [ + "\nGets all the dataviews that are actively being used in the dashboard" + ], + "signature": [ + "() => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + "[]" + ], + "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx", + "deprecated": false, + "children": [], + "returnComment": [ + "An array of dataviews" + ] + }, + { + "parentPluginId": "dashboard", + "id": "def-public.DashboardContainer.setAllDataViews", + "type": "Function", + "tags": [], + "label": "setAllDataViews", + "description": [ + "\nUse this to set the dataviews that are used in the dashboard when they change/update" + ], + "signature": [ + "(newDataViews: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + "[]) => void" + ], + "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "dashboard", + "id": "def-public.DashboardContainer.setAllDataViews.$1", + "type": "Array", + "tags": [], + "label": "newDataViews", + "description": [ + "The new array of dataviews that will overwrite the old dataviews array" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + "[]" + ], + "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "dashboard", "id": "def-public.DashboardContainer.getPanelCount", diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 0850ff066d082..e9b89abcc6115 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDashboardPluginApi slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github -summary: API docs for the dashboard plugin -date: 2022-08-10 +description: API docs for the dashboard plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] -warning: 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. --- import dashboardObj from './dashboard.devdocs.json'; @@ -18,7 +21,7 @@ Contact [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-prese | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 143 | 0 | 141 | 12 | +| 146 | 0 | 141 | 12 | ## Client diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 9a4d938edfb2d..9e9e9022ad468 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDashboardEnhancedPluginApi slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github -summary: API docs for the dashboardEnhanced plugin -date: 2022-08-10 +description: API docs for the dashboardEnhanced plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] -warning: 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. --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index f9674f514c206..e99dae2e55978 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDataPluginApi slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github -summary: API docs for the data plugin -date: 2022-08-10 +description: API docs for the data plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] -warning: 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. --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 29460e1bd559d..e42c8927f3847 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDataQueryPluginApi slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github -summary: API docs for the data.query plugin -date: 2022-08-10 +description: API docs for the data.query plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] -warning: 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. --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index d2f2f7bc0829b..01c72585f1aa3 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDataSearchPluginApi slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github -summary: API docs for the data.search plugin -date: 2022-08-10 +description: API docs for the data.search plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] -warning: 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. --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 2ad5853bb2f40..1e6e529149989 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDataViewEditorPluginApi slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github -summary: API docs for the dataViewEditor plugin -date: 2022-08-10 +description: API docs for the dataViewEditor plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] -warning: 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. --- 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 5a4e3653b0aea..b2581e4f92242 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDataViewFieldEditorPluginApi slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github -summary: API docs for the dataViewFieldEditor plugin -date: 2022-08-10 +description: API docs for the dataViewFieldEditor plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] -warning: 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. --- 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 942deac343a77..8d9911745c4d3 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDataViewManagementPluginApi slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github -summary: API docs for the dataViewManagement plugin -date: 2022-08-10 +description: API docs for the dataViewManagement plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] -warning: 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. --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index d129adeffd608..6bb7f9213f889 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDataViewsPluginApi slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github -summary: API docs for the dataViews plugin -date: 2022-08-10 +description: API docs for the dataViews plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] -warning: 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. --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 926edb474e954..c779357745331 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDataVisualizerPluginApi slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github -summary: API docs for the dataVisualizer plugin -date: 2022-08-10 +description: API docs for the dataVisualizer plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] -warning: 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. --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 153eae57516ff..aa4ecef1c0dad 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -1,11 +1,14 @@ --- +#### +#### 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: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API -summary: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-08-10 +description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana'] -warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- ## Referenced deprecated APIs @@ -96,7 +99,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ This is relied on by the reporting feature, and should be removed once reporting migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/issues/19914 | - + ## Unreferenced deprecated APIs diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index e58b5ba0a4aa2..40935bd3a4ec6 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -1,11 +1,14 @@ --- +#### +#### 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: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin -summary: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-08-10 +description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana'] -warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 86c110b553d6b..55fe21009f1a0 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -1,11 +1,14 @@ --- +#### +#### 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: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team -summary: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2022-08-10 +description: Lists the teams that are referencing deprecated APIs with a remove by date. +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana'] -warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 8d0eb77ba41c5..13dad9769e26a 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDevToolsPluginApi slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github -summary: API docs for the devTools plugin -date: 2022-08-10 +description: API docs for the devTools plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] -warning: 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. --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index b9ca0d5091db0..d95e7b4b4ec07 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDiscoverPluginApi slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github -summary: API docs for the discover plugin -date: 2022-08-10 +description: API docs for the discover plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] -warning: 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. --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index b50a8b5a34fcc..37520938fdd5a 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibDiscoverEnhancedPluginApi slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github -summary: API docs for the discoverEnhanced plugin -date: 2022-08-10 +description: API docs for the discoverEnhanced plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] -warning: 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. --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/elastic_apm_synthtrace.mdx b/api_docs/elastic_apm_synthtrace.mdx index 4c82dfcb262a8..513b14bbf25b0 100644 --- a/api_docs/elastic_apm_synthtrace.mdx +++ b/api_docs/elastic_apm_synthtrace.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibElasticApmSynthtracePluginApi slug: /kibana-dev-docs/api/elastic-apm-synthtrace title: "@elastic/apm-synthtrace" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @elastic/apm-synthtrace plugin -date: 2022-08-10 +description: API docs for the @elastic/apm-synthtrace plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@elastic/apm-synthtrace'] -warning: 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. --- import elasticApmSynthtraceObj from './elastic_apm_synthtrace.devdocs.json'; diff --git a/api_docs/embeddable.devdocs.json b/api_docs/embeddable.devdocs.json index ed0bc94fae658..15b274a52b3c1 100644 --- a/api_docs/embeddable.devdocs.json +++ b/api_docs/embeddable.devdocs.json @@ -4798,6 +4798,43 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.isFilterableEmbeddable", + "type": "Function", + "tags": [], + "label": "isFilterableEmbeddable", + "description": [ + "\nEnsure that embeddable supports filtering/querying" + ], + "signature": [ + "(incoming: unknown) => boolean" + ], + "path": "src/plugins/embeddable/public/lib/filterable_embeddable/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.isFilterableEmbeddable.$1", + "type": "Unknown", + "tags": [], + "label": "incoming", + "description": [ + "Embeddable that is being tested to check if it is a FilterableEmbeddable" + ], + "signature": [ + "unknown" + ], + "path": "src/plugins/embeddable/public/lib/filterable_embeddable/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "true if the incoming embeddable is a FilterableEmbeddable, false if it is not" + ], + "initialIsOpen": false + }, { "parentPluginId": "embeddable", "id": "def-public.isRangeSelectTriggerContext", @@ -7430,6 +7467,61 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.FilterableEmbeddable", + "type": "Interface", + "tags": [], + "label": "FilterableEmbeddable", + "description": [ + "\nAll embeddables that implement this interface should support being filtered\nand/or queried via the top navigation bar" + ], + "path": "src/plugins/embeddable/public/lib/filterable_embeddable/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.FilterableEmbeddable.getFilters", + "type": "Function", + "tags": [], + "label": "getFilters", + "description": [ + "\nGets the embeddable's local filters" + ], + "signature": [ + "() => Promise<", + "Filter", + "[]>" + ], + "path": "src/plugins/embeddable/public/lib/filterable_embeddable/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "embeddable", + "id": "def-public.FilterableEmbeddable.getQuery", + "type": "Function", + "tags": [], + "label": "getQuery", + "description": [ + "\nGets the embeddable's local query" + ], + "signature": [ + "() => Promise<", + "Query", + " | ", + "AggregateQuery", + " | undefined>" + ], + "path": "src/plugins/embeddable/public/lib/filterable_embeddable/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "embeddable", "id": "def-public.IContainer", diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index ed91daaafbb5a..c2980c7c90f92 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibEmbeddablePluginApi slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github -summary: API docs for the embeddable plugin -date: 2022-08-10 +description: API docs for the embeddable plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] -warning: 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. --- import embeddableObj from './embeddable.devdocs.json'; @@ -18,7 +21,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 507 | 0 | 413 | 4 | +| 512 | 0 | 413 | 4 | ## Client diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 91e5f95beee98..4953a59facca6 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibEmbeddableEnhancedPluginApi slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github -summary: API docs for the embeddableEnhanced plugin -date: 2022-08-10 +description: API docs for the embeddableEnhanced plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] -warning: 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. --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 1d7d67c0a6928..82db857f64353 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibEncryptedSavedObjectsPluginApi slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github -summary: API docs for the encryptedSavedObjects plugin -date: 2022-08-10 +description: API docs for the encryptedSavedObjects plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] -warning: 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. --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index a544cb6aeda42..be1cc389b67f2 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibEnterpriseSearchPluginApi slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github -summary: API docs for the enterpriseSearch plugin -date: 2022-08-10 +description: API docs for the enterpriseSearch plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] -warning: 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. --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 152bbc8e6a05c..5985f4ac49506 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibEsUiSharedPluginApi slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github -summary: API docs for the esUiShared plugin -date: 2022-08-10 +description: API docs for the esUiShared plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] -warning: 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. --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 4ae46dc78dddc..882ec361bdb70 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibEventAnnotationPluginApi slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github -summary: API docs for the eventAnnotation plugin -date: 2022-08-10 +description: API docs for the eventAnnotation plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] -warning: 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. --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 810257e6bd754..169240a4e31f1 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibEventLogPluginApi slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github -summary: API docs for the eventLog plugin -date: 2022-08-10 +description: API docs for the eventLog plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] -warning: 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. --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 14425f584cf13..c26dd9d602518 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionErrorPluginApi slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionError plugin -date: 2022-08-10 +description: API docs for the expressionError plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] -warning: 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. --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 20a1cf38142fc..805db130b3635 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionGaugePluginApi slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionGauge plugin -date: 2022-08-10 +description: API docs for the expressionGauge plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] -warning: 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. --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 7b6c454387525..6d4d4c5bc3797 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionHeatmapPluginApi slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionHeatmap plugin -date: 2022-08-10 +description: API docs for the expressionHeatmap plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] -warning: 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. --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 6e44f7e1925bd..ccb91e5f51b84 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionImagePluginApi slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionImage plugin -date: 2022-08-10 +description: API docs for the expressionImage plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] -warning: 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. --- 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 66f01446ec898..827dfeb0783b1 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionLegacyMetricVisPluginApi slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionLegacyMetricVis plugin -date: 2022-08-10 +description: API docs for the expressionLegacyMetricVis plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] -warning: 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. --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index c84e3ebe07e28..0fc049cd34fd8 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionMetricPluginApi slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionMetric plugin -date: 2022-08-10 +description: API docs for the expressionMetric plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] -warning: 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. --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index fe81d139d71e6..d865c607d2a79 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionMetricVisPluginApi slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionMetricVis plugin -date: 2022-08-10 +description: API docs for the expressionMetricVis plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] -warning: 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. --- 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 1e14f753c20ef..f376d7efbd3c0 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionPartitionVisPluginApi slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionPartitionVis plugin -date: 2022-08-10 +description: API docs for the expressionPartitionVis plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] -warning: 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. --- 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 c1a77887e01bc..35cadf9482078 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionRepeatImagePluginApi slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionRepeatImage plugin -date: 2022-08-10 +description: API docs for the expressionRepeatImage plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] -warning: 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. --- 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 ffe31cd906521..c4093b827de57 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionRevealImagePluginApi slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionRevealImage plugin -date: 2022-08-10 +description: API docs for the expressionRevealImage plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] -warning: 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. --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 22ac6f5aa8f4c..91c67dcaabba9 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionShapePluginApi slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionShape plugin -date: 2022-08-10 +description: API docs for the expressionShape plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] -warning: 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. --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index ae2e7c6c172b1..44b99db0d35e3 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionTagcloudPluginApi slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionTagcloud plugin -date: 2022-08-10 +description: API docs for the expressionTagcloud plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] -warning: 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. --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index abef8921098c4..dffc294756819 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionXYPluginApi slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressionXY plugin -date: 2022-08-10 +description: API docs for the expressionXY plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] -warning: 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. --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 8265dab8d0b62..5ce386f8a2f49 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibExpressionsPluginApi slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github -summary: API docs for the expressions plugin -date: 2022-08-10 +description: API docs for the expressions plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] -warning: 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. --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 4dbf73d2e9894..2393f30a5b9a0 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibFeaturesPluginApi slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github -summary: API docs for the features plugin -date: 2022-08-10 +description: API docs for the features plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] -warning: 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. --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 1ed0f87b87f7c..b90819ea8f5aa 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibFieldFormatsPluginApi slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github -summary: API docs for the fieldFormats plugin -date: 2022-08-10 +description: API docs for the fieldFormats plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] -warning: 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. --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 23ef42b26d43d..9d9e0eb35894c 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibFileUploadPluginApi slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github -summary: API docs for the fileUpload plugin -date: 2022-08-10 +description: API docs for the fileUpload plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] -warning: 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. --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 80b0f42943529..9bb727824c189 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibFleetPluginApi slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github -summary: API docs for the fleet plugin -date: 2022-08-10 +description: API docs for the fleet plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] -warning: 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. --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index fc2c49c06221c..33748702b61b8 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibGlobalSearchPluginApi slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github -summary: API docs for the globalSearch plugin -date: 2022-08-10 +description: API docs for the globalSearch plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] -warning: 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. --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 89c35468ff05d..cd3147cc301bd 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibHomePluginApi slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github -summary: API docs for the home plugin -date: 2022-08-10 +description: API docs for the home plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] -warning: 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. --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index a0569cdca5081..e828742670e19 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibIndexLifecycleManagementPluginApi slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github -summary: API docs for the indexLifecycleManagement plugin -date: 2022-08-10 +description: API docs for the indexLifecycleManagement plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] -warning: 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. --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index eb738f4c646d3..c4d0c091519f7 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibIndexManagementPluginApi slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github -summary: API docs for the indexManagement plugin -date: 2022-08-10 +description: API docs for the indexManagement plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] -warning: 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. --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 7723a94c95620..58f393c23bc6f 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibInfraPluginApi slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github -summary: API docs for the infra plugin -date: 2022-08-10 +description: API docs for the infra plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] -warning: 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. --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 9d1b8650276ba..5b5f9f42f9bdc 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibInspectorPluginApi slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github -summary: API docs for the inspector plugin -date: 2022-08-10 +description: API docs for the inspector plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] -warning: 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. --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index d08e8b4873224..76159a88a4046 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibInteractiveSetupPluginApi slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github -summary: API docs for the interactiveSetup plugin -date: 2022-08-10 +description: API docs for the interactiveSetup plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] -warning: 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. --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 059821a6ee8b6..ad13f5ee9c2d0 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnAcePluginApi slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/ace plugin -date: 2022-08-10 +description: API docs for the @kbn/ace plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] -warning: 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. --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 4c1649eb8c953..d52a5f6b909c3 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnAiopsComponentsPluginApi slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/aiops-components plugin -date: 2022-08-10 +description: API docs for the @kbn/aiops-components plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] -warning: 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. --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 97da08a9e054e..149c07f9a6653 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnAiopsUtilsPluginApi slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/aiops-utils plugin -date: 2022-08-10 +description: API docs for the @kbn/aiops-utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] -warning: 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. --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts.mdx b/api_docs/kbn_alerts.mdx index 712f797450c93..4e3fd64430fe4 100644 --- a/api_docs/kbn_alerts.mdx +++ b/api_docs/kbn_alerts.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnAlertsPluginApi slug: /kibana-dev-docs/api/kbn-alerts title: "@kbn/alerts" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/alerts plugin -date: 2022-08-10 +description: API docs for the @kbn/alerts plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts'] -warning: 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. --- import kbnAlertsObj from './kbn_alerts.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 0871cfe033afe..441f3eb3db741 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnAnalyticsPluginApi slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/analytics plugin -date: 2022-08-10 +description: API docs for the @kbn/analytics plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] -warning: 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. --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index b7cd57c8cb350..c1f06d561d044 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnAnalyticsClientPluginApi slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/analytics-client plugin -date: 2022-08-10 +description: API docs for the @kbn/analytics-client plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] -warning: 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. --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index 12c7c41b9010d..d9fab71d98594 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnAnalyticsShippersElasticV3BrowserPluginApi 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 -summary: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] -warning: 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. --- 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 673437126d94f..2201f02c57558 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnAnalyticsShippersElasticV3CommonPluginApi 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 -summary: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2022-08-10 +description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] -warning: 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. --- 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 52b8887fae27f..8e48be19e49b8 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnAnalyticsShippersElasticV3ServerPluginApi 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 -summary: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2022-08-10 +description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] -warning: 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. --- 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 b00cba99dc65d..0f8b6675aa3b3 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnAnalyticsShippersFullstoryPluginApi slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2022-08-10 +description: API docs for the @kbn/analytics-shippers-fullstory plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] -warning: 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. --- 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 e4d53e0bacfd8..6ee6654bca627 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnApmConfigLoaderPluginApi slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/apm-config-loader plugin -date: 2022-08-10 +description: API docs for the @kbn/apm-config-loader plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] -warning: 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. --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index f0709c01d5522..552bd53fc9230 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnApmUtilsPluginApi slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/apm-utils plugin -date: 2022-08-10 +description: API docs for the @kbn/apm-utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] -warning: 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. --- 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 34dec7bb8b7c2..5511c5405411f 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnAxeConfigPluginApi slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/axe-config plugin -date: 2022-08-10 +description: API docs for the @kbn/axe-config plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] -warning: 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. --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bazel_packages.mdx b/api_docs/kbn_bazel_packages.mdx index 85685f06c59dd..3f72ba8df808a 100644 --- a/api_docs/kbn_bazel_packages.mdx +++ b/api_docs/kbn_bazel_packages.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnBazelPackagesPluginApi slug: /kibana-dev-docs/api/kbn-bazel-packages title: "@kbn/bazel-packages" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/bazel-packages plugin -date: 2022-08-10 +description: API docs for the @kbn/bazel-packages plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bazel-packages'] -warning: 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. --- import kbnBazelPackagesObj from './kbn_bazel_packages.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 465efbdb066c1..e000823006bae 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCiStatsCorePluginApi slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/ci-stats-core plugin -date: 2022-08-10 +description: API docs for the @kbn/ci-stats-core plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] -warning: 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. --- 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 10c1ee15848e9..b4c7822027657 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCiStatsPerformanceMetricsPluginApi slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2022-08-10 +description: API docs for the @kbn/ci-stats-performance-metrics plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] -warning: 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. --- 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 1fe469a2f2b76..124fdda39cd95 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCiStatsReporterPluginApi slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/ci-stats-reporter plugin -date: 2022-08-10 +description: API docs for the @kbn/ci-stats-reporter plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] -warning: 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. --- 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 c41826cdf11a7..a4432f832ef5e 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCliDevModePluginApi slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/cli-dev-mode plugin -date: 2022-08-10 +description: API docs for the @kbn/cli-dev-mode plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] -warning: 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. --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index dbd9ea19feb48..ae5cd47cda816 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnColoringPluginApi slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/coloring plugin -date: 2022-08-10 +description: API docs for the @kbn/coloring plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] -warning: 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. --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 49894b0045255..2d89d9f9d3d27 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnConfigPluginApi slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/config plugin -date: 2022-08-10 +description: API docs for the @kbn/config plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] -warning: 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. --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index ea43e0d405a1c..fc93f0c95c25d 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnConfigMocksPluginApi slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/config-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/config-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] -warning: 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. --- 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 82ecdab7f4247..3f692e8c39e74 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnConfigSchemaPluginApi slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/config-schema plugin -date: 2022-08-10 +description: API docs for the @kbn/config-schema plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] -warning: 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. --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index c09a2f9778701..dc25d37e8dcb6 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreAnalyticsBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-analytics-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-analytics-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] -warning: 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. --- 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 11b8af9ab3439..6ed61554c64dc 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreAnalyticsBrowserInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-analytics-browser-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] -warning: 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. --- 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 c7fa438af7585..083459d82e734 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreAnalyticsBrowserMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-analytics-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] -warning: 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. --- 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 f00aad80106be..eabbc9e824460 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreAnalyticsServerPluginApi slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-analytics-server plugin -date: 2022-08-10 +description: API docs for the @kbn/core-analytics-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] -warning: 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. --- 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 5cda27736f13c..e85565987a37e 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreAnalyticsServerInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-analytics-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-analytics-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] -warning: 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. --- 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 ed0fd75a17ea1..2e7d30f0d0fbf 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreAnalyticsServerMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-analytics-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] -warning: 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. --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 4cf38273b434e..34de7d4b8e06a 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreBaseBrowserMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-base-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-base-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] -warning: 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. --- 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 f998c3986fa42..573b7df56d3c3 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreBaseCommonPluginApi slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-base-common plugin -date: 2022-08-10 +description: API docs for the @kbn/core-base-common plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] -warning: 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. --- 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 7196db6502636..18e83415fc77b 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreBaseServerInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-base-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-base-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] -warning: 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. --- 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 e0fe87f10560e..90308821b1602 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreBaseServerMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-base-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-base-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] -warning: 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. --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 4fe41d98f95e1..5c9813c841e93 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreCapabilitiesCommonPluginApi slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-capabilities-common plugin -date: 2022-08-10 +description: API docs for the @kbn/core-capabilities-common plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] -warning: 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. --- 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 8dd31e759d375..2d74140d25d5b 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreCapabilitiesServerPluginApi slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-capabilities-server plugin -date: 2022-08-10 +description: API docs for the @kbn/core-capabilities-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] -warning: 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. --- 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 ea93ab2a728a3..5864db03de071 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreCapabilitiesServerMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-capabilities-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] -warning: 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. --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 2022112d0f968..980aeb7e5eafd 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreConfigServerInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-config-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-config-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] -warning: 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. --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 6b3592a5106a8..c7b4f1f1db12e 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreDeprecationsBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-deprecations-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-deprecations-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] -warning: 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. --- 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 c653204a2efa7..b51f5542dcac5 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreDeprecationsBrowserInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-deprecations-browser-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] -warning: 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. --- 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 5de45a3e441d2..ae1d2d010d9ce 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreDeprecationsBrowserMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-deprecations-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] -warning: 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. --- 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 9ec6d2b8e7de6..ef822626f6f33 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreDeprecationsCommonPluginApi slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-deprecations-common plugin -date: 2022-08-10 +description: API docs for the @kbn/core-deprecations-common plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] -warning: 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. --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 575fa27be8fc7..5b70ecb032151 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreDocLinksBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-doc-links-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-doc-links-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] -warning: 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. --- 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 979b7c9e29a0e..c153294c409c3 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreDocLinksBrowserMocksPluginApi 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 -summary: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-doc-links-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] -warning: 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. --- 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 1d8883729bc08..5bb7687740ecf 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreDocLinksServerPluginApi slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-doc-links-server plugin -date: 2022-08-10 +description: API docs for the @kbn/core-doc-links-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] -warning: 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. --- 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 9d377f03024cf..2cd86fe9ad73b 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreDocLinksServerMocksPluginApi 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 -summary: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-doc-links-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] -warning: 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. --- 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 71a70374fdcec..ed0b4b1c9bcfd 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreElasticsearchClientServerInternalPluginApi 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 -summary: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] -warning: 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. --- 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 e30a930a510c2..2bb6fd38a5486 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreElasticsearchClientServerMocksPluginApi 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 -summary: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] -warning: 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. --- 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 3e4d5ea1eff1e..f5f44e819ce92 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreElasticsearchServerPluginApi slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-elasticsearch-server plugin -date: 2022-08-10 +description: API docs for the @kbn/core-elasticsearch-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] -warning: 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. --- 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 d2c0ac6db57f5..fcb6bee1f95ca 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreElasticsearchServerInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-elasticsearch-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] -warning: 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. --- 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 4c7e3c5963d2d..0b46995435694 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreElasticsearchServerMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-elasticsearch-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] -warning: 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. --- 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 661d4f2ed8405..10f74250c8dd0 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreEnvironmentServerInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-environment-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-environment-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] -warning: 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. --- 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 4f5e63161fb70..b84b68e017374 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreEnvironmentServerMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-environment-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-environment-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] -warning: 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. --- 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 64da2a1842348..1f6edae3523a8 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreExecutionContextBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-execution-context-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-execution-context-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] -warning: 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. --- 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 699750f0ccda9..400b5a8cd8d61 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreExecutionContextBrowserInternalPluginApi 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 -summary: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-execution-context-browser-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] -warning: 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. --- 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 f9da7f78d662a..5756f10d51000 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreExecutionContextBrowserMocksPluginApi 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 -summary: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-execution-context-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] -warning: 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. --- 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 1164f75874838..1775cf95424b5 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreExecutionContextCommonPluginApi slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-execution-context-common plugin -date: 2022-08-10 +description: API docs for the @kbn/core-execution-context-common plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] -warning: 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. --- 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 4709b3b984eb0..0fbd1783b6c31 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreExecutionContextServerPluginApi slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-execution-context-server plugin -date: 2022-08-10 +description: API docs for the @kbn/core-execution-context-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] -warning: 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. --- 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 1041572776e69..b80f7f7829f3f 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreExecutionContextServerInternalPluginApi 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 -summary: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-execution-context-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] -warning: 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. --- 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 bf92cf8086388..5894717106f89 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreExecutionContextServerMocksPluginApi 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 -summary: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-execution-context-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] -warning: 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. --- 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 66fa9fd0d119e..788d6e2d1202f 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreFatalErrorsBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-fatal-errors-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] -warning: 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. --- 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 93e50050c1827..b21295fde28b6 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreFatalErrorsBrowserMocksPluginApi 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 -summary: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] -warning: 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. --- 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 7d478e7661cf2..4c0375f75ef49 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreHttpBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-http-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-http-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] -warning: 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. --- 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 0196916c49af4..741b7b15181ed 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreHttpBrowserInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-http-browser-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-http-browser-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] -warning: 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. --- 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 36e36ebcb79b9..7a748adae2e2b 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreHttpBrowserMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-http-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-http-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] -warning: 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. --- 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 0ce137eaaf25b..c2ced4707e7e2 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreHttpCommonPluginApi slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-http-common plugin -date: 2022-08-10 +description: API docs for the @kbn/core-http-common plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] -warning: 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. --- 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 7468336058974..a450f828cc24b 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreHttpContextServerMocksPluginApi 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 -summary: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-http-context-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] -warning: 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. --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_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 a6333f53e2076..660e16aaa2334 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreHttpRouterServerInternalPluginApi 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 -summary: API docs for the @kbn/core-http-router-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-http-router-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] -warning: 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. --- 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 7566ee9119d10..281c9400435f2 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreHttpRouterServerMocksPluginApi 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 -summary: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-http-router-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] -warning: 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. --- 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 29e742f2350f8..6736f3e83167d 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreHttpServerPluginApi slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-http-server plugin -date: 2022-08-10 +description: API docs for the @kbn/core-http-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] -warning: 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. --- 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 1254401ee5426..c82bdcaec983f 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreHttpServerInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-http-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-http-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] -warning: 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. --- 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 8d66b2eda38ee..dc7f6893d7397 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreHttpServerMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-http-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-http-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] -warning: 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. --- 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 e7173c6deaab5..29a450346c446 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreI18nBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-i18n-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-i18n-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] -warning: 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. --- 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 ac518d3fba884..0345e27a252c4 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreI18nBrowserMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-i18n-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] -warning: 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. --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser.mdx b/api_docs/kbn_core_injected_metadata_browser.mdx index 33b9777c89da1..104d153f003fe 100644 --- a/api_docs/kbn_core_injected_metadata_browser.mdx +++ b/api_docs/kbn_core_injected_metadata_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreInjectedMetadataBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser title: "@kbn/core-injected-metadata-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-injected-metadata-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-injected-metadata-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser'] -warning: 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. --- import kbnCoreInjectedMetadataBrowserObj from './kbn_core_injected_metadata_browser.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 1b950e8fe9490..23d3b5fd4460e 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreInjectedMetadataBrowserMocksPluginApi 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 -summary: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] -warning: 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. --- 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 91b4acc9cadc8..8f36ee7e2ce4d 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreIntegrationsBrowserInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-integrations-browser-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] -warning: 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. --- 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 3c46e98f755c9..8569ab0f0bb05 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreIntegrationsBrowserMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-integrations-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] -warning: 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. --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 8febbac2aba38..ca4ceef547462 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreLoggingServerPluginApi slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-logging-server plugin -date: 2022-08-10 +description: API docs for the @kbn/core-logging-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] -warning: 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. --- 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 6a56cc215c2d2..aacfe4c584c29 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreLoggingServerInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-logging-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-logging-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] -warning: 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. --- 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 d694c5c983d20..39dbbf64c899a 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreLoggingServerMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-logging-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-logging-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] -warning: 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. --- 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 c713d338cfd26..1362bd713e36e 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreMetricsCollectorsServerInternalPluginApi 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 -summary: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-metrics-collectors-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] -warning: 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. --- 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 7782767b072c5..71bc6f3a3f04a 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreMetricsCollectorsServerMocksPluginApi 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 -summary: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] -warning: 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. --- 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 d3ba6875eb993..041ef87b42952 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreMetricsServerPluginApi slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-metrics-server plugin -date: 2022-08-10 +description: API docs for the @kbn/core-metrics-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] -warning: 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. --- 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 1f4fa49cf81ed..ae16ec053bb11 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreMetricsServerInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-metrics-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-metrics-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] -warning: 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. --- 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 44ef913936687..b4a898c163d5a 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreMetricsServerMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-metrics-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] -warning: 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. --- 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 cd1db61a8b29d..ae5b022c353d8 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreMountUtilsBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-mount-utils-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-mount-utils-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] -warning: 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. --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser_internal.mdx b/api_docs/kbn_core_mount_utils_browser_internal.mdx index 2d690a6065357..31eef32ff122d 100644 --- a/api_docs/kbn_core_mount_utils_browser_internal.mdx +++ b/api_docs/kbn_core_mount_utils_browser_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreMountUtilsBrowserInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser-internal title: "@kbn/core-mount-utils-browser-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-mount-utils-browser-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-mount-utils-browser-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser-internal'] -warning: 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. --- import kbnCoreMountUtilsBrowserInternalObj from './kbn_core_mount_utils_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 620d527e9dfec..46bc2f98e711d 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreNodeServerPluginApi slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-node-server plugin -date: 2022-08-10 +description: API docs for the @kbn/core-node-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] -warning: 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. --- 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 5dc70b4e434d5..32bdf17e3702d 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreNodeServerInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-node-server-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-node-server-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] -warning: 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. --- 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 a1c7f0518037e..1c237f65329ec 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreNodeServerMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-node-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-node-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] -warning: 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. --- 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 9b73ce6f2af07..2f29364b23a43 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreNotificationsBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-notifications-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-notifications-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] -warning: 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. --- 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 e26ac823e3a64..7616c2e3e5d19 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreNotificationsBrowserInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-notifications-browser-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] -warning: 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. --- 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 8defd47de4067..0fcdf7624cf5b 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreNotificationsBrowserMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-notifications-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] -warning: 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. --- 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 2ba9f8a19a050..453c38659a5e4 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreOverlaysBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-overlays-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-overlays-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] -warning: 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. --- 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 6f0a29e468045..a34142a2fae29 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreOverlaysBrowserInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-overlays-browser-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] -warning: 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. --- 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 866132ba10c92..37408d1a0c8e0 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreOverlaysBrowserMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-overlays-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] -warning: 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. --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index cbbf027250fe0..9a7c7a1edce55 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCorePrebootServerPluginApi slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-preboot-server plugin -date: 2022-08-10 +description: API docs for the @kbn/core-preboot-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] -warning: 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. --- 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 a07a0853de6ae..0afd2e4c96dea 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCorePrebootServerMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-preboot-server-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] -warning: 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. --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.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 4083b402a8042..f4c2d6f9ccc42 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreSavedObjectsApiBrowserPluginApi 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 -summary: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-saved-objects-api-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] -warning: 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. --- 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 3db45c8be52f9..8fc0b694aa6c1 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreSavedObjectsApiServerPluginApi 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 -summary: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2022-08-10 +description: API docs for the @kbn/core-saved-objects-api-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] -warning: 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. --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 7a311807c8358..24b3e5da37fbb 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreSavedObjectsBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-saved-objects-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-saved-objects-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] -warning: 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. --- 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 9967e10cdc76d..032339de4038f 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreSavedObjectsBrowserInternalPluginApi 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 -summary: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-saved-objects-browser-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] -warning: 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. --- 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 54dfcdbd7459a..038b770a93bac 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreSavedObjectsBrowserMocksPluginApi 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 -summary: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-saved-objects-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] -warning: 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. --- 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 dc3a1986e550d..1d5aaa4650348 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreSavedObjectsCommonPluginApi slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-saved-objects-common plugin -date: 2022-08-10 +description: API docs for the @kbn/core-saved-objects-common plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] -warning: 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. --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 4f50d19daef66..52b21777a4436 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreSavedObjectsServerPluginApi slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-saved-objects-server plugin -date: 2022-08-10 +description: API docs for the @kbn/core-saved-objects-server plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] -warning: 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. --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.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 fe65a7e89048c..787255afdcef6 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreTestHelpersDeprecationsGettersPluginApi 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 -summary: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2022-08-10 +description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] -warning: 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. --- 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 99655563b1296..5324e74eaddf4 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreTestHelpersHttpSetupBrowserPluginApi 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 -summary: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] -warning: 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. --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index cf31e74dce003..607691e3099a3 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreThemeBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-theme-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-theme-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] -warning: 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. --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index eb88aa7a05bbd..d2d25970198fa 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreThemeBrowserInternalPluginApi slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-theme-browser-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-theme-browser-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] -warning: 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. --- import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 92d27f90b7cf8..dd78cb97c9b73 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreThemeBrowserMocksPluginApi slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-theme-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] -warning: 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. --- 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 64f78476c8eef..319ea1a3816db 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreUiSettingsBrowserPluginApi slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-ui-settings-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/core-ui-settings-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] -warning: 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. --- 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 25c030f47a1e0..dbf6c57f3a902 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreUiSettingsBrowserInternalPluginApi 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 -summary: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2022-08-10 +description: API docs for the @kbn/core-ui-settings-browser-internal plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] -warning: 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. --- 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 637c39c488705..6cd8019246435 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreUiSettingsBrowserMocksPluginApi 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 -summary: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/core-ui-settings-browser-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] -warning: 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. --- 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 b93086e6d5a6e..23df6c2264954 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCoreUiSettingsCommonPluginApi slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/core-ui-settings-common plugin -date: 2022-08-10 +description: API docs for the @kbn/core-ui-settings-common plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] -warning: 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. --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index f9dd8733c5c49..7d308692aa3d3 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCryptoPluginApi slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/crypto plugin -date: 2022-08-10 +description: API docs for the @kbn/crypto plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] -warning: 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. --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index cb5d48578bd36..2880bdaed08ba 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnCryptoBrowserPluginApi slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/crypto-browser plugin -date: 2022-08-10 +description: API docs for the @kbn/crypto-browser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] -warning: 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. --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index d91f60d78e108..b72576e13c035 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnDatemathPluginApi slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/datemath plugin -date: 2022-08-10 +description: API docs for the @kbn/datemath plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] -warning: 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. --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 46bd0d8207f2f..d55689dd7adfa 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnDevCliErrorsPluginApi slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/dev-cli-errors plugin -date: 2022-08-10 +description: API docs for the @kbn/dev-cli-errors plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] -warning: 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. --- 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 7cb93cffe8c9d..e2a3d8828c9de 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnDevCliRunnerPluginApi slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/dev-cli-runner plugin -date: 2022-08-10 +description: API docs for the @kbn/dev-cli-runner plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] -warning: 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. --- 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 771e5cecdf43d..43f9f57f37548 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnDevProcRunnerPluginApi slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/dev-proc-runner plugin -date: 2022-08-10 +description: API docs for the @kbn/dev-proc-runner plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] -warning: 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. --- 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 5342c7bfa04d9..e92051ab7b1df 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnDevUtilsPluginApi slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/dev-utils plugin -date: 2022-08-10 +description: API docs for the @kbn/dev-utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] -warning: 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. --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index c371b30eb3338..c0c47f70125cd 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnDocLinksPluginApi slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/doc-links plugin -date: 2022-08-10 +description: API docs for the @kbn/doc-links plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] -warning: 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. --- 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 7665daea7144c..7d67005ca5e99 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnDocsUtilsPluginApi slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/docs-utils plugin -date: 2022-08-10 +description: API docs for the @kbn/docs-utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] -warning: 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. --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index 63353d14673c9..baed6476694f0 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnEbtToolsPluginApi slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/ebt-tools plugin -date: 2022-08-10 +description: API docs for the @kbn/ebt-tools plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] -warning: 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. --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index e48c751e54b5c..fb0b15352818b 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnEsArchiverPluginApi slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/es-archiver plugin -date: 2022-08-10 +description: API docs for the @kbn/es-archiver plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] -warning: 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. --- 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 46ac654c9d5e7..3484f1a6ada51 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnEsErrorsPluginApi slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/es-errors plugin -date: 2022-08-10 +description: API docs for the @kbn/es-errors plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] -warning: 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. --- 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 5f6deb9a2917c..eade19c03aa86 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnEsQueryPluginApi slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/es-query plugin -date: 2022-08-10 +description: API docs for the @kbn/es-query plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] -warning: 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. --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 4fb658ae8fe6b..9a7b139bc2a52 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnEslintPluginImportsPluginApi slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/eslint-plugin-imports plugin -date: 2022-08-10 +description: API docs for the @kbn/eslint-plugin-imports plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] -warning: 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. --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 40554b64f05ac..e31c681e7ba4d 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnFieldTypesPluginApi slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/field-types plugin -date: 2022-08-10 +description: API docs for the @kbn/field-types plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] -warning: 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. --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index b857ce8b6e4f7..188031bf41fcc 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnFindUsedNodeModulesPluginApi slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/find-used-node-modules plugin -date: 2022-08-10 +description: API docs for the @kbn/find-used-node-modules plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] -warning: 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. --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 1cbaea812812d..a77e974d22f04 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnGeneratePluginApi slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/generate plugin -date: 2022-08-10 +description: API docs for the @kbn/generate plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] -warning: 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. --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_get_repo_files.mdx b/api_docs/kbn_get_repo_files.mdx index 710252ce3a5c7..8e464bd8f0012 100644 --- a/api_docs/kbn_get_repo_files.mdx +++ b/api_docs/kbn_get_repo_files.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnGetRepoFilesPluginApi slug: /kibana-dev-docs/api/kbn-get-repo-files title: "@kbn/get-repo-files" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/get-repo-files plugin -date: 2022-08-10 +description: API docs for the @kbn/get-repo-files plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/get-repo-files'] -warning: 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. --- import kbnGetRepoFilesObj from './kbn_get_repo_files.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 0c1c5162e78a6..72a4fe984177f 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnHandlebarsPluginApi slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/handlebars plugin -date: 2022-08-10 +description: API docs for the @kbn/handlebars plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] -warning: 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. --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index 8347122ac841d..2c309c2f64a28 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnHapiMocksPluginApi slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/hapi-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/hapi-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] -warning: 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. --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 488d44e113ae8..889d0c17237d9 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnHomeSampleDataCardPluginApi slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/home-sample-data-card plugin -date: 2022-08-10 +description: API docs for the @kbn/home-sample-data-card plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] -warning: 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. --- 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 1eb25f2d0aabe..956443176eec3 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnHomeSampleDataTabPluginApi slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/home-sample-data-tab plugin -date: 2022-08-10 +description: API docs for the @kbn/home-sample-data-tab plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] -warning: 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. --- 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 a142e7e1a75e4..3b55fb665b773 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnI18nPluginApi slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/i18n plugin -date: 2022-08-10 +description: API docs for the @kbn/i18n plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] -warning: 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. --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index d89fbe0f1c21f..18cedf5f5e4f8 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnImportResolverPluginApi slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/import-resolver plugin -date: 2022-08-10 +description: API docs for the @kbn/import-resolver plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] -warning: 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. --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 5b2e1825b0446..09163c26a680d 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnInterpreterPluginApi slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/interpreter plugin -date: 2022-08-10 +description: API docs for the @kbn/interpreter plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] -warning: 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. --- 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 a2504a4c32db6..bb1c0bedada86 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnIoTsUtilsPluginApi slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/io-ts-utils plugin -date: 2022-08-10 +description: API docs for the @kbn/io-ts-utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] -warning: 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. --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 74a3f649a904a..20a4d28a0221e 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnJestSerializersPluginApi slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/jest-serializers plugin -date: 2022-08-10 +description: API docs for the @kbn/jest-serializers plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] -warning: 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. --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_parser.mdx b/api_docs/kbn_kibana_manifest_parser.mdx index cb8e3e9e4ab23..8d12a00d7354a 100644 --- a/api_docs/kbn_kibana_manifest_parser.mdx +++ b/api_docs/kbn_kibana_manifest_parser.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnKibanaManifestParserPluginApi slug: /kibana-dev-docs/api/kbn-kibana-manifest-parser title: "@kbn/kibana-manifest-parser" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/kibana-manifest-parser plugin -date: 2022-08-10 +description: API docs for the @kbn/kibana-manifest-parser plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-parser'] -warning: 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. --- import kbnKibanaManifestParserObj from './kbn_kibana_manifest_parser.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index ce71c1b8b75f0..5f16371077c03 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnKibanaManifestSchemaPluginApi slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/kibana-manifest-schema plugin -date: 2022-08-10 +description: API docs for the @kbn/kibana-manifest-schema plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] -warning: 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. --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 1151120643d1a..48d05d099c986 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnLoggingPluginApi slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/logging plugin -date: 2022-08-10 +description: API docs for the @kbn/logging plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] -warning: 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. --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 3b7ee97c52ae1..f3e37ddd2f799 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnLoggingMocksPluginApi slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/logging-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/logging-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] -warning: 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. --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index ed6376e9553e1..cdcc007bda547 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnManagedVscodeConfigPluginApi slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/managed-vscode-config plugin -date: 2022-08-10 +description: API docs for the @kbn/managed-vscode-config plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] -warning: 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. --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 8d6dba65ead91..71af48ec9a4dd 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnMapboxGlPluginApi slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/mapbox-gl plugin -date: 2022-08-10 +description: API docs for the @kbn/mapbox-gl plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] -warning: 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. --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 7cb8d90cfa235..4f3afabcbdf20 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnMlAggUtilsPluginApi slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/ml-agg-utils plugin -date: 2022-08-10 +description: API docs for the @kbn/ml-agg-utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] -warning: 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. --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 6d72343154bdc..fd25d71911ac4 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnMlIsPopulatedObjectPluginApi slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/ml-is-populated-object plugin -date: 2022-08-10 +description: API docs for the @kbn/ml-is-populated-object plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] -warning: 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. --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index fe74228ef2800..84f80a8557221 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnMlStringHashPluginApi slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/ml-string-hash plugin -date: 2022-08-10 +description: API docs for the @kbn/ml-string-hash plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] -warning: 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. --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 5ad15805a570f..2c037730f69ef 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnMonacoPluginApi slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/monaco plugin -date: 2022-08-10 +description: API docs for the @kbn/monaco plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] -warning: 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. --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 5ceffe10c2355..99c81b283e5eb 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnOptimizerPluginApi slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/optimizer plugin -date: 2022-08-10 +description: API docs for the @kbn/optimizer plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] -warning: 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. --- 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 e87a7556a2f4d..500fd91a654e3 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnOptimizerWebpackHelpersPluginApi slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2022-08-10 +description: API docs for the @kbn/optimizer-webpack-helpers plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] -warning: 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. --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index e783b89afa935..84fe13cd647f3 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnPerformanceTestingDatasetExtractorPluginApi slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2022-08-10 +description: API docs for the @kbn/performance-testing-dataset-extractor plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] -warning: 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. --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 8528d35bdbf2d..7a4b18b12d6f8 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnPluginGeneratorPluginApi slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/plugin-generator plugin -date: 2022-08-10 +description: API docs for the @kbn/plugin-generator plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] -warning: 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. --- 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 d7c4a8b24e619..8fef2ea69e8fa 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnPluginHelpersPluginApi slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/plugin-helpers plugin -date: 2022-08-10 +description: API docs for the @kbn/plugin-helpers plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] -warning: 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. --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index f6b280b0f03db..b03dc56faba87 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnReactFieldPluginApi slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/react-field plugin -date: 2022-08-10 +description: API docs for the @kbn/react-field plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] -warning: 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. --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index 40d5b8ffa349e..55d597dc0f2a9 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnRepoSourceClassifierPluginApi slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/repo-source-classifier plugin -date: 2022-08-10 +description: API docs for the @kbn/repo-source-classifier plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] -warning: 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. --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 443b445f4d402..65475404e3908 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnRuleDataUtilsPluginApi slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/rule-data-utils plugin -date: 2022-08-10 +description: API docs for the @kbn/rule-data-utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] -warning: 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. --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 7bed67d2eaf32..0eb3286920244 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionAutocompletePluginApi slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-autocomplete plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] -warning: 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. --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 5191717a2b4f6..3fd73ca86c922 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionEsUtilsPluginApi slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/securitysolution-es-utils plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-es-utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] -warning: 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. --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 168432db590ca..059651e0c5a5a 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionHookUtilsPluginApi slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-hook-utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] -warning: 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. --- 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 dde361045dfca..7f4324a0e1772 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionIoTsAlertingTypesPluginApi 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 -summary: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] -warning: 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. --- 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 2e9052ebcb51a..985ca5901286b 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionIoTsListTypesPluginApi 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 -summary: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-io-ts-list-types plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] -warning: 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. --- 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 912260c4b7f99..4afc55fb373ba 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionIoTsTypesPluginApi slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-io-ts-types plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] -warning: 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. --- 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 17c3de5b2ef01..5c756ed317cae 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionIoTsUtilsPluginApi slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-io-ts-utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] -warning: 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. --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.devdocs.json b/api_docs/kbn_securitysolution_list_api.devdocs.json index f644bd3bfab69..79b6b26e9f098 100644 --- a/api_docs/kbn_securitysolution_list_api.devdocs.json +++ b/api_docs/kbn_securitysolution_list_api.devdocs.json @@ -496,7 +496,7 @@ "label": "findListsWithValidation", "description": [], "signature": [ - "({ cursor, http, pageIndex, pageSize, signal, }: ", + "({ cursor, http, pageIndex, pageSize, signal, sortField, sortOrder, }: ", { "pluginId": "@kbn/securitysolution-list-api", "scope": "common", @@ -514,7 +514,7 @@ "id": "def-common.findListsWithValidation.$1", "type": "Object", "tags": [], - "label": "{\n cursor,\n http,\n pageIndex,\n pageSize,\n signal,\n}", + "label": "{\n cursor,\n http,\n pageIndex,\n pageSize,\n signal,\n sortField,\n sortOrder,\n}", "description": [], "signature": [ { @@ -1011,6 +1011,32 @@ ], "path": "packages/kbn-securitysolution-list-api/src/list_api/types.ts", "deprecated": false + }, + { + "parentPluginId": "@kbn/securitysolution-list-api", + "id": "def-common.FindListsParams.sortOrder", + "type": "CompoundType", + "tags": [], + "label": "sortOrder", + "description": [], + "signature": [ + "\"asc\" | \"desc\" | undefined" + ], + "path": "packages/kbn-securitysolution-list-api/src/list_api/types.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/securitysolution-list-api", + "id": "def-common.FindListsParams.sortField", + "type": "string", + "tags": [], + "label": "sortField", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-securitysolution-list-api/src/list_api/types.ts", + "deprecated": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 949bf45c71f1d..cfdfd9a6568c6 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionListApiPluginApi slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/securitysolution-list-api plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-list-api plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] -warning: 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. --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; @@ -18,7 +21,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 59 | 0 | 58 | 0 | +| 61 | 0 | 60 | 0 | ## Common diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index f0dbd8a1e3a59..f2c6e31617cf8 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionListConstantsPluginApi slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/securitysolution-list-constants plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-list-constants plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] -warning: 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. --- 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 8d5a2429c99af..b25c0b1deb60d 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionListHooksPluginApi slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-list-hooks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] -warning: 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. --- 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 2c061d5bbeec7..fcbcb384848c2 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionListUtilsPluginApi slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/securitysolution-list-utils plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-list-utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] -warning: 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. --- 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 a638dc939e2fe..558fcb7778dc3 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionRulesPluginApi slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/securitysolution-rules plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-rules plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] -warning: 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. --- 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 623e10d8a0e4a..8d8bebe8fc200 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionTGridPluginApi slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/securitysolution-t-grid plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-t-grid plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] -warning: 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. --- 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 3979cc1743954..98a042e1ed233 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSecuritysolutionUtilsPluginApi slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/securitysolution-utils plugin -date: 2022-08-10 +description: API docs for the @kbn/securitysolution-utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] -warning: 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. --- 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 c3668e264b8e4..a1ba58192aaa9 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnServerHttpToolsPluginApi slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/server-http-tools plugin -date: 2022-08-10 +description: API docs for the @kbn/server-http-tools plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] -warning: 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. --- 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 72a014f25ba22..bce8de0772e48 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnServerRouteRepositoryPluginApi slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/server-route-repository plugin -date: 2022-08-10 +description: API docs for the @kbn/server-route-repository plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] -warning: 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. --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 0fde3962a5f48..602b7900da2ca 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedSvgPluginApi slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/shared-svg plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-svg plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] -warning: 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. --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index edecab3bd00f2..36fa3bff8a056 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxButtonExitFullScreenMocksPluginApi slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] -warning: 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. --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index a4371e47e72f2..5900fcefa5a23 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxButtonToolbarPluginApi slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-button-toolbar plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] -warning: 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. --- 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 8393837ce0d48..f9f761e93c106 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxCardNoDataPluginApi 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 -summary: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-card-no-data plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] -warning: 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. --- 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 84f7b5feb8e5f..4b4a6a247c8b8 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxCardNoDataMocksPluginApi 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 -summary: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] -warning: 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. --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_components.mdx b/api_docs/kbn_shared_ux_components.mdx index 4dd9cb49f5f6f..d69138c6435ae 100644 --- a/api_docs/kbn_shared_ux_components.mdx +++ b/api_docs/kbn_shared_ux_components.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxComponentsPluginApi slug: /kibana-dev-docs/api/kbn-shared-ux-components title: "@kbn/shared-ux-components" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/shared-ux-components plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-components plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-components'] -warning: 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. --- import kbnSharedUxComponentsObj from './kbn_shared_ux_components.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 c9247266d2047..a4cc2d4b26bb1 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxLinkRedirectAppMocksPluginApi 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 -summary: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] -warning: 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. --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_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 e259334407430..25689321f7f8c 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxPageAnalyticsNoDataPluginApi 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 -summary: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] -warning: 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. --- 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 d27d9840a5b1f..6fd9be7b546a0 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 @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxPageAnalyticsNoDataMocksPluginApi 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 -summary: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] -warning: 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. --- 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 3644d7acad093..5c4f74b5ad4fa 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxPageKibanaNoDataPluginApi 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 -summary: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] -warning: 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. --- 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 d019b15d67759..70ab9a10e9435 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 @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxPageKibanaNoDataMocksPluginApi 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 -summary: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] -warning: 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. --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_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 29b118a38656b..bf61fc483d6c5 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxPageSolutionNavPluginApi 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 -summary: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-page-solution-nav plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] -warning: 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. --- 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 fda31d8d34910..8a24fe051e71a 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxPromptNoDataViewsPluginApi 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 -summary: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] -warning: 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. --- 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 25bd1af3c2ed3..bb254d68a98c3 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 @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxPromptNoDataViewsMocksPluginApi 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 -summary: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] -warning: 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. --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_services.mdx b/api_docs/kbn_shared_ux_services.mdx index c22a7771b5198..bd1958f97749e 100644 --- a/api_docs/kbn_shared_ux_services.mdx +++ b/api_docs/kbn_shared_ux_services.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxServicesPluginApi slug: /kibana-dev-docs/api/kbn-shared-ux-services title: "@kbn/shared-ux-services" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/shared-ux-services plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-services plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-services'] -warning: 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. --- import kbnSharedUxServicesObj from './kbn_shared_ux_services.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook.mdx b/api_docs/kbn_shared_ux_storybook.mdx index fc045d20ddf3a..a13e4cceb4d0c 100644 --- a/api_docs/kbn_shared_ux_storybook.mdx +++ b/api_docs/kbn_shared_ux_storybook.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxStorybookPluginApi slug: /kibana-dev-docs/api/kbn-shared-ux-storybook title: "@kbn/shared-ux-storybook" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/shared-ux-storybook plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-storybook plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook'] -warning: 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. --- import kbnSharedUxStorybookObj from './kbn_shared_ux_storybook.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 3595f0ef8c6b6..49725a3f13e47 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxStorybookMockPluginApi slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-storybook-mock plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] -warning: 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. --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 9b65d143ab654..364e61e82fd8a 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSharedUxUtilityPluginApi slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/shared-ux-utility plugin -date: 2022-08-10 +description: API docs for the @kbn/shared-ux-utility plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] -warning: 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. --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 2051d3395ffa1..7f40f129763d0 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSomeDevLogPluginApi slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/some-dev-log plugin -date: 2022-08-10 +description: API docs for the @kbn/some-dev-log plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] -warning: 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. --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_package_json.mdx b/api_docs/kbn_sort_package_json.mdx index c4befb85d9af4..825cbae993202 100644 --- a/api_docs/kbn_sort_package_json.mdx +++ b/api_docs/kbn_sort_package_json.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnSortPackageJsonPluginApi slug: /kibana-dev-docs/api/kbn-sort-package-json title: "@kbn/sort-package-json" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/sort-package-json plugin -date: 2022-08-10 +description: API docs for the @kbn/sort-package-json plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-package-json'] -warning: 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. --- import kbnSortPackageJsonObj from './kbn_sort_package_json.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 2b6c2b5320fde..6bbc561c4830f 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnStdPluginApi slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/std plugin -date: 2022-08-10 +description: API docs for the @kbn/std plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] -warning: 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. --- 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 657bbdc0e9f4e..1f6b56839503a 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnStdioDevHelpersPluginApi slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/stdio-dev-helpers plugin -date: 2022-08-10 +description: API docs for the @kbn/stdio-dev-helpers plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] -warning: 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. --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 30c0da2b24cb7..d5c5ecd971061 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnStorybookPluginApi slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/storybook plugin -date: 2022-08-10 +description: API docs for the @kbn/storybook plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] -warning: 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. --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 95f4d0a0c39d6..eb842010913da 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnTelemetryToolsPluginApi slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/telemetry-tools plugin -date: 2022-08-10 +description: API docs for the @kbn/telemetry-tools plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] -warning: 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. --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 54dc3daf11382..81468659ef8d1 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnTestPluginApi slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/test plugin -date: 2022-08-10 +description: API docs for the @kbn/test plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] -warning: 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. --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 0555066353d71..218032a0205ce 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnTestJestHelpersPluginApi slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/test-jest-helpers plugin -date: 2022-08-10 +description: API docs for the @kbn/test-jest-helpers plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] -warning: 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. --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 2c50d575b67c2..e04ac886039e9 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnToolingLogPluginApi slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/tooling-log plugin -date: 2022-08-10 +description: API docs for the @kbn/tooling-log plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] -warning: 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. --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_type_summarizer.mdx b/api_docs/kbn_type_summarizer.mdx index 5f9161ddc8121..b93458fcfd6f3 100644 --- a/api_docs/kbn_type_summarizer.mdx +++ b/api_docs/kbn_type_summarizer.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnTypeSummarizerPluginApi slug: /kibana-dev-docs/api/kbn-type-summarizer title: "@kbn/type-summarizer" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/type-summarizer plugin -date: 2022-08-10 +description: API docs for the @kbn/type-summarizer plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer'] -warning: 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. --- import kbnTypeSummarizerObj from './kbn_type_summarizer.devdocs.json'; diff --git a/api_docs/kbn_type_summarizer_core.mdx b/api_docs/kbn_type_summarizer_core.mdx index c2213c413022c..09973a0355c1a 100644 --- a/api_docs/kbn_type_summarizer_core.mdx +++ b/api_docs/kbn_type_summarizer_core.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnTypeSummarizerCorePluginApi slug: /kibana-dev-docs/api/kbn-type-summarizer-core title: "@kbn/type-summarizer-core" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/type-summarizer-core plugin -date: 2022-08-10 +description: API docs for the @kbn/type-summarizer-core plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer-core'] -warning: 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. --- import kbnTypeSummarizerCoreObj from './kbn_type_summarizer_core.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 7401bb90b53be..fc803c91fe227 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnTypedReactRouterConfigPluginApi slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/typed-react-router-config plugin -date: 2022-08-10 +description: API docs for the @kbn/typed-react-router-config plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] -warning: 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. --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 4ad76a0b2cce5..0b8adb42b2510 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnUiThemePluginApi slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/ui-theme plugin -date: 2022-08-10 +description: API docs for the @kbn/ui-theme plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] -warning: 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. --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 315320ec12199..49b6b5b49565d 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnUserProfileComponentsPluginApi slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/user-profile-components plugin -date: 2022-08-10 +description: API docs for the @kbn/user-profile-components plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] -warning: 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. --- 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 b5f9fc136eb24..53d0fa73d9ee0 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnUtilityTypesPluginApi slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/utility-types plugin -date: 2022-08-10 +description: API docs for the @kbn/utility-types plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] -warning: 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. --- 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 820eaf6f617ee..bdecfc73f4ebc 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnUtilityTypesJestPluginApi slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/utility-types-jest plugin -date: 2022-08-10 +description: API docs for the @kbn/utility-types-jest plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] -warning: 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. --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 731bba5581005..b546f76fbb408 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnUtilsPluginApi slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/utils plugin -date: 2022-08-10 +description: API docs for the @kbn/utils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] -warning: 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. --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 02a3897d7c631..7b193b75ddcbc 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKbnYarnLockValidatorPluginApi slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github -summary: API docs for the @kbn/yarn-lock-validator plugin -date: 2022-08-10 +description: API docs for the @kbn/yarn-lock-validator plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] -warning: 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. --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index a8020229ae902..9b707bb0c7dcf 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKibanaOverviewPluginApi slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github -summary: API docs for the kibanaOverview plugin -date: 2022-08-10 +description: API docs for the kibanaOverview plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] -warning: 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. --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index a6184ddccc580..8c7f62aba1414 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKibanaReactPluginApi slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github -summary: API docs for the kibanaReact plugin -date: 2022-08-10 +description: API docs for the kibanaReact plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] -warning: 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. --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index dc2050c831113..e56406b94b4c5 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKibanaUtilsPluginApi slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github -summary: API docs for the kibanaUtils plugin -date: 2022-08-10 +description: API docs for the kibanaUtils plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] -warning: 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. --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 16b4fb5cb5919..48713acc4b59a 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibKubernetesSecurityPluginApi slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github -summary: API docs for the kubernetesSecurity plugin -date: 2022-08-10 +description: API docs for the kubernetesSecurity plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] -warning: 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. --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.devdocs.json b/api_docs/lens.devdocs.json index 7f8e68796b1bc..ec3a260fc858e 100644 --- a/api_docs/lens.devdocs.json +++ b/api_docs/lens.devdocs.json @@ -54,6 +54,14 @@ "docId": "kibEmbeddablePluginApi", "section": "def-public.SelfStyledEmbeddable", "text": "SelfStyledEmbeddable" + }, + ",", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.FilterableEmbeddable", + "text": "FilterableEmbeddable" } ], "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx", @@ -593,6 +601,48 @@ "children": [], "returnComment": [] }, + { + "parentPluginId": "lens", + "id": "def-public.Embeddable.getFilters", + "type": "Function", + "tags": [], + "label": "getFilters", + "description": [ + "\nGets the Lens embeddable's local filters" + ], + "signature": [ + "() => Promise<", + "Filter", + "[]>" + ], + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx", + "deprecated": false, + "children": [], + "returnComment": [ + "Local/panel-level array of filters for Lens embeddable" + ] + }, + { + "parentPluginId": "lens", + "id": "def-public.Embeddable.getQuery", + "type": "Function", + "tags": [], + "label": "getQuery", + "description": [ + "\nGets the Lens embeddable's local query" + ], + "signature": [ + "() => Promise<", + "Query", + " | undefined>" + ], + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx", + "deprecated": false, + "children": [], + "returnComment": [ + "Local/panel-level query for Lens embeddable" + ] + }, { "parentPluginId": "lens", "id": "def-public.Embeddable.getSavedVis", diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 00fb0f1fbca99..79cab2a0c391b 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibLensPluginApi slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github -summary: API docs for the lens plugin -date: 2022-08-10 +description: API docs for the lens plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] -warning: 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. --- import lensObj from './lens.devdocs.json'; @@ -18,7 +21,7 @@ Contact [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 611 | 0 | 529 | 40 | +| 613 | 0 | 529 | 40 | ## Client diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index fe15f80ede6f7..aba6b167cae5a 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibLicenseApiGuardPluginApi slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github -summary: API docs for the licenseApiGuard plugin -date: 2022-08-10 +description: API docs for the licenseApiGuard plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] -warning: 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. --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 4f3ca21b59ae6..812fddd90eaa4 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibLicenseManagementPluginApi slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github -summary: API docs for the licenseManagement plugin -date: 2022-08-10 +description: API docs for the licenseManagement plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] -warning: 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. --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 67265e266c821..5e24095c695cf 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibLicensingPluginApi slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github -summary: API docs for the licensing plugin -date: 2022-08-10 +description: API docs for the licensing plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] -warning: 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. --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 0979a5b708ff8..650ae2c402952 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibListsPluginApi slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github -summary: API docs for the lists plugin -date: 2022-08-10 +description: API docs for the lists plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] -warning: 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. --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 0ed65db0d4f12..bd6c4e20be181 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibManagementPluginApi slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github -summary: API docs for the management plugin -date: 2022-08-10 +description: API docs for the management plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] -warning: 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. --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.devdocs.json b/api_docs/maps.devdocs.json index adf14e6907d43..26f459392cbd9 100644 --- a/api_docs/maps.devdocs.json +++ b/api_docs/maps.devdocs.json @@ -202,7 +202,14 @@ "MapByValueInput", ", ", "MapByReferenceInput", - ">" + ">,", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.FilterableEmbeddable", + "text": "FilterableEmbeddable" + } ], "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", "deprecated": false, @@ -453,6 +460,44 @@ "children": [], "returnComment": [] }, + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.getFilters", + "type": "Function", + "tags": [], + "label": "getFilters", + "description": [ + "\nTODO: Implement this function once https://github.com/elastic/kibana/issues/91282 is resolved" + ], + "signature": [ + "() => Promise" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "children": [], + "returnComment": [ + "[]" + ] + }, + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.getQuery", + "type": "Function", + "tags": [], + "label": "getQuery", + "description": [ + "\nTODO: Implement this function once https://github.com/elastic/kibana/issues/91282 is resolved" + ], + "signature": [ + "() => Promise" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "children": [], + "returnComment": [ + "undefined" + ] + }, { "parentPluginId": "maps", "id": "def-public.MapEmbeddable.supportedTriggers", diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 6829a216fe116..3b773461df244 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibMapsPluginApi slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github -summary: API docs for the maps plugin -date: 2022-08-10 +description: API docs for the maps plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] -warning: 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. --- import mapsObj from './maps.devdocs.json'; @@ -18,7 +21,7 @@ Contact [GIS](https://github.com/orgs/elastic/teams/kibana-gis) for questions re | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 253 | 0 | 252 | 25 | +| 255 | 0 | 252 | 25 | ## Client diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index d7a63f3d34ee7..70e163489b0a0 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibMapsEmsPluginApi slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github -summary: API docs for the mapsEms plugin -date: 2022-08-10 +description: API docs for the mapsEms plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] -warning: 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. --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 9516946b4ce9e..8e72f2881a7b4 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibMlPluginApi slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github -summary: API docs for the ml plugin -date: 2022-08-10 +description: API docs for the ml plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] -warning: 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. --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 92a65a43a0659..35d5950e9aa09 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibMonitoringPluginApi slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github -summary: API docs for the monitoring plugin -date: 2022-08-10 +description: API docs for the monitoring plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] -warning: 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. --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index 164e2cf2e4552..99444b3ab8c4f 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibMonitoringCollectionPluginApi slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github -summary: API docs for the monitoringCollection plugin -date: 2022-08-10 +description: API docs for the monitoringCollection plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] -warning: 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. --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 88649fac25726..3e6e703b2627f 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibNavigationPluginApi slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github -summary: API docs for the navigation plugin -date: 2022-08-10 +description: API docs for the navigation plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] -warning: 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. --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index e3d0f4030217b..4c27826c7d70d 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibNewsfeedPluginApi slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github -summary: API docs for the newsfeed plugin -date: 2022-08-10 +description: API docs for the newsfeed plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] -warning: 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. --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 2fef46534e32c..beb1f8ed4ce00 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibObservabilityPluginApi slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github -summary: API docs for the observability plugin -date: 2022-08-10 +description: API docs for the observability plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] -warning: 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. --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 0662d95a4578d..932943299b4d5 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibOsqueryPluginApi slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github -summary: API docs for the osquery plugin -date: 2022-08-10 +description: API docs for the osquery plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] -warning: 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. --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 8739896158d98..5edc8ff33896b 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -1,28 +1,31 @@ --- +#### +#### 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: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory -summary: Directory of public APIs available through plugins or packages. -date: 2022-08-10 +description: Directory of public APIs available through plugins or packages. +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana'] -warning: 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. --- ### Overall stats -| Count | Plugins or Packages with a
public API | Number of teams | +| Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| | 401 | 335 | 36 | ### Public API health stats -| API Count | Any Count | Missing comments | Missing exports | +| API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 28869 | 175 | 19603 | 911 | +| 28894 | 175 | 19605 | 911 | ## Plugin Directory -| Plugin name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | +| Plugin name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 266 | 0 | 261 | 19 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 23 | 0 | 19 | 1 | @@ -41,7 +44,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 2524 | 2 | 296 | 6 | | crossClusterReplication | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | | | [Fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 102 | 0 | 83 | 1 | -| | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 143 | 0 | 141 | 12 | +| | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 146 | 0 | 141 | 12 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 52 | 0 | 51 | 0 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | 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. | 3100 | 34 | 2421 | 22 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | This plugin provides the ability to create data views via a modal flyout inside Kibana apps | 15 | 0 | 7 | 0 | @@ -52,7 +55,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 10 | 0 | 8 | 2 | | | [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 84 | 0 | 68 | 7 | | | [Data Discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 37 | 0 | 35 | 2 | -| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds embeddables service to Kibana | 507 | 0 | 413 | 4 | +| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds embeddables service to Kibana | 512 | 0 | 413 | 4 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Extends embeddable plugin with more functionality | 14 | 0 | 14 | 0 | | | [Platform Security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 51 | 0 | 42 | 0 | | | [Enterprise Search](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Adds dashboards for discovering and managing Enterprise Search products. | 6 | 0 | 6 | 0 | @@ -95,14 +98,14 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | kibanaUsageCollection | [Kibana Telemetry](https://github.com/orgs/elastic/teams/kibana-telemetry) | - | 0 | 0 | 0 | 0 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 615 | 3 | 420 | 9 | | | [Security Team](https://github.com/orgs/elastic/teams/security-team) | - | 3 | 0 | 3 | 1 | -| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Visualization editor allowing to quickly and easily configure compelling visualizations to use on dashboards and canvas workpads. Exposes components to embed visualizations and link into the Lens editor from within other apps in Kibana. | 611 | 0 | 529 | 40 | +| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Visualization editor allowing to quickly and easily configure compelling visualizations to use on dashboards and canvas workpads. Exposes components to embed visualizations and link into the Lens editor from within other apps in Kibana. | 613 | 0 | 529 | 40 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 8 | 0 | 8 | 0 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 3 | 0 | 3 | 0 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 117 | 0 | 42 | 10 | | | [Security detections response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 202 | 0 | 90 | 49 | | logstash | [Logstash](https://github.com/orgs/elastic/teams/logstash) | - | 0 | 0 | 0 | 0 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | - | 41 | 0 | 41 | 6 | -| | [GIS](https://github.com/orgs/elastic/teams/kibana-gis) | - | 253 | 0 | 252 | 25 | +| | [GIS](https://github.com/orgs/elastic/teams/kibana-gis) | - | 255 | 0 | 252 | 25 | | | [GIS](https://github.com/orgs/elastic/teams/kibana-gis) | - | 67 | 0 | 67 | 0 | | | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the machine learning features provided by Elastic. | 244 | 9 | 71 | 30 | | | [Stack Monitoring](https://github.com/orgs/elastic/teams/stack-monitoring-ui) | - | 11 | 0 | 9 | 1 | @@ -146,7 +149,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Response Ops](https://github.com/orgs/elastic/teams/response-ops) | - | 428 | 0 | 407 | 46 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds UI Actions service to Kibana | 130 | 0 | 91 | 11 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Extends UI Actions plugin with more functionality | 205 | 0 | 142 | 9 | -| | [Unified Search](https://github.com/orgs/elastic/teams/kibana-app-services) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 97 | 2 | 84 | 16 | +| | [Unified Search](https://github.com/orgs/elastic/teams/kibana-app-services) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 108 | 2 | 84 | 16 | | upgradeAssistant | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | | urlDrilldown | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds drilldown implementations to Kibana | 0 | 0 | 0 | 0 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | - | 12 | 0 | 12 | 0 | @@ -170,7 +173,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex ## Package Directory -| Package name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | +| Package name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| | | [Owner missing] | Elastic APM trace data generator | 74 | 0 | 74 | 11 | | | [Owner missing] | - | 11 | 5 | 11 | 0 | @@ -338,7 +341,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Owner missing] | io ts utilities and types to be shared with plugins from the security solution project | 458 | 1 | 446 | 0 | | | [Owner missing] | io ts utilities and types to be shared with plugins from the security solution project | 61 | 0 | 32 | 0 | | | [Owner missing] | io ts utilities and types to be shared with plugins from the security solution project | 28 | 0 | 21 | 0 | -| | [Owner missing] | security solution list REST API | 59 | 0 | 58 | 0 | +| | [Owner missing] | security solution list REST API | 61 | 0 | 60 | 0 | | | [Owner missing] | security solution list constants to use across plugins such lists, security_solution, cases, etc... | 26 | 0 | 12 | 0 | | | [Owner missing] | Security solution list ReactJS hooks | 56 | 0 | 44 | 0 | | | [Owner missing] | security solution list utilities | 235 | 0 | 187 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 3aa8398b740c4..4941daae32dd9 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibPresentationUtilPluginApi slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github -summary: API docs for the presentationUtil plugin -date: 2022-08-10 +description: API docs for the presentationUtil plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] -warning: 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. --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 6f0cd82e1a78e..8d4396be9bf19 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibRemoteClustersPluginApi slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github -summary: API docs for the remoteClusters plugin -date: 2022-08-10 +description: API docs for the remoteClusters plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] -warning: 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. --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 5afca34982f27..6aee86e0fdf60 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibReportingPluginApi slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github -summary: API docs for the reporting plugin -date: 2022-08-10 +description: API docs for the reporting plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] -warning: 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. --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index bc77cfd91dcbb..023133740bb35 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibRollupPluginApi slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github -summary: API docs for the rollup plugin -date: 2022-08-10 +description: API docs for the rollup plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] -warning: 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. --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 6c8d83bc98738..932775d59d1f8 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibRuleRegistryPluginApi slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github -summary: API docs for the ruleRegistry plugin -date: 2022-08-10 +description: API docs for the ruleRegistry plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] -warning: 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. --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index a5ee7c49d1451..c8f4bbb7cfd54 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibRuntimeFieldsPluginApi slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github -summary: API docs for the runtimeFields plugin -date: 2022-08-10 +description: API docs for the runtimeFields plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] -warning: 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. --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 130c38292d30b..2a45acec975d7 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibSavedObjectsPluginApi slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github -summary: API docs for the savedObjects plugin -date: 2022-08-10 +description: API docs for the savedObjects plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] -warning: 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. --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 668ccd3daae20..5aedc341f2015 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibSavedObjectsManagementPluginApi slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github -summary: API docs for the savedObjectsManagement plugin -date: 2022-08-10 +description: API docs for the savedObjectsManagement plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] -warning: 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. --- 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 4685825e7a6cd..fcdc28e190291 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibSavedObjectsTaggingPluginApi slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github -summary: API docs for the savedObjectsTagging plugin -date: 2022-08-10 +description: API docs for the savedObjectsTagging plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] -warning: 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. --- 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 76f90c0802efc..b20c324fc1752 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibSavedObjectsTaggingOssPluginApi slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github -summary: API docs for the savedObjectsTaggingOss plugin -date: 2022-08-10 +description: API docs for the savedObjectsTaggingOss plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] -warning: 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. --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index 16d10745203e9..33de999c00487 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibScreenshotModePluginApi slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github -summary: API docs for the screenshotMode plugin -date: 2022-08-10 +description: API docs for the screenshotMode plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] -warning: 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. --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 86e79999b384d..8d5a646481901 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibScreenshottingPluginApi slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github -summary: API docs for the screenshotting plugin -date: 2022-08-10 +description: API docs for the screenshotting plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] -warning: 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. --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index f8511044a4fca..706e8aac91546 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibSecurityPluginApi slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github -summary: API docs for the security plugin -date: 2022-08-10 +description: API docs for the security plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] -warning: 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. --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index c7482d78f41f7..21c98900020f0 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibSecuritySolutionPluginApi slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github -summary: API docs for the securitySolution plugin -date: 2022-08-10 +description: API docs for the securitySolution plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] -warning: 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. --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 4ca297f594c7a..68180e9038995 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibSessionViewPluginApi slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github -summary: API docs for the sessionView plugin -date: 2022-08-10 +description: API docs for the sessionView plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] -warning: 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. --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index b753451bb6e4b..b573d28030c72 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibSharePluginApi slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github -summary: API docs for the share plugin -date: 2022-08-10 +description: API docs for the share plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] -warning: 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. --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/shared_u_x.mdx b/api_docs/shared_u_x.mdx index 8a6d39f05d426..d6cfa15485188 100644 --- a/api_docs/shared_u_x.mdx +++ b/api_docs/shared_u_x.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibSharedUXPluginApi slug: /kibana-dev-docs/api/sharedUX title: "sharedUX" image: https://source.unsplash.com/400x175/?github -summary: API docs for the sharedUX plugin -date: 2022-08-10 +description: API docs for the sharedUX plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sharedUX'] -warning: 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. --- import sharedUXObj from './shared_u_x.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index caeac63ee507a..d3d5e104f4526 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibSnapshotRestorePluginApi slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github -summary: API docs for the snapshotRestore plugin -date: 2022-08-10 +description: API docs for the snapshotRestore plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] -warning: 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. --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index f5ebf550fc41b..9038d2eacc908 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibSpacesPluginApi slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github -summary: API docs for the spaces plugin -date: 2022-08-10 +description: API docs for the spaces plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] -warning: 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. --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 10fa21f771ae1..dcdba1552f10a 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibStackAlertsPluginApi slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github -summary: API docs for the stackAlerts plugin -date: 2022-08-10 +description: API docs for the stackAlerts plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] -warning: 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. --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index de967da0a364b..ce359ca4fd7b9 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibTaskManagerPluginApi slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github -summary: API docs for the taskManager plugin -date: 2022-08-10 +description: API docs for the taskManager plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] -warning: 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. --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index c60df09c546fb..89a01c83122b2 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibTelemetryPluginApi slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github -summary: API docs for the telemetry plugin -date: 2022-08-10 +description: API docs for the telemetry plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] -warning: 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. --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index cf79719b39296..865e7be0c9551 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibTelemetryCollectionManagerPluginApi slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github -summary: API docs for the telemetryCollectionManager plugin -date: 2022-08-10 +description: API docs for the telemetryCollectionManager plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] -warning: 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. --- 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 ecd2f8c6086e3..b4fa569dbc78b 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibTelemetryCollectionXpackPluginApi slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github -summary: API docs for the telemetryCollectionXpack plugin -date: 2022-08-10 +description: API docs for the telemetryCollectionXpack plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] -warning: 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. --- 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 1a53259103f89..486de1a4c8432 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibTelemetryManagementSectionPluginApi slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github -summary: API docs for the telemetryManagementSection plugin -date: 2022-08-10 +description: API docs for the telemetryManagementSection plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] -warning: 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. --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index cfc255dfe62c6..f147d268825a2 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibThreatIntelligencePluginApi slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github -summary: API docs for the threatIntelligence plugin -date: 2022-08-10 +description: API docs for the threatIntelligence plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] -warning: 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. --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 85bb399795ea7..b955620c88ff3 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibTimelinesPluginApi slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github -summary: API docs for the timelines plugin -date: 2022-08-10 +description: API docs for the timelines plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] -warning: 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. --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 0a2bf3dbb972d..5f6c713dc50d3 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibTransformPluginApi slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github -summary: API docs for the transform plugin -date: 2022-08-10 +description: API docs for the transform plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] -warning: 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. --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index d8516da231894..d55719923df33 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibTriggersActionsUiPluginApi slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github -summary: API docs for the triggersActionsUi plugin -date: 2022-08-10 +description: API docs for the triggersActionsUi plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] -warning: 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. --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 0af35abc19f93..375718734c27e 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibUiActionsPluginApi slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github -summary: API docs for the uiActions plugin -date: 2022-08-10 +description: API docs for the uiActions plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] -warning: 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. --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 922a3ab74839d..e651863ed5962 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibUiActionsEnhancedPluginApi slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github -summary: API docs for the uiActionsEnhanced plugin -date: 2022-08-10 +description: API docs for the uiActionsEnhanced plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] -warning: 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. --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_search.devdocs.json b/api_docs/unified_search.devdocs.json index 42f2de80c7812..756a40fd1398a 100644 --- a/api_docs/unified_search.devdocs.json +++ b/api_docs/unified_search.devdocs.json @@ -75,7 +75,9 @@ "type": "Function", "tags": [], "label": "FilterItem", - "description": [], + "description": [ + "\nRenders a single filter pill" + ], "signature": [ "(props: ", "FilterItemProps", @@ -102,13 +104,80 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.FilterItems", + "type": "Function", + "tags": [], + "label": "FilterItems", + "description": [ + "\nRenders a group of filter pills" + ], + "signature": [ + "(props: Pick<", + { + "pluginId": "unifiedSearch", + "scope": "public", + "docId": "kibUnifiedSearchPluginApi", + "section": "def-public.FilterItemsProps", + "text": "FilterItemsProps" + }, + ", \"filters\" | \"indexPatterns\" | \"readOnly\" | \"onFiltersUpdated\" | \"hiddenPanelOptions\" | \"timeRangeForSuggestionsOverride\"> & React.RefAttributes, any, any>>) => JSX.Element" + ], + "path": "src/plugins/unified_search/public/filter_bar/index.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-public.FilterItems.$1", + "type": "CompoundType", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "unifiedSearch", + "scope": "public", + "docId": "kibUnifiedSearchPluginApi", + "section": "def-public.FilterItemsProps", + "text": "FilterItemsProps" + }, + ", \"filters\" | \"indexPatterns\" | \"readOnly\" | \"onFiltersUpdated\" | \"hiddenPanelOptions\" | \"timeRangeForSuggestionsOverride\"> & React.RefAttributes, any, any>>" + ], + "path": "src/plugins/unified_search/public/filter_bar/index.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "unifiedSearch", "id": "def-public.FilterLabel", "type": "Function", "tags": [], "label": "FilterLabel", - "description": [], + "description": [ + "\nRenders the label for a single filter pill" + ], "signature": [ "(props: ", "FilterLabelProps", @@ -555,6 +624,155 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.FilterItemsProps", + "type": "Interface", + "tags": [], + "label": "FilterItemsProps", + "description": [ + "\nProperties for the filter items component, which will render a single filter pill for every filter that is sent in\nas part of the `Filter[]` property." + ], + "path": "src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-public.FilterItemsProps.filters", + "type": "Array", + "tags": [], + "label": "filters", + "description": [ + "Array of filters that will be rendered as filter pills" + ], + "signature": [ + "Filter", + "[]" + ], + "path": "src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.FilterItemsProps.readOnly", + "type": "CompoundType", + "tags": [], + "label": "readOnly", + "description": [ + "Optional property that controls whether or not clicking the filter pill opens a popover *and* whether\nor not the `x` button to remove the filter is rendered." + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.FilterItemsProps.onFiltersUpdated", + "type": "Function", + "tags": [], + "label": "onFiltersUpdated", + "description": [ + "If not read only, this is called whenever a filter is removed and/or updated" + ], + "signature": [ + "((filters: ", + "Filter", + "[]) => void) | undefined" + ], + "path": "src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "unifiedSearch", + "id": "def-public.FilterItemsProps.onFiltersUpdated.$1", + "type": "Array", + "tags": [], + "label": "filters", + "description": [], + "signature": [ + "Filter", + "[]" + ], + "path": "src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.FilterItemsProps.indexPatterns", + "type": "Array", + "tags": [], + "label": "indexPatterns", + "description": [ + "A list of all dataviews that are used for the filters" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + "[]" + ], + "path": "src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.FilterItemsProps.intl", + "type": "Object", + "tags": [], + "label": "intl", + "description": [ + "This is injected by the lazer loader" + ], + "signature": [ + "ReactIntl.InjectedIntl" + ], + "path": "src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.FilterItemsProps.timeRangeForSuggestionsOverride", + "type": "CompoundType", + "tags": [], + "label": "timeRangeForSuggestionsOverride", + "description": [ + "Controls whether or not filter suggestions are influenced by the global time" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx", + "deprecated": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.FilterItemsProps.hiddenPanelOptions", + "type": "Array", + "tags": [], + "label": "hiddenPanelOptions", + "description": [ + "Array of panel options that controls the styling of each filter pill" + ], + "signature": [ + "FilterPanelOption", + "[] | undefined" + ], + "path": "src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "unifiedSearch", "id": "def-public.QueryStringInputProps", diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 97b843cc9dde3..a5328347a3625 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibUnifiedSearchPluginApi slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github -summary: API docs for the unifiedSearch plugin -date: 2022-08-10 +description: API docs for the unifiedSearch plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] -warning: 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. --- import unifiedSearchObj from './unified_search.devdocs.json'; @@ -18,7 +21,7 @@ Contact [Unified Search](https://github.com/orgs/elastic/teams/kibana-app-servic | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 97 | 2 | 84 | 16 | +| 108 | 2 | 84 | 16 | ## Client diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index e412a8083cf9a..d6b1410085d75 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibUnifiedSearchAutocompletePluginApi slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github -summary: API docs for the unifiedSearch.autocomplete plugin -date: 2022-08-10 +description: API docs for the unifiedSearch.autocomplete plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] -warning: 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. --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; @@ -18,7 +21,7 @@ Contact [Unified Search](https://github.com/orgs/elastic/teams/kibana-app-servic | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 97 | 2 | 84 | 16 | +| 108 | 2 | 84 | 16 | ## Client diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index cc52631ac135a..f1422e2da619e 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibUrlForwardingPluginApi slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github -summary: API docs for the urlForwarding plugin -date: 2022-08-10 +description: API docs for the urlForwarding plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] -warning: 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. --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index e128db53581e2..8c0738785659a 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibUsageCollectionPluginApi slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github -summary: API docs for the usageCollection plugin -date: 2022-08-10 +description: API docs for the usageCollection plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] -warning: 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. --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index b6ffdcec694e3..7b4f36876f174 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibUxPluginApi slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github -summary: API docs for the ux plugin -date: 2022-08-10 +description: API docs for the ux plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] -warning: 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. --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 7c22d241bd58e..d1ca9c1799349 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibVisDefaultEditorPluginApi slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github -summary: API docs for the visDefaultEditor plugin -date: 2022-08-10 +description: API docs for the visDefaultEditor plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] -warning: 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. --- 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 9b11dd3d5a4c7..28f78831cc229 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibVisTypeGaugePluginApi slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github -summary: API docs for the visTypeGauge plugin -date: 2022-08-10 +description: API docs for the visTypeGauge plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] -warning: 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. --- 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 74c7d1b717ada..50e7e19e26736 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibVisTypeHeatmapPluginApi slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github -summary: API docs for the visTypeHeatmap plugin -date: 2022-08-10 +description: API docs for the visTypeHeatmap plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] -warning: 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. --- 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 f71e3f5648562..dc67a737d1e99 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibVisTypePiePluginApi slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github -summary: API docs for the visTypePie plugin -date: 2022-08-10 +description: API docs for the visTypePie plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] -warning: 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. --- 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 41a117811917b..f5d1e470e712b 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibVisTypeTablePluginApi slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github -summary: API docs for the visTypeTable plugin -date: 2022-08-10 +description: API docs for the visTypeTable plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] -warning: 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. --- 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 36444e9743320..078ba6536f657 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibVisTypeTimelionPluginApi slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github -summary: API docs for the visTypeTimelion plugin -date: 2022-08-10 +description: API docs for the visTypeTimelion plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] -warning: 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. --- 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 e9a30d0942595..9d18d6a2cb129 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibVisTypeTimeseriesPluginApi slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github -summary: API docs for the visTypeTimeseries plugin -date: 2022-08-10 +description: API docs for the visTypeTimeseries plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] -warning: 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. --- 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 f30de804741fc..3b572d668e70e 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibVisTypeVegaPluginApi slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github -summary: API docs for the visTypeVega plugin -date: 2022-08-10 +description: API docs for the visTypeVega plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] -warning: 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. --- 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 28ed93c1531bf..f7cd6b727ef71 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibVisTypeVislibPluginApi slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github -summary: API docs for the visTypeVislib plugin -date: 2022-08-10 +description: API docs for the visTypeVislib plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] -warning: 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. --- 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 8f0bc09bcb539..45160066493f5 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibVisTypeXyPluginApi slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github -summary: API docs for the visTypeXy plugin -date: 2022-08-10 +description: API docs for the visTypeXy plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] -warning: 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. --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.devdocs.json b/api_docs/visualizations.devdocs.json index 62b7651579dc5..4752d972ce270 100644 --- a/api_docs/visualizations.devdocs.json +++ b/api_docs/visualizations.devdocs.json @@ -5157,7 +5157,11 @@ "section": "def-public.ContainerOutput", "text": "ContainerOutput" }, - "> | undefined; updateInput: (changes: Partial<", + "> | undefined; getQuery: () => Promise<", + "Query", + " | ", + "AggregateQuery", + " | undefined>; updateInput: (changes: Partial<", { "pluginId": "visualizations", "scope": "public", @@ -5165,7 +5169,9 @@ "section": "def-public.VisualizeInput", "text": "VisualizeInput" }, - ">) => void; reportsEmbeddableLoad: () => boolean; getInspectorAdapters: () => ", + ">) => void; reportsEmbeddableLoad: () => boolean; getFilters: () => Promise<", + "Filter", + "[]>; getInspectorAdapters: () => ", { "pluginId": "inspector", "scope": "common", diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 12a8c58e18e10..77bc2d77102e1 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibVisualizationsPluginApi slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github -summary: API docs for the visualizations plugin -date: 2022-08-10 +description: API docs for the visualizations plugin +date: 2022-08-11 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] -warning: 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. --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/dev_docs/contributing/best_practices.mdx b/dev_docs/contributing/best_practices.mdx index 3e7fca5539d77..16c66417b89c1 100644 --- a/dev_docs/contributing/best_practices.mdx +++ b/dev_docs/contributing/best_practices.mdx @@ -2,7 +2,7 @@ id: kibBestPractices slug: /kibana-dev-docs/contributing/best-practices title: Best practices -summary: Best practices to follow when building a Kibana plugin. +description: Best practices to follow when building a Kibana plugin. date: 2021-03-17 tags: ['kibana', 'onboarding', 'dev', 'architecture'] --- diff --git a/dev_docs/contributing/code_walkthrough.mdx b/dev_docs/contributing/code_walkthrough.mdx index 74995c246503c..bae394887c20e 100644 --- a/dev_docs/contributing/code_walkthrough.mdx +++ b/dev_docs/contributing/code_walkthrough.mdx @@ -2,7 +2,7 @@ id: kibRepoStructure slug: /kibana-dev-docs/contributing/repo-structure title: Repository structure -summary: High level walk-through of our repository structure. +description: High level walk-through of our repository structure. date: 2021-10-07 tags: ['contributor', 'dev', 'github', 'getting started', 'onboarding', 'kibana'] --- diff --git a/dev_docs/contributing/dev_principles.mdx b/dev_docs/contributing/dev_principles.mdx index 0b8f68d232367..cbea79e658684 100644 --- a/dev_docs/contributing/dev_principles.mdx +++ b/dev_docs/contributing/dev_principles.mdx @@ -2,7 +2,7 @@ id: kibDevPrinciples slug: /kibana-dev-docs/contributing/dev-principles title: Developer principles -summary: Follow our development principles to help keep our code base stable, maintainable and scalable. +description: Follow our development principles to help keep our code base stable, maintainable and scalable. date: 2021-03-04 tags: ['kibana', 'onboarding', 'dev', 'architecture'] --- diff --git a/dev_docs/contributing/documentation.mdx b/dev_docs/contributing/documentation.mdx index caf2f439548bc..50cc0c8761400 100644 --- a/dev_docs/contributing/documentation.mdx +++ b/dev_docs/contributing/documentation.mdx @@ -2,7 +2,7 @@ id: kibDocumentation slug: /kibana-dev-docs/contributing/documentation title: Documentation -summary: Writing documentation during development +description: Writing documentation during development date: 2022-03-01 tags: ['kibana', 'onboarding', 'dev'] --- diff --git a/dev_docs/contributing/how_we_use_github.mdx b/dev_docs/contributing/how_we_use_github.mdx index 339eebc89197b..d427ba7d44f2e 100644 --- a/dev_docs/contributing/how_we_use_github.mdx +++ b/dev_docs/contributing/how_we_use_github.mdx @@ -2,7 +2,7 @@ id: kibGitHub slug: /kibana-dev-docs/contributing/github title: How we use Github -summary: Forking, branching, committing and using labels in the Kibana GitHub repo +description: Forking, branching, committing and using labels in the Kibana GitHub repo date: 2021-09-16 tags: ['contributor', 'dev', 'github', 'getting started', 'onboarding', 'kibana'] --- diff --git a/dev_docs/contributing/standards.mdx b/dev_docs/contributing/standards.mdx index cef9199aee924..1bb54ada1509c 100644 --- a/dev_docs/contributing/standards.mdx +++ b/dev_docs/contributing/standards.mdx @@ -2,7 +2,7 @@ id: kibStandards slug: /kibana-dev-docs/standards title: Standards and guidelines -summary: Standards and guidelines we expect every Kibana developer to abide by +description: Standards and guidelines we expect every Kibana developer to abide by date: 2021-09-28 tags: ['contributor', 'dev', 'github', 'getting started', 'onboarding', 'kibana'] --- diff --git a/dev_docs/getting_started/dev_welcome.mdx b/dev_docs/getting_started/dev_welcome.mdx index 4080e0850b946..4f5115af6b731 100644 --- a/dev_docs/getting_started/dev_welcome.mdx +++ b/dev_docs/getting_started/dev_welcome.mdx @@ -2,7 +2,7 @@ id: kibDevDocsWelcome slug: /kibana-dev-docs/getting-started/welcome title: Welcome -summary: Build custom solutions and applications on top of Kibana. +description: Build custom solutions and applications on top of Kibana. date: 2021-01-02 tags: ['kibana', 'dev', 'contributor'] --- diff --git a/dev_docs/getting_started/hello_world_plugin.mdx b/dev_docs/getting_started/hello_world_plugin.mdx index 8fa4ea4316129..08fd7e4a721c2 100644 --- a/dev_docs/getting_started/hello_world_plugin.mdx +++ b/dev_docs/getting_started/hello_world_plugin.mdx @@ -2,7 +2,7 @@ id: kibHelloWorldApp slug: /kibana-dev-docs/getting-started/hello-world-app title: Hello World -summary: Build a very basic plugin that registers an application that says "Hello World!". +description: Build a very basic plugin that registers an application that says "Hello World!". date: 2021-08-03 tags: ['kibana', 'dev', 'contributor', 'tutorials'] --- diff --git a/dev_docs/getting_started/setting_up_a_development_env.mdx b/dev_docs/getting_started/setting_up_a_development_env.mdx index bbbb356d9ea08..8599adf0e53b3 100644 --- a/dev_docs/getting_started/setting_up_a_development_env.mdx +++ b/dev_docs/getting_started/setting_up_a_development_env.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialSetupDevEnv slug: /kibana-dev-docs/getting-started/setup-dev-env title: Set up a Development Environment -summary: Learn how to setup a development environment for contributing to the Kibana repository +description: Learn how to setup a development environment for contributing to the Kibana repository date: 2022-07-07 tags: ['kibana', 'onboarding', 'dev', 'architecture', 'setup'] --- diff --git a/dev_docs/getting_started/troubleshooting.mdx b/dev_docs/getting_started/troubleshooting.mdx index b224a3200eefb..cb0e1bad1bef5 100644 --- a/dev_docs/getting_started/troubleshooting.mdx +++ b/dev_docs/getting_started/troubleshooting.mdx @@ -2,7 +2,7 @@ id: kibTroubleshooting slug: /kibana-dev-docs/getting-started/troubleshooting title: Troubleshooting -summary: A collection of tips for working around strange issues. +description: A collection of tips for working around strange issues. date: 2021-09-08 tags: ['kibana', 'onboarding', 'dev', 'troubleshooting'] --- diff --git a/dev_docs/key_concepts/anatomy_of_a_plugin.mdx b/dev_docs/key_concepts/anatomy_of_a_plugin.mdx index f99c41ff18d07..a126477ea4c2f 100644 --- a/dev_docs/key_concepts/anatomy_of_a_plugin.mdx +++ b/dev_docs/key_concepts/anatomy_of_a_plugin.mdx @@ -2,7 +2,7 @@ id: kibDevAnatomyOfAPlugin slug: /kibana-dev-docs/key-concepts/anatomy-of-a-plugin title: Anatomy of a plugin -summary: Anatomy of a Kibana plugin. +description: Anatomy of a Kibana plugin. date: 2021-08-03 tags: ['kibana', 'onboarding', 'dev'] --- diff --git a/dev_docs/key_concepts/audit_logging.mdx b/dev_docs/key_concepts/audit_logging.mdx index 6ec4de320d582..5546e52bf5dd8 100644 --- a/dev_docs/key_concepts/audit_logging.mdx +++ b/dev_docs/key_concepts/audit_logging.mdx @@ -2,7 +2,7 @@ id: kibAuditLogging slug: /kibana-dev-docs/key-concepts/audit-logging title: Audit Logging -summary: Audit Logging +description: Audit Logging date: 2022-06-15 tags: ['kibana', 'onboarding', 'dev', 'logging', 'audit'] --- diff --git a/dev_docs/key_concepts/building_blocks.mdx b/dev_docs/key_concepts/building_blocks.mdx index aeb2d2be7d6c9..5a7b79b93debf 100644 --- a/dev_docs/key_concepts/building_blocks.mdx +++ b/dev_docs/key_concepts/building_blocks.mdx @@ -2,7 +2,7 @@ id: kibBuildingBlocks slug: /kibana-dev-docs/key-concepts/building-blocks title: Building blocks -summary: Consider these building blocks when developing your plugin. +description: Consider these building blocks when developing your plugin. date: 2021-02-24 tags: ['kibana', 'onboarding', 'dev', 'architecture'] --- diff --git a/dev_docs/key_concepts/data_views.mdx b/dev_docs/key_concepts/data_views.mdx index 6a0c2a701fae2..59853f8e0c67e 100644 --- a/dev_docs/key_concepts/data_views.mdx +++ b/dev_docs/key_concepts/data_views.mdx @@ -2,7 +2,7 @@ id: kibDataViewsKeyConcepts slug: /kibana-dev-docs/key-concepts/data-view-intro title: Data Views -summary: Data views are the central method of defining queryable data sets in Kibana +description: Data views are the central method of defining queryable data sets in Kibana date: 2021-08-11 tags: ['kibana', 'dev', 'contributor', 'api docs'] --- diff --git a/dev_docs/key_concepts/embeddables.mdx b/dev_docs/key_concepts/embeddables.mdx index 2d5e14b7d4669..f1a2bea5b9b12 100644 --- a/dev_docs/key_concepts/embeddables.mdx +++ b/dev_docs/key_concepts/embeddables.mdx @@ -2,7 +2,7 @@ id: kibDevDocsEmbeddables slug: /kibana-dev-docs/key-concepts/embeddables title: Embeddables -summary: Embeddables provide a way to expose a reusable widget. +description: Embeddables provide a way to expose a reusable widget. date: 2022-07-27 tags: ['kibana', 'dev', 'contributor', 'api docs'] --- diff --git a/dev_docs/key_concepts/kibana_platform_plugin_intro.mdx b/dev_docs/key_concepts/kibana_platform_plugin_intro.mdx index 417d6e4983d4f..98de7d082bc55 100644 --- a/dev_docs/key_concepts/kibana_platform_plugin_intro.mdx +++ b/dev_docs/key_concepts/kibana_platform_plugin_intro.mdx @@ -2,7 +2,7 @@ id: kibPlatformIntro slug: /kibana-dev-docs/key-concepts/platform-intro title: Plugins, packages, and the platform -summary: An introduction to the Kibana platform and how to use it to build a plugin. +description: An introduction to the Kibana platform and how to use it to build a plugin. date: 2021-01-06 tags: ['kibana', 'onboarding', 'dev', 'architecture'] --- diff --git a/dev_docs/key_concepts/navigation.mdx b/dev_docs/key_concepts/navigation.mdx index 6f3a5e737f91f..e383f21187d41 100644 --- a/dev_docs/key_concepts/navigation.mdx +++ b/dev_docs/key_concepts/navigation.mdx @@ -2,7 +2,7 @@ id: kibDevKeyConceptsNavigation slug: /kibana-dev-docs/routing-and-navigation title: Routing, Navigation and URL -summary: Learn best practices about navigation inside Kibana +description: Learn best practices about navigation inside Kibana date: 2021-10-05 tags: ['kibana', 'dev', 'architecture', 'contributor'] --- diff --git a/dev_docs/key_concepts/performance.mdx b/dev_docs/key_concepts/performance.mdx index c57630f508dcd..4d808ed402d32 100644 --- a/dev_docs/key_concepts/performance.mdx +++ b/dev_docs/key_concepts/performance.mdx @@ -2,7 +2,7 @@ id: kibDevPerformance slug: /kibana-dev-docs/key-concepts/performance title: Performance -summary: Performance tips for Kibana development. +description: Performance tips for Kibana development. date: 2021-12-03 tags: ['kibana', 'onboarding', 'dev', 'performance'] --- diff --git a/dev_docs/key_concepts/persistable_state.mdx b/dev_docs/key_concepts/persistable_state.mdx index 25d3f37a86be4..75dae5447ffa0 100644 --- a/dev_docs/key_concepts/persistable_state.mdx +++ b/dev_docs/key_concepts/persistable_state.mdx @@ -2,7 +2,7 @@ id: kibDevDocsPersistableStateIntro slug: /kibana-dev-docs/key-concepts/persistable-state-intro title: Persistable State -summary: Persitable state is a key concept to understand when building a Kibana plugin. +description: Persitable state is a key concept to understand when building a Kibana plugin. date: 2021-02-02 tags: ['kibana', 'dev', 'contributor', 'api docs'] --- diff --git a/dev_docs/key_concepts/saved_objects.mdx b/dev_docs/key_concepts/saved_objects.mdx index 159e6e90a4037..ee974267c0bb9 100644 --- a/dev_docs/key_concepts/saved_objects.mdx +++ b/dev_docs/key_concepts/saved_objects.mdx @@ -2,7 +2,7 @@ id: kibDevDocsSavedObjectsIntro slug: /kibana-dev-docs/key-concepts/saved-objects-intro title: Saved Objects -summary: Saved Objects are a key concept to understand when building a Kibana plugin. +description: Saved Objects are a key concept to understand when building a Kibana plugin. date: 2021-02-02 tags: ['kibana', 'dev', 'contributor', 'api docs'] --- diff --git a/dev_docs/tutorials/advanced_settings.mdx b/dev_docs/tutorials/advanced_settings.mdx index b0c12ad5e5edd..d14da92edc93c 100644 --- a/dev_docs/tutorials/advanced_settings.mdx +++ b/dev_docs/tutorials/advanced_settings.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialAdvancedSettings slug: /kibana-dev-docs/tutorials/advanced-settings title: How to register a new advanced setting -summary: Learn how to add and use a new advanced setting +description: Learn how to add and use a new advanced setting date: 2022-02-07 tags: ['kibana','onboarding', 'dev', 'architecture', 'tutorials'] --- diff --git a/dev_docs/tutorials/building_a_kibana_distributable.mdx b/dev_docs/tutorials/building_a_kibana_distributable.mdx index e73481058ab35..d95f6246434b9 100644 --- a/dev_docs/tutorials/building_a_kibana_distributable.mdx +++ b/dev_docs/tutorials/building_a_kibana_distributable.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialBuildingDistributable slug: /kibana-dev-docs/tutorials/building-distributable title: Building a Kibana distributable -summary: Learn how to build a Kibana distributable +description: Learn how to build a Kibana distributable date: 2021-05-10 tags: ['kibana', 'onboarding', 'dev', 'tutorials', 'build', 'distributable'] --- diff --git a/dev_docs/tutorials/ci.mdx b/dev_docs/tutorials/ci.mdx index 32e5a8503a22c..6598ed9855dc0 100644 --- a/dev_docs/tutorials/ci.mdx +++ b/dev_docs/tutorials/ci.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialCI slug: /kibana-dev-docs/tutorials/ci title: CI -summary: CI +description: CI date: 2022-02-03 tags: ['kibana', 'onboarding', 'dev', 'ci'] --- diff --git a/dev_docs/tutorials/data/search.mdx b/dev_docs/tutorials/data/search.mdx index d422eb811b60b..4c64dc0b02164 100644 --- a/dev_docs/tutorials/data/search.mdx +++ b/dev_docs/tutorials/data/search.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialDataSearchAndSessions slug: /kibana-dev-docs/tutorials/data/search-and-sessions title: Kibana data.search Services -summary: Kibana Search Services +description: Kibana Search Services date: 2021-02-10 tags: ['kibana', 'onboarding', 'dev', 'tutorials', 'search', 'sessions', 'search-sessions'] --- diff --git a/dev_docs/tutorials/data_views.mdx b/dev_docs/tutorials/data_views.mdx index eda4b34ac2fd4..51aac0e321692 100644 --- a/dev_docs/tutorials/data_views.mdx +++ b/dev_docs/tutorials/data_views.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialDataViews slug: /kibana-dev-docs/tutorials/data-views title: Data views API -summary: Data views API +description: Data views API date: 2021-08-11 tags: ['kibana', 'onboarding', 'dev', 'architecture'] --- diff --git a/dev_docs/tutorials/debugging.mdx b/dev_docs/tutorials/debugging.mdx index d5d86a9025303..fabd475f88d77 100644 --- a/dev_docs/tutorials/debugging.mdx +++ b/dev_docs/tutorials/debugging.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialDebugging slug: /kibana-dev-docs/tutorials/debugging title: Debugging in development -summary: Learn how to debug Kibana while running from source +description: Learn how to debug Kibana while running from source date: 2021-04-26 tags: ['kibana', 'onboarding', 'dev', 'tutorials', 'debugging'] --- diff --git a/dev_docs/tutorials/development_windows.mdx b/dev_docs/tutorials/development_windows.mdx index 0a39714dfd8ec..ea872072057a3 100644 --- a/dev_docs/tutorials/development_windows.mdx +++ b/dev_docs/tutorials/development_windows.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialSetupWindowsDevWSL slug: /kibana-dev-docs/tutorial/setup-windows-development-wsl title: WSL on Windows Development -summary: Learn how to setup a Windows development environment using WSL +description: Learn how to setup a Windows development environment using WSL date: 2022-07-07 tags: ['kibana', 'onboarding', 'setup', 'windows', 'development', 'wsl'] --- diff --git a/dev_docs/tutorials/endpoints.mdx b/dev_docs/tutorials/endpoints.mdx index ab7aeda0e5693..851c3046fead6 100644 --- a/dev_docs/tutorials/endpoints.mdx +++ b/dev_docs/tutorials/endpoints.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialServerEndpoint slug: /kibana-dev-docs/tutorials/registering-endpoints title: Registering and accessing an endpoint -summary: Learn how to register a new endpoint and access it +description: Learn how to register a new endpoint and access it date: 2021-11-24 tags: ['kibana', 'dev', 'architecture', 'tutorials'] --- diff --git a/dev_docs/tutorials/expressions.mdx b/dev_docs/tutorials/expressions.mdx index d9abf3dd57eb8..36df396306cac 100644 --- a/dev_docs/tutorials/expressions.mdx +++ b/dev_docs/tutorials/expressions.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialExpressions slug: /kibana-dev-docs/tutorials/expressions title: Kibana Expressions Service -summary: Kibana Expressions Service +description: Kibana Expressions Service date: 2021-06-01 tags: ['kibana', 'onboarding', 'dev', 'architecture'] --- diff --git a/dev_docs/tutorials/kibana_page_template.mdx b/dev_docs/tutorials/kibana_page_template.mdx index f7169ea33cea7..5c037f4f3d062 100644 --- a/dev_docs/tutorials/kibana_page_template.mdx +++ b/dev_docs/tutorials/kibana_page_template.mdx @@ -2,7 +2,7 @@ id: kibDevDocsKPTTutorial slug: /kibana-dev-docs/tutorials/kibana-page-template title: Kibana Page Template -summary: Learn how to create pages in Kibana +description: Learn how to create pages in Kibana date: 2021-03-20 tags: ['kibana', 'dev', 'ui', 'tutorials'] --- diff --git a/dev_docs/tutorials/saved_objects.mdx b/dev_docs/tutorials/saved_objects.mdx index a9d8cd7c6ec1c..f922077cb5e54 100644 --- a/dev_docs/tutorials/saved_objects.mdx +++ b/dev_docs/tutorials/saved_objects.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialSavedObject slug: /kibana-dev-docs/tutorials/saved-objects title: Register a new saved object type -summary: Learn how to register a new saved object type. +description: Learn how to register a new saved object type. date: 2021-02-05 tags: ['kibana','onboarding', 'dev', 'architecture', 'tutorials'] --- diff --git a/dev_docs/tutorials/screenshotting.mdx b/dev_docs/tutorials/screenshotting.mdx index 76f2859928491..5d506e2cb13b4 100644 --- a/dev_docs/tutorials/screenshotting.mdx +++ b/dev_docs/tutorials/screenshotting.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialScreenshotting slug: /kibana-dev-docs/tutorials/screenshotting title: Kibana Screenshotting Service -summary: Kibana Screenshotting Service +description: Kibana Screenshotting Service date: 2022-04-12 tags: ['kibana', 'onboarding', 'dev', 'architecture'] --- diff --git a/dev_docs/tutorials/submit_a_pull_request.mdx b/dev_docs/tutorials/submit_a_pull_request.mdx index f7d530f6cec66..0402a533b2498 100644 --- a/dev_docs/tutorials/submit_a_pull_request.mdx +++ b/dev_docs/tutorials/submit_a_pull_request.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialSubmitPullRequest slug: /kibana-dev-docs/tutorials/submit-pull-request title: Submitting a Kibana pull request -summary: Learn how to submit a Kibana pull request +description: Learn how to submit a Kibana pull request date: 2021-06-24 tags: ['kibana', 'onboarding', 'dev', 'tutorials', 'github', 'pr', 'pull request', 'ci'] --- diff --git a/dev_docs/tutorials/testing_plugins.mdx b/dev_docs/tutorials/testing_plugins.mdx index b43fa19927cc4..4fbfd1b257443 100644 --- a/dev_docs/tutorials/testing_plugins.mdx +++ b/dev_docs/tutorials/testing_plugins.mdx @@ -2,7 +2,7 @@ id: kibDevTutorialTestingPlugins slug: /kibana-dev-docs/tutorials/testing-plugins title: Testing Kibana Plugins -summary: Learn how to test different aspects of Kibana plugins +description: Learn how to test different aspects of Kibana plugins date: 2021-07-05 tags: ['kibana', 'onboarding', 'dev', 'architecture', 'testing'] --- diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index 67626e0580390..10bd6fbba96ce 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -455,6 +455,10 @@ activities. |The features plugin enhance Kibana with a per-feature privilege system. +|{kib-repo}blob/{branch}/x-pack/plugins/files/README.md[files] +|File upload, download, sharing, and serving over HTTP implementation in Kibana. + + |{kib-repo}blob/{branch}/x-pack/plugins/file_upload[fileUpload] |WARNING: Missing README. diff --git a/docs/user/ml/images/ml-data-visualizer-sample.jpg b/docs/user/ml/images/ml-data-visualizer-sample.jpg deleted file mode 100644 index 4d77ef3010c3f..0000000000000 Binary files a/docs/user/ml/images/ml-data-visualizer-sample.jpg and /dev/null differ diff --git a/docs/user/ml/images/ml-data-visualizer-sample.png b/docs/user/ml/images/ml-data-visualizer-sample.png new file mode 100644 index 0000000000000..9ce55dfe9d182 Binary files /dev/null and b/docs/user/ml/images/ml-data-visualizer-sample.png differ diff --git a/docs/user/ml/images/ml-explain-log-rate-before.png b/docs/user/ml/images/ml-explain-log-rate-before.png new file mode 100644 index 0000000000000..e154ddbeebebf Binary files /dev/null and b/docs/user/ml/images/ml-explain-log-rate-before.png differ diff --git a/docs/user/ml/images/ml-explain-log-rate.png b/docs/user/ml/images/ml-explain-log-rate.png new file mode 100644 index 0000000000000..c814ec50d6774 Binary files /dev/null and b/docs/user/ml/images/ml-explain-log-rate.png differ diff --git a/docs/user/ml/index.asciidoc b/docs/user/ml/index.asciidoc index e66ca4ee19780..fd86906f4b989 100644 --- a/docs/user/ml/index.asciidoc +++ b/docs/user/ml/index.asciidoc @@ -15,7 +15,7 @@ if your data is stored in {es} and contains a time field, you can use the *{data-viz}* to identify possible fields for {anomaly-detect}: [role="screenshot"] -image::user/ml/images/ml-data-visualizer-sample.jpg[{data-viz} for sample flight data] +image::user/ml/images/ml-data-visualizer-sample.png[{data-viz} for sample flight data] You can also upload a CSV, NDJSON, or log file. The *{data-viz}* identifies the file format and field mappings. You can then optionally import @@ -98,3 +98,48 @@ image::user/ml/images/outliers.png[{oldetection-cap} results in {kib}] For more information about the {dfanalytics} feature, see {ml-docs}/ml-dfanalytics.html[{ml-cap} {dfanalytics}]. + +[[xpack-ml-aiops]] +== AIOps + +AIOps is a part of {ml-app} in {kib} which provides features that use advanced +statistical methods to help you interpret your data and its behavior. + +[discrete] +[[explain-log-rate-spikes]] +=== Explain log rate spikes + +preview::[] + +Explain log rate spikes is a feature that uses advanced statistical methods to +identify reasons for increases in log rates. It makes it easy to find and +investigate causes of unusual spikes by using the analysis workflow view. +Examine the histogram chart of the log rates for a given {data-source}, and find +the reason behind a particular change possibly in millions of log events across +multiple fields and values. + +You can find explain log rate spikes under **{ml-app}** > **AIOps** where you +can select the {data-source} or saved search that you want to analyze. + +[role="screenshot"] +image::user/ml/images/ml-explain-log-rate-before.png[Log event histogram chart] + +Select a spike in the log event histogram chart to start the analysis. It +identifies statistically significant field-value combinations that contribute to +the spike and displays them in a table. The table also shows an indicator of the +level of impact and a sparkline showing the shape of the impact in the chart. +Hovering over a row displays the impact on the histogram chart in more detail. +You can also pin a table row by clicking on it then move the cursor to the +histogram chart. It displays a tooltip with exact count values for the pinned +field which enables closer investigation. + +Brushes in the chart show the baseline time range and the deviation in the +analyzed data. You can move the brushes to redefine both the baseline and the +deviation and rerun the analysis with the modified values. + +[role="screenshot"] +image::user/ml/images/ml-explain-log-rate.png[Log rate spike explained] + + + + diff --git a/package.json b/package.json index 90bd299ba581a..e67bcca74beb7 100644 --- a/package.json +++ b/package.json @@ -371,6 +371,7 @@ "bitmap-sdf": "^1.0.3", "brace": "0.11.1", "canvg": "^3.0.9", + "cbor-x": "^1.3.3", "chalk": "^4.1.0", "cheerio": "^1.0.0-rc.10", "chroma-js": "^1.4.1", @@ -383,6 +384,7 @@ "copy-to-clipboard": "^3.0.8", "core-js": "^3.23.5", "cronstrue": "^1.51.0", + "cuid": "^2.1.8", "cytoscape": "^3.10.0", "cytoscape-dagre": "^2.2.2", "d3": "3.5.17", diff --git a/packages/home/sample_data_card/README.mdx b/packages/home/sample_data_card/README.mdx index 5e2fa83830573..a4cf6faddfac2 100644 --- a/packages/home/sample_data_card/README.mdx +++ b/packages/home/sample_data_card/README.mdx @@ -2,7 +2,7 @@ id: home/SampleData/Cards slug: /home/sample-data/cards title: Sample Data Cards -summary: A component that displays Sample Data Sets as cards and grid of cards. +description: A component that displays Sample Data Sets as cards and grid of cards. tags: ['home', 'component', 'sample-data'] date: 2022-06-30 --- diff --git a/packages/home/sample_data_tab/README.mdx b/packages/home/sample_data_tab/README.mdx index 7ad4ad5dab3e0..8e9b6a373129b 100644 --- a/packages/home/sample_data_tab/README.mdx +++ b/packages/home/sample_data_tab/README.mdx @@ -2,7 +2,7 @@ id: home/SampleData/Tab slug: /home/sample-data/tab title: Sample Data Tab -summary: A component that displays the content of the Sample Data tab in the `home` plugin. +description: A component that displays the content of the Sample Data tab in the `home` plugin. tags: ['home', 'component', 'sample-data'] date: 2022-06-30 --- diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index 380c706696b9d..fe2206033a2b8 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -359,6 +359,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { macos_system_ext: `${SECURITY_SOLUTION_DOCS}deploy-elastic-endpoint.html#system-extension-endpoint`, linux_deadlock: `${SECURITY_SOLUTION_DOCS}ts-management.html`, }, + responseActions: `${SECURITY_SOLUTION_DOCS}response-actions.html`, }, query: { eql: `${ELASTICSEARCH_DOCS}eql.html`, diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts index 4153f9579321a..99396183fc64f 100644 --- a/packages/kbn-doc-links/src/types.ts +++ b/packages/kbn-doc-links/src/types.ts @@ -264,6 +264,7 @@ export interface DocLinks { linux_deadlock: string; }; readonly threatIntelInt: string; + readonly responseActions: string; }; readonly query: { readonly eql: string; diff --git a/packages/kbn-docs-utils/src/api_docs/auto_generated_warning.ts b/packages/kbn-docs-utils/src/api_docs/auto_generated_warning.ts new file mode 100644 index 0000000000000..055648f7b5669 --- /dev/null +++ b/packages/kbn-docs-utils/src/api_docs/auto_generated_warning.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 AUTO_GENERATED_WARNING = `#### +#### 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. +####`; diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts index 156e09b2fce1b..06532dc8a027f 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts @@ -17,6 +17,7 @@ import { ReferencedDeprecationsByPlugin, UnreferencedDeprecationsByPlugin, } from '../types'; +import { AUTO_GENERATED_WARNING } from '../auto_generated_warning'; import { getPluginApiDocId } from '../utils'; export function writeDeprecationDocByApi( @@ -76,18 +77,18 @@ export function writeDeprecationDocByApi( const mdx = dedent(` --- +${AUTO_GENERATED_WARNING} id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API -summary: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. +description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. date: ${moment().format('YYYY-MM-DD')} tags: ['contributor', 'dev', 'apidocs', 'kibana'] -warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- ## Referenced deprecated APIs -${tableMdx} +${tableMdx} ## Unreferenced deprecated APIs diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts index e79c109311c0b..d25a42d7de50e 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts @@ -12,6 +12,7 @@ import dedent from 'dedent'; import fs from 'fs'; import Path from 'path'; import { ApiDeclaration, ApiReference, ReferencedDeprecationsByPlugin } from '../types'; +import { AUTO_GENERATED_WARNING } from '../auto_generated_warning'; import { getPluginApiDocId } from '../utils'; export function writeDeprecationDocByPlugin( @@ -34,7 +35,7 @@ export function writeDeprecationDocByPlugin( return ` ## ${key} - + | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| ${Object.keys(groupedDeprecationReferences) @@ -70,16 +71,16 @@ export function writeDeprecationDocByPlugin( const mdx = dedent(` --- +${AUTO_GENERATED_WARNING} id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin -summary: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. +description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. date: ${moment().format('YYYY-MM-DD')} tags: ['contributor', 'dev', 'apidocs', 'kibana'] -warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- -${tableMdx} +${tableMdx} `); diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_due_by_team.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_due_by_team.ts index 712dd9c8e637f..2defdb49aeaa0 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_due_by_team.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_due_by_team.ts @@ -16,6 +16,7 @@ import { PluginOrPackage, ReferencedDeprecationsByPlugin, } from '../types'; +import { AUTO_GENERATED_WARNING } from '../auto_generated_warning'; import { getPluginApiDocId } from '../utils'; export function writeDeprecationDueByTeam( @@ -58,7 +59,7 @@ export function writeDeprecationDueByTeam( return ` ## ${key} - + | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| ${Object.keys(groupedDeprecationReferences) @@ -97,16 +98,16 @@ export function writeDeprecationDueByTeam( const mdx = dedent(` --- +${AUTO_GENERATED_WARNING} id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team -summary: Lists the teams that are referencing deprecated APIs with a remove by date. +description: Lists the teams that are referencing deprecated APIs with a remove by date. date: ${moment().format('YYYY-MM-DD')} tags: ['contributor', 'dev', 'apidocs', 'kibana'] -warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- -${tableMdx} +${tableMdx} `); diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_directory_doc.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_directory_doc.ts index c98621356439c..129e1212625e3 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_directory_doc.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_directory_doc.ts @@ -11,6 +11,7 @@ import Path from 'path'; import dedent from 'dedent'; import { ToolingLog } from '@kbn/tooling-log'; import { PluginApi, PluginMetaInfo } from '../types'; +import { AUTO_GENERATED_WARNING } from '../auto_generated_warning'; import { getPluginApiDocId } from '../utils'; function hasPublicApi(doc: PluginApi): boolean { @@ -74,24 +75,24 @@ export function writePluginDirectoryDoc( const mdx = dedent(` --- +${AUTO_GENERATED_WARNING} id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory -summary: Directory of public APIs available through plugins or packages. +description: Directory of public APIs available through plugins or packages. date: ${moment().format('YYYY-MM-DD')} tags: ['contributor', 'dev', 'apidocs', 'kibana'] -warning: 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. --- ### Overall stats -| Count | Plugins or Packages with a
public API | Number of teams | +| Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| | ${totalStats.pluginCnt} | ${totalStats.pluginCntWithPublicApi} | ${totalStats.teamCnt} | ### Public API health stats -| API Count | Any Count | Missing comments | Missing exports | +| API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| | ${totalStats.totalApiCnt} | ${totalStats.anyCnt} | ${totalStats.missingCommentCnt} | ${ totalStats.missingExportCnt @@ -99,13 +100,13 @@ warning: This document is auto-generated and is meant to be viewed inside our ex ## Plugin Directory -| Plugin name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | +| Plugin name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| ${getDirectoryTable(pluginApiMap, pluginStatsMap, true)} ## Package Directory -| Package name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | +| Package name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| ${getDirectoryTable(pluginApiMap, pluginStatsMap, false)} diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_mdx_docs.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_mdx_docs.ts index 562d2a8981764..da65c9f6b3357 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_mdx_docs.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_mdx_docs.ts @@ -19,6 +19,7 @@ import { getSlug, } from '../utils'; import { writePluginDocSplitByFolder } from './write_plugin_split_by_folder'; +import { AUTO_GENERATED_WARNING } from '../auto_generated_warning'; import { WritePluginDocsOpts } from './types'; /** @@ -75,14 +76,14 @@ export function writePluginDoc( let mdx = dedent(` --- +${AUTO_GENERATED_WARNING} id: ${getPluginApiDocId(doc.id)} slug: /kibana-dev-docs/api/${slug} title: "${doc.id}" image: https://source.unsplash.com/400x175/?github -summary: API docs for the ${doc.id} plugin +description: API docs for the ${doc.id} plugin date: ${moment().format('YYYY-MM-DD')} tags: ['contributor', 'dev', 'apidocs', 'kibana', '${doc.id}'] -warning: 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. --- import ${json} from './${fileName}.devdocs.json'; diff --git a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a.mdx b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a.mdx index 6a66fa74f7c01..b72bb38869f78 100644 --- a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a.mdx +++ b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibPluginAPluginApi slug: /kibana-dev-docs/api/pluginA title: "pluginA" image: https://source.unsplash.com/400x175/?github -summary: API docs for the pluginA plugin -date: 2022-04-30 +description: API docs for the pluginA plugin +date: 2022-08-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'pluginA'] -warning: 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. --- import pluginAObj from './plugin_a.devdocs.json'; diff --git a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a_foo.mdx b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a_foo.mdx index 4082de6306895..f1b79e0d69ce5 100644 --- a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a_foo.mdx +++ b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_a_foo.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibPluginAFooPluginApi slug: /kibana-dev-docs/api/pluginA-foo title: "pluginA.foo" image: https://source.unsplash.com/400x175/?github -summary: API docs for the pluginA.foo plugin -date: 2022-04-30 +description: API docs for the pluginA.foo plugin +date: 2022-08-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'pluginA.foo'] -warning: 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. --- import pluginAFooObj from './plugin_a_foo.devdocs.json'; diff --git a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_b.mdx b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_b.mdx index d69da971f7e3e..2d0c28885f8d3 100644 --- a/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_b.mdx +++ b/packages/kbn-docs-utils/src/api_docs/tests/snapshots/plugin_b.mdx @@ -1,12 +1,15 @@ --- +#### +#### 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: kibPluginBPluginApi slug: /kibana-dev-docs/api/pluginB title: "pluginB" image: https://source.unsplash.com/400x175/?github -summary: API docs for the pluginB plugin -date: 2022-04-30 +description: API docs for the pluginB plugin +date: 2022-08-08 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'pluginB'] -warning: 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. --- import pluginBObj from './plugin_b.devdocs.json'; diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 955ec123c1626..c12c3081a737e 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -133,3 +133,4 @@ pageLoadAssetSize: kibanaUsageCollection: 16463 kubernetesSecurity: 77234 threatIntelligence: 29195 + files: 22673 diff --git a/packages/kbn-performance-testing-dataset-extractor/jest.config.js b/packages/kbn-performance-testing-dataset-extractor/jest.config.js index e31a2d7996893..4800a9edea7c5 100644 --- a/packages/kbn-performance-testing-dataset-extractor/jest.config.js +++ b/packages/kbn-performance-testing-dataset-extractor/jest.config.js @@ -7,7 +7,7 @@ */ module.exports = { - preset: '@kbn/test/jest_node', + preset: '@kbn/test', rootDir: '../..', roots: ['/packages/kbn-performance-testing-dataset-extractor'], }; diff --git a/packages/kbn-performance-testing-dataset-extractor/src/cli.ts b/packages/kbn-performance-testing-dataset-extractor/src/cli.ts index 914a7d587efdf..37be456d66aa1 100644 --- a/packages/kbn-performance-testing-dataset-extractor/src/cli.ts +++ b/packages/kbn-performance-testing-dataset-extractor/src/cli.ts @@ -16,7 +16,8 @@ import { run } from '@kbn/dev-cli-runner'; import { createFlagError } from '@kbn/dev-cli-errors'; import { EsVersion, readConfigFile } from '@kbn/test'; import path from 'path'; -import { extractor, ScalabilitySetup } from './extractor'; +import { extractor } from './extractor'; +import { ScalabilitySetup } from './types'; interface Vars { [key: string]: string; diff --git a/packages/kbn-performance-testing-dataset-extractor/src/constants.ts b/packages/kbn-performance-testing-dataset-extractor/src/constants.ts new file mode 100644 index 0000000000000..a9dc0b9d2ffbe --- /dev/null +++ b/packages/kbn-performance-testing-dataset-extractor/src/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 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 DATE_FORMAT = `YYYY-MM-DD'T'HH:mm:ss.SSS'Z'`; diff --git a/packages/kbn-performance-testing-dataset-extractor/src/es_client.ts b/packages/kbn-performance-testing-dataset-extractor/src/es_client.ts index 948d410c8669e..c878f148e4e67 100644 --- a/packages/kbn-performance-testing-dataset-extractor/src/es_client.ts +++ b/packages/kbn-performance-testing-dataset-extractor/src/es_client.ts @@ -8,7 +8,7 @@ import { Client } from '@elastic/elasticsearch'; import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; -import { SearchRequest } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SearchRequest, MsearchRequestItem } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { ToolingLog } from '@kbn/tooling-log'; interface ClientOptions { @@ -36,6 +36,7 @@ interface Transaction { name: string; type: string; duration: { us: number }; + span_count: { started: number }; } export interface Document { @@ -98,6 +99,7 @@ const addRangeFilter = (range: { startTime: string; endTime: string }): QueryDsl export class ESClient { client: Client; log: ToolingLog; + tracesIndex: string = '.ds-traces-apm-default*'; constructor(options: ClientOptions, log: ToolingLog) { this.client = new Client({ @@ -112,6 +114,7 @@ export class ESClient { async getTransactions(queryFilters: QueryDslQueryContainer[]) { const searchRequest: SearchRequest = { + index: this.tracesIndex, body: { sort: [ { @@ -172,9 +175,44 @@ export class ESClient { return await this.getTransactions(queryFilters); } - async getSpans(transactionId: string) { - const filters = [{ field: 'parent.id', value: transactionId }]; - const queryFilters = filters.map((filter) => addBooleanFilter(filter)); - return await this.getTransactions(queryFilters); + getMsearchRequestItem = (queryFilters: QueryDslQueryContainer[]): MsearchRequestItem => { + return { + query: { + bool: { + filter: [ + { + bool: { + filter: queryFilters, + }, + }, + ], + }, + }, + }; + }; + + async getSpans(transactionIds: string[]) { + const searches = new Array(); + + for (const transactionId of transactionIds) { + const filters = [{ field: 'parent.id', value: transactionId }]; + const queryFilters = filters.map((filter) => addBooleanFilter(filter)); + const requestItem = this.getMsearchRequestItem(queryFilters); + searches.push({ index: this.tracesIndex }, requestItem); + } + this.log.debug(`Msearch request: ${JSON.stringify(searches)}`); + const result = await this.client.msearch({ + searches, + }); + this.log.debug(`Msearch result: ${JSON.stringify(result)}`); + return result.responses.flatMap((response) => { + if ('error' in response) { + throw new Error(`Msearch failure: ${JSON.stringify(response.error)}`); + } else if (response.hits.hits.length > 0) { + return response.hits.hits; + } else { + return []; + } + }); } } diff --git a/packages/kbn-performance-testing-dataset-extractor/src/es_request.ts b/packages/kbn-performance-testing-dataset-extractor/src/es_request.ts deleted file mode 100644 index 5160d1cf1b0cc..0000000000000 --- a/packages/kbn-performance-testing-dataset-extractor/src/es_request.ts +++ /dev/null @@ -1,139 +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 { ESClient, SpanDocument } from './es_client'; -import { KibanaRequest } from './server_request'; - -const httpMethodRegExp = /(GET|POST|DELETE|HEAD|PUT|OPTIONS)/; -const httpPathRegExp = /(?<=GET|POST|DELETE|HEAD|PUT|OPTIONS).*/; - -interface Request { - id: string; - transactionId: string; - name: string; - action: string; - request: { - method?: string; - path?: string; - params?: string; - body?: JSON; - }; - date: string; - duration: number; -} - -interface Stream { - startTime: number; - endTime: number; - requests: Request[]; -} - -const strToJSON = (str: string): JSON | undefined => { - try { - return JSON.parse(str); - } catch (e) { - return; - } -}; - -const findFirstMatch = (regExp: RegExp, testString: string) => { - const found = regExp.exec(testString); - return found ? found[0] : undefined; -}; - -const parseQueryStatement = (statement: string): { params?: string; body?: JSON } => { - // github.com/elastic/apm-agent-nodejs/blob/5ba1b2609d18b12a64e1e559236717dd38d64a51/lib/instrumentation/elasticsearch-shared.js#L27-L29 - // Some ES endpoints support both query params and a body, statement string might contain both of it - const split = statement.split('\n\n'); - if (split.length === 2) { - return { params: split[0], body: strToJSON(split[1]) }; - } else { - const body = strToJSON(split[0]); - return body ? { body } : { params: split[0] }; - } -}; - -export const fetchRequests = async (esClient: ESClient, requests: KibanaRequest[]) => { - const esRequests = new Array(); - for (const request of requests) { - const transactionId = request.transaction.id; - const hits = await esClient.getSpans(transactionId); - const spans = hits - .map((hit) => hit!._source as SpanDocument) - .map((hit) => { - const query = hit?.span.db?.statement ? parseQueryStatement(hit?.span.db?.statement) : {}; - return { - id: hit.span.id, - transactionId: hit.transaction.id, - name: hit.span.name, - action: hit.span?.action, - request: { - method: findFirstMatch(httpMethodRegExp, hit.span.name), - path: findFirstMatch(httpPathRegExp, hit.span.name.replace(/\s+/g, '')), - params: query?.params, - body: query?.body, - }, - date: hit['@timestamp'], - duration: hit.span?.duration?.us, - }; - }) - // filter out requests without method, path and POST/PUT/DELETE without body - .filter( - (hit) => - hit && - hit.request?.method && - hit.request?.path && - (hit.request?.method === 'GET' || hit.request?.body) - ); - esRequests.push(...spans); - } - - return esRequests; -}; - -export const requestsToStreams = (requests: Request[]) => { - const sorted = requests.sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime()); - const streams = new Map(); - - for (const request of sorted) { - const startTime = new Date(request.date).getTime(); - const endTime = new Date(request.date).getTime() + request.duration / 1000; - // searching if query starts before any existing stream ended - const match = Array.from(streams.keys()).filter((key) => { - const streamEndTime = streams.get(key)?.endTime; - return streamEndTime ? startTime < streamEndTime : false; - }); - const stream = streams.get(match[0]); - if (stream) { - // adding query to the existing stream - stream.requests.push(request); - // updating the stream endTime if needed - if (endTime > stream.endTime) { - stream.endTime = endTime; - } - // saving updated stream - streams.set(match[0], stream); - } else { - // add a new stream - streams.set(request.date, { - startTime, - endTime, - requests: [request], - }); - } - } - - const values = Array.from(streams.values()); - return values.map((stream) => { - return { - startTime: new Date(stream.startTime).toISOString(), - endTime: new Date(stream.endTime).toISOString(), - requests: stream.requests, - }; - }); -}; diff --git a/packages/kbn-performance-testing-dataset-extractor/src/extractor.ts b/packages/kbn-performance-testing-dataset-extractor/src/extractor.ts index e0587af1637d8..992c93b16922d 100644 --- a/packages/kbn-performance-testing-dataset-extractor/src/extractor.ts +++ b/packages/kbn-performance-testing-dataset-extractor/src/extractor.ts @@ -13,38 +13,10 @@ import path from 'path'; import { ToolingLog } from '@kbn/tooling-log'; import { SearchHit } from '@elastic/elasticsearch/lib/api/types'; import { ESClient, Document, TransactionDocument } from './es_client'; -import { getRequests } from './server_request'; -import { fetchRequests, requestsToStreams } from './es_request'; - -const DATE_FORMAT = `YYYY-MM-DD'T'HH:mm:ss.SSS'Z'`; - -interface CLIParams { - param: { - journeyName: string; - scalabilitySetup: ScalabilitySetup; - buildId: string; - withoutStaticResources: boolean; - }; - client: { - baseURL: string; - username: string; - password: string; - }; - log: ToolingLog; -} - -interface InjectionStep { - action: string; - minUsersCount?: number; - maxUsersCount: number; - duration: string; -} - -export interface ScalabilitySetup { - warmup: InjectionStep[]; - test: InjectionStep[]; - maxDuration: string; -} +import { getESRequests, getKibanaRequests } from './request'; +import { requestsToStreams } from './stream'; +import { CLIParams, Request } from './types'; +import { DATE_FORMAT } from './constants'; const calculateTransactionTimeRage = (hit: SearchHit) => { const trSource = hit._source as Document; @@ -100,12 +72,13 @@ export const extractor = async ({ param, client, log }: CLIParams) => { const source = hits[0]!._source as TransactionDocument; const kibanaVersion = source.service.version; - const kibanaRequests = getRequests(hits, withoutStaticResources, log); - const esRequests = await fetchRequests(esClient, kibanaRequests); + const kibanaRequests = getKibanaRequests(hits, withoutStaticResources); + const esRequests = await getESRequests(esClient, kibanaRequests); log.info( `Found ${kibanaRequests.length} Kibana server and ${esRequests.length} Elasticsearch requests` ); - const streams = requestsToStreams(esRequests); + const esStreams = requestsToStreams(esRequests); + const kibanaStreams = requestsToStreams(kibanaRequests); const outputDir = path.resolve('target/scalability_traces'); const fileName = `${journeyName.replace(/ /g, '')}-${buildId}.json`; @@ -116,7 +89,7 @@ export const extractor = async ({ param, client, log }: CLIParams) => { journeyName, kibanaVersion, scalabilitySetup, - requests: kibanaRequests, + streams: kibanaStreams, }, path.resolve(outputDir, 'server'), fileName, @@ -128,7 +101,7 @@ export const extractor = async ({ param, client, log }: CLIParams) => { { journeyName, kibanaVersion, - streams: Array.from(streams.values()), + streams: esStreams, }, path.resolve(outputDir, 'es'), fileName, diff --git a/packages/kbn-performance-testing-dataset-extractor/src/request.ts b/packages/kbn-performance-testing-dataset-extractor/src/request.ts new file mode 100644 index 0000000000000..7c9efaf935742 --- /dev/null +++ b/packages/kbn-performance-testing-dataset-extractor/src/request.ts @@ -0,0 +1,106 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { SearchHit } from '@elastic/elasticsearch/lib/api/types'; +import { ESClient, TransactionDocument, Headers, SpanDocument } from './es_client'; +import { Request } from './types'; + +const httpMethodRegExp = /(GET|POST|DELETE|HEAD|PUT|OPTIONS)/; +const httpPathRegExp = /(?<=GET|POST|DELETE|HEAD|PUT|OPTIONS).*/; +const staticResourcesRegExp = /\.(css|ico|js|json|jpeg|jpg|gif|png|svg|otf|ttf|woff|woff2)$/; + +const strToJSON = (str: string): JSON | undefined => { + try { + return JSON.parse(str); + } catch (e) { + return; + } +}; + +const findFirstMatch = (regExp: RegExp, testString: string) => { + const found = regExp.exec(testString); + return found ? found[0] : undefined; +}; + +const parseQueryStatement = (statement: string): { params?: string; body?: JSON } => { + // github.com/elastic/apm-agent-nodejs/blob/5ba1b2609d18b12a64e1e559236717dd38d64a51/lib/instrumentation/elasticsearch-shared.js#L27-L29 + // Some ES endpoints support both query params and a body, statement string might contain both of it + const split = statement.split('\n\n'); + if (split.length === 2) { + return { params: split[0], body: strToJSON(split[1]) }; + } else { + const body = strToJSON(split[0]); + return body ? { body } : { params: split[0] }; + } +}; + +const combineHeaderFieldValues = (headers: Headers): { [key: string]: string } => { + return Object.assign( + {}, + ...Object.keys(headers).map((key) => ({ [key]: headers[key].join(', ') })) + ); +}; + +export const getKibanaRequests = ( + hits: Array>, + withoutStaticResources: boolean +): Request[] => { + const data = hits + .map((hit) => hit!._source as TransactionDocument) + .map((hit) => { + const payload = hit.http.request?.body?.original; + return { + transactionId: hit.transaction.id, + name: hit.transaction.name, + date: hit['@timestamp'], + duration: hit.transaction.duration.us, + http: { + method: hit.http.request.method, + path: hit.url.path, + headers: combineHeaderFieldValues(hit.http.request.headers), + body: payload ? JSON.stringify(strToJSON(payload)) : undefined, + statusCode: hit.http.response.status_code, + }, + spanCount: hit.transaction.span_count.started, + }; + }); + + return withoutStaticResources + ? data.filter((item) => !staticResourcesRegExp.test(item.http.path)) + : data; +}; + +export const getESRequests = async (esClient: ESClient, requests: Request[]) => { + const esRequests = new Array(); + const transactionIds = requests + .filter((r) => r.spanCount && r?.spanCount > 0) + .map((r) => r.transactionId); + const hits = await esClient.getSpans(transactionIds); + for (const hit of hits.map((i) => i!._source as SpanDocument)) { + const query = hit?.span?.db?.statement ? parseQueryStatement(hit?.span?.db?.statement) : {}; + const method = findFirstMatch(httpMethodRegExp, hit.span.name); + const path = findFirstMatch(httpPathRegExp, hit.span.name.replace(/\s+/g, '')); + // filter out requests without method, path and POST/PUT/DELETE without body + if (method && path && (method === 'GET' || query?.body)) { + esRequests.push({ + transactionId: hit.transaction.id, + spanId: hit.span.id, + name: hit.span.name, + date: hit['@timestamp'], + duration: hit.span?.duration?.us, + http: { + method, + path, + params: query?.params, + body: query?.body, + }, + }); + } + } + return esRequests; +}; diff --git a/packages/kbn-performance-testing-dataset-extractor/src/server_request.ts b/packages/kbn-performance-testing-dataset-extractor/src/server_request.ts deleted file mode 100644 index dd553b83848c8..0000000000000 --- a/packages/kbn-performance-testing-dataset-extractor/src/server_request.ts +++ /dev/null @@ -1,85 +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 { SearchHit } from '@elastic/elasticsearch/lib/api/types'; -import { ToolingLog } from '@kbn/tooling-log'; -import { TransactionDocument, Headers } from './es_client'; - -const staticResourcesRegExp = /\.(css|ico|js|json|jpeg|jpg|gif|png|otf|ttf|woff|woff2)$/; - -export interface KibanaRequest { - traceId: string; - parentId?: string; - processor: string; - environment: string; - request: { - timestamp: string; - method: string; - path: string; - headers: { [key: string]: string }; - body?: string; - statusCode: number; - }; - transaction: { - id: string; - name: string; - type: string; - }; -} - -const parsePayload = (payload: string, traceId: string, log: ToolingLog): string | undefined => { - let body; - try { - body = JSON.parse(payload); - } catch (error) { - log.error(`Failed to parse payload - trace_id: '${traceId}'`); - } - return body; -}; - -const combineHeaderFieldValues = (headers: Headers): { [key: string]: string } => { - return Object.assign( - {}, - ...Object.keys(headers).map((key) => ({ [key]: headers[key].join(', ') })) - ); -}; - -export const getRequests = ( - hits: Array>, - withoutStaticResources: boolean, - log: ToolingLog -): KibanaRequest[] => { - const data = hits - .map((hit) => hit!._source as TransactionDocument) - .map((hit) => { - const payload = hit.http.request?.body?.original; - return { - traceId: hit.trace.id, - parentId: hit?.parent?.id, - processor: hit.processor, - environment: hit.service.environment, - request: { - timestamp: hit['@timestamp'], - method: hit.http.request.method, - path: hit.url.path, - headers: combineHeaderFieldValues(hit.http.request.headers), - body: payload ? JSON.stringify(parsePayload(payload, hit.trace.id, log)) : undefined, - statusCode: hit.http.response.status_code, - }, - transaction: { - id: hit.transaction.id, - name: hit.transaction.name, - type: hit.transaction.type, - }, - }; - }); - - return withoutStaticResources - ? data.filter((item) => !staticResourcesRegExp.test(item.request.path)) - : data; -}; diff --git a/packages/kbn-performance-testing-dataset-extractor/src/stream.test.ts b/packages/kbn-performance-testing-dataset-extractor/src/stream.test.ts new file mode 100644 index 0000000000000..51fdde19358a3 --- /dev/null +++ b/packages/kbn-performance-testing-dataset-extractor/src/stream.test.ts @@ -0,0 +1,80 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { requestsToStreams, getTime } from './stream'; + +test('requests to stream', () => { + const requests = new Array( + { + transactionId: 'a8ba23df51ebb853', + spanId: '85c8de731132bea2', + name: 'Elasticsearch: GET /.kibana_8.5.0/_doc/config%3A8.5.0', + date: '2022-08-08T17:43:58.647Z', + duration: 398, + http: { + method: 'GET', + path: '/.kibana_8.5.0/_doc/config%3A8.5.0', + }, + }, + { + transactionId: '15ba53df5t9bb165', + spanId: '15v8de5341v2neat', + name: 'Elasticsearch: GET /.kibana_8.5.0/_doc/config%3A8.5.0', + date: '2022-08-08T17:43:58.641Z', + duration: 1988, + http: { + method: 'GET', + path: '/.kibana_8.5.0/_doc/config%3A8.5.0', + }, + }, + { + transactionId: '90d8037a799382ac', + spanId: 'b819755f297188d9', + name: 'Elasticsearch: GET /_security/_authenticate', + date: '2022-08-08T17:43:58.649Z', + duration: 1002, + http: { + method: 'GET', + path: '/_security/_authenticate', + }, + }, + { + transactionId: '1381d9ed5af967f9', + spanId: '690d11ebfefd06ad', + name: 'Elasticsearch: GET /.kibana_8.5.0/_doc/config%3A8.5.0', + date: '2022-08-08T17:43:58.648Z', + duration: 2400, + http: { + method: 'GET', + path: '/.kibana_8.5.0/_doc/config%3A8.5.0', + }, + }, + { + transactionId: '96174ca1fbd14763', + spanId: '4c81025cb74c9cd6', + name: 'Elasticsearch: GET /_security/_authenticate', + date: '2022-08-08T17:43:58.640Z', + duration: 4166, + http: { + method: 'GET', + path: '/_security/_authenticate', + }, + } + ); + + const streams = requestsToStreams(requests); + const sorted = requests.sort((a, b) => getTime(a.date) - getTime(b.date)); + + expect(streams.length).toBe(3); + expect(streams[0].requests.length).toBe(2); + expect(streams[0].startTime).toBe(streams[0].requests[0].date); + expect(streams[0].startTime).toBe(sorted[0].date); + expect(streams[1].requests.length).toBe(1); + expect(getTime(streams[1].startTime)).toBeGreaterThan(getTime(streams[0].endTime)); + expect(streams[2].requests.length).toBe(2); +}); diff --git a/packages/kbn-performance-testing-dataset-extractor/src/stream.ts b/packages/kbn-performance-testing-dataset-extractor/src/stream.ts new file mode 100644 index 0000000000000..48f7dfe2d08c3 --- /dev/null +++ b/packages/kbn-performance-testing-dataset-extractor/src/stream.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Request, Stream } from './types'; + +export const getTime = (date: string) => new Date(date).getTime(); + +/** + * Combines concurrent requests into the streams and returns it as Array + * @param requests requests array + */ +export const requestsToStreams = (requests: T[]) => { + const sorted = requests.sort((a, b) => getTime(a.date) - getTime(b.date)); + const streams = new Map>(); + + for (const request of sorted) { + const startTime = getTime(request.date) * 1000; + const endTime = getTime(request.date) * 1000 + request.duration; + // Checking if request starts before any existing stream ended + const match = Array.from(streams.keys()).filter((key) => { + const streamEndTimestamp = streams.get(key)?.endTime; + return streamEndTimestamp ? startTime < streamEndTimestamp : false; + }); + const stream = streams.get(match[0]); + if (stream) { + // Adding request to the existing stream + stream.requests.push(request); + // Updating the stream end time if needed + if (endTime > stream.endTime) { + stream.endTime = endTime; + } + // Saving the updated stream + streams.set(match[0], stream); + } else { + // Otherwise adding a new stream + streams.set(request.date, { + startTime, + endTime, + requests: [request], + }); + } + } + + const values = Array.from(streams.values()); + return values.map((stream) => { + return { + startTime: new Date(stream.startTime / 1000).toISOString(), + endTime: new Date(stream.endTime / 1000).toISOString(), + requests: stream.requests, + }; + }); +}; diff --git a/packages/kbn-performance-testing-dataset-extractor/src/types.ts b/packages/kbn-performance-testing-dataset-extractor/src/types.ts new file mode 100644 index 0000000000000..1cd51f3388a7c --- /dev/null +++ b/packages/kbn-performance-testing-dataset-extractor/src/types.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ToolingLog } from '@kbn/tooling-log'; + +export interface Request { + transactionId: string; + spanId?: string; + name: string; + date: string; + duration: number; + http: { + method: string; + path: string; + headers?: { [key: string]: string }; + params?: string; + body?: JSON | string; + }; + spanCount?: number; +} + +export interface Stream { + startTime: number; + endTime: number; + requests: T[]; +} + +export interface InjectionStep { + action: string; + minUsersCount?: number; + maxUsersCount: number; + duration: string; +} + +export interface ScalabilitySetup { + warmup: InjectionStep[]; + test: InjectionStep[]; + maxDuration: string; +} + +export interface CLIParams { + param: { + journeyName: string; + scalabilitySetup: ScalabilitySetup; + buildId: string; + withoutStaticResources: boolean; + }; + client: { + baseURL: string; + username: string; + password: string; + }; + log: ToolingLog; +} diff --git a/packages/kbn-shared-ux-components/README.mdx b/packages/kbn-shared-ux-components/README.mdx index 8fee1571e5220..f4673a0804f31 100644 --- a/packages/kbn-shared-ux-components/README.mdx +++ b/packages/kbn-shared-ux-components/README.mdx @@ -2,7 +2,7 @@ id: kibSharedUXComponents slug: /kibana-dev-docs/shared-ux/packages/kbn-shared-ux-components title: Shared UX Components -summary: +description: date: 2022-03-11 tags: ['kibana', 'dev', 'sharedUX'] --- diff --git a/packages/kbn-shared-ux-components/src/page_template/page_template.mdx b/packages/kbn-shared-ux-components/src/page_template/page_template.mdx index 59acf8910cf29..fbaada158e277 100644 --- a/packages/kbn-shared-ux-components/src/page_template/page_template.mdx +++ b/packages/kbn-shared-ux-components/src/page_template/page_template.mdx @@ -2,7 +2,7 @@ id: sharedUX/Components/PageTemplate slug: /shared-ux-components/page_template/page_template title: Page Template -summary: A Kibana-specific wrapper around `EuiTemplate` +description: A Kibana-specific wrapper around `EuiTemplate` tags: ['shared-ux', 'component'] date: 2022-04-04 --- diff --git a/packages/kbn-shared-ux-services/README.mdx b/packages/kbn-shared-ux-services/README.mdx index 2ef3040128c87..589aae4cc7ed2 100755 --- a/packages/kbn-shared-ux-services/README.mdx +++ b/packages/kbn-shared-ux-services/README.mdx @@ -2,7 +2,7 @@ id: kibSharedUXServices slug: /kibana-dev-docs/shared-ux/packages/kbn-shared-ux-services title: Shared UX Services -summary: The `@kbn/shared-ux-services` package provides a thin service abstraction for components and solutions created by the Shared UX team. +description: The `@kbn/shared-ux-services` package provides a thin service abstraction for components and solutions created by the Shared UX team. date: 2022-03-11 tags: ['kibana', 'dev', 'sharedUX'] --- diff --git a/packages/kbn-shared-ux-storybook/README.mdx b/packages/kbn-shared-ux-storybook/README.mdx index cfebeedcd1ac3..11992e336e627 100644 --- a/packages/kbn-shared-ux-storybook/README.mdx +++ b/packages/kbn-shared-ux-storybook/README.mdx @@ -2,7 +2,7 @@ id: kibSharedUXStorybook slug: /kibana-dev-docs/shared-ux/packages/kbn-shared-ux-storybook title: Shared UX Storybook -summary: The `@kbn/shared-ux-storybook` package provides Storybook assets for Shared UX and other teams. +description: The `@kbn/shared-ux-storybook` package provides Storybook assets for Shared UX and other teams. date: 2022-03-11 tags: ['kibana', 'dev', 'sharedUX'] --- diff --git a/packages/kbn-shared-ux-utility/README.mdx b/packages/kbn-shared-ux-utility/README.mdx index a3a3ee965f699..ec91bc4b16ab8 100644 --- a/packages/kbn-shared-ux-utility/README.mdx +++ b/packages/kbn-shared-ux-utility/README.mdx @@ -2,7 +2,7 @@ id: kibSharedUXUtility slug: /kibana-dev-docs/shared-ux/packages/kbn-shared-ux-utility title: Shared UX Utilities -summary: The `@kbn/shared-ux-utility` package contains a set of React, DOM and other utilities. +description: The `@kbn/shared-ux-utility` package contains a set of React, DOM and other utilities. date: 2022-03-11 tags: ['kibana', 'dev', 'sharedUX'] --- diff --git a/packages/shared-ux/avatar/solution/README.mdx b/packages/shared-ux/avatar/solution/README.mdx index 841274441f6ed..86f5bed3cc8c2 100644 --- a/packages/shared-ux/avatar/solution/README.mdx +++ b/packages/shared-ux/avatar/solution/README.mdx @@ -2,7 +2,7 @@ id: sharedUX/Components/KibanaSolutionAvatar slug: /shared-ux/components/avatar-solution title: Solution Avatar -summary: A wrapper around `EuiAvatar` tailored for use in Kibana solutions. +description: A wrapper around `EuiAvatar` tailored for use in Kibana solutions. tags: ['shared-ux', 'component'] date: 2022-05-04 --- diff --git a/packages/shared-ux/button/exit_full_screen/impl/README.mdx b/packages/shared-ux/button/exit_full_screen/impl/README.mdx index 03a885ba6151c..790cff6a72f23 100644 --- a/packages/shared-ux/button/exit_full_screen/impl/README.mdx +++ b/packages/shared-ux/button/exit_full_screen/impl/README.mdx @@ -2,7 +2,7 @@ id: sharedUX/Components/ExitFullScreenButton slug: /shared-ux/components/exit-full-screen-button title: Exit Full Screen Button -summary: A button that floats over the plugin workspace and allows someone to exit "full screen" mode. +description: A button that floats over the plugin workspace and allows someone to exit "full screen" mode. tags: ['shared-ux', 'component'] date: 2021-12-28 --- diff --git a/packages/shared-ux/button_toolbar/README.mdx b/packages/shared-ux/button_toolbar/README.mdx index fb693dab44498..c073ef003cda4 100644 --- a/packages/shared-ux/button_toolbar/README.mdx +++ b/packages/shared-ux/button_toolbar/README.mdx @@ -2,7 +2,7 @@ id: sharedUX/ButtonToolbar slug: /shared-ux/button-toolbar title: Button Toolbar -summary: +description: tags: ['shared-ux', 'component'] date: 2022-06-14 --- diff --git a/packages/shared-ux/button_toolbar/src/popover/popover.mdx b/packages/shared-ux/button_toolbar/src/popover/popover.mdx index d1ade51485ae4..dcdeb01de3f04 100644 --- a/packages/shared-ux/button_toolbar/src/popover/popover.mdx +++ b/packages/shared-ux/button_toolbar/src/popover/popover.mdx @@ -2,7 +2,7 @@ id: sharedUX/Components/Popover slug: /shared-ux/components/toolbar/popovers/popover title: Toolbar Popover -summary: A popover component that can be placed within a toolbar button. +description: A popover component that can be placed within a toolbar button. tags: ['shared-ux', 'component'] date: 2022-03-28 --- diff --git a/packages/shared-ux/card/no_data/impl/README.mdx b/packages/shared-ux/card/no_data/impl/README.mdx index e2b044c27ac44..02b626fcc700b 100644 --- a/packages/shared-ux/card/no_data/impl/README.mdx +++ b/packages/shared-ux/card/no_data/impl/README.mdx @@ -2,7 +2,7 @@ id: sharedUX/Components/NoDataCard slug: /shared-ux/components/no-data-card title: No Data Card -summary: A card displayed when no data is available is available in Kibana. +description: A card displayed when no data is available is available in Kibana. tags: ['shared-ux', 'component'] date: 2022-06-15 --- diff --git a/packages/shared-ux/link/redirect_app/impl/README.mdx b/packages/shared-ux/link/redirect_app/impl/README.mdx index 07d4f75ab764d..337ea5e0d8450 100644 --- a/packages/shared-ux/link/redirect_app/impl/README.mdx +++ b/packages/shared-ux/link/redirect_app/impl/README.mdx @@ -2,7 +2,7 @@ id: sharedUX/Components/AppLink slug: /shared-ux/components/redirect-app-links title: Redirect App Links -summary: A component for redirecting links contained within it to the appropriate Kibana solution without a page refresh. +description: A component for redirecting links contained within it to the appropriate Kibana solution without a page refresh. tags: ['shared-ux', 'component'] date: 2022-05-04 --- diff --git a/packages/shared-ux/page/analytics_no_data/impl/README.mdx b/packages/shared-ux/page/analytics_no_data/impl/README.mdx index 6ba0e9298c264..0d5a5bae445ef 100644 --- a/packages/shared-ux/page/analytics_no_data/impl/README.mdx +++ b/packages/shared-ux/page/analytics_no_data/impl/README.mdx @@ -2,7 +2,7 @@ id: sharedUX/Page/AnalyticsNoDataPage slug: /shared-ux/page/analytics-no-data-page title: Analytics "No Data" Page -summary: An entire page that can be displayed when Kibana "has no data", specifically for Analytics. +description: An entire page that can be displayed when Kibana "has no data", specifically for Analytics. tags: ['shared-ux', 'component'] date: 2021-12-28 --- diff --git a/packages/shared-ux/page/kibana_no_data/impl/README.mdx b/packages/shared-ux/page/kibana_no_data/impl/README.mdx index afa1bd95c19bd..bc5dc37ac679a 100644 --- a/packages/shared-ux/page/kibana_no_data/impl/README.mdx +++ b/packages/shared-ux/page/kibana_no_data/impl/README.mdx @@ -2,7 +2,7 @@ id: sharedUX/Page/KibanaNoDataPage slug: /shared-ux/page/kibana-no-data title: Kibana No Data Page -summary: A page to be displayed when there is no data in Elasticsearch, or no data views. +description: A page to be displayed when there is no data in Elasticsearch, or no data views. tags: ['shared-ux', 'component'] date: 2022-04-20 --- diff --git a/packages/shared-ux/page/solution_nav/README.mdx b/packages/shared-ux/page/solution_nav/README.mdx index abad92c1e4108..6ddd8462237ba 100644 --- a/packages/shared-ux/page/solution_nav/README.mdx +++ b/packages/shared-ux/page/solution_nav/README.mdx @@ -2,7 +2,7 @@ id: sharedUX/Page/SolutionNav slug: /shared-ux/page/solution-nav title: Solution Page Navigation -summary: A customized `EuiSideNav` for pages within Solutions in Kibana. +description: A customized `EuiSideNav` for pages within Solutions in Kibana. tags: ['shared-ux', 'component'] date: 2022-06-30 --- diff --git a/packages/shared-ux/prompt/no_data_views/impl/README.mdx b/packages/shared-ux/prompt/no_data_views/impl/README.mdx index a2bc63fed0765..26facfce8d86e 100644 --- a/packages/shared-ux/prompt/no_data_views/impl/README.mdx +++ b/packages/shared-ux/prompt/no_data_views/impl/README.mdx @@ -2,7 +2,7 @@ id: sharedUX/Prompt/NoDataViews slug: /shared-ux/prompt/no-data-views title: No Data Views Prompt -summary: A prompt to be displayed when there is data in Elasticsearch, but no data views +description: A prompt to be displayed when there is data in Elasticsearch, but no data views tags: ['shared-ux', 'component', 'prompt', 'no-data'] date: 2022-02-09 --- diff --git a/src/core/server/deprecations/README.mdx b/src/core/server/deprecations/README.mdx index ed542610e753f..2594bd2f0dd6b 100644 --- a/src/core/server/deprecations/README.mdx +++ b/src/core/server/deprecations/README.mdx @@ -2,7 +2,7 @@ id: kibCoreDeprecationsService slug: /kibana-dev-docs/services/deprecations-service title: Core Deprecations service -summary: The Deprecations service helps surface deprecated configs and features for plugins to our users +description: The Deprecations service helps surface deprecated configs and features for plugins to our users date: 2021-06-27 tags: ['kibana','dev', 'contributor', 'api docs'] --- diff --git a/src/core/server/integration_tests/saved_objects/migrations/type_registrations.test.ts b/src/core/server/integration_tests/saved_objects/migrations/type_registrations.test.ts index f25868cc8dd3f..b71529d2ff1a9 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/type_registrations.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/type_registrations.test.ts @@ -49,6 +49,8 @@ const previouslyRegisteredTypes = [ 'event_loop_delays_daily', 'exception-list', 'exception-list-agnostic', + 'file', + 'fileShare', 'file-upload-telemetry', 'file-upload-usage-collection-telemetry', 'fleet-agent-actions', diff --git a/src/core/server/logging/README.mdx b/src/core/server/logging/README.mdx index 11437d1e8df20..9b3cf8f77e24e 100644 --- a/src/core/server/logging/README.mdx +++ b/src/core/server/logging/README.mdx @@ -3,7 +3,7 @@ id: kibCoreLogging slug: /kibana-dev-docs/services/logging title: Logging system image: https://source.unsplash.com/400x175/?Logging -summary: Core logging contains the system and service for Kibana logs. +description: Core logging contains the system and service for Kibana logs. date: 2020-12-02 tags: ['kibana','dev', 'contributor', 'api docs'] --- diff --git a/src/core/test_helpers/kbn_server.ts b/src/core/test_helpers/kbn_server.ts index 022d60acbed9b..faa45c52d84b8 100644 --- a/src/core/test_helpers/kbn_server.ts +++ b/src/core/test_helpers/kbn_server.ts @@ -24,7 +24,7 @@ import { CliArgs, Env } from '@kbn/config'; import { InternalCoreSetup, InternalCoreStart } from '../server/internal_types'; import { Root } from '../server/root'; -export type HttpMethod = 'delete' | 'get' | 'head' | 'post' | 'put'; +export type HttpMethod = 'delete' | 'get' | 'head' | 'post' | 'put' | 'patch'; const DEFAULTS_SETTINGS = { server: { @@ -157,6 +157,7 @@ export const request: Record< head: (root, path) => getSupertest(root, 'head', path), post: (root, path) => getSupertest(root, 'post', path), put: (root, path) => getSupertest(root, 'put', path), + patch: (root, path) => getSupertest(root, 'patch', path), }; export interface TestElasticsearchUtils { diff --git a/src/dev/build/tasks/build_kibana_platform_plugins.ts b/src/dev/build/tasks/build_kibana_platform_plugins.ts index ffb73666e4468..9beb296b7c38c 100644 --- a/src/dev/build/tasks/build_kibana_platform_plugins.ts +++ b/src/dev/build/tasks/build_kibana_platform_plugins.ts @@ -31,6 +31,7 @@ export const BuildKibanaPlatformPlugins: Task = { watch: false, dist: true, includeCoreBundle: true, + inspectWorkers: false, limitsPath: Path.resolve(REPO_ROOT, 'packages/kbn-optimizer/limits.yml'), }); diff --git a/src/plugins/controls/README.mdx b/src/plugins/controls/README.mdx index 46ba1ed3ba9e7..d6805e814e7ff 100644 --- a/src/plugins/controls/README.mdx +++ b/src/plugins/controls/README.mdx @@ -2,7 +2,7 @@ id: controls slug: /kibana-dev-docs/controls title: Controls Plugin -summary: Introduction to the Controls Plugin. +description: Introduction to the Controls Plugin. date: 2020-01-12 tags: ['kibana', 'controls', 'dashboard'] related: [] diff --git a/src/plugins/dashboard/kibana.json b/src/plugins/dashboard/kibana.json index eced5b967f89a..2df14c7afb35c 100644 --- a/src/plugins/dashboard/kibana.json +++ b/src/plugins/dashboard/kibana.json @@ -20,7 +20,8 @@ "uiActions", "urlForwarding", "presentationUtil", - "visualizations" + "visualizations", + "unifiedSearch" ], "optionalPlugins": [ "home", diff --git a/src/plugins/dashboard/public/application/actions/filters_notification_badge.test.tsx b/src/plugins/dashboard/public/application/actions/filters_notification_badge.test.tsx new file mode 100644 index 0000000000000..5b990fe3ae62e --- /dev/null +++ b/src/plugins/dashboard/public/application/actions/filters_notification_badge.test.tsx @@ -0,0 +1,135 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { getSampleDashboardInput } from '../test_helpers'; +import { DashboardContainer } from '../embeddable/dashboard_container'; + +import { coreMock, uiSettingsServiceMock } from '@kbn/core/public/mocks'; +import { CoreStart } from '@kbn/core/public'; +import { FiltersNotificationBadge } from '.'; +import { embeddablePluginMock } from '@kbn/embeddable-plugin/public/mocks'; +import { type Query, type AggregateQuery, Filter } from '@kbn/es-query'; + +import { + ErrorEmbeddable, + FilterableEmbeddable, + IContainer, + isErrorEmbeddable, +} from '../../services/embeddable'; +import { + ContactCardEmbeddable, + ContactCardEmbeddableFactory, + ContactCardEmbeddableInput, + ContactCardEmbeddableOutput, + CONTACT_CARD_EMBEDDABLE, +} from '../../services/embeddable_test_samples'; +import { getStubPluginServices } from '@kbn/presentation-util-plugin/public'; +import { screenshotModePluginMock } from '@kbn/screenshot-mode-plugin/public/mocks'; + +const { setup, doStart } = embeddablePluginMock.createInstance(); +setup.registerEmbeddableFactory( + CONTACT_CARD_EMBEDDABLE, + new ContactCardEmbeddableFactory((() => null) as any, {} as any) +); +const start = doStart(); + +let action: FiltersNotificationBadge; +let container: DashboardContainer; +let embeddable: ContactCardEmbeddable & FilterableEmbeddable; +const mockGetFilters = jest.fn(async () => [] as Filter[]); +const mockGetQuery = jest.fn(async () => undefined as Query | AggregateQuery | undefined); +let coreStart: CoreStart; + +const getMockPhraseFilter = (key: string, value: string) => { + return { + meta: { + type: 'phrase', + key, + params: { + query: value, + }, + }, + query: { + match_phrase: { + [key]: value, + }, + }, + $state: { + store: 'appState', + }, + }; +}; + +beforeEach(async () => { + coreStart = coreMock.createStart(); + + const containerOptions = { + ExitFullScreenButton: () => null, + SavedObjectFinder: () => null, + application: {} as any, + embeddable: start, + inspector: {} as any, + notifications: {} as any, + overlays: coreStart.overlays, + savedObjectMetaData: {} as any, + uiActions: {} as any, + uiSettings: uiSettingsServiceMock.createStartContract(), + http: coreStart.http, + theme: coreStart.theme, + presentationUtil: getStubPluginServices(), + screenshotMode: screenshotModePluginMock.createSetupContract(), + }; + + container = new DashboardContainer(getSampleDashboardInput(), containerOptions); + + const contactCardEmbeddable = await container.addNewEmbeddable< + ContactCardEmbeddableInput, + ContactCardEmbeddableOutput, + ContactCardEmbeddable + >(CONTACT_CARD_EMBEDDABLE, { + firstName: 'Kibanana', + }); + if (isErrorEmbeddable(contactCardEmbeddable)) { + throw new Error('Failed to create embeddable'); + } + + action = new FiltersNotificationBadge( + coreStart.application, + embeddablePluginMock.createStartContract(), + coreStart.overlays, + coreStart.theme, + coreStart.uiSettings + ); + embeddable = embeddablePluginMock.mockFilterableEmbeddable(contactCardEmbeddable, { + getFilters: () => mockGetFilters(), + getQuery: () => mockGetQuery(), + }); +}); + +test('Badge is incompatible with Error Embeddables', async () => { + const errorEmbeddable = new ErrorEmbeddable( + 'Wow what an awful error', + { id: ' 404' }, + embeddable.getRoot() as IContainer + ); + expect(await action.isCompatible({ embeddable: errorEmbeddable })).toBe(false); +}); + +test('Badge is not shown when panel has no app-level filters or queries', async () => { + expect(await action.isCompatible({ embeddable })).toBe(false); +}); + +test('Badge is shown when panel has at least one app-level filter', async () => { + mockGetFilters.mockResolvedValue([getMockPhraseFilter('fieldName', 'someValue')] as Filter[]); + expect(await action.isCompatible({ embeddable })).toBe(true); +}); + +test('Badge is shown when panel has at least one app-level query', async () => { + mockGetQuery.mockResolvedValue({ sql: 'SELECT * FROM test_dataview' } as AggregateQuery); + expect(await action.isCompatible({ embeddable })).toBe(true); +}); diff --git a/src/plugins/dashboard/public/application/actions/filters_notification_badge.tsx b/src/plugins/dashboard/public/application/actions/filters_notification_badge.tsx new file mode 100644 index 0000000000000..e5a1d1af32eea --- /dev/null +++ b/src/plugins/dashboard/public/application/actions/filters_notification_badge.tsx @@ -0,0 +1,119 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { CoreStart, OverlayStart } from '@kbn/core/public'; +import { + EditPanelAction, + EmbeddableStart, + isFilterableEmbeddable, +} from '@kbn/embeddable-plugin/public'; +import { createKibanaReactContext } from '@kbn/kibana-react-plugin/public'; + +import { type AggregateQuery } from '@kbn/es-query'; +import { Action, IncompatibleActionError } from '../../services/ui_actions'; +import { toMountPoint } from '../../services/kibana_react'; +import { IEmbeddable, isErrorEmbeddable } from '../../services/embeddable'; +import { dashboardFilterNotificationBadge } from '../../dashboard_strings'; + +export const BADGE_FILTERS_NOTIFICATION = 'ACTION_FILTERS_NOTIFICATION'; + +export interface FiltersNotificationActionContext { + embeddable: IEmbeddable; +} + +export class FiltersNotificationBadge implements Action { + public readonly id = BADGE_FILTERS_NOTIFICATION; + public readonly type = BADGE_FILTERS_NOTIFICATION; + public readonly order = 2; + + private displayName = dashboardFilterNotificationBadge.getDisplayName(); + private icon = 'filter'; + + constructor( + private application: CoreStart['application'], + private embeddableService: EmbeddableStart, + private overlays: OverlayStart, + private theme: CoreStart['theme'], + private uiSettings: CoreStart['uiSettings'] + ) {} + + public getDisplayName({ embeddable }: FiltersNotificationActionContext) { + if (!embeddable.getRoot() || !embeddable.getRoot().isContainer) { + throw new IncompatibleActionError(); + } + return this.displayName; + } + + public getIconType({ embeddable }: FiltersNotificationActionContext) { + if (!embeddable.getRoot() || !embeddable.getRoot().isContainer) { + throw new IncompatibleActionError(); + } + return this.icon; + } + + public isCompatible = async ({ embeddable }: FiltersNotificationActionContext) => { + // add all possible early returns to avoid the async import unless absolutely necessary + if ( + isErrorEmbeddable(embeddable) || + !embeddable.getRoot().isContainer || + !isFilterableEmbeddable(embeddable) + ) { + return false; + } + if ((await embeddable.getFilters()).length > 0) return true; + + // all early returns failed, so go ahead and check the query now + const { isOfQueryType, isOfAggregateQueryType } = await import('@kbn/es-query'); + const query = await embeddable.getQuery(); + return ( + (isOfQueryType(query) && query.query !== '') || + isOfAggregateQueryType(query as AggregateQuery) + ); + }; + + public execute = async (context: FiltersNotificationActionContext) => { + const { embeddable } = context; + + const isCompatible = await this.isCompatible({ embeddable }); + if (!isCompatible || !isFilterableEmbeddable(embeddable)) { + throw new IncompatibleActionError(); + } + + const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ + uiSettings: this.uiSettings, + }); + const editPanelAction = new EditPanelAction( + this.embeddableService.getEmbeddableFactory, + this.application, + this.embeddableService.getStateTransfer() + ); + const FiltersNotificationModal = await import('./filters_notification_modal').then( + (m) => m.FiltersNotificationModal + ); + + const session = this.overlays.openModal( + toMountPoint( + + session.close()} + /> + , + { theme$: this.theme.theme$ } + ), + { + 'data-test-subj': 'filtersNotificationModal', + } + ); + }; +} diff --git a/src/plugins/dashboard/public/application/actions/filters_notification_modal.test.tsx b/src/plugins/dashboard/public/application/actions/filters_notification_modal.test.tsx new file mode 100644 index 0000000000000..2729395b7eec5 --- /dev/null +++ b/src/plugins/dashboard/public/application/actions/filters_notification_modal.test.tsx @@ -0,0 +1,132 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { findTestSubject, mountWithIntl } from '@kbn/test-jest-helpers'; + +import { DashboardContainer } from '../embeddable/dashboard_container'; +import { embeddablePluginMock } from '@kbn/embeddable-plugin/public/mocks'; +import { getSampleDashboardInput } from '../test_helpers'; +import { CoreStart } from '@kbn/core/public'; +import { coreMock, uiSettingsServiceMock } from '@kbn/core/public/mocks'; +import { EuiModalFooter } from '@elastic/eui'; +import { getStubPluginServices } from '@kbn/presentation-util-plugin/public'; +import { screenshotModePluginMock } from '@kbn/screenshot-mode-plugin/public/mocks'; +import { FiltersNotificationModal, FiltersNotificationProps } from './filters_notification_modal'; +import { FilterableEmbeddable, isErrorEmbeddable, ViewMode } from '../../services/embeddable'; +import { + CONTACT_CARD_EMBEDDABLE, + ContactCardEmbeddableFactory, + ContactCardEmbeddableInput, + ContactCardEmbeddableOutput, + ContactCardEmbeddable, +} from '../../services/embeddable_test_samples'; +import { act } from 'react-dom/test-utils'; + +describe('LibraryNotificationPopover', () => { + const { setup, doStart } = embeddablePluginMock.createInstance(); + setup.registerEmbeddableFactory( + CONTACT_CARD_EMBEDDABLE, + new ContactCardEmbeddableFactory((() => null) as any, {} as any) + ); + const start = doStart(); + + let container: DashboardContainer; + let embeddable: ContactCardEmbeddable & FilterableEmbeddable; + let defaultProps: FiltersNotificationProps; + let coreStart: CoreStart; + + beforeEach(async () => { + coreStart = coreMock.createStart(); + + const containerOptions = { + ExitFullScreenButton: () => null, + SavedObjectFinder: () => null, + application: {} as any, + embeddable: start, + inspector: {} as any, + notifications: {} as any, + overlays: coreStart.overlays, + savedObjectMetaData: {} as any, + uiActions: {} as any, + uiSettings: uiSettingsServiceMock.createStartContract(), + http: coreStart.http, + theme: coreStart.theme, + presentationUtil: getStubPluginServices(), + screenshotMode: screenshotModePluginMock.createSetupContract(), + }; + + container = new DashboardContainer(getSampleDashboardInput(), containerOptions); + const contactCardEmbeddable = await container.addNewEmbeddable< + ContactCardEmbeddableInput, + ContactCardEmbeddableOutput, + ContactCardEmbeddable + >(CONTACT_CARD_EMBEDDABLE, { + firstName: 'Kibanana', + }); + if (isErrorEmbeddable(contactCardEmbeddable)) { + throw new Error('Failed to create embeddable'); + } + embeddable = embeddablePluginMock.mockFilterableEmbeddable(contactCardEmbeddable, { + getFilters: jest.fn(), + getQuery: jest.fn(), + }); + + defaultProps = { + context: { embeddable: contactCardEmbeddable }, + displayName: 'test display', + id: 'testId', + editPanelAction: { + execute: jest.fn(), + } as unknown as FiltersNotificationProps['editPanelAction'], + onClose: jest.fn(), + }; + }); + + function mountComponent(props?: Partial) { + return mountWithIntl(); + } + + test('show modal footer in edit mode', async () => { + embeddable.updateInput({ viewMode: ViewMode.EDIT }); + await act(async () => { + const component = mountComponent(); + const footer = component.find(EuiModalFooter); + expect(footer.exists()).toBe(true); + }); + }); + + test('hide modal footer in view mode', async () => { + embeddable.updateInput({ viewMode: ViewMode.VIEW }); + await act(async () => { + const component = mountComponent(); + const footer = component.find(EuiModalFooter); + expect(footer.exists()).toBe(false); + }); + }); + + test('clicking edit button executes edit panel action', async () => { + embeddable.updateInput({ viewMode: ViewMode.EDIT }); + await act(async () => { + const component = mountComponent(); + const editButton = findTestSubject(component, 'filtersNotificationModal__editButton'); + editButton.simulate('click'); + expect(defaultProps.editPanelAction.execute).toHaveBeenCalled(); + }); + }); + + test('clicking close button calls onClose', async () => { + embeddable.updateInput({ viewMode: ViewMode.EDIT }); + await act(async () => { + const component = mountComponent(); + const editButton = findTestSubject(component, 'filtersNotificationModal__closeButton'); + editButton.simulate('click'); + expect(defaultProps.onClose).toHaveBeenCalled(); + }); + }); +}); diff --git a/src/plugins/dashboard/public/application/actions/filters_notification_modal.tsx b/src/plugins/dashboard/public/application/actions/filters_notification_modal.tsx new file mode 100644 index 0000000000000..b188674a85b69 --- /dev/null +++ b/src/plugins/dashboard/public/application/actions/filters_notification_modal.tsx @@ -0,0 +1,162 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useState } from 'react'; +import useMount from 'react-use/lib/useMount'; + +import { + EuiButton, + EuiButtonEmpty, + EuiCodeBlock, + EuiFlexGroup, + EuiFlexItem, + EuiForm, + EuiFormRow, + EuiLoadingContent, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, +} from '@elastic/eui'; +import { css } from '@emotion/react'; +import { DataView } from '@kbn/data-views-plugin/public'; +import { + EditPanelAction, + FilterableEmbeddable, + IEmbeddable, + ViewMode, +} from '@kbn/embeddable-plugin/public'; +import { + type AggregateQuery, + type Filter, + getAggregateQueryMode, + isOfQueryType, +} from '@kbn/es-query'; +import { FilterItems } from '@kbn/unified-search-plugin/public'; + +import { FiltersNotificationActionContext } from './filters_notification_badge'; +import { DashboardContainer } from '../embeddable'; +import { dashboardFilterNotificationBadge } from '../../dashboard_strings'; + +export interface FiltersNotificationProps { + context: FiltersNotificationActionContext; + displayName: string; + id: string; + editPanelAction: EditPanelAction; + onClose: () => void; +} + +export function FiltersNotificationModal({ + context, + displayName, + id, + editPanelAction, + onClose, +}: FiltersNotificationProps) { + const { embeddable } = context; + const [isLoading, setIsLoading] = useState(true); + const [filters, setFilters] = useState([]); + const [queryString, setQueryString] = useState(''); + const [queryLanguage, setQueryLanguage] = useState<'sql' | 'esql' | undefined>(); + + useMount(() => { + Promise.all([ + (embeddable as IEmbeddable & FilterableEmbeddable).getFilters(), + (embeddable as IEmbeddable & FilterableEmbeddable).getQuery(), + ]).then(([embeddableFilters, embeddableQuery]) => { + setFilters(embeddableFilters); + if (embeddableQuery) { + if (isOfQueryType(embeddableQuery)) { + setQueryString(embeddableQuery.query as string); + } else { + const language = getAggregateQueryMode(embeddableQuery); + setQueryLanguage(language); + setQueryString(embeddableQuery[language as keyof AggregateQuery]); + } + } + setIsLoading(false); + }); + }); + + const dataViewList: DataView[] = (embeddable.getRoot() as DashboardContainer)?.getAllDataViews(); + const viewMode = embeddable.getInput().viewMode; + + return ( + <> + + +

{displayName}

+
+
+ + + {isLoading ? ( + + ) : ( + + {queryString !== '' && ( + + + {queryString} + + + )} + {filters && filters.length > 0 && ( + + + + + + )} + + )} + + + {viewMode !== ViewMode.VIEW && ( + + + + + {dashboardFilterNotificationBadge.getCloseButtonTitle()} + + + + { + onClose(); + editPanelAction.execute(context); + }} + fill + > + {dashboardFilterNotificationBadge.getEditButtonTitle()} + + + + + )} + + ); +} diff --git a/src/plugins/dashboard/public/application/actions/index.ts b/src/plugins/dashboard/public/application/actions/index.ts index 2c6263314cb25..5c95e3c42cccd 100644 --- a/src/plugins/dashboard/public/application/actions/index.ts +++ b/src/plugins/dashboard/public/application/actions/index.ts @@ -23,5 +23,6 @@ export { LibraryNotificationAction, ACTION_LIBRARY_NOTIFICATION, } from './library_notification_action'; +export { FiltersNotificationBadge, BADGE_FILTERS_NOTIFICATION } from './filters_notification_badge'; export type { ExportContext } from './export_csv_action'; export { ExportCSVAction, ACTION_EXPORT_CSV } from './export_csv_action'; diff --git a/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx b/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx index 9f59e8637ba1c..2bb7bbb51b376 100644 --- a/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx +++ b/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx @@ -16,6 +16,8 @@ import { reportPerformanceMetricEvent } from '@kbn/ebt-tools'; import { ControlGroupContainer } from '@kbn/controls-plugin/public'; import { Filter, TimeRange } from '@kbn/es-query'; +import { DataView } from '@kbn/data-views-plugin/public'; + import { UiActionsStart } from '../../services/ui_actions'; import { RefreshInterval, Query } from '../../services/data'; import { @@ -114,6 +116,24 @@ export class DashboardContainer extends Container { + return this.allDataViews; + }; + + /** + * Use this to set the dataviews that are used in the dashboard when they change/update + * @param newDataViews The new array of dataviews that will overwrite the old dataviews array + */ + public setAllDataViews = (newDataViews: DataView[]) => { + this.allDataViews = newDataViews; + }; + public getPanelCount = () => { return Object.keys(this.getInput().panels).length; }; diff --git a/src/plugins/dashboard/public/application/hooks/use_dashboard_app_state.ts b/src/plugins/dashboard/public/application/hooks/use_dashboard_app_state.ts index 5497ae15a8714..30bb15c6ecd49 100644 --- a/src/plugins/dashboard/public/application/hooks/use_dashboard_app_state.ts +++ b/src/plugins/dashboard/public/application/hooks/use_dashboard_app_state.ts @@ -258,9 +258,9 @@ export const useDashboardAppState = ({ if (newDataViewIds?.[0]) { dashboardContainer.controlGroup?.setRelevantDataViewId(newDataViewIds[0]); } - // fetch all data views. These should be cached locally at this time so we will not need to query ES. const allDataViews = await Promise.all(newDataViewIds.map((id) => dataViews.get(id))); + dashboardContainer.setAllDataViews(allDataViews); setDashboardAppState((s) => ({ ...s, dataViews: allDataViews })); }, }); diff --git a/src/plugins/dashboard/public/dashboard_strings.ts b/src/plugins/dashboard/public/dashboard_strings.ts index d826f16b381e9..a158df1013558 100644 --- a/src/plugins/dashboard/public/dashboard_strings.ts +++ b/src/plugins/dashboard/public/dashboard_strings.ts @@ -191,6 +191,29 @@ export const dashboardReplacePanelAction = { }), }; +export const dashboardFilterNotificationBadge = { + getDisplayName: () => + i18n.translate('dashboard.panel.filters', { + defaultMessage: 'Panel filters', + }), + getEditButtonTitle: () => + i18n.translate('dashboard.panel.filters.modal.editButton', { + defaultMessage: 'Edit filters', + }), + getCloseButtonTitle: () => + i18n.translate('dashboard.panel.filters.modal.closeButton', { + defaultMessage: 'Close', + }), + getQueryTitle: () => + i18n.translate('dashboard.panel.filters.modal.queryTitle', { + defaultMessage: 'Query', + }), + getFiltersTitle: () => + i18n.translate('dashboard.panel.filters.modal.filtersTitle', { + defaultMessage: 'Filters', + }), +}; + /* Dashboard Editor */ diff --git a/src/plugins/dashboard/public/plugin.tsx b/src/plugins/dashboard/public/plugin.tsx index ba06709d69f7b..c86ee5829eb44 100644 --- a/src/plugins/dashboard/public/plugin.tsx +++ b/src/plugins/dashboard/public/plugin.tsx @@ -26,9 +26,10 @@ import { SavedObjectsClientContract, } from '@kbn/core/public'; import { VisualizationsStart } from '@kbn/visualizations-plugin/public'; - -import { replaceUrlHashQuery } from '@kbn/kibana-utils-plugin/public'; import { DataViewEditorStart } from '@kbn/data-view-editor-plugin/public'; +import { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; +import { replaceUrlHashQuery } from '@kbn/kibana-utils-plugin/public'; + import { createKbnUrlTracker } from './services/kibana_utils'; import { UsageCollectionSetup } from './services/usage_collection'; import { UiActionsSetup, UiActionsStart } from './services/ui_actions'; @@ -51,6 +52,7 @@ import { CONTEXT_MENU_TRIGGER, EmbeddableSetup, EmbeddableStart, + PANEL_BADGE_TRIGGER, PANEL_NOTIFICATION_TRIGGER, } from './services/embeddable'; import { @@ -79,6 +81,7 @@ import { PlaceholderEmbeddableFactory } from './application/embeddable/placehold import { ExportCSVAction } from './application/actions/export_csv_action'; import { dashboardFeatureCatalog } from './dashboard_strings'; import { SpacesPluginStart } from './services/spaces'; +import { FiltersNotificationBadge } from './application/actions/filters_notification_badge'; export interface DashboardFeatureFlagConfig { allowByValueEmbeddables: boolean; @@ -93,6 +96,7 @@ export interface DashboardSetupDependencies { uiActions: UiActionsSetup; usageCollection?: UsageCollectionSetup; screenshotMode: ScreenshotModePluginSetup; + unifiedSearch: UnifiedSearchPublicPluginStart; } export interface DashboardStartDependencies { @@ -111,6 +115,7 @@ export interface DashboardStartDependencies { visualizations: VisualizationsStart; screenshotMode: ScreenshotModePluginStart; dataViewEditor: DataViewEditorStart; + unifiedSearch: UnifiedSearchPublicPluginStart; } export interface DashboardSetup { @@ -336,13 +341,13 @@ export class DashboardPlugin } public start(core: CoreStart, plugins: DashboardStartDependencies): DashboardStart { - const { notifications, overlays, application, theme } = core; + const { notifications, overlays, application, theme, uiSettings } = core; const { uiActions, data, share, presentationUtil, embeddable } = plugins; const dashboardCapabilities: Readonly = application.capabilities .dashboard as DashboardCapabilities; - const SavedObjectFinder = getSavedObjectFinder(core.savedObjects, core.uiSettings); + const SavedObjectFinder = getSavedObjectFinder(core.savedObjects, uiSettings); const expandPanelAction = new ExpandPanelAction(); uiActions.registerAction(expandPanelAction); @@ -361,6 +366,16 @@ export class DashboardPlugin uiActions.registerAction(clonePanelAction); uiActions.attachAction(CONTEXT_MENU_TRIGGER, clonePanelAction.id); + const panelLevelFiltersNotification = new FiltersNotificationBadge( + application, + embeddable, + overlays, + theme, + uiSettings + ); + uiActions.registerAction(panelLevelFiltersNotification); + uiActions.attachAction(PANEL_BADGE_TRIGGER, panelLevelFiltersNotification.id); + if (share) { const ExportCSVPlugin = new ExportCSVAction({ core, data }); uiActions.addTriggerAction(CONTEXT_MENU_TRIGGER, ExportCSVPlugin); diff --git a/src/plugins/data/README.mdx b/src/plugins/data/README.mdx index a8cb06ff9e60b..ca1bd6fd98954 100644 --- a/src/plugins/data/README.mdx +++ b/src/plugins/data/README.mdx @@ -3,7 +3,7 @@ id: kibDataPlugin slug: /kibana-dev-docs/key-concepts/data-plugin title: Data services image: https://source.unsplash.com/400x175/?Search -summary: The data plugin contains services for searching, querying and filtering. +description: The data plugin contains services for searching, querying and filtering. date: 2020-12-02 tags: ['kibana', 'dev', 'contributor', 'api docs'] --- diff --git a/src/plugins/data_views/README.mdx b/src/plugins/data_views/README.mdx index 7fdd435db746e..6d2ef4c97bb33 100644 --- a/src/plugins/data_views/README.mdx +++ b/src/plugins/data_views/README.mdx @@ -3,7 +3,7 @@ id: kibDataPlugin slug: /kibana-dev-docs/services/data-plugin title: Data services image: https://source.unsplash.com/400x175/?Search -summary: The data plugin contains services for searching, querying and filtering. +description: The data plugin contains services for searching, querying and filtering. date: 2020-12-02 tags: ['kibana', 'dev', 'contributor', 'api docs'] --- diff --git a/src/plugins/data_views/common/data_views/data_views.test.ts b/src/plugins/data_views/common/data_views/data_views.test.ts index a823e54665709..fcf60947db758 100644 --- a/src/plugins/data_views/common/data_views/data_views.test.ts +++ b/src/plugins/data_views/common/data_views/data_views.test.ts @@ -21,7 +21,7 @@ import { stubbedSavedObjectIndexPattern } from '../data_view.stub'; const createFieldsFetcher = () => ({ - getFieldsForWildcard: () => [], + getFieldsForWildcard: jest.fn(async () => []), } as any as IDataViewsApiClient); const fieldFormats = fieldFormatsMock; @@ -56,6 +56,7 @@ describe('IndexPatterns', () => { let indexPatternsNoAccess: DataViewsService; let savedObjectsClient: SavedObjectsClientCommon; let SOClientGetDelay = 0; + let apiClient: IDataViewsApiClient; const uiSettings = { get: () => Promise.resolve(false), getAll: () => {}, @@ -97,10 +98,12 @@ describe('IndexPatterns', () => { }; }); + apiClient = createFieldsFetcher(); + indexPatterns = new DataViewsService({ uiSettings, savedObjectsClient: savedObjectsClient as unknown as SavedObjectsClientCommon, - apiClient: createFieldsFetcher(), + apiClient, fieldFormats, onNotification: () => {}, onError: () => {}, @@ -112,7 +115,7 @@ describe('IndexPatterns', () => { indexPatternsNoAccess = new DataViewsService({ uiSettings, savedObjectsClient: savedObjectsClient as unknown as SavedObjectsClientCommon, - apiClient: createFieldsFetcher(), + apiClient, fieldFormats, onNotification: () => {}, onError: () => {}, @@ -441,6 +444,13 @@ describe('IndexPatterns', () => { expect(defaultDataViewResult?.id).toBe('id1'); expect(uiSettings.set).toBeCalledTimes(0); }); + }); + + describe('refreshFields', () => { + beforeEach(() => { + // preserve mocked functionality + jest.clearAllMocks(); + }); test('refreshFields includes runtimeFields', async () => { const indexPatternSpec: DataViewSpec = { @@ -455,10 +465,22 @@ describe('IndexPatterns', () => { title: 'test', }; + const indexPattern = await indexPatterns.create(indexPatternSpec); + await indexPatterns.refreshFields(indexPattern); + expect(indexPattern.fields.length).toBe(1); + }); + + test('refreshFields properly includes allowNoIndex', async () => { + const indexPatternSpec: DataViewSpec = { + allowNoIndex: true, + title: 'test', + }; + const indexPattern = await indexPatterns.create(indexPatternSpec); indexPatterns.refreshFields(indexPattern); - expect(indexPattern.fields.length).toBe(1); + // @ts-expect-error + expect(apiClient.getFieldsForWildcard.mock.calls[0][0].allowNoIndex).toBe(true); }); }); }); 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 c6782e82abc34..aca409ea08624 100644 --- a/src/plugins/data_views/common/data_views/data_views.ts +++ b/src/plugins/data_views/common/data_views/data_views.ts @@ -500,6 +500,7 @@ export class DataViewsService { this.getFieldsForWildcard({ type: indexPattern.type, rollupIndex: indexPattern?.typeMeta?.params?.rollup_index, + allowNoIndex: indexPattern.allowNoIndex, ...options, pattern: indexPattern.title as string, }); diff --git a/src/plugins/data_views/common/utils.ts b/src/plugins/data_views/common/utils.ts index c12e6c71c92ba..9b86dfefc2631 100644 --- a/src/plugins/data_views/common/utils.ts +++ b/src/plugins/data_views/common/utils.ts @@ -20,11 +20,11 @@ import { DATA_VIEW_SAVED_OBJECT_TYPE } from './constants'; */ export async function findByName(client: SavedObjectsClientCommon, name: string) { if (name) { - const savedObjects = await client.find({ + const savedObjects = await client.find<{ name: DataViewSavedObjectAttrs['name'] }>({ type: DATA_VIEW_SAVED_OBJECT_TYPE, perPage: 10, search: `"${name}"`, - searchFields: ['name'], + searchFields: ['name.keyword'], fields: ['name'], }); diff --git a/src/plugins/data_views/server/saved_objects/data_views.ts b/src/plugins/data_views/server/saved_objects/data_views.ts index 3036efd5559d3..4b8318b3d065f 100644 --- a/src/plugins/data_views/server/saved_objects/data_views.ts +++ b/src/plugins/data_views/server/saved_objects/data_views.ts @@ -38,7 +38,14 @@ export const dataViewSavedObjectType: SavedObjectsType = { properties: { title: { type: 'text' }, type: { type: 'keyword' }, - name: { type: 'text' }, + name: { + type: 'text', + fields: { + keyword: { + type: 'keyword', + }, + }, + }, }, }, migrations: indexPatternSavedObjectTypeMigrations, diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx index c2e76e517f64d..1fb7acc18b7db 100644 --- a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx @@ -20,9 +20,14 @@ import { i18n } from '@kbn/i18n'; import { isEqual } from 'lodash'; import { I18nProvider } from '@kbn/i18n-react'; import type { KibanaExecutionContext } from '@kbn/core/public'; -import { Container, Embeddable } from '@kbn/embeddable-plugin/public'; +import { Container, Embeddable, FilterableEmbeddable } from '@kbn/embeddable-plugin/public'; import { Adapters, RequestAdapter } from '@kbn/inspector-plugin/common'; -import { APPLY_FILTER_TRIGGER, FilterManager, generateFilters } from '@kbn/data-plugin/public'; +import { + APPLY_FILTER_TRIGGER, + FilterManager, + generateFilters, + mapAndFlattenFilters, +} from '@kbn/data-plugin/public'; import { ISearchSource } from '@kbn/data-plugin/public'; import { DataView, DataViewField } from '@kbn/data-views-plugin/public'; import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; @@ -83,7 +88,7 @@ interface SearchEmbeddableConfig { export class SavedSearchEmbeddable extends Embeddable - implements ISearchEmbeddable + implements ISearchEmbeddable, FilterableEmbeddable { private readonly savedSearch: SavedSearch; private inspectorAdapters: Adapters; @@ -548,6 +553,22 @@ export class SavedSearchEmbeddable return this.savedSearch.description; } + /** + * @returns Local/panel-level array of filters for Saved Search embeddable + */ + public async getFilters() { + return mapAndFlattenFilters( + (this.savedSearch.searchSource.getFields().filter as Filter[]) ?? [] + ); + } + + /** + * @returns Local/panel-level query for Saved Search embeddable + */ + public async getQuery() { + return this.savedSearch.searchSource.getFields().query; + } + public destroy() { super.destroy(); if (this.searchProps) { diff --git a/src/plugins/embeddable/public/index.ts b/src/plugins/embeddable/public/index.ts index 29409f63548af..4b4d63f4596a4 100644 --- a/src/plugins/embeddable/public/index.ts +++ b/src/plugins/embeddable/public/index.ts @@ -15,6 +15,7 @@ export type { Adapters, ReferenceOrValueEmbeddable, SelfStyledEmbeddable, + FilterableEmbeddable, ChartActionContext, ContainerInput, ContainerOutput, @@ -79,6 +80,7 @@ export { EmbeddableStateTransfer, EmbeddableRenderer, useEmbeddableFactory, + isFilterableEmbeddable, } from './lib'; export { AttributeService, ATTRIBUTE_SERVICE_KEY } from './lib/attribute_service'; diff --git a/src/plugins/embeddable/public/lib/filterable_embeddable/index.ts b/src/plugins/embeddable/public/lib/filterable_embeddable/index.ts new file mode 100644 index 0000000000000..ffa9470a34af4 --- /dev/null +++ b/src/plugins/embeddable/public/lib/filterable_embeddable/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 type { FilterableEmbeddable } from './types'; +export { isFilterableEmbeddable } from './types'; diff --git a/src/plugins/embeddable/public/lib/filterable_embeddable/types.ts b/src/plugins/embeddable/public/lib/filterable_embeddable/types.ts new file mode 100644 index 0000000000000..8fe2b85e02ada --- /dev/null +++ b/src/plugins/embeddable/public/lib/filterable_embeddable/types.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 { type AggregateQuery, type Filter, type Query } from '@kbn/es-query'; + +/** + * All embeddables that implement this interface should support being filtered + * and/or queried via the top navigation bar + * @public + */ +export interface FilterableEmbeddable { + /** + * Gets the embeddable's local filters + **/ + getFilters: () => Promise; + /** + * Gets the embeddable's local query + **/ + getQuery: () => Promise; +} + +/** + * Ensure that embeddable supports filtering/querying + * @param incoming Embeddable that is being tested to check if it is a FilterableEmbeddable + * @returns true if the incoming embeddable is a FilterableEmbeddable, false if it is not + */ +export function isFilterableEmbeddable(incoming: unknown): incoming is FilterableEmbeddable { + return ( + !!(incoming as FilterableEmbeddable).getFilters && !!(incoming as FilterableEmbeddable).getQuery + ); +} diff --git a/src/plugins/embeddable/public/lib/index.ts b/src/plugins/embeddable/public/lib/index.ts index 6f57003403aca..f8c30b12c5c74 100644 --- a/src/plugins/embeddable/public/lib/index.ts +++ b/src/plugins/embeddable/public/lib/index.ts @@ -16,3 +16,4 @@ export * from './panel'; export * from './state_transfer'; export * from './reference_or_value_embeddable'; export * from './self_styled_embeddable'; +export * from './filterable_embeddable'; diff --git a/src/plugins/embeddable/public/mocks.tsx b/src/plugins/embeddable/public/mocks.tsx index 9f05b3eeaa001..25ccb141cd356 100644 --- a/src/plugins/embeddable/public/mocks.tsx +++ b/src/plugins/embeddable/public/mocks.tsx @@ -10,6 +10,7 @@ import React from 'react'; import { coreMock, themeServiceMock } from '@kbn/core/public/mocks'; import { CoreStart } from '@kbn/core/public'; import { Start as InspectorStart } from '@kbn/inspector-plugin/public'; +import { type AggregateQuery, type Filter, type Query } from '@kbn/es-query'; import { inspectorPluginMock } from '@kbn/inspector-plugin/public/mocks'; import { uiActionsPluginMock } from '@kbn/ui-actions-plugin/public/mocks'; @@ -27,6 +28,7 @@ import { SavedObjectEmbeddableInput, ReferenceOrValueEmbeddable, SelfStyledEmbeddable, + FilterableEmbeddable, } from '.'; import { SelfStyledOptions } from './lib/self_styled_embeddable/types'; @@ -112,6 +114,19 @@ export function mockSelfStyledEmbeddable( return newEmbeddable as OriginalEmbeddableType & SelfStyledEmbeddable; } +export function mockFilterableEmbeddable( + embeddable: OriginalEmbeddableType, + options: { + getFilters: () => Promise; + getQuery: () => Promise; + } +): OriginalEmbeddableType & FilterableEmbeddable { + const newEmbeddable: FilterableEmbeddable = embeddable as unknown as FilterableEmbeddable; + newEmbeddable.getFilters = () => options.getFilters(); + newEmbeddable.getQuery = () => options.getQuery(); + return newEmbeddable as OriginalEmbeddableType & FilterableEmbeddable; +} + const createSetupContract = (): Setup => { const setupContract: Setup = { registerEmbeddableFactory: jest.fn(), @@ -159,4 +174,5 @@ export const embeddablePluginMock = { createInstance, mockRefOrValEmbeddable, mockSelfStyledEmbeddable, + mockFilterableEmbeddable, }; diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/default_value.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/default_value.mdx index 5e03d6ad16528..be5dc8034d039 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/default_value.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/default_value.mdx @@ -2,7 +2,7 @@ id: formLibCoreDefaultValue slug: /form-lib/core/default-value title: Default value -summary: Initiate a field with the correct value +description: Initiate a field with the correct value tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/field_hook.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/field_hook.mdx index c7be88c4336a6..8532a1857871c 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/field_hook.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/field_hook.mdx @@ -2,7 +2,7 @@ id: formLibCoreFieldHook slug: /form-lib/core/field-hook title: Field hook -summary: You don't manually create them but you'll get all the love from them +description: You don't manually create them but you'll get all the love from them tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/form_component.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/form_component.mdx index df479b5c72f37..db642ef846fca 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/form_component.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/form_component.mdx @@ -2,7 +2,7 @@ id: formLibCoreFormComponent slug: /form-lib/core/form-component title:
-summary: The boundary of your form +description: The boundary of your form tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/form_hook.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/form_hook.mdx index 46fac236123fd..824f9f6671384 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/form_hook.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/form_hook.mdx @@ -2,7 +2,7 @@ id: formLibCoreFormHook slug: /form-lib/core/form-hook title: Form hook -summary: The heart of the lib; It manages your fields so you don't have to +description: The heart of the lib; It manages your fields so you don't have to tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/fundamentals.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/fundamentals.mdx index c168cb4115bc2..4276519c54e87 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/fundamentals.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/fundamentals.mdx @@ -2,7 +2,7 @@ id: formLibCoreFundamentals slug: /form-lib/core/fundamentals title: Fundamentals -summary: Let's understand the basics +description: Let's understand the basics tags: ['forms', 'kibana', 'dev'] date: 2022-03-18 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_array.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/use_array.mdx index b92880fdf806d..ca849fd067ccb 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/use_array.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/use_array.mdx @@ -2,7 +2,7 @@ id: formLibCoreUseArray slug: /form-lib/core/use-array title: -summary: The perfect companion to generate dynamic fields +description: The perfect companion to generate dynamic fields tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_behavior_subject.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/use_behavior_subject.mdx index f7eca9c360ac4..40190343f5bfe 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/use_behavior_subject.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/use_behavior_subject.mdx @@ -2,7 +2,7 @@ id: formLibCoreUseBehaviorSubject slug: /form-lib/utils/use-behavior-subject title: useBehaviorSubject() -summary: Util to create a rxjs BehaviorSubject with a handler to change its value +description: Util to create a rxjs BehaviorSubject with a handler to change its value tags: ['forms', 'kibana', 'dev'] date: 2021-08-20 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_field.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/use_field.mdx index dd073e0b38d1f..d5729dc778816 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/use_field.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/use_field.mdx @@ -2,7 +2,7 @@ id: formLibCoreUseField slug: /form-lib/core/use-field title: -summary: Drop it anywhere in your and see the magic happen +description: Drop it anywhere in your and see the magic happen tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_form_data.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/use_form_data.mdx index 0deb449591871..2e5f628a86370 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/use_form_data.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/use_form_data.mdx @@ -2,7 +2,7 @@ id: formLibCoreUseFormData slug: /form-lib/core/use-form-data title: useFormData() -summary: Get fields value updates from anywhere +description: Get fields value updates from anywhere tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_form_hook.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/use_form_hook.mdx index 21c77afd6dbce..82cd0c88834a3 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/use_form_hook.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/use_form_hook.mdx @@ -2,7 +2,7 @@ id: formLibCoreUseForm slug: /form-lib/core/use-form title: useForm() -summary: The only hook you'll need to declare a new form +description: The only hook you'll need to declare a new form tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_form_is_modified.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/use_form_is_modified.mdx index d90b9100a04af..d7c0603cc07c5 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/use_form_is_modified.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/use_form_is_modified.mdx @@ -2,7 +2,7 @@ id: formLibCoreUseFormIsModified slug: /form-lib/core/use-form-is-modified title: useFormIsModified() -summary: Know when your form has been modified by the user +description: Know when your form has been modified by the user tags: ['forms', 'kibana', 'dev'] date: 2022-03-18 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_multi_fields.mdx b/src/plugins/es_ui_shared/static/forms/docs/core/use_multi_fields.mdx index 2a16b8e878be8..281db05d5f1a6 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/core/use_multi_fields.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/core/use_multi_fields.mdx @@ -2,7 +2,7 @@ id: formLibCoreUseMultiFields slug: /form-lib/core/use-multi-fields title: -summary: Because sometimes you need more than one field +description: Because sometimes you need more than one field tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/dynamic_fields.mdx b/src/plugins/es_ui_shared/static/forms/docs/examples/dynamic_fields.mdx index f2525d5a16fba..82516423424f6 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/examples/dynamic_fields.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/examples/dynamic_fields.mdx @@ -2,7 +2,7 @@ id: formLibExampleDynamicFields slug: /form-lib/examples/dynamic-fields title: Dynamic fields -summary: Let the user add any number of fields on the fly +description: Let the user add any number of fields on the fly tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/fields_composition.mdx b/src/plugins/es_ui_shared/static/forms/docs/examples/fields_composition.mdx index 260908f94a790..7e7cce5e81332 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/examples/fields_composition.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/examples/fields_composition.mdx @@ -2,7 +2,7 @@ id: formLibExampleFieldsComposition slug: /form-lib/examples/fields-composition title: Fields composition -summary: Be DRY and compose your form +description: Be DRY and compose your form tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/listening_to_changes.mdx b/src/plugins/es_ui_shared/static/forms/docs/examples/listening_to_changes.mdx index c99184f5a5c0e..6574a7ca4e2d1 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/examples/listening_to_changes.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/examples/listening_to_changes.mdx @@ -2,7 +2,7 @@ id: formLibExampleListeningToChanges slug: /form-lib/examples/listening-to-changes title: Listening to changes -summary: React to changes deep down the tree +description: React to changes deep down the tree tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/serializers_deserializers.mdx b/src/plugins/es_ui_shared/static/forms/docs/examples/serializers_deserializers.mdx index 393711b393e0f..dd3b402e85e3f 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/examples/serializers_deserializers.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/examples/serializers_deserializers.mdx @@ -2,7 +2,7 @@ id: formLibExampleSerializersDeserializers slug: /form-lib/examples/serializers-deserializers title: Serializers & Deserializers -summary: No need for a 1:1 map of your API with your form fields, be creative! +description: No need for a 1:1 map of your API with your form fields, be creative! tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/style_fields.mdx b/src/plugins/es_ui_shared/static/forms/docs/examples/style_fields.mdx index db7c98772eddb..81ed07ffd5daf 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/examples/style_fields.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/examples/style_fields.mdx @@ -2,7 +2,7 @@ id: formLibExampleStyleFields slug: /form-lib/examples/styles-fields title: Style fields -summary: Customize your fields however you want +description: Customize your fields however you want tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/validation.mdx b/src/plugins/es_ui_shared/static/forms/docs/examples/validation.mdx index 0f4e9617d9af3..c45cae8602f19 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/examples/validation.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/examples/validation.mdx @@ -2,7 +2,7 @@ id: formLibExampleValidation slug: /form-lib/examples/validation title: Validation -summary: Don't let invalid data leak out of your form! +description: Don't let invalid data leak out of your form! tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/helpers/components.mdx b/src/plugins/es_ui_shared/static/forms/docs/helpers/components.mdx index 1b35e41a98739..97ea955aaecb1 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/helpers/components.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/helpers/components.mdx @@ -2,7 +2,7 @@ id: formLibHelpersComponents slug: /form-lib/helpers/components title: Components -summary: Build complex forms the easy way +description: Build complex forms the easy way tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/helpers/validators.mdx b/src/plugins/es_ui_shared/static/forms/docs/helpers/validators.mdx index aba2d6dffb1ba..7fbe4c4e38dc3 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/helpers/validators.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/helpers/validators.mdx @@ -2,7 +2,7 @@ id: formLibHelpersValidators slug: /form-lib/helpers/validators title: Validators -summary: Build complex forms the easy way +description: Build complex forms the easy way tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/es_ui_shared/static/forms/docs/welcome.mdx b/src/plugins/es_ui_shared/static/forms/docs/welcome.mdx index 2d1156f403bff..8a356868e49c2 100644 --- a/src/plugins/es_ui_shared/static/forms/docs/welcome.mdx +++ b/src/plugins/es_ui_shared/static/forms/docs/welcome.mdx @@ -2,7 +2,7 @@ id: formLibWelcome slug: /form-lib/welcome title: Welcome -summary: Build complex forms the easy way +description: Build complex forms the easy way tags: ['forms', 'kibana', 'dev'] date: 2021-04-14 --- diff --git a/src/plugins/presentation_util/README.mdx b/src/plugins/presentation_util/README.mdx index 2cbb03232b9dd..2fc73204db4e1 100755 --- a/src/plugins/presentation_util/README.mdx +++ b/src/plugins/presentation_util/README.mdx @@ -2,7 +2,7 @@ id: presentationUtilPlugin slug: /kibana-dev-docs/presentationPlugin title: Presentation Utility Plugin -summary: Introduction to the Presentation Utility Plugin. +description: Introduction to the Presentation Utility Plugin. date: 2020-01-12 tags: ['kibana', 'presentation', 'services'] related: [] diff --git a/src/plugins/share/README.mdx b/src/plugins/share/README.mdx index 1a1fef0587812..bb4433b54b480 100644 --- a/src/plugins/share/README.mdx +++ b/src/plugins/share/README.mdx @@ -2,7 +2,7 @@ id: kibDevSharePluginReadme slug: /kibana-dev-docs/tutorials/share title: Kibana share Plugin -summary: Introduction to Kibana "share" plugin services (sharing popup menu, URL locators, and short URLs). +description: Introduction to Kibana "share" plugin services (sharing popup menu, URL locators, and short URLs). date: 2022-02-21 tags: ['kibana', 'onboarding', 'dev', 'tutorials', 'share', 'url', 'short-url', 'locator'] --- diff --git a/src/plugins/shared_ux/docs/about.mdx b/src/plugins/shared_ux/docs/about.mdx index a31a9b99195f2..213ce774be217 100644 --- a/src/plugins/shared_ux/docs/about.mdx +++ b/src/plugins/shared_ux/docs/about.mdx @@ -2,7 +2,7 @@ id: sharedUX/About slug: /shared-ux/about title: About Shared UX -summary: . +description: . date: 2021-01-05 tags: ['shared-ux'] --- diff --git a/src/plugins/unified_search/public/filter_bar/filter_bar.tsx b/src/plugins/unified_search/public/filter_bar/filter_bar.tsx index 3eda5ded37078..3cf8c41b3c498 100644 --- a/src/plugins/unified_search/public/filter_bar/filter_bar.tsx +++ b/src/plugins/unified_search/public/filter_bar/filter_bar.tsx @@ -11,7 +11,7 @@ import { InjectedIntl, injectI18n } from '@kbn/i18n-react'; import type { Filter } from '@kbn/es-query'; import React, { useRef } from 'react'; import { DataView } from '@kbn/data-views-plugin/public'; -import FilterItems, { Props as FilterItemsProps } from './filter_item/filter_items'; +import FilterItems, { type FilterItemsProps } from './filter_item/filter_items'; import { filterBarStyles } from './filter_bar.styles'; diff --git a/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.tsx b/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.tsx index f869aeeb07a32..abacffe4a46a9 100644 --- a/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.tsx +++ b/src/plugins/unified_search/public/filter_bar/filter_item/filter_item.tsx @@ -20,6 +20,7 @@ import { import classNames from 'classnames'; import React, { MouseEvent, useState, useEffect, HTMLAttributes } from 'react'; import { IUiSettingsClient } from '@kbn/core/public'; + import { DataView } from '@kbn/data-views-plugin/public'; import { getIndexPatternFromFilter, @@ -42,6 +43,7 @@ export interface FilterItemProps { uiSettings: IUiSettingsClient; hiddenPanelOptions?: FilterPanelOption[]; timeRangeForSuggestionsOverride?: boolean; + readOnly?: boolean; } type FilterPopoverProps = HTMLAttributes & EuiPopoverProps; @@ -67,7 +69,7 @@ export function FilterItem(props: FilterItemProps) { const [isPopoverOpen, setIsPopoverOpen] = useState(false); const [indexPatternExists, setIndexPatternExists] = useState(undefined); const [renderedComponent, setRenderedComponent] = useState('menu'); - const { id, filter, indexPatterns, hiddenPanelOptions } = props; + const { id, filter, indexPatterns, hiddenPanelOptions, readOnly = false } = props; useEffect(() => { if (isPopoverOpen) { @@ -355,6 +357,7 @@ export function FilterItem(props: FilterItemProps) { const filterViewProps = { filter, + readOnly, valueLabel: valueLabelConfig.title, fieldLabel: getFieldDisplayValueFromFilter(filter, indexPatterns), filterLabelStatus: valueLabelConfig.status, @@ -377,7 +380,9 @@ export function FilterItem(props: FilterItemProps) { panelPaddingSize: 'none', }; - return ( + return readOnly ? ( + + ) : ( {renderedComponent === 'menu' ? ( diff --git a/src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx b/src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx index 0119bf10cfa27..4c29c4284860d 100644 --- a/src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx +++ b/src/plugins/unified_search/public/filter_bar/filter_item/filter_items.tsx @@ -17,19 +17,34 @@ import { DataView } from '@kbn/data-views-plugin/public'; import { useKibana } from '@kbn/kibana-react-plugin/public'; import { FilterItem, FilterItemProps } from './filter_item'; -export interface Props { +/** + * Properties for the filter items component, which will render a single filter pill for every filter that is sent in + * as part of the `Filter[]` property. + */ +export interface FilterItemsProps { + /** Array of filters that will be rendered as filter pills */ filters: Filter[]; + /** Optional property that controls whether or not clicking the filter pill opens a popover *and* whether + * or not the `x` button to remove the filter is rendered.*/ + readOnly?: boolean; + /** If not read only, this is called whenever a filter is removed and/or updated */ onFiltersUpdated?: (filters: Filter[]) => void; + /** A list of all dataviews that are used for the filters */ indexPatterns: DataView[]; + /** This is injected by the lazer loader */ intl: InjectedIntl; + /** Controls whether or not filter suggestions are influenced by the global time */ timeRangeForSuggestionsOverride?: boolean; + /** Array of panel options that controls the styling of each filter pill */ hiddenPanelOptions?: FilterItemProps['hiddenPanelOptions']; } -const FilterItemsUI = React.memo(function FilterItemsUI(props: Props) { +const FilterItemsUI = React.memo(function FilterItemsUI(props: FilterItemsProps) { const groupRef = useRef(null); const kibana = useKibana(); const { appName, usageCollection, uiSettings } = kibana.services; + const { readOnly = false } = props; + if (!uiSettings) return null; const reportUiCounter = usageCollection?.reportUiCounter.bind(usageCollection, appName); @@ -59,6 +74,7 @@ const FilterItemsUI = React.memo(function FilterItemsUI(props: Props) { uiSettings={uiSettings!} hiddenPanelOptions={props.hiddenPanelOptions} timeRangeForSuggestionsOverride={props.timeRangeForSuggestionsOverride} + readOnly={readOnly} /> )); diff --git a/src/plugins/unified_search/public/filter_bar/filter_view/index.tsx b/src/plugins/unified_search/public/filter_bar/filter_view/index.tsx index 0e10766139820..ffffee70534bd 100644 --- a/src/plugins/unified_search/public/filter_bar/filter_view/index.tsx +++ b/src/plugins/unified_search/public/filter_bar/filter_view/index.tsx @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { EuiBadge, EuiBadgeProps, useInnerText } from '@elastic/eui'; +import { EuiBadge, EuiBadgeProps, EuiToolTip, useInnerText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { FC } from 'react'; import { Filter, isFilterPinned } from '@kbn/es-query'; @@ -15,6 +15,7 @@ import type { FilterLabelStatus } from '../filter_item/filter_item'; interface Props { filter: Filter; + readOnly: boolean; valueLabel: string; fieldLabel?: string; filterLabelStatus: FilterLabelStatus; @@ -25,6 +26,7 @@ interface Props { export const FilterView: FC = ({ filter, + readOnly, iconOnClick, onClick, valueLabel, @@ -36,13 +38,17 @@ export const FilterView: FC = ({ }: Props) => { const [ref, innerText] = useInnerText(); - let title = - errorMessage || - i18n.translate('unifiedSearch.filter.filterBar.moreFilterActionsMessage', { - defaultMessage: 'Filter: {innerText}. Select for more filter actions.', - values: { innerText }, - }); + const filterString = readOnly + ? i18n.translate('unifiedSearch.filter.filterBar.filterString', { + defaultMessage: 'Filter: {innerText}.', + values: { innerText }, + }) + : i18n.translate('unifiedSearch.filter.filterBar.filterActionsMessage', { + defaultMessage: 'Filter: {innerText}. Select for more filter actions.', + values: { innerText }, + }); + let title: string = errorMessage || filterString; if (isFilterPinned(filter)) { title = `${i18n.translate('unifiedSearch.filter.filterBar.pinnedFilterPrefix', { defaultMessage: 'Pinned', @@ -54,41 +60,58 @@ export const FilterView: FC = ({ })} ${title}`; } - const badgeProps: EuiBadgeProps = { - title, - color: 'hollow', - iconType: 'cross', - iconSide: 'right', - closeButtonProps: { - // Removing tab focus on close button because the same option can be obtained through the context menu - // Also, we may want to add a `DEL` keyboard press functionality - tabIndex: -1, - }, - iconOnClick, - iconOnClickAriaLabel: i18n.translate( - 'unifiedSearch.filter.filterBar.filterItemBadgeIconAriaLabel', - { - defaultMessage: 'Delete {filter}', - values: { filter: innerText }, - } - ), - onClick, - onClickAriaLabel: i18n.translate('unifiedSearch.filter.filterBar.filterItemBadgeAriaLabel', { - defaultMessage: 'Filter actions', - }), - }; + const sharedProps = { color: 'hollow', tabIndex: 0 }; + const badgeProps: EuiBadgeProps = readOnly + ? // prevent native tooltip for read-only filter pulls by setting title to undefined + { ...sharedProps, title: undefined } + : { + ...sharedProps, + title, // use native tooltip for non-read-only filter pills + iconType: 'cross', + iconSide: 'right', + closeButtonProps: { + // Removing tab focus on close button because the same option can be obtained through the context menu + // Also, we may want to add a `DEL` keyboard press functionality + tabIndex: -1, + }, + iconOnClick, + iconOnClickAriaLabel: i18n.translate( + 'unifiedSearch.filter.filterBar.filterItemBadgeIconAriaLabel', + { + defaultMessage: 'Delete {filter}', + values: { filter: innerText }, + } + ), + onClick, + onClickAriaLabel: i18n.translate( + 'unifiedSearch.filter.filterBar.filterItemBadgeAriaLabel', + { + defaultMessage: 'Filter actions', + } + ), + }; - return ( + const FilterPill = () => ( + + + ); + + return readOnly ? ( + - + - + + ) : ( + + + ); }; diff --git a/src/plugins/unified_search/public/filter_bar/index.tsx b/src/plugins/unified_search/public/filter_bar/index.tsx index 30f94c3972ee1..a70b6b93de5dd 100644 --- a/src/plugins/unified_search/public/filter_bar/index.tsx +++ b/src/plugins/unified_search/public/filter_bar/index.tsx @@ -8,6 +8,8 @@ import React from 'react'; +export type { FilterItemsProps } from './filter_item/filter_items'; + const Fallback = () =>
; const LazyFilterBar = React.lazy(() => import('./filter_bar')); @@ -18,6 +20,9 @@ export const FilterBar = (props: React.ComponentProps) => ); const LazyFilterItems = React.lazy(() => import('./filter_item/filter_items')); +/** + * Renders a group of filter pills + */ export const FilterItems = (props: React.ComponentProps) => ( }> @@ -25,6 +30,9 @@ export const FilterItems = (props: React.ComponentProps) ); const LazyFilterLabel = React.lazy(() => import('./filter_editor/lib/filter_label')); +/** + * Renders the label for a single filter pill + */ export const FilterLabel = (props: React.ComponentProps) => ( }> @@ -32,6 +40,9 @@ export const FilterLabel = (props: React.ComponentProps) ); const LazyFilterItem = React.lazy(() => import('./filter_item/filter_item')); +/** + * Renders a single filter pill + */ export const FilterItem = (props: React.ComponentProps) => ( }> diff --git a/src/plugins/unified_search/public/index.ts b/src/plugins/unified_search/public/index.ts index 69b7ae95bf2fb..131b445017353 100755 --- a/src/plugins/unified_search/public/index.ts +++ b/src/plugins/unified_search/public/index.ts @@ -14,7 +14,8 @@ export { QueryStringInput } from './query_string_input'; export type { StatefulSearchBarProps, SearchBarProps } from './search_bar'; export type { UnifiedSearchPublicPluginStart, UnifiedSearchPluginSetup } from './types'; export { SearchBar } from './search_bar'; -export { FilterLabel, FilterItem } from './filter_bar'; +export type { FilterItemsProps } from './filter_bar'; +export { FilterLabel, FilterItem, FilterItems } from './filter_bar'; export { DataViewsList } from './dataview_picker/dataview_list'; export { DataViewPicker } from './dataview_picker'; diff --git a/src/plugins/usage_collection/README.mdx b/src/plugins/usage_collection/README.mdx index 03d8f7badb8c2..a703a3de00820 100644 --- a/src/plugins/usage_collection/README.mdx +++ b/src/plugins/usage_collection/README.mdx @@ -2,7 +2,7 @@ id: kibUsageCollectionPlugin slug: /kibana-dev-docs/key-concepts/usage-collection-plugin title: Usage collection service -summary: The Usage Collection Service defines a set of APIs for other plugins to report the usage of their features. +description: The Usage Collection Service defines a set of APIs for other plugins to report the usage of their features. date: 2021-02-24 tags: ['kibana','dev', 'contributor', 'api docs'] --- diff --git a/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx b/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx index 4bc5aec2396f2..f0aab3b880ae3 100644 --- a/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx +++ b/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx @@ -24,6 +24,7 @@ import { Embeddable, EmbeddableInput, EmbeddableOutput, + FilterableEmbeddable, IContainer, ReferenceOrValueEmbeddable, SavedObjectEmbeddableInput, @@ -37,6 +38,7 @@ import { } from '@kbn/expressions-plugin/public'; import type { RenderMode } from '@kbn/expressions-plugin/common'; import { DATA_VIEW_SAVED_OBJECT_TYPE } from '@kbn/data-views-plugin/public'; +import { mapAndFlattenFilters } from '@kbn/data-plugin/public'; import { isFallbackDataView } from '../visualize_app/utils'; import { VisualizationMissedSavedObjectError } from '../components/visualization_missed_saved_object_error'; import VisualizationError from '../components/visualization_error'; @@ -94,7 +96,9 @@ export type VisualizeByReferenceInput = SavedObjectEmbeddableInput & VisualizeIn export class VisualizeEmbeddable extends Embeddable - implements ReferenceOrValueEmbeddable + implements + ReferenceOrValueEmbeddable, + FilterableEmbeddable { private handler?: ExpressionLoader; private timefilter: TimefilterContract; @@ -188,6 +192,32 @@ export class VisualizeEmbeddable return this.vis.description; } + /** + * Gets the Visualize embeddable's local filters + * @returns Local/panel-level array of filters for Visualize embeddable + */ + public async getFilters() { + let input = this.getInput(); + if (this.inputIsRefType(input)) { + input = await this.getInputAsValueType(); + } + const filters = input.savedVis?.data.searchSource?.filter ?? []; + // must clone the filters so that it's not read only, because mapAndFlattenFilters modifies the array + return mapAndFlattenFilters(_.cloneDeep(filters)); + } + + /** + * Gets the Visualize embeddable's local query + * @returns Local/panel-level query for Visualize embeddable + */ + public async getQuery() { + let input = this.getInput(); + if (this.inputIsRefType(input)) { + input = await this.getInputAsValueType(); + } + return input.savedVis?.data.searchSource?.query; + } + public getInspectorAdapters = () => { if (!this.handler || (this.inspectorAdapters && !Object.keys(this.inspectorAdapters).length)) { return undefined; diff --git a/test/functional/page_objects/dashboard_page.ts b/test/functional/page_objects/dashboard_page.ts index 6734690c4b3bd..d36ba21513b0a 100644 --- a/test/functional/page_objects/dashboard_page.ts +++ b/test/functional/page_objects/dashboard_page.ts @@ -562,7 +562,7 @@ export class DashboardPageObject extends FtrService { public async getPanelTitles() { this.log.debug('in getPanelTitles'); - const titleObjects = await this.testSubjects.findAll('dashboardPanelTitle'); + const titleObjects = await this.find.allByCssSelector('span.embPanel__titleInner'); return await Promise.all(titleObjects.map(async (title) => await title.getVisibleText())); } diff --git a/tsconfig.base.json b/tsconfig.base.json index c3a37ced8434e..04afc7e8bb049 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -329,6 +329,8 @@ "@kbn/features-plugin/*": ["x-pack/plugins/features/*"], "@kbn/file-upload-plugin": ["x-pack/plugins/file_upload"], "@kbn/file-upload-plugin/*": ["x-pack/plugins/file_upload/*"], + "@kbn/files-plugin": ["x-pack/plugins/files"], + "@kbn/files-plugin/*": ["x-pack/plugins/files/*"], "@kbn/fleet-plugin": ["x-pack/plugins/fleet"], "@kbn/fleet-plugin/*": ["x-pack/plugins/fleet/*"], "@kbn/global-search-bar-plugin": ["x-pack/plugins/global_search_bar"], diff --git a/x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush.tsx b/x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush.tsx index b4eb2e0809f4e..c593da55ffded 100644 --- a/x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush.tsx +++ b/x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush.tsx @@ -5,6 +5,7 @@ * 2.0. */ +import { isEqual } from 'lodash'; import React, { useEffect, useRef } from 'react'; import * as d3Brush from 'd3-brush'; @@ -74,7 +75,14 @@ export function DualBrush({ }: DualBrushProps) { const d3BrushContainer = useRef(null); const brushes = useRef([]); + + // We need to pass props to refs here because the d3-brush code doesn't consider + // native React prop changes. The brush code does its own check whether these props changed then. + // The initialized brushes might otherwise act on stale data. const widthRef = useRef(width); + const minRef = useRef(min); + const maxRef = useRef(max); + const snapTimestampsRef = useRef(snapTimestamps); const { baselineMin, baselineMax, deviationMin, deviationMax } = windowParameters; @@ -93,11 +101,14 @@ export function DualBrush({ function brushend(this: d3Selection.BaseType) { const currentWidth = widthRef.current; - const x = d3.scaleLinear().domain([min, max]).rangeRound([0, currentWidth]); + const x = d3 + .scaleLinear() + .domain([minRef.current, maxRef.current]) + .rangeRound([0, currentWidth]); const px2ts = (px: number) => Math.round(x.invert(px)); - const xMin = x(min) ?? 0; - const xMax = x(max) ?? 0; + const xMin = x(minRef.current) ?? 0; + const xMax = x(maxRef.current) ?? 0; const minExtentPx = Math.round((xMax - xMin) / 100); const baselineBrush = d3.select('#aiops-brush-baseline'); @@ -157,8 +168,8 @@ export function DualBrush({ newWindowParameters.baselineMax = px2ts(newBaselineMax); } - const snappedWindowParameters = snapTimestamps - ? getSnappedWindowParameters(newWindowParameters, snapTimestamps) + const snappedWindowParameters = snapTimestampsRef.current + ? getSnappedWindowParameters(newWindowParameters, snapTimestampsRef.current) : newWindowParameters; const newBrushPx = { @@ -235,7 +246,7 @@ export function DualBrush({ mlBrushSelection .attr('class', 'brush') .selectAll('.overlay') - .attr('width', width) + .attr('width', widthRef.current) .style('pointer-events', 'none'); mlBrushSelection @@ -252,10 +263,13 @@ export function DualBrush({ .data(brushes.current, (d) => (d as DualBrush).id); mlBrushSelection.each(function (brushObject, i, n) { - const x = d3.scaleLinear().domain([min, max]).rangeRound([0, widthRef.current]); + const x = d3 + .scaleLinear() + .domain([minRef.current, maxRef.current]) + .rangeRound([0, widthRef.current]); brushObject.brush.extent([ [0, BRUSH_MARGIN], - [width, BRUSH_HEIGHT - BRUSH_MARGIN], + [widthRef.current, BRUSH_HEIGHT - BRUSH_MARGIN], ]); brushObject.brush(d3.select(n[i] as SVGGElement)); const xStart = x(brushObject.start) ?? 0; @@ -268,11 +282,17 @@ export function DualBrush({ widthRef.current = width; newBrush('baseline', baselineMin, baselineMax); newBrush('deviation', deviationMin, deviationMax); - } else { - if (widthRef.current !== width) { - widthRef.current = width; - updateBrushes(); - } + } else if ( + widthRef.current !== width || + minRef.current !== min || + maxRef.current !== max || + !isEqual(snapTimestampsRef.current, snapTimestamps) + ) { + widthRef.current = width; + minRef.current = min; + maxRef.current = max; + snapTimestampsRef.current = snapTimestamps; + updateBrushes(); } drawBrushes(); diff --git a/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.test.ts b/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.test.ts index 50ddd0a429649..3524d4ae37867 100644 --- a/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.test.ts +++ b/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.test.ts @@ -240,7 +240,13 @@ describe('transform connector for export', () => { it('should not change connectors without secrets', () => { expect(transformConnectorsForExport(connectorsWithNoSecrets, actionTypeRegistry)).toEqual( - connectorsWithNoSecrets + connectorsWithNoSecrets.map((connector) => ({ + ...connector, + attributes: { + ...connector.attributes, + secrets: {}, + }, + })) ); }); @@ -250,6 +256,7 @@ describe('transform connector for export', () => { ...connector, attributes: { ...connector.attributes, + secrets: {}, isMissingSecrets: true, }, })) diff --git a/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.ts b/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.ts index 250346f33d4af..9c690885bfe3c 100644 --- a/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.ts +++ b/x-pack/plugins/actions/server/saved_objects/transform_connectors_for_export.ts @@ -28,6 +28,7 @@ function transformConnectorForExport( actionType: ActionType ): SavedObject { let isMissingSecrets = false; + try { // If connector requires secrets, this will throw an error validateSecrets(actionType, {}); @@ -39,11 +40,11 @@ function transformConnectorForExport( isMissingSecrets = true; } - // Skip connectors return { ...connector, attributes: { ...connector.attributes, + secrets: {}, isMissingSecrets, }, }; diff --git a/x-pack/plugins/actions/server/usage/actions_telemetry.test.ts b/x-pack/plugins/actions/server/usage/actions_telemetry.test.ts index 532cefec75f20..b5606543b04e5 100644 --- a/x-pack/plugins/actions/server/usage/actions_telemetry.test.ts +++ b/x-pack/plugins/actions/server/usage/actions_telemetry.test.ts @@ -112,6 +112,7 @@ Object { "some.type": 1, }, "countTotal": 4, + "hasErrors": false, } `); }); @@ -130,6 +131,8 @@ Object { Object { "countByType": Object {}, "countTotal": 0, + "errorMessage": "oh no", + "hasErrors": true, } `); }); @@ -194,6 +197,7 @@ Object { "countEmailByService": Object {}, "countNamespaces": 1, "countTotal": 2, + "hasErrors": false, } `); }); @@ -295,6 +299,7 @@ Object { "countEmailByService": Object {}, "countNamespaces": 1, "countTotal": 4, + "hasErrors": false, } `); }); @@ -316,6 +321,8 @@ Object { "countEmailByService": Object {}, "countNamespaces": 0, "countTotal": 0, + "errorMessage": "oh no", + "hasErrors": true, } `); }); @@ -438,6 +445,7 @@ Object { "some.type": 1, }, "countTotal": 6, + "hasErrors": false, } `); }); @@ -546,6 +554,7 @@ Object { }, "countNamespaces": 1, "countTotal": 6, + "hasErrors": false, } `); }); @@ -645,6 +654,7 @@ Object { }, "countNamespaces": 3, "countTotal": 6, + "hasErrors": false, } `); }); @@ -744,6 +754,7 @@ Object { __slack: 7, }, countTotal: 120, + hasErrors: false, }); }); @@ -765,6 +776,8 @@ Object { "countFailed": 0, "countFailedByType": Object {}, "countTotal": 0, + "errorMessage": "oh no", + "hasErrors": true, } `); }); diff --git a/x-pack/plugins/actions/server/usage/actions_telemetry.ts b/x-pack/plugins/actions/server/usage/actions_telemetry.ts index 82f65ddf0cf8a..1e2320e2b1a5d 100644 --- a/x-pack/plugins/actions/server/usage/actions_telemetry.ts +++ b/x-pack/plugins/actions/server/usage/actions_telemetry.ts @@ -43,7 +43,6 @@ export async function getTotalCount( `, }, }; - try { const searchResult = await esClient.search({ index: kibanaIndex, @@ -78,6 +77,7 @@ export async function getTotalCount( } } return { + hasErrors: false, countTotal: Object.keys(aggs).reduce( (total: number, key: string) => parseInt(aggs[key], 10) + total, @@ -86,8 +86,13 @@ export async function getTotalCount( countByType, }; } catch (err) { + const errorMessage = err && err.message ? err.message : err.toString(); + logger.warn(`Error executing actions telemetry task: getTotalCount - ${JSON.stringify(err)}`); + return { + hasErrors: true, + errorMessage, countTotal: 0, countByType: {}, }; @@ -101,6 +106,8 @@ export async function getInUseTotalCount( referenceType?: string, preconfiguredActions?: PreConfiguredAction[] ): Promise<{ + hasErrors: boolean; + errorMessage?: string; countTotal: number; countByType: Record; countByAlertHistoryConnectorType: number; @@ -363,6 +370,7 @@ export async function getInUseTotalCount( } return { + hasErrors: false, countTotal: aggs.total + (preconfiguredActionsAggs?.total ?? 0), countByType: countByActionTypeId, countByAlertHistoryConnectorType: preconfiguredAlertHistoryConnectors, @@ -370,10 +378,14 @@ export async function getInUseTotalCount( countNamespaces: namespacesList.size, }; } catch (err) { + const errorMessage = err && err.message ? err.message : err.toString(); + logger.warn( `Error executing actions telemetry task: getInUseTotalCount - ${JSON.stringify(err)}` ); return { + hasErrors: true, + errorMessage, countTotal: 0, countByType: {}, countByAlertHistoryConnectorType: 0, @@ -383,21 +395,6 @@ export async function getInUseTotalCount( } } -export async function getInUseByAlertingTotalCounts( - esClient: ElasticsearchClient, - kibanaIndex: string, - logger: Logger, - preconfiguredActions?: PreConfiguredAction[] -): Promise<{ - countTotal: number; - countByType: Record; - countByAlertHistoryConnectorType: number; - countEmailByService: Record; - countNamespaces: number; -}> { - return await getInUseTotalCount(esClient, kibanaIndex, logger, 'alert', preconfiguredActions); -} - function replaceFirstAndLastDotSymbols(strToReplace: string) { const hasFirstSymbolDot = strToReplace.startsWith('.'); const appliedString = hasFirstSymbolDot ? strToReplace.replace('.', '__') : strToReplace; @@ -410,6 +407,8 @@ export async function getExecutionsPerDayCount( eventLogIndex: string, logger: Logger ): Promise<{ + hasErrors: boolean; + errorMessage?: string; countTotal: number; countByType: Record; countFailed: number; @@ -566,6 +565,7 @@ export async function getExecutionsPerDayCount( ); return { + hasErrors: false, countTotal: aggsExecutions.total, countByType: Object.entries(aggsExecutions.connectorTypes).reduce( (res: Record, [key, value]) => { @@ -588,10 +588,13 @@ export async function getExecutionsPerDayCount( avgExecutionTimeByType, }; } catch (err) { + const errorMessage = err && err.message ? err.message : err.toString(); logger.warn( `Error executing actions telemetry task: getExecutionsPerDayCount - ${JSON.stringify(err)}` ); return { + hasErrors: true, + errorMessage, countTotal: 0, countByType: {}, countFailed: 0, diff --git a/x-pack/plugins/actions/server/usage/actions_usage_collector.test.ts b/x-pack/plugins/actions/server/usage/actions_usage_collector.test.ts index 7efc54a5f99d3..58bd3798536f9 100644 --- a/x-pack/plugins/actions/server/usage/actions_usage_collector.test.ts +++ b/x-pack/plugins/actions/server/usage/actions_usage_collector.test.ts @@ -6,9 +6,11 @@ */ import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; + import { registerActionsUsageCollector } from './actions_usage_collector'; import { configSchema, ActionsConfig } from '../config'; import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; +import { ConcreteTaskInstance, TaskManagerStartContract } from '@kbn/task-manager-plugin/server'; const mockTaskManagerStart = taskManagerMock.createStart(); @@ -43,4 +45,50 @@ describe('registerActionsUsageCollector', () => { expect(usageCollectionMock.makeUsageCollector).toHaveBeenCalledTimes(1); expect(usageCollectionMock.makeUsageCollector.mock.calls[0][0].type).toBe('actions'); }); + + it('should return an error message if fetching data fails', async () => { + mockTaskManagerStart.get.mockRejectedValueOnce(new Error('error message')); + const taskManagerPromise = new Promise((resolve) => { + resolve(mockTaskManagerStart); + }); + registerActionsUsageCollector( + usageCollectionMock as UsageCollectionSetup, + config, + taskManagerPromise + ); + // @ts-ignore + expect(await usageCollectionMock.makeUsageCollector.mock.calls[0][0].fetch()).toEqual( + expect.objectContaining({ + has_errors: true, + error_messages: ['error message'], + }) + ); + }); + + it('should return the task state including error messages', async () => { + const mockStats = { + has_errors: true, + error_messages: ['an error message'], + count_active_total: 1, + count_disabled_total: 10, + }; + mockTaskManagerStart.get.mockResolvedValue({ + id: '1', + state: mockStats, + } as unknown as ConcreteTaskInstance); + + const taskManagerPromise = new Promise((resolve) => { + resolve(mockTaskManagerStart); + }); + registerActionsUsageCollector( + usageCollectionMock as UsageCollectionSetup, + config, + taskManagerPromise + ); + // @ts-ignore + expect(await usageCollectionMock.makeUsageCollector.mock.calls[0][0].fetch()).toEqual({ + alert_history_connector_enabled: false, + ...mockStats, + }); + }); }); diff --git a/x-pack/plugins/actions/server/usage/actions_usage_collector.ts b/x-pack/plugins/actions/server/usage/actions_usage_collector.ts index 1a6b22b0b0ce6..f6e02b2e0fec9 100644 --- a/x-pack/plugins/actions/server/usage/actions_usage_collector.ts +++ b/x-pack/plugins/actions/server/usage/actions_usage_collector.ts @@ -23,6 +23,8 @@ export function createActionsUsageCollector( return true; }, schema: { + has_errors: { type: 'boolean' }, + error_messages: { type: 'array', items: { type: 'text' } }, alert_history_connector_enabled: { type: 'boolean', _meta: { description: 'Indicates if preconfigured alert history connector is enabled.' }, @@ -51,13 +53,16 @@ export function createActionsUsageCollector( const doc = await getLatestTaskState(await taskManager); // get the accumulated state from the recurring task const { runs, ...state } = get(doc, 'state') as ActionsUsage & { runs: number }; - return { ...state, alert_history_connector_enabled: config.preconfiguredAlertHistoryEsIndex, }; } catch (err) { + const errMessage = err && err.message ? err.message : err.toString(); + return { + has_errors: true, + error_messages: [errMessage], alert_history_connector_enabled: false, count_total: 0, count_by_type: {}, diff --git a/x-pack/plugins/actions/server/usage/task.ts b/x-pack/plugins/actions/server/usage/task.ts index 68b109ec8b0fa..15f70529d3852 100644 --- a/x-pack/plugins/actions/server/usage/task.ts +++ b/x-pack/plugins/actions/server/usage/task.ts @@ -101,36 +101,39 @@ export function telemetryTaskRunner( getTotalCount(esClient, kibanaIndex, logger, preconfiguredActions), getInUseTotalCount(esClient, kibanaIndex, logger, undefined, preconfiguredActions), getExecutionsPerDayCount(esClient, eventLogIndex, logger), - ]) - .then(([totalAggegations, totalInUse, totalExecutionsPerDay]) => { - return { - state: { - runs: (state.runs || 0) + 1, - count_total: totalAggegations.countTotal, - count_by_type: totalAggegations.countByType, - count_active_total: totalInUse.countTotal, - count_active_by_type: totalInUse.countByType, - count_active_alert_history_connectors: totalInUse.countByAlertHistoryConnectorType, - count_active_email_connectors_by_service_type: totalInUse.countEmailByService, - count_actions_namespaces: totalInUse.countNamespaces, - count_actions_executions_per_day: totalExecutionsPerDay.countTotal, - count_actions_executions_by_type_per_day: totalExecutionsPerDay.countByType, - count_actions_executions_failed_per_day: totalExecutionsPerDay.countFailed, - count_actions_executions_failed_by_type_per_day: - totalExecutionsPerDay.countFailedByType, - avg_execution_time_per_day: totalExecutionsPerDay.avgExecutionTime, - avg_execution_time_by_type_per_day: totalExecutionsPerDay.avgExecutionTimeByType, - }, - runAt: getNextMidnight(), - }; - }) - .catch((errMsg) => { - logger.warn(`Error executing actions telemetry task: ${errMsg}`); - return { - state: {}, - runAt: getNextMidnight(), - }; - }); + ]).then(([totalAggegations, totalInUse, totalExecutionsPerDay]) => { + const hasErrors = + totalAggegations.hasErrors || totalInUse.hasErrors || totalExecutionsPerDay.hasErrors; + + const errorMessages = [ + totalAggegations.errorMessage, + totalInUse.errorMessage, + totalExecutionsPerDay.errorMessage, + ].filter((message) => message !== undefined); + + return { + state: { + has_errors: hasErrors, + ...(errorMessages.length > 0 && { error_messages: errorMessages }), + runs: (state.runs || 0) + 1, + count_total: totalAggegations.countTotal, + count_by_type: totalAggegations.countByType, + count_active_total: totalInUse.countTotal, + count_active_by_type: totalInUse.countByType, + count_active_alert_history_connectors: totalInUse.countByAlertHistoryConnectorType, + count_active_email_connectors_by_service_type: totalInUse.countEmailByService, + count_actions_namespaces: totalInUse.countNamespaces, + count_actions_executions_per_day: totalExecutionsPerDay.countTotal, + count_actions_executions_by_type_per_day: totalExecutionsPerDay.countByType, + count_actions_executions_failed_per_day: totalExecutionsPerDay.countFailed, + count_actions_executions_failed_by_type_per_day: + totalExecutionsPerDay.countFailedByType, + avg_execution_time_per_day: totalExecutionsPerDay.avgExecutionTime, + avg_execution_time_by_type_per_day: totalExecutionsPerDay.avgExecutionTimeByType, + }, + runAt: getNextMidnight(), + }; + }); }, }; }; diff --git a/x-pack/plugins/actions/server/usage/types.ts b/x-pack/plugins/actions/server/usage/types.ts index 4d9f9c6ef17ff..b58ac9c096f63 100644 --- a/x-pack/plugins/actions/server/usage/types.ts +++ b/x-pack/plugins/actions/server/usage/types.ts @@ -8,6 +8,8 @@ import { MakeSchemaFrom } from '@kbn/usage-collection-plugin/server'; export interface ActionsUsage { + has_errors: boolean; + error_messages?: string[]; alert_history_connector_enabled: boolean; count_total: number; count_by_type: Record; diff --git a/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_page.tsx b/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_page.tsx index a6a2a6808dbaf..3b0ad9ddfc2e6 100644 --- a/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_page.tsx +++ b/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_page.tsx @@ -171,7 +171,7 @@ export const ExplainLogRateSpikesPage: FC = ({ } return ( - + @@ -268,6 +268,7 @@ export const ExplainLogRateSpikesPage: FC = ({ />

} + data-test-subj="aiopsNoWindowParametersEmptyPrompt" /> )} diff --git a/x-pack/plugins/alerting/server/usage/alerting_usage_collector.test.ts b/x-pack/plugins/alerting/server/usage/alerting_usage_collector.test.ts index fd8960adf4d8c..b13e678ce4402 100644 --- a/x-pack/plugins/alerting/server/usage/alerting_usage_collector.test.ts +++ b/x-pack/plugins/alerting/server/usage/alerting_usage_collector.test.ts @@ -8,6 +8,7 @@ import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; import { registerAlertingUsageCollector } from './alerting_usage_collector'; import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; +import { ConcreteTaskInstance, TaskManagerStartContract } from '@kbn/task-manager-plugin/server'; const taskManagerStart = taskManagerMock.createStart(); beforeEach(() => jest.resetAllMocks()); @@ -38,4 +39,41 @@ describe('registerAlertingUsageCollector', () => { expect(usageCollectionMock.makeUsageCollector).toHaveBeenCalledTimes(1); expect(usageCollectionMock.makeUsageCollector.mock.calls[0][0].type).toBe('alerts'); }); + + it('should return an error message if fetching data fails', async () => { + taskManagerStart.get.mockRejectedValueOnce(new Error('error message')); + const taskManagerPromise = new Promise((resolve) => { + resolve(taskManagerStart); + }); + registerAlertingUsageCollector(usageCollectionMock as UsageCollectionSetup, taskManagerPromise); + // @ts-ignore + expect(await usageCollectionMock.makeUsageCollector.mock.calls[0][0].fetch()).toEqual( + expect.objectContaining({ + has_errors: true, + error_messages: ['error message'], + }) + ); + }); + + it('should return the task state including error messages', async () => { + const mockStats = { + has_errors: true, + error_messages: ['an error message'], + count_active_total: 1, + count_disabled_total: 10, + }; + taskManagerStart.get.mockResolvedValue({ + id: '1', + state: mockStats, + } as unknown as ConcreteTaskInstance); + + const taskManagerPromise = new Promise((resolve) => { + resolve(taskManagerStart); + }); + registerAlertingUsageCollector(usageCollectionMock as UsageCollectionSetup, taskManagerPromise); + // @ts-ignore + expect(await usageCollectionMock.makeUsageCollector.mock.calls[0][0].fetch()).toEqual( + mockStats + ); + }); }); diff --git a/x-pack/plugins/alerting/server/usage/alerting_usage_collector.ts b/x-pack/plugins/alerting/server/usage/alerting_usage_collector.ts index 2c7f4db1d9fa9..d03faa3aaf65f 100644 --- a/x-pack/plugins/alerting/server/usage/alerting_usage_collector.ts +++ b/x-pack/plugins/alerting/server/usage/alerting_usage_collector.ts @@ -126,11 +126,12 @@ export function createAlertingUsageCollector( // get the accumulated state from the recurring task const { runs, ...state } = get(doc, 'state') as AlertingUsage & { runs: number }; - return { - ...state, - }; + return state; } catch (err) { + const errMessage = err && err.message ? err.message : err.toString(); return { + has_errors: true, + error_messages: [errMessage], count_total: 0, count_active_total: 0, count_disabled_total: 0, @@ -202,6 +203,11 @@ export function createAlertingUsageCollector( } }, schema: { + has_errors: { type: 'boolean' }, + error_messages: { + type: 'array', + items: { type: 'text' }, + }, count_total: { type: 'long' }, count_active_total: { type: 'long' }, count_disabled_total: { type: 'long' }, diff --git a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_event_log.test.ts b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_event_log.test.ts index 754cab335f8e9..f3e21f6a161fa 100644 --- a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_event_log.test.ts +++ b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_event_log.test.ts @@ -1398,6 +1398,7 @@ describe('event log telemetry', () => { logs__alert__document__count: 0, }, }, + hasErrors: false, }); }); @@ -1419,6 +1420,8 @@ describe('event log telemetry', () => { expect(loggerMeta?.tags).toEqual(['alerting', 'telemetry-failed']); expect(loggerMeta?.error?.stack_trace).toBeDefined(); expect(telemetry).toStrictEqual({ + hasErrors: true, + errorMessage: 'oh no', countTotalRuleExecutions: 0, countRuleExecutionsByType: {}, countTotalFailedExecutions: 0, @@ -1495,6 +1498,7 @@ describe('event log telemetry', () => { // eslint-disable-next-line @typescript-eslint/naming-convention logs__alert__document__count: 1, }, + hasErrors: false, }); }); @@ -1518,6 +1522,8 @@ describe('event log telemetry', () => { expect(telemetry).toStrictEqual({ countExecutionTimeouts: 0, countExecutionTimeoutsByType: {}, + errorMessage: 'oh no', + hasErrors: true, }); }); }); diff --git a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_event_log.ts b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_event_log.ts index a6c3e90cfc1c7..703d579e66c25 100644 --- a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_event_log.ts +++ b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_event_log.ts @@ -37,6 +37,8 @@ interface Opts { } interface GetExecutionsPerDayCountResults { + hasErrors: boolean; + errorMessage?: string; countTotalRuleExecutions: number; countRuleExecutionsByType: Record; countTotalFailedExecutions: number; @@ -55,6 +57,8 @@ interface GetExecutionsPerDayCountResults { } interface GetExecutionTimeoutsPerDayCountResults { + hasErrors: boolean; + errorMessage?: string; countExecutionTimeouts: number; countExecutionTimeoutsByType: Record; } @@ -167,12 +171,14 @@ export async function getExecutionsPerDayCount({ aggregations.by_rule_type_id.buckets as GetExecutionCountsAggregationBucket[]; return { + hasErrors: false, ...parseRuleTypeBucket(aggregationsByRuleTypeId), ...parseExecutionFailureByRuleType(aggregationsByRuleTypeId), ...parseExecutionCountAggregationResults(aggregations), countTotalRuleExecutions: totalRuleExecutions ?? 0, }; } catch (err) { + const errorMessage = err && err.message ? err.message : err.toString(); logger.warn( `Error executing alerting telemetry task: getExecutionsPerDayCount - ${JSON.stringify(err)}`, { @@ -181,6 +187,8 @@ export async function getExecutionsPerDayCount({ } ); return { + hasErrors: true, + errorMessage, countTotalRuleExecutions: 0, countRuleExecutionsByType: {}, countTotalFailedExecutions: 0, @@ -235,10 +243,13 @@ export async function getExecutionTimeoutsPerDayCount({ typeof results.hits.total === 'number' ? results.hits.total : results.hits.total?.value; return { + hasErrors: false, countExecutionTimeouts: totalTimedoutExecutionsCount ?? 0, countExecutionTimeoutsByType: parseSimpleRuleTypeBucket(aggregations.by_rule_type_id.buckets), }; } catch (err) { + const errorMessage = err && err.message ? err.message : err.toString(); + logger.warn( `Error executing alerting telemetry task: getExecutionsTimeoutsPerDayCount - ${JSON.stringify( err @@ -249,6 +260,8 @@ export async function getExecutionTimeoutsPerDayCount({ } ); return { + hasErrors: true, + errorMessage, countExecutionTimeouts: 0, countExecutionTimeoutsByType: {}, }; diff --git a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.test.ts b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.test.ts index 4b17875bc8b60..79b5d473ebe05 100644 --- a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.test.ts +++ b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.test.ts @@ -88,6 +88,7 @@ describe('kibana index telemetry', () => { logs__alert__document__count: 1, }, count_total: 4, + hasErrors: false, schedule_time: { avg: '4.5s', max: '10s', @@ -129,6 +130,8 @@ describe('kibana index telemetry', () => { expect(loggerMeta?.tags).toEqual(['alerting', 'telemetry-failed']); expect(loggerMeta?.error?.stack_trace).toBeDefined(); expect(telemetry).toEqual({ + errorMessage: 'oh no', + hasErrors: true, connectors_per_alert: { avg: 0, max: 0, @@ -219,6 +222,7 @@ describe('kibana index telemetry', () => { }, countNamespaces: 1, countTotal: 4, + hasErrors: false, }); }); @@ -243,6 +247,8 @@ describe('kibana index telemetry', () => { countByType: {}, countNamespaces: 0, countTotal: 0, + errorMessage: 'oh no', + hasErrors: true, }); }); }); diff --git a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.ts b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.ts index f2ef27374263c..5443fb91e2e1f 100644 --- a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.ts +++ b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_kibana.ts @@ -31,12 +31,14 @@ type GetTotalCountsResults = Pick< | 'throttle_time_number_s' | 'schedule_time_number_s' | 'connectors_per_alert' ->; +> & { errorMessage?: string; hasErrors: boolean }; interface GetTotalCountInUseResults { countTotal: number; countByType: Record; countNamespaces: number; + errorMessage?: string; + hasErrors: boolean; } export async function getTotalCountAggregations({ @@ -79,17 +81,17 @@ export async function getTotalCountAggregations({ int parsed = 0; if (doc['alert.schedule.interval'].size() > 0) { def interval = doc['alert.schedule.interval'].value; - + if (interval.length() > 1) { // get last char String timeChar = interval.substring(interval.length() - 1); // remove last char interval = interval.substring(0, interval.length() - 1); - + if (interval.chars().allMatch(Character::isDigit)) { // using of regex is not allowed in painless language parsed = Integer.parseInt(interval); - + if (timeChar.equals("s")) { parsed = parsed; } else if (timeChar.equals("m")) { @@ -115,17 +117,17 @@ export async function getTotalCountAggregations({ int parsed = 0; if (doc['alert.throttle'].size() > 0) { def throttle = doc['alert.throttle'].value; - + if (throttle.length() > 1) { // get last char String timeChar = throttle.substring(throttle.length() - 1); // remove last char throttle = throttle.substring(0, throttle.length() - 1); - + if (throttle.chars().allMatch(Character::isDigit)) { // using of regex is not allowed in painless language parsed = Integer.parseInt(throttle); - + if (timeChar.equals("s")) { parsed = parsed; } else if (timeChar.equals("m")) { @@ -186,6 +188,7 @@ export async function getTotalCountAggregations({ typeof results.hits.total === 'number' ? results.hits.total : results.hits.total?.value; return { + hasErrors: false, count_total: totalRulesCount ?? 0, count_by_type: parseSimpleRuleTypeBucket(aggregations.by_rule_type_id.buckets), throttle_time: { @@ -215,6 +218,8 @@ export async function getTotalCountAggregations({ }, }; } catch (err) { + const errorMessage = err && err.message ? err.message : err.toString(); + logger.warn( `Error executing alerting telemetry task: getTotalCountAggregations - ${JSON.stringify(err)}`, { @@ -223,6 +228,8 @@ export async function getTotalCountAggregations({ } ); return { + hasErrors: true, + errorMessage, count_total: 0, count_by_type: {}, throttle_time: { @@ -296,11 +303,13 @@ export async function getTotalCountInUse({ typeof results.hits.total === 'number' ? results.hits.total : results.hits.total?.value; return { + hasErrors: false, countTotal: totalEnabledRulesCount ?? 0, countByType: parseSimpleRuleTypeBucket(aggregations.by_rule_type_id.buckets), countNamespaces: aggregations.namespaces_count.value ?? 0, }; } catch (err) { + const errorMessage = err && err.message ? err.message : err.toString(); logger.warn( `Error executing alerting telemetry task: getTotalCountInUse - ${JSON.stringify(err)}`, { @@ -309,6 +318,8 @@ export async function getTotalCountInUse({ } ); return { + hasErrors: true, + errorMessage, countTotal: 0, countByType: {}, countNamespaces: 0, diff --git a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_task_manager.test.ts b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_task_manager.test.ts index 6d58da12ca278..3061571ab7ed9 100644 --- a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_task_manager.test.ts +++ b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_task_manager.test.ts @@ -225,6 +225,7 @@ describe('task manager telemetry', () => { logs__alert__document__count: 4, }, }, + hasErrors: false, }); }); @@ -247,6 +248,8 @@ describe('task manager telemetry', () => { expect(loggerMeta?.tags).toEqual(['alerting', 'telemetry-failed']); expect(loggerMeta?.error?.stack_trace).toBeDefined(); expect(telemetry).toStrictEqual({ + errorMessage: 'oh no', + hasErrors: true, countFailedAndUnrecognizedTasks: 0, countFailedAndUnrecognizedTasksByStatus: {}, countFailedAndUnrecognizedTasksByStatusByType: {}, diff --git a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_task_manager.ts b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_task_manager.ts index b13f300bcd4a0..41f41f6ab7ada 100644 --- a/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_task_manager.ts +++ b/x-pack/plugins/alerting/server/usage/lib/get_telemetry_from_task_manager.ts @@ -26,6 +26,8 @@ interface GetFailedAndUnrecognizedTasksAggregationBucket extends AggregationsStr } interface GetFailedAndUnrecognizedTasksResults { + hasErrors: boolean; + errorMessage?: string; countFailedAndUnrecognizedTasks: number; countFailedAndUnrecognizedTasksByStatus: Record; countFailedAndUnrecognizedTasksByStatusByType: Record>; @@ -115,10 +117,12 @@ export async function getFailedAndUnrecognizedTasksPerDay({ aggregations.by_status.buckets as GetFailedAndUnrecognizedTasksAggregationBucket[]; return { + hasErrors: false, ...parseBucket(aggregationsByStatus), countFailedAndUnrecognizedTasks: totalFailedAndUnrecognizedTasks ?? 0, }; } catch (err) { + const errorMessage = err && err.message ? err.message : err.toString(); logger.warn( `Error executing alerting telemetry task: getFailedAndUnrecognizedTasksPerDay - ${JSON.stringify( err @@ -129,6 +133,8 @@ export async function getFailedAndUnrecognizedTasksPerDay({ } ); return { + hasErrors: true, + errorMessage, countFailedAndUnrecognizedTasks: 0, countFailedAndUnrecognizedTasksByStatus: {}, countFailedAndUnrecognizedTasksByStatusByType: {}, diff --git a/x-pack/plugins/alerting/server/usage/task.ts b/x-pack/plugins/alerting/server/usage/task.ts index 9d01ac21e845b..0bbfab30f0796 100644 --- a/x-pack/plugins/alerting/server/usage/task.ts +++ b/x-pack/plugins/alerting/server/usage/task.ts @@ -111,10 +111,33 @@ export function telemetryTaskRunner( dailyExecutionTimeoutCounts, dailyFailedAndUnrecognizedTasks, ]) => { + const hasErrors = + totalCountAggregations.hasErrors || + totalInUse.hasErrors || + dailyExecutionCounts.hasErrors || + dailyExecutionTimeoutCounts.hasErrors || + dailyFailedAndUnrecognizedTasks.hasErrors; + + const errorMessages = [ + totalCountAggregations.errorMessage, + totalInUse.errorMessage, + dailyExecutionCounts.errorMessage, + dailyExecutionTimeoutCounts.errorMessage, + dailyFailedAndUnrecognizedTasks.errorMessage, + ].filter((message) => message !== undefined); + return { state: { + has_errors: hasErrors, + ...(errorMessages.length > 0 && { error_messages: errorMessages }), runs: (state.runs || 0) + 1, - ...totalCountAggregations, + count_total: totalCountAggregations.count_total, + count_by_type: totalCountAggregations.count_by_type, + throttle_time: totalCountAggregations.throttle_time, + schedule_time: totalCountAggregations.schedule_time, + throttle_time_number_s: totalCountAggregations.throttle_time_number_s, + schedule_time_number_s: totalCountAggregations.schedule_time_number_s, + connectors_per_alert: totalCountAggregations.connectors_per_alert, count_active_by_type: totalInUse.countByType, count_active_total: totalInUse.countTotal, count_disabled_total: totalCountAggregations.count_total - totalInUse.countTotal, diff --git a/x-pack/plugins/alerting/server/usage/types.ts b/x-pack/plugins/alerting/server/usage/types.ts index b045fd5009c70..a0f45d1932309 100644 --- a/x-pack/plugins/alerting/server/usage/types.ts +++ b/x-pack/plugins/alerting/server/usage/types.ts @@ -6,6 +6,8 @@ */ export interface AlertingUsage { + has_errors: boolean; + error_messages?: string[]; count_total: number; count_active_total: number; count_disabled_total: number; diff --git a/x-pack/plugins/apm/public/components/routing/service_detail/index.tsx b/x-pack/plugins/apm/public/components/routing/service_detail/index.tsx index 4fc2b9836b88c..1835eee137f41 100644 --- a/x-pack/plugins/apm/public/components/routing/service_detail/index.tsx +++ b/x-pack/plugins/apm/public/components/routing/service_detail/index.tsx @@ -222,7 +222,7 @@ export const serviceDetail = { ...page({ tab: 'nodes', title: i18n.translate('xpack.apm.views.nodes.title', { - defaultMessage: 'JVMs', + defaultMessage: 'Metrics', }), element: , }), diff --git a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.test.tsx b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.test.tsx index 7ac3b14e7faa9..763d4cf0717a1 100644 --- a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.test.tsx +++ b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.test.tsx @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { isMetricsTabHidden, isJVMsTabHidden } from '.'; +import { isMetricsTabHidden, isMetricsJVMsTabHidden } from '.'; describe('APM service template', () => { describe('isMetricsTabHidden', () => { @@ -41,8 +41,8 @@ describe('APM service template', () => { }); }); }); - describe('isJVMsTabHidden', () => { - describe('hides JVMs tab', () => { + describe('isMetricsJVMsTabHidden', () => { + describe('hides metrics JVMs tab', () => { [ { agentName: undefined }, { agentName: 'ruby', runtimeName: 'ruby' }, @@ -55,18 +55,18 @@ describe('APM service template', () => { { runtimeName: 'aws_lambda' }, ].map((input) => { it(`when input ${JSON.stringify(input)}`, () => { - expect(isJVMsTabHidden(input)).toBeTruthy(); + expect(isMetricsJVMsTabHidden(input)).toBeTruthy(); }); }); }); - describe('shows JVMs tab', () => { + describe('shows metrics JVMs tab', () => { [ { agentName: 'java' }, { agentName: 'opentelemetry/java' }, { agentName: 'ruby', runtimeName: 'jruby' }, ].map((input) => { it(`when input ${JSON.stringify(input)}`, () => { - expect(isJVMsTabHidden(input)).toBeFalsy(); + expect(isMetricsJVMsTabHidden(input)).toBeFalsy(); }); }); }); diff --git a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.tsx b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.tsx index 80957e990f250..7acf14fc0bf01 100644 --- a/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.tsx +++ b/x-pack/plugins/apm/public/components/routing/templates/apm_service_template/index.tsx @@ -155,7 +155,7 @@ export function isMetricsTabHidden({ ); } -export function isJVMsTabHidden({ +export function isMetricsJVMsTabHidden({ agentName, runtimeName, }: { @@ -255,9 +255,9 @@ function useTabs({ selectedTab }: { selectedTab: Tab['key'] }) { query, }), label: i18n.translate('xpack.apm.serviceDetails.nodesTabLabel', { - defaultMessage: 'JVMs', + defaultMessage: 'Metrics', }), - hidden: isJVMsTabHidden({ agentName, runtimeName }), + hidden: isMetricsJVMsTabHidden({ agentName, runtimeName }), }, { key: 'infrastructure', diff --git a/x-pack/plugins/canvas/PLUGINS.mdx b/x-pack/plugins/canvas/PLUGINS.mdx index 77fe65f864607..c0e0bc9c92f5a 100644 --- a/x-pack/plugins/canvas/PLUGINS.mdx +++ b/x-pack/plugins/canvas/PLUGINS.mdx @@ -2,7 +2,7 @@ id: canvasPlugins slug: /playground/kibana/canvas-plugins title: Develop Canvas plugins -summary: Introduction to +description: Introduction to date: 2021-02-18 tags: ['kibana', 'canvas', 'plugins'] related: [] diff --git a/x-pack/plugins/canvas/shareable_runtime/README.mdx b/x-pack/plugins/canvas/shareable_runtime/README.mdx index a9d58bb3833d9..07fbe7af27825 100644 --- a/x-pack/plugins/canvas/shareable_runtime/README.mdx +++ b/x-pack/plugins/canvas/shareable_runtime/README.mdx @@ -2,7 +2,7 @@ id: canvasShareableWorkpads slug: /playground/kibana/canvas-shareable-workpads title: Share a Canvas Workpad on a Website -summary: How to share a static snapshot of a workpad on an external website. +description: How to share a static snapshot of a workpad on an external website. date: 2021-02-18 tags: ['kibana', 'canvas', 'share'] related: [] diff --git a/x-pack/plugins/cases/public/containers/user_profiles/api.mock.ts b/x-pack/plugins/cases/public/containers/user_profiles/api.mock.ts index 57578086ceddf..e9382f7092ae0 100644 --- a/x-pack/plugins/cases/public/containers/user_profiles/api.mock.ts +++ b/x-pack/plugins/cases/public/containers/user_profiles/api.mock.ts @@ -10,6 +10,7 @@ import { UserProfile } from '@kbn/security-plugin/common'; export const userProfiles: UserProfile[] = [ { uid: 'u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0', + enabled: true, data: {}, user: { username: 'damaged_raccoon', @@ -19,6 +20,7 @@ export const userProfiles: UserProfile[] = [ }, { uid: 'u_A_tM4n0wPkdiQ9smmd8o0Hr_h61XQfu8aRPh9GMoRoc_0', + enabled: true, data: {}, user: { username: 'physical_dinosaur', @@ -28,6 +30,7 @@ export const userProfiles: UserProfile[] = [ }, { uid: 'u_9xDEQqUqoYCnFnPPLq5mIRHKL8gBTo_NiKgOnd5gGk0_0', + enabled: true, data: {}, user: { username: 'wet_dingo', diff --git a/x-pack/plugins/enterprise_search/common/types/error_codes.ts b/x-pack/plugins/enterprise_search/common/types/error_codes.ts index a982289fbdb67..327d000003f9b 100644 --- a/x-pack/plugins/enterprise_search/common/types/error_codes.ts +++ b/x-pack/plugins/enterprise_search/common/types/error_codes.ts @@ -12,4 +12,5 @@ export enum ErrorCode { INDEX_NOT_FOUND = 'index_not_found', RESOURCE_NOT_FOUND = 'resource_not_found', UNAUTHORIZED = 'unauthorized', + UNCAUGHT_EXCEPTION = 'uncaught_exception', } diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/api_key/api_key.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/api_key/api_key.tsx index 1fc67699c9a6d..f24fc6234d0c8 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/api_key/api_key.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/api_key/api_key.tsx @@ -7,36 +7,23 @@ import React from 'react'; -import { EuiCodeBlock, EuiFormLabel, EuiSpacer, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { EuiCodeBlock, EuiFormLabel, EuiSpacer } from '@elastic/eui'; interface ApiKeyProps { - actions?: React.ReactNode; apiKey: string; label?: string; } -export const ApiKey: React.FC = ({ apiKey, label, actions }) => { - const codeBlock = ( +export const ApiKey: React.FC = ({ apiKey, label }) => ( + <> + {label && ( + <> + {label} + + + )} {apiKey} - ); - return ( - <> - {label && ( - <> - {label} - - - )} - {actions ? ( - - {codeBlock} - {actions} - - ) : ( - codeBlock - )} - - ); -}; + +); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_connector/method_connector.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_connector/method_connector.tsx index a3d3456e21f40..59d43d8635e1b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_connector/method_connector.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_connector/method_connector.tsx @@ -69,49 +69,6 @@ export const MethodConnector: React.FC = () => { const { setIsModalVisible } = useActions(AddConnectorPackageLogic); const { fullIndexName, language } = useValues(NewSearchIndexLogic); - const confirmModal = isModalVisible && ( - { - event?.preventDefault(); - setIsModalVisible(false); - }} - onConfirm={(event) => { - event.preventDefault(); - makeRequest({ deleteExistingConnector: true, indexName: fullIndexName, language }); - }} - cancelButtonText={i18n.translate( - 'xpack.enterpriseSearch.content.newIndex.steps.buildConnector.confirmModal.cancelButton.label', - { - defaultMessage: 'Cancel', - } - )} - confirmButtonText={i18n.translate( - 'xpack.enterpriseSearch.content.newIndex.steps.buildConnector.confirmModal.confirmButton.label', - { - defaultMessage: 'Replace configuration', - } - )} - defaultFocusedButton="confirm" - > - {i18n.translate( - 'xpack.enterpriseSearch.content..newIndex.steps.buildConnector.confirmModal.description', - { - defaultMessage: - 'A deleted index named {indexName} was originally tied to an existing connector configuration. Would you like to replace the existing connector configuration with a new one?', - values: { - indexName: fullIndexName, - }, - } - )} - - ); - return ( { BUILD_SEARCH_EXPERIENCE_STEP, ]} /> - {confirmModal} + {isModalVisible && ( + { + event?.preventDefault(); + setIsModalVisible(false); + }} + onConfirm={(event) => { + event.preventDefault(); + makeRequest({ deleteExistingConnector: true, indexName: fullIndexName, language }); + }} + cancelButtonText={i18n.translate( + 'xpack.enterpriseSearch.content.newIndex.steps.buildConnector.confirmModal.cancelButton.label', + { + defaultMessage: 'Cancel', + } + )} + confirmButtonText={i18n.translate( + 'xpack.enterpriseSearch.content.newIndex.steps.buildConnector.confirmModal.confirmButton.label', + { + defaultMessage: 'Replace configuration', + } + )} + defaultFocusedButton="confirm" + > + {i18n.translate( + 'xpack.enterpriseSearch.content..newIndex.steps.buildConnector.confirmModal.description', + { + defaultMessage: + 'A deleted index named {indexName} was originally tied to an existing connector configuration. Would you like to replace the existing connector configuration with a new one?', + values: { + indexName: fullIndexName, + }, + } + )} + + )} ); }; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/document_list/document_list.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/document_list/document_list.tsx index 779c636968435..43ed12f040d0c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/document_list/document_list.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/document_list/document_list.tsx @@ -57,72 +57,10 @@ export const DocumentList: React.FC = () => { return []; }; - const docsPerPageButton = ( - { - setIsPopoverOpen(true); - }} - > - {i18n.translate( - 'xpack.enterpriseSearch.content.searchIndex.documents.documentList.pagination.itemsPerPage', - { - defaultMessage: 'Documents per page: {docPerPage}', - values: { docPerPage: docsPerPage }, - } - )} - - ); - const getIconType = (size: number) => { return size === docsPerPage ? 'check' : 'empty'; }; - const docsPerPageOptions = [ - { - setIsPopoverOpen(false); - setDocsPerPage(10); - }} - > - {i18n.translate( - 'xpack.enterpriseSearch.content.searchIndex.documents.documentList.paginationOptions.option', - { defaultMessage: '{docCount} documents', values: { docCount: 10 } } - )} - , - - { - setIsPopoverOpen(false); - setDocsPerPage(25); - }} - > - {i18n.translate( - 'xpack.enterpriseSearch.content.searchIndex.documents.documentList.paginationOptions.option', - { defaultMessage: '{docCount} documents', values: { docCount: 25 } } - )} - , - { - setIsPopoverOpen(false); - setDocsPerPage(50); - }} - > - {i18n.translate( - 'xpack.enterpriseSearch.content.searchIndex.documents.documentList.paginationOptions.option', - { defaultMessage: '{docCount} documents', values: { docCount: 50 } } - )} - , - ]; - return ( <> { 'xpack.enterpriseSearch.content.searchIndex.documents.documentList.docsPerPage', { defaultMessage: 'Document count per page dropdown' } )} - button={docsPerPageButton} + button={ + { + setIsPopoverOpen(true); + }} + > + {i18n.translate( + 'xpack.enterpriseSearch.content.searchIndex.documents.documentList.pagination.itemsPerPage', + { + defaultMessage: 'Documents per page: {docPerPage}', + values: { docPerPage: docsPerPage }, + } + )} + + } isOpen={isPopoverOpen} closePopover={() => { setIsPopoverOpen(false); @@ -183,7 +138,51 @@ export const DocumentList: React.FC = () => { panelPaddingSize="none" anchorPosition="downLeft" > - + { + setIsPopoverOpen(false); + setDocsPerPage(10); + }} + > + {i18n.translate( + 'xpack.enterpriseSearch.content.searchIndex.documents.documentList.paginationOptions.option', + { defaultMessage: '{docCount} documents', values: { docCount: 10 } } + )} + , + + { + setIsPopoverOpen(false); + setDocsPerPage(25); + }} + > + {i18n.translate( + 'xpack.enterpriseSearch.content.searchIndex.documents.documentList.paginationOptions.option', + { defaultMessage: '{docCount} documents', values: { docCount: 25 } } + )} + , + { + setIsPopoverOpen(false); + setDocsPerPage(50); + }} + > + {i18n.translate( + 'xpack.enterpriseSearch.content.searchIndex.documents.documentList.paginationOptions.option', + { defaultMessage: '{docCount} documents', values: { docCount: 50 } } + )} + , + ]} + />
diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/generate_api_key_modal/modal.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/generate_api_key_modal/modal.test.tsx index 325d52ab2d2fd..b579df9da5c8b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/generate_api_key_modal/modal.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/generate_api_key_modal/modal.test.tsx @@ -11,14 +11,12 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { EuiModal, EuiFieldText } from '@elastic/eui'; +import { EuiModal, EuiFieldText, EuiCodeBlock } from '@elastic/eui'; const mockActions = { makeRequest: jest.fn(), setKeyName: jest.fn() }; const mockValues = { apiKey: '', isLoading: false, isSuccess: false, keyName: '' }; -import { ApiKey } from '../../../api_key/api_key'; - import { GenerateApiKeyModal } from './modal'; const onCloseMock = jest.fn(); @@ -84,8 +82,8 @@ describe('GenerateApiKeyModal', () => { ); expect(wrapper.find(EuiFieldText)).toHaveLength(0); expect(wrapper.find('[data-test-subj="generateApiKeyButton"]')).toHaveLength(0); - expect(wrapper.find(ApiKey)).toHaveLength(1); - expect(wrapper.find(ApiKey).prop('apiKey')).toEqual('apiKeyFromBackend123123=='); + expect(wrapper.find(EuiCodeBlock)).toHaveLength(1); + expect(wrapper.find(EuiCodeBlock).children().text()).toEqual('apiKeyFromBackend123123=='); }); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/generate_api_key_modal/modal.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/generate_api_key_modal/modal.tsx index fcb95fd4ade32..2690deea0c6de 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/generate_api_key_modal/modal.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/generate_api_key_modal/modal.tsx @@ -26,14 +26,14 @@ import { EuiText, EuiSpacer, EuiLink, + EuiFormLabel, + EuiCodeBlock, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { docLinks } from '../../../../../shared/doc_links'; -import { ApiKey } from '../../../api_key/api_key'; - import { GenerateApiKeyModalLogic } from './generate_api_key_modal.logic'; interface GenerateApiKeyModalProps { @@ -114,10 +114,21 @@ export const GenerateApiKeyModal: React.FC = ({ indexN ) : ( - {keyName} + + + + + {apiKey} + + + = ({ indexN href={encodeURI(`data:text/csv;charset=utf-8,${apiKey}`)} download={`${keyName}.csv`} /> - } - /> + + )} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/api_key_configuration.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/api_key_configuration.tsx index c435bac2a5811..19974d4b281b3 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/api_key_configuration.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/api_key_configuration.tsx @@ -23,6 +23,43 @@ import { Status } from '../../../../../../common/types/api'; import { GenerateConnectorApiKeyApiLogic } from '../../../api/connector_package/generate_connector_api_key_api_logic'; import { ApiKey } from '../../api_key/api_key'; +const ConfirmModal: React.FC<{ + onCancel: () => void; + onConfirm: () => void; +}> = ({ onCancel, onConfirm }) => ( + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.configurationConnector.apiKey.confirmModal.description', + { + defaultMessage: + 'Generating a new API key will invalidate the previous key. Are you sure you want to generate a new API key? This can not be undone.', + } + )} + +); + export const ApiKeyConfig: React.FC<{ hasApiKey: boolean; indexName: string }> = ({ hasApiKey, indexName, @@ -44,50 +81,18 @@ export const ApiKeyConfig: React.FC<{ hasApiKey: boolean; indexName: string }> = const [isModalVisible, setIsModalVisible] = useState(false); - const confirmModal = ( - { - event?.preventDefault(); - setIsModalVisible(false); - }} - onConfirm={(event) => { - event.preventDefault(); - makeRequest({ indexName }); - setIsModalVisible(false); - }} - cancelButtonText={i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.apiKey.confirmModal.cancelButton.label', - { - defaultMessage: 'Cancel', - } - )} - confirmButtonText={i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.apiKey.confirmModal.confirmButton.label', - { - defaultMessage: 'Generate API key', - } - )} - defaultFocusedButton="confirm" - > - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.apiKey.confirmModal.description', - { - defaultMessage: - 'Generating a new API key will invalidate the previous key. Are you sure you want to generate a new API key? This can not be undone.', - } - )} - - ); + const onCancel = () => { + setIsModalVisible(false); + }; + + const onConfirm = () => { + makeRequest({ indexName }); + setIsModalVisible(false); + }; return ( - {isModalVisible && confirmModal} + {isModalVisible && } {i18n.translate( diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration.tsx index 596b1837323da..acd8c856c3893 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration.tsx @@ -55,172 +55,6 @@ export const ConnectorConfiguration: React.FC = () => { const hasApiKey = !!(indexData.connector.api_key_id ?? apiKeyData); - const ScheduleStep: React.FC = () => ( - - - - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.scheduleSync.description', - { - defaultMessage: - 'Once your connectors are configured to your liking, don’t forget to set a recurring sync schedule to make sure your documents are indexed and relevant. You can also trigger a one-time sync without enabling a sync schedule.', - } - )} - - - - - - - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.steps.schedule.button.label', - { - defaultMessage: 'Set schedule and sync', - } - )} - - - - - - ); - - const ConnectorPackage: React.FC = () => ( - <> - - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.description.firstParagraph', - { - defaultMessage: - 'The connectors repository contains several connector client examples to help you utilize our framework for accelerated development against custom data sources.', - } - )} - - - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.button.label', - { - defaultMessage: 'Explore the connectors repository', - } - )} - - - - - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.clientExamplesLink', - { defaultMessage: 'connector client examples' } - )} - - ), - }} - /> - - - - - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.configurationFileLink', - { defaultMessage: 'configuration file' } - )} - - ), - }} - /> - - - - {`${ - apiKeyData?.encoded - ? `elasticsearch: - api_key: "${apiKeyData?.encoded}" -` - : '' - }connector_id: "${indexData.connector.id}" -`} - - - - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.connectorDeployedText', - { - defaultMessage: - 'Once you’ve configured the connector, deploy the connector to your self managed infrastructure.', - } - )} - - - {!indexData.connector.status || indexData.connector.status === ConnectorStatus.CREATED ? ( - - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.waitingForConnectorText', - { - defaultMessage: - 'Your connector has not connected to Enterprise Search. Troubleshoot your configuration and refresh the page.', - } - )} - - recheckIndex()} - isLoading={recheckIndexLoading} - > - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.waitingForConnector.button.label', - { - defaultMessage: 'Recheck now', - } - )} - - - ) : ( - - )} - - ); - return ( <> @@ -246,7 +80,137 @@ export const ConnectorConfiguration: React.FC = () => { titleSize: 'xs', }, { - children: , + children: ( + <> + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.description.firstParagraph', + { + defaultMessage: + 'The connectors repository contains several connector client examples to help you utilize our framework for accelerated development against custom data sources.', + } + )} + + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.button.label', + { + defaultMessage: 'Explore the connectors repository', + } + )} + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.clientExamplesLink', + { defaultMessage: 'connector client examples' } + )} + + ), + }} + /> + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.configurationFileLink', + { defaultMessage: 'configuration file' } + )} + + ), + }} + /> + + + + {`${ + apiKeyData?.encoded + ? `elasticsearch: + api_key: "${apiKeyData?.encoded}" + ` + : '' + }connector_id: "${indexData.connector.id}" + `} + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.connectorDeployedText', + { + defaultMessage: + 'Once you’ve configured the connector, deploy the connector to your self managed infrastructure.', + } + )} + + + {!indexData.connector.status || + indexData.connector.status === ConnectorStatus.CREATED ? ( + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.waitingForConnectorText', + { + defaultMessage: + 'Your connector has not connected to Enterprise Search. Troubleshoot your configuration and refresh the page.', + } + )} + + recheckIndex()} + isLoading={recheckIndexLoading} + > + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.configurationConnector.connectorPackage.waitingForConnector.button.label', + { + defaultMessage: 'Recheck now', + } + )} + + + ) : ( + + )} + + ), status: !indexData.connector.status || indexData.connector.status === ConnectorStatus.CREATED @@ -275,7 +239,40 @@ export const ConnectorConfiguration: React.FC = () => { titleSize: 'xs', }, { - children: , + children: ( + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.configurationConnector.scheduleSync.description', + { + defaultMessage: + 'Once your connectors are configured to your liking, don’t forget to set a recurring sync schedule to make sure your documents are indexed and relevant. You can also trigger a one-time sync without enabling a sync schedule.', + } + )} + + + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.configurationConnector.steps.schedule.button.label', + { + defaultMessage: 'Set schedule and sync', + } + )} + + + + + + ), status: indexData.connector.scheduling.enabled ? 'complete' : 'incomplete', title: i18n.translate( 'xpack.enterpriseSearch.content.indices.configurationConnector.steps.schedule.title', diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_config.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_config.tsx index 472fb9570209e..5588a9c16fd5d 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_config.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_configuration_config.tsx @@ -35,28 +35,6 @@ export const ConnectorConfigurationConfig: React.FC = () => { title: label, })); - const display = ( - - - - - - - - setIsEditing(!isEditing)}> - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.configurationConnector.config.editButton.title', - { - defaultMessage: 'Edit configuration', - } - )} - - - - - - ); - return ( @@ -130,7 +108,31 @@ export const ConnectorConfigurationConfig: React.FC = () => { - {isEditing ? : displayList.length > 0 && display} + {isEditing ? ( + + ) : ( + displayList.length > 0 && ( + + + + + + + + setIsEditing(!isEditing)}> + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.configurationConnector.config.editButton.title', + { + defaultMessage: 'Edit configuration', + } + )} + + + + + + ) + )} ); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_overview_panels.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_overview_panels.tsx index d972d7a1f3efa..b1fa1aaa378af 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_overview_panels.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/connector/connector_overview_panels.tsx @@ -28,20 +28,20 @@ import { import { IndexViewLogic } from '../index_view_logic'; import { SearchIndexTabId } from '../search_index'; +const StatusPanel: React.FC<{ ingestionStatus: IngestionStatus }> = ({ ingestionStatus }) => ( + + + +); + export const ConnectorOverviewPanels: React.FC = () => { const { ingestionStatus, index } = useValues(IndexViewLogic); - const statusPanel = ( - - - - ); - return isConnectorIndex(index) ? ( @@ -83,10 +83,10 @@ export const ConnectorOverviewPanels: React.FC = () => { tabId: SearchIndexTabId.CONFIGURATION, })} > - {statusPanel} + ) : ( - statusPanel + )} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/index_view_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/index_view_logic.ts index 1be7c2e9cf58d..319209c67fda7 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/index_view_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/index_view_logic.ts @@ -148,7 +148,7 @@ export const IndexViewLogic = kea { fetchIndices({ meta, returnHiddenIndices: showHiddenIndices, searchQuery }); }, [searchQuery, meta.page.current, showHiddenIndices]); - const createNewIndexButton = ( - - - {i18n.translate('xpack.enterpriseSearch.content.searchIndices.create.buttonTitle', { - defaultMessage: 'Create new index', - })} - - - ); - - const engineSteps = ( - <> - -

- {i18n.translate('xpack.enterpriseSearch.content.searchIndices.searchIndices.stepsTitle', { - defaultMessage: 'Build beautiful search experiences with Enterprise Search', - })} -

-
- - - - - - - - - - - ); - - const hiddenIndicesSwitch = ( -
); diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/insights/related_alerts_by_process_ancestry.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/insights/related_alerts_by_process_ancestry.tsx index 0171595fcc3b0..bea416ff51ec6 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/insights/related_alerts_by_process_ancestry.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/insights/related_alerts_by_process_ancestry.tsx @@ -6,7 +6,7 @@ */ import React, { useMemo, useCallback, useEffect, useState } from 'react'; -import { EuiSpacer, EuiLoadingSpinner } from '@elastic/eui'; +import { EuiBetaBadge, EuiSpacer, EuiLoadingSpinner } from '@elastic/eui'; import type { DataProvider } from '../../../../../common/types'; import { TimelineId } from '../../../../../common/types/timeline'; @@ -23,6 +23,7 @@ import { PROCESS_ANCESTRY_EMPTY, PROCESS_ANCESTRY_ERROR, } from './translations'; +import { BETA } from '../../../translations'; interface Props { data: TimelineEventsDetailsItem; @@ -112,6 +113,7 @@ export const RelatedAlertsByProcessAncestry = React.memo( } renderContent={renderContent} onToggle={onToggle} + extraAction={} /> ); } diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/insights/related_alerts_by_session.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/insights/related_alerts_by_session.tsx index 8b0b308829c3d..49dbc7ec674ca 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/insights/related_alerts_by_session.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/insights/related_alerts_by_session.tsx @@ -6,7 +6,7 @@ */ import React, { useCallback } from 'react'; -import { EuiSpacer } from '@elastic/eui'; +import { EuiBetaBadge, EuiSpacer } from '@elastic/eui'; import type { BrowserFields } from '../../../containers/source'; import type { TimelineEventsDetailsItem } from '../../../../../common/search_strategy/timeline'; @@ -19,6 +19,7 @@ import { SimpleAlertTable } from './simple_alert_table'; import { getEnrichedFieldInfo } from '../helpers'; import { ACTION_INVESTIGATE_IN_TIMELINE } from '../../../../detections/components/alerts_table/translations'; import { SESSION_LOADING, SESSION_EMPTY, SESSION_ERROR, SESSION_COUNT } from './translations'; +import { BETA } from '../../../translations'; interface Props { browserFields: BrowserFields; @@ -99,6 +100,7 @@ export const RelatedAlertsBySession = React.memo( state={state} text={getTextFromState(state, count)} renderContent={renderContent} + extraAction={} /> ); } diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/insights/related_alerts_upsell.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/insights/related_alerts_upsell.tsx new file mode 100644 index 0000000000000..37ac07e3c03d0 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/event_details/insights/related_alerts_upsell.tsx @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiLink, EuiIcon, EuiText } from '@elastic/eui'; + +import { euiStyled } from '@kbn/kibana-react-plugin/common'; +import { ALERT_UPSELL } from './translations'; + +const UpsellContainer = euiStyled.div` + border: 1px solid ${({ theme }) => theme.eui.euiColorLightShade}; + padding: 12px; + border-radius: 6px; +`; + +const StyledIcon = euiStyled(EuiIcon)` + margin-right: 10px; +`; + +export const RelatedAlertsUpsell = React.memo(() => { + return ( + + + + + + + + + {ALERT_UPSELL} + + + + + + ); +}); + +RelatedAlertsUpsell.displayName = 'RelatedAlertsUpsell'; diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/insights/translations.ts b/x-pack/plugins/security_solution/public/common/components/event_details/insights/translations.ts index e77bbeb60ae8e..e839003e1f7f9 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/insights/translations.ts +++ b/x-pack/plugins/security_solution/public/common/components/event_details/insights/translations.ts @@ -135,3 +135,10 @@ export const SIMPLE_ALERT_TABLE_LIMITED = i18n.translate( defaultMessage: 'Showing only the latest 10 alerts. View the rest of alerts in timeline.', } ); + +export const ALERT_UPSELL = i18n.translate( + 'xpack.securitySolution.alertDetails.overview.insights.alertUpsellTitle', + { + defaultMessage: 'Get more insights with a subscription', + } +); diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/creation.ts b/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/creation.ts new file mode 100644 index 0000000000000..781718652246d --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/creation.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Ecs } from '../../../../common/ecs'; + +export const demoEndgameCreationEvent: Ecs = { + _id: 'BcjPcG0BOpWiDweSou3g', + user: { + id: ['S-1-5-21-3573271228-3407584681-1597858646-1002'], + domain: ['Anvi-Acer'], + name: ['Arun'], + }, + host: { + os: { + platform: ['windows'], + name: ['Windows'], + version: ['6.1'], + }, + ip: ['10.178.85.222'], + name: ['HD-obe-8bf77f54'], + }, + event: { + module: ['endgame'], + dataset: ['esensor'], + action: ['creation_event'], + category: ['process'], + type: ['process_start'], + kind: ['event'], + }, + timestamp: '1569555712000', + process: { + hash: { + md5: ['62d06d7235b37895b68de56687895743'], + sha1: ['12563599116157778a22600d2a163d8112aed845'], + sha256: ['d4c97ed46046893141652e2ec0056a698f6445109949d7fcabbce331146889ee'], + }, + pid: [441684], + ppid: [8], + name: ['Microsoft.Photos.exe'], + executable: [ + 'C:\\Program Files\\WindowsApps\\Microsoft.Windows.Photos_2018.18091.17210.0_x64__8wekyb3d8bbwe\\Microsoft.Photos.exe', + ], + args: [ + 'C:\\Program Files\\WindowsApps\\Microsoft.Windows.Photos_2018.18091.17210.0_x64__8wekyb3d8bbwe\\Microsoft.Photos.exe', + '-ServerName:App.AppXzst44mncqdg84v7sv6p7yznqwssy6f7f.mca', + ], + }, + endgame: { + process_name: ['Microsoft.Photos.exe'], + pid: [441684], + parent_process_name: ['svchost.exe'], + }, +}; diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/dns.ts b/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/dns.ts new file mode 100644 index 0000000000000..bd5061dd3bd6a --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/dns.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Ecs } from '../../../../common/ecs'; + +export const demoEndgameDnsRequest: Ecs = { + _id: 'S8jPcG0BOpWiDweSou3g', + user: { + id: ['S-1-5-18'], + domain: ['NT AUTHORITY'], + name: ['SYSTEM'], + }, + host: { + os: { + platform: ['windows'], + name: ['Windows'], + version: ['6.1'], + }, + ip: ['10.178.85.222'], + name: ['HD-obe-8bf77f54'], + }, + event: { + module: ['endgame'], + dataset: ['esensor'], + action: ['request_event'], + category: ['network'], + kind: ['event'], + }, + message: [ + 'DNS query is completed for the name %1, type %2, query options %3 with status %4 Results %5 ', + ], + timestamp: '1569555712000', + dns: { + question: { + name: ['update.googleapis.com'], + type: ['A'], + }, + resolved_ip: ['10.100.197.67'], + }, + network: { + protocol: ['dns'], + }, + process: { + pid: [443192], + name: ['GoogleUpdate.exe'], + executable: ['C:\\Program Files (x86)\\Google\\Update\\GoogleUpdate.exe'], + }, + winlog: { + event_id: [3008], + }, + endgame: { + process_name: ['GoogleUpdate.exe'], + pid: [443192], + }, +}; diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/file_events.ts b/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/file_events.ts new file mode 100644 index 0000000000000..696d51b2e11fa --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/file_events.ts @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Ecs } from '../../../../common/ecs'; + +export const demoEndgameFileCreateEvent: Ecs = { + _id: '98jPcG0BOpWiDweSouzg', + user: { + id: ['S-1-5-21-3573271228-3407584681-1597858646-1002'], + domain: ['Anvi-Acer'], + name: ['Arun'], + }, + host: { + os: { + platform: ['windows'], + name: ['Windows'], + version: ['6.1'], + }, + ip: ['10.178.85.222'], + name: ['HD-obe-8bf77f54'], + }, + event: { + module: ['endgame'], + dataset: ['esensor'], + action: ['file_create_event'], + category: ['file'], + kind: ['event'], + }, + timestamp: '1569555712000', + endgame: { + process_name: ['chrome.exe'], + pid: [11620], + file_path: [ + 'C:\\Users\\Arun\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\63d78c21-e593-4484-b7a9-db33cd522ddc.tmp', + ], + }, +}; + +export const demoEndgameFileDeleteEvent: Ecs = { + _id: 'OMjPcG0BOpWiDweSeuW9', + user: { + id: ['S-1-5-18'], + domain: ['NT AUTHORITY'], + name: ['SYSTEM'], + }, + host: { + os: { + platform: ['windows'], + name: ['Windows'], + version: ['10.0'], + }, + ip: ['10.134.159.150'], + name: ['HD-v1s-d2118419'], + }, + event: { + module: ['endgame'], + dataset: ['esensor'], + action: ['file_delete_event'], + category: ['file'], + kind: ['event'], + }, + timestamp: '1569555704000', + endgame: { + pid: [1084], + file_name: ['tmp000002f6'], + file_path: ['C:\\Windows\\TEMP\\tmp00000404\\tmp000002f6'], + process_name: ['AmSvc.exe'], + }, +}; diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/ipv4.ts b/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/ipv4.ts new file mode 100644 index 0000000000000..c7d9655acb956 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/ipv4.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 { Ecs } from '../../../../common/ecs'; + +export const demoEndgameIpv4ConnectionAcceptEvent: Ecs = { + _id: 'LsjPcG0BOpWiDweSCNfu', + user: { + id: ['S-1-5-18'], + domain: ['NT AUTHORITY'], + name: ['SYSTEM'], + }, + host: { + os: { + platform: ['windows'], + name: ['Windows'], + version: ['10.0'], + }, + ip: ['10.43.255.177'], + name: ['HD-gqf-0af7b4fe'], + }, + event: { + module: ['endgame'], + dataset: ['esensor'], + action: ['ipv4_connection_accept_event'], + category: ['network'], + kind: ['event'], + }, + timestamp: '1569555676000', + network: { + community_id: ['1:network-community_id'], + transport: ['tcp'], + }, + process: { + pid: [1084], + name: ['AmSvc.exe'], + executable: ['C:\\Program Files\\Cybereason ActiveProbe\\AmSvc.exe'], + }, + source: { + ip: ['127.0.0.1'], + port: [49306], + }, + destination: { + port: [49305], + ip: ['127.0.0.1'], + }, + endgame: { + pid: [1084], + }, +}; diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/termination.ts b/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/termination.ts new file mode 100644 index 0000000000000..adab55d27c697 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/termination.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Ecs } from '../../../../common/ecs'; + +export const demoEndgameTerminationEvent: Ecs = { + _id: '2MjPcG0BOpWiDweSoutC', + user: { + id: ['S-1-5-21-3573271228-3407584681-1597858646-1002'], + domain: ['Anvi-Acer'], + name: ['Arun'], + }, + host: { + os: { + platform: ['windows'], + name: ['Windows'], + version: ['6.1'], + }, + ip: ['10.178.85.222'], + name: ['HD-obe-8bf77f54'], + }, + event: { + module: ['endgame'], + dataset: ['esensor'], + action: ['termination_event'], + category: ['process'], + kind: ['event'], + }, + timestamp: '1569555712000', + process: { + hash: { + md5: ['bd4401441a21bf1abce6404f4231db4d'], + sha1: ['797255e72d5ed5c058d4785950eba7abaa057653'], + sha256: ['87976f3430cc99bc939e0694247c0759961a49832b87218f4313d6fc0bc3a776'], + }, + pid: [442384], + ppid: [8], + name: ['RuntimeBroker.exe'], + executable: ['C:\\Windows\\System32\\RuntimeBroker.exe'], + }, + endgame: { + pid: [442384], + process_name: ['RuntimeBroker.exe'], + exit_code: [0], + }, +}; diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/user_logon.ts b/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/user_logon.ts new file mode 100644 index 0000000000000..ebc3cdcf1afe6 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/demo_data/endgame_ecs/user_logon.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { Ecs } from '../../../../common/ecs'; + +export const demoEndgameUserLogon: Ecs = { + _id: 'QsjPcG0BOpWiDweSeuRE', + user: { + id: ['S-1-5-18'], + domain: ['NT AUTHORITY'], + name: ['SYSTEM'], + }, + host: { + os: { + platform: ['windows'], + name: ['Windows'], + version: ['10.0'], + }, + ip: ['10.134.159.150'], + name: ['HD-v1s-d2118419'], + }, + event: { + module: ['endgame'], + dataset: ['esensor'], + action: ['user_logon'], + category: ['authentication'], + type: ['authentication_success'], + kind: ['event'], + }, + message: [ + 'An account was successfully logged on.\r\n\r\nSubject:\r\n\tSecurity ID:\t\tS-1-5-18\r\n\tAccount Name:\t\tWIN-Q3DOP1UKA81$\r\n\tAccount Domain:\t\tWORKGROUP\r\n\tLogon ID:\t\t0x3e7\r\n\r\nLogon Type:\t\t\t5\r\n\r\nNew Logon:\r\n\tSecurity ID:\t\tS-1-5-18\r\n\tAccount Name:\t\tSYSTEM\r\n\tAccount Domain:\t\tNT AUTHORITY\r\n\tLogon ID:\t\t0x3e7\r\n\tLogon GUID:\t\t{00000000-0000-0000-0000-000000000000}\r\n\r\nProcess Information:\r\n\tProcess ID:\t\t0x1b0\r\n\tProcess Name:\t\tC:\\Windows\\System32\\services.exe\r\n\r\nNetwork Information:\r\n\tWorkstation Name:\t\r\n\tSource Network Address:\t-\r\n\tSource Port:\t\t-\r\n\r\nDetailed Authentication Information:\r\n\tLogon Process:\t\tAdvapi \r\n\tAuthentication Package:\tNegotiate\r\n\tTransited Services:\t-\r\n\tPackage Name (NTLM only):\t-\r\n\tKey Length:\t\t0\r\n\r\nThis event is generated when a logon session is created. It is generated on the computer that was accessed.\r\n\r\nThe subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe or Services.exe.\r\n\r\nThe logon type field indicates the kind of logon that occurred. The most common types are 2 (interactive) and 3 (network).\r\n\r\nThe New Logon fields indicate the account for whom the new logon was created, i.e. the account that was logged on.\r\n\r\nThe network fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.\r\n\r\nThe authentication information fields provide detailed information about this specific logon request.\r\n\t- Logon GUID is a unique identifier that can be used to correlate this event with a KDC event.\r\n\t- Transited services indicate which intermediate services have participated in this logon request.\r\n\t- Package name indicates which sub-protocol was used among the NTLM protocols.\r\n\t- Key length indicates the length of the generated session key. This will be 0 if no session key was requested.', + ], + timestamp: '1569555704000', + process: { + pid: [432], + name: ['C:\\Windows\\System32\\services.exe'], + executable: ['C:\\Windows\\System32\\services.exe'], + }, + winlog: { + event_id: [4624], + }, + endgame: { + target_logon_id: ['0x3e7'], + pid: [432], + process_name: ['C:\\Windows\\System32\\services.exe'], + logon_type: [5], + subject_user_name: ['WIN-Q3DOP1UKA81$'], + subject_logon_id: ['0x3e7'], + target_user_name: ['SYSTEM'], + target_domain_name: ['NT AUTHORITY'], + }, +}; diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endpoint/library_load_event.ts b/x-pack/plugins/security_solution/public/common/demo_data/endpoint/library_load_event.ts new file mode 100644 index 0000000000000..039115624ab91 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/demo_data/endpoint/library_load_event.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 { Ecs } from '../../../../common/ecs'; + +export const demoEndpointLibraryLoadEvent: Ecs = { + file: { + path: ['C:\\Windows\\System32\\bcrypt.dll'], + hash: { + md5: ['00439016776de367bad087d739a03797'], + sha1: ['2c4ba5c1482987d50a182bad915f52cd6611ee63'], + sha256: ['e70f5d8f87aab14e3160227d38387889befbe37fa4f8f5adc59eff52804b35fd'], + }, + name: ['bcrypt.dll'], + }, + host: { + os: { + full: ['Windows Server 2019 Datacenter 1809 (10.0.17763.1697)'], + name: ['Windows'], + version: ['1809 (10.0.17763.1697)'], + family: ['windows'], + kernel: ['1809 (10.0.17763.1697)'], + platform: ['windows'], + }, + mac: ['aa:bb:cc:dd:ee:ff'], + name: ['win2019-endpoint-1'], + architecture: ['x86_64'], + ip: ['10.1.2.3'], + id: ['d8ad572e-d224-4044-a57d-f5a84c0dfe5d'], + }, + event: { + category: ['library'], + kind: ['event'], + created: ['2021-02-05T21:27:23.921Z'], + module: ['endpoint'], + action: ['load'], + type: ['start'], + id: ['LzzWB9jjGmCwGMvk++++Da5H'], + dataset: ['endpoint.events.library'], + }, + process: { + name: ['sshd.exe'], + pid: [9644], + entity_id: [ + 'MWQxNWNmOWUtM2RjNy01Yjk3LWY1ODYtNzQzZjdjMjUxOGIyLTk2NDQtMTMyNTcwMzQwNDEuNzgyMTczODAw', + ], + executable: ['C:\\Program Files\\OpenSSH-Win64\\sshd.exe'], + }, + agent: { + type: ['endpoint'], + }, + user: { + name: ['SYSTEM'], + domain: ['NT AUTHORITY'], + }, + message: ['Endpoint DLL load event'], + timestamp: '2021-02-05T21:27:23.921Z', + _id: 'IAUYdHcBGrBB52F2zo8Q', +}; diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endpoint/process_execution_malware_prevention_alert.ts b/x-pack/plugins/security_solution/public/common/demo_data/endpoint/process_execution_malware_prevention_alert.ts new file mode 100644 index 0000000000000..1a3657e867261 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/demo_data/endpoint/process_execution_malware_prevention_alert.ts @@ -0,0 +1,80 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Ecs } from '../../../../common/ecs'; + +export const demoEndpointProcessExecutionMalwarePreventionAlert: Ecs = { + process: { + hash: { + md5: ['177afc1eb0be88eb9983fb74111260c4'], + sha256: ['3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb'], + sha1: ['f573b85e9beb32121f1949217947b2adc6749e3d'], + }, + entity_id: [ + 'MWQxNWNmOWUtM2RjNy01Yjk3LWY1ODYtNzQzZjdjMjUxOGIyLTY5MjAtMTMyNDg5OTk2OTAuNDgzMzA3NzAw', + ], + executable: [ + 'C:\\Users\\sean\\Downloads\\3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb.exe', + ], + name: [ + 'C:\\Users\\sean\\Downloads\\3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb.exe', + ], + pid: [6920], + args: [ + 'C:\\Users\\sean\\Downloads\\3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb.exe', + ], + }, + host: { + os: { + full: ['Windows Server 2019 Datacenter 1809 (10.0.17763.1518)'], + name: ['Windows'], + version: ['1809 (10.0.17763.1518)'], + platform: ['windows'], + family: ['windows'], + kernel: ['1809 (10.0.17763.1518)'], + }, + mac: ['aa:bb:cc:dd:ee:ff'], + architecture: ['x86_64'], + ip: ['10.1.2.3'], + id: ['d8ad572e-d224-4044-a57d-f5a84c0dfe5d'], + name: ['win2019-endpoint-1'], + }, + file: { + mtime: ['2020-11-04T21:40:51.494Z'], + path: [ + 'C:\\Users\\sean\\Downloads\\3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb.exe', + ], + owner: ['sean'], + hash: { + md5: ['177afc1eb0be88eb9983fb74111260c4'], + sha256: ['3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb'], + sha1: ['f573b85e9beb32121f1949217947b2adc6749e3d'], + }, + name: ['3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb.exe'], + extension: ['exe'], + size: [1604112], + }, + event: { + category: ['malware', 'intrusion_detection', 'process'], + outcome: ['success'], + severity: [73], + code: ['malicious_file'], + action: ['execution'], + id: ['LsuMZVr+sdhvehVM++++Gp2Y'], + kind: ['alert'], + created: ['2020-11-04T21:41:30.533Z'], + module: ['endpoint'], + type: ['info', 'start', 'denied'], + dataset: ['endpoint.alerts'], + }, + agent: { + type: ['endpoint'], + }, + timestamp: '2020-11-04T21:41:30.533Z', + message: ['Malware Prevention Alert'], + _id: '0dA2lXUBn9bLIbfPkY7d', +}; diff --git a/x-pack/plugins/security_solution/public/common/demo_data/endpoint/registry_modification_event.ts b/x-pack/plugins/security_solution/public/common/demo_data/endpoint/registry_modification_event.ts new file mode 100644 index 0000000000000..2f34360b46443 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/demo_data/endpoint/registry_modification_event.ts @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Ecs } from '../../../../common/ecs'; + +export const demoEndpointRegistryModificationEvent: Ecs = { + host: { + os: { + full: ['Windows Server 2019 Datacenter 1809 (10.0.17763.1697)'], + name: ['Windows'], + version: ['1809 (10.0.17763.1697)'], + family: ['windows'], + kernel: ['1809 (10.0.17763.1697)'], + platform: ['windows'], + }, + mac: ['aa:bb:cc:dd:ee:ff'], + name: ['win2019-endpoint-1'], + architecture: ['x86_64'], + ip: ['10.1.2.3'], + id: ['d8ad572e-d224-4044-a57d-f5a84c0dfe5d'], + }, + event: { + category: ['registry'], + kind: ['event'], + created: ['2021-02-04T13:44:31.559Z'], + module: ['endpoint'], + action: ['modification'], + type: ['change'], + id: ['LzzWB9jjGmCwGMvk++++CbOn'], + dataset: ['endpoint.events.registry'], + }, + process: { + name: ['GoogleUpdate.exe'], + pid: [7408], + entity_id: [ + 'MWQxNWNmOWUtM2RjNy01Yjk3LWY1ODYtNzQzZjdjMjUxOGIyLTc0MDgtMTMyNTY5MTk4NDguODY4NTI0ODAw', + ], + executable: ['C:\\Program Files (x86)\\Google\\Update\\GoogleUpdate.exe'], + }, + registry: { + hive: ['HKLM'], + key: [ + 'SOFTWARE\\WOW6432Node\\Google\\Update\\ClientState\\{430FD4D0-B729-4F61-AA34-91526481799D}\\CurrentState', + ], + path: [ + 'HKLM\\SOFTWARE\\WOW6432Node\\Google\\Update\\ClientState\\{430FD4D0-B729-4F61-AA34-91526481799D}\\CurrentState\\StateValue', + ], + value: ['StateValue'], + }, + agent: { + type: ['endpoint'], + }, + user: { + name: ['SYSTEM'], + domain: ['NT AUTHORITY'], + }, + message: ['Endpoint registry event'], + timestamp: '2021-02-04T13:44:31.559Z', + _id: '4cxLbXcBGrBB52F2uOfF', +}; diff --git a/x-pack/plugins/security_solution/public/common/demo_data/netflow.ts b/x-pack/plugins/security_solution/public/common/demo_data/netflow.ts new file mode 100644 index 0000000000000..51f281a4b056b --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/demo_data/netflow.ts @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ONE_MILLISECOND_AS_NANOSECONDS } from '../../timelines/components/formatted_duration/helpers'; +import type { Ecs } from '../../../common/ecs'; + +/** Returns mock data for testing the Netflow component */ +export const getDemoNetflowData = (): Ecs => ({ + destination: { + bytes: [40], + geo: { + city_name: ['New York'], + continent_name: ['North America'], + country_iso_code: ['US'], + country_name: ['United States'], + region_name: ['New York'], + }, + ip: ['10.1.2.3'], + packets: [1], + port: [80], + }, + event: { + action: ['network_flow'], + category: ['network_traffic'], + duration: [ONE_MILLISECOND_AS_NANOSECONDS], + end: ['2018-11-12T19:03:25.936Z'], + start: ['2018-11-12T19:03:25.836Z'], + }, + _id: 'abcd', + network: { + bytes: [100], + community_id: ['we.live.in.a'], + direction: ['outgoing'], + packets: [3], + protocol: ['http'], + transport: ['tcp'], + }, + process: { + name: ['rat'], + }, + source: { + bytes: [60], + geo: { + city_name: ['Atlanta'], + continent_name: ['North America'], + country_iso_code: ['US'], + country_name: ['United States'], + region_name: ['Georgia'], + }, + ip: ['192.168.1.2'], + packets: [2], + port: [9987], + }, + timestamp: '2018-11-12T19:03:25.936Z', + tls: { + client_certificate: { + fingerprint: { + sha1: ['tls.client_certificate.fingerprint.sha1-value'], + }, + }, + fingerprints: { + ja3: { + hash: ['tls.fingerprints.ja3.hash-value'], + }, + }, + server_certificate: { + fingerprint: { + sha1: ['tls.server_certificate.fingerprint.sha1-value'], + }, + }, + }, + user: { + name: ['first.last'], + }, +}); diff --git a/x-pack/plugins/security_solution/public/common/demo_data/timeline.ts b/x-pack/plugins/security_solution/public/common/demo_data/timeline.ts new file mode 100644 index 0000000000000..90a4c2221d16c --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/demo_data/timeline.ts @@ -0,0 +1,1117 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { TimelineItem } from '../../../common/search_strategy/timeline'; + +export const demoTimelineData: TimelineItem[] = [ + { + _id: '1', + data: [ + { field: '@timestamp', value: ['2018-11-05T19:03:25.937Z'] }, + { field: 'event.severity', value: ['3'] }, + { field: 'event.category', value: ['Access'] }, + { field: 'event.action', value: ['Action'] }, + { field: 'host.name', value: ['apache'] }, + { field: 'source.ip', value: ['192.168.0.1'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + { field: 'user.name', value: ['john.dee'] }, + ], + ecs: { + _id: '1', + timestamp: '2018-11-05T19:03:25.937Z', + host: { name: ['apache'], ip: ['192.168.0.1'] }, + event: { + id: ['1'], + action: ['Action'], + category: ['Access'], + module: ['nginx'], + severity: [3], + }, + source: { ip: ['192.168.0.1'], port: [80] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + user: { id: ['1'], name: ['john.dee'] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '3', + data: [ + { field: '@timestamp', value: ['2018-11-07T19:03:25.937Z'] }, + { field: 'event.severity', value: ['1'] }, + { field: 'event.category', value: ['Access'] }, + { field: 'host.name', value: ['nginx'] }, + { field: 'source.ip', value: ['192.168.0.3'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + { field: 'user.name', value: ['evan.davis'] }, + ], + ecs: { + _id: '3', + timestamp: '2018-11-07T19:03:25.937Z', + host: { name: ['nginx'], ip: ['192.168.0.1'] }, + event: { + id: ['3'], + category: ['Access'], + type: ['HTTP Request'], + module: ['nginx'], + severity: [1], + }, + source: { ip: ['192.168.0.3'], port: [443] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + user: { id: ['3'], name: ['evan.davis'] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '4', + data: [ + { field: '@timestamp', value: ['2018-11-08T19:03:25.937Z'] }, + { field: 'event.severity', value: ['1'] }, + { field: 'event.category', value: ['Attempted Administrator Privilege Gain'] }, + { field: 'host.name', value: ['suricata'] }, + { field: 'source.ip', value: ['192.168.0.3'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + { field: 'user.name', value: ['jenny.jones'] }, + ], + ecs: { + _id: '4', + timestamp: '2018-11-08T19:03:25.937Z', + host: { name: ['suricata'], ip: ['192.168.0.1'] }, + event: { + id: ['4'], + category: ['Attempted Administrator Privilege Gain'], + type: ['Alert'], + module: ['suricata'], + severity: [1], + }, + source: { ip: ['192.168.0.3'], port: [53] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + suricata: { + eve: { + flow_id: [4], + proto: [''], + alert: { + signature: [ + 'ET EXPLOIT NETGEAR WNR2000v5 hidden_lang_avi Stack Overflow (CVE-2016-10174)', + ], + signature_id: [4], + }, + }, + }, + user: { id: ['4'], name: ['jenny.jones'] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '5', + data: [ + { field: '@timestamp', value: ['2018-11-09T19:03:25.937Z'] }, + { field: 'event.severity', value: ['3'] }, + { field: 'event.category', value: ['Access'] }, + { field: 'host.name', value: ['joe.computer'] }, + { field: 'source.ip', value: ['192.168.0.3'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + { field: 'user.name', value: ['becky.davis'] }, + ], + ecs: { + _id: '5', + timestamp: '2018-11-09T19:03:25.937Z', + host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, + event: { + id: ['5'], + category: ['Access'], + type: ['HTTP Request'], + module: ['nginx'], + severity: [3], + }, + source: { ip: ['192.168.0.3'], port: [80] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + user: { id: ['5'], name: ['becky.davis'] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '6', + data: [ + { field: '@timestamp', value: ['2018-11-10T19:03:25.937Z'] }, + { field: 'event.severity', value: ['3'] }, + { field: 'event.category', value: ['Access'] }, + { field: 'host.name', value: ['braden.davis'] }, + { field: 'source.ip', value: ['192.168.0.6'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + ], + ecs: { + _id: '6', + timestamp: '2018-11-10T19:03:25.937Z', + host: { name: ['braden.davis'], ip: ['192.168.0.1'] }, + event: { + id: ['6'], + category: ['Access'], + type: ['HTTP Request'], + module: ['nginx'], + severity: [3], + }, + source: { ip: ['192.168.0.6'], port: [80] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '8', + data: [ + { field: '@timestamp', value: ['2018-11-12T19:03:25.937Z'] }, + { field: 'event.severity', value: ['2'] }, + { field: 'event.category', value: ['Web Application Attack'] }, + { field: 'host.name', value: ['joe.computer'] }, + { field: 'source.ip', value: ['192.168.0.8'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + { field: 'user.name', value: ['jone.doe'] }, + ], + ecs: { + _id: '8', + timestamp: '2018-11-12T19:03:25.937Z', + host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, + event: { + id: ['8'], + category: ['Web Application Attack'], + type: ['Alert'], + module: ['suricata'], + severity: [2], + }, + suricata: { + eve: { + flow_id: [8], + proto: [''], + alert: { + signature: ['ET WEB_SERVER Possible CVE-2014-6271 Attempt in HTTP Cookie'], + signature_id: [8], + }, + }, + }, + source: { ip: ['192.168.0.8'], port: [80] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + user: { id: ['8'], name: ['jone.doe'] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '7', + data: [ + { field: '@timestamp', value: ['2018-11-11T19:03:25.937Z'] }, + { field: 'event.severity', value: ['3'] }, + { field: 'event.category', value: ['Access'] }, + { field: 'host.name', value: ['joe.computer'] }, + { field: 'source.ip', value: ['192.168.0.7'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + { field: 'user.name', value: ['jone.doe'] }, + ], + ecs: { + _id: '7', + timestamp: '2018-11-11T19:03:25.937Z', + host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, + event: { + id: ['7'], + category: ['Access'], + type: ['HTTP Request'], + module: ['apache'], + severity: [3], + }, + source: { ip: ['192.168.0.7'], port: [80] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + user: { id: ['7'], name: ['jone.doe'] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '9', + data: [ + { field: '@timestamp', value: ['2018-11-13T19:03:25.937Z'] }, + { field: 'event.severity', value: ['3'] }, + { field: 'event.category', value: ['Access'] }, + { field: 'host.name', value: ['joe.computer'] }, + { field: 'source.ip', value: ['192.168.0.9'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + { field: 'user.name', value: ['jone.doe'] }, + ], + ecs: { + _id: '9', + timestamp: '2018-11-13T19:03:25.937Z', + host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, + event: { + id: ['9'], + category: ['Access'], + type: ['HTTP Request'], + module: ['nginx'], + severity: [3], + }, + source: { ip: ['192.168.0.9'], port: [80] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + user: { id: ['9'], name: ['jone.doe'] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '10', + data: [ + { field: '@timestamp', value: ['2018-11-14T19:03:25.937Z'] }, + { field: 'event.severity', value: ['3'] }, + { field: 'event.category', value: ['Access'] }, + { field: 'host.name', value: ['joe.computer'] }, + { field: 'source.ip', value: ['192.168.0.10'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + { field: 'user.name', value: ['jone.doe'] }, + ], + ecs: { + _id: '10', + timestamp: '2018-11-14T19:03:25.937Z', + host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, + event: { + id: ['10'], + category: ['Access'], + type: ['HTTP Request'], + module: ['nginx'], + severity: [3], + }, + source: { ip: ['192.168.0.10'], port: [80] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + user: { id: ['10'], name: ['jone.doe'] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '11', + data: [ + { field: '@timestamp', value: ['2018-11-15T19:03:25.937Z'] }, + { field: 'event.severity', value: ['3'] }, + { field: 'event.category', value: ['Access'] }, + { field: 'host.name', value: ['joe.computer'] }, + { field: 'source.ip', value: ['192.168.0.11'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + { field: 'user.name', value: ['jone.doe'] }, + ], + ecs: { + _id: '11', + timestamp: '2018-11-15T19:03:25.937Z', + host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, + event: { + id: ['11'], + category: ['Access'], + type: ['HTTP Request'], + module: ['nginx'], + severity: [3], + }, + source: { ip: ['192.168.0.11'], port: [80] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + user: { id: ['11'], name: ['jone.doe'] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '12', + data: [ + { field: '@timestamp', value: ['2018-11-16T19:03:25.937Z'] }, + { field: 'event.severity', value: ['3'] }, + { field: 'event.category', value: ['Access'] }, + { field: 'host.name', value: ['joe.computer'] }, + { field: 'source.ip', value: ['192.168.0.12'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + { field: 'user.name', value: ['jone.doe'] }, + ], + ecs: { + _id: '12', + timestamp: '2018-11-16T19:03:25.937Z', + host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, + event: { + id: ['12'], + category: ['Access'], + type: ['HTTP Request'], + module: ['nginx'], + severity: [3], + }, + source: { ip: ['192.168.0.12'], port: [80] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + user: { id: ['12'], name: ['jone.doe'] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '2', + data: [ + { field: '@timestamp', value: ['2018-11-06T19:03:25.937Z'] }, + { field: 'event.severity', value: ['3'] }, + { field: 'event.category', value: ['Authentication'] }, + { field: 'host.name', value: ['joe.computer'] }, + { field: 'source.ip', value: ['192.168.0.2'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + { field: 'user.name', value: ['joe.bob'] }, + ], + ecs: { + _id: '2', + timestamp: '2018-11-06T19:03:25.937Z', + host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, + event: { + id: ['2'], + category: ['Authentication'], + type: ['Authentication Success'], + module: ['authlog'], + severity: [3], + }, + source: { ip: ['192.168.0.2'], port: [80] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + user: { id: ['1'], name: ['joe.bob'] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '13', + data: [ + { field: '@timestamp', value: ['2018-13-12T19:03:25.937Z'] }, + { field: 'event.severity', value: ['1'] }, + { field: 'event.category', value: ['Web Application Attack'] }, + { field: 'host.name', value: ['joe.computer'] }, + { field: 'source.ip', value: ['192.168.0.8'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + ], + ecs: { + _id: '13', + timestamp: '2018-13-12T19:03:25.937Z', + host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, + event: { + id: ['13'], + category: ['Web Application Attack'], + type: ['Alert'], + module: ['suricata'], + severity: [1], + }, + suricata: { + eve: { + flow_id: [13], + proto: [''], + alert: { + signature: ['ET WEB_SERVER Possible Attempt in HTTP Cookie'], + signature_id: [13], + }, + }, + }, + source: { ip: ['192.168.0.8'], port: [80] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '14', + data: [ + { field: '@timestamp', value: ['2019-03-07T05:06:51.000Z'] }, + { field: 'host.name', value: ['zeek-franfurt'] }, + { field: 'source.ip', value: ['192.168.26.101'] }, + { field: 'destination.ip', value: ['192.168.238.205'] }, + ], + ecs: { + _id: '14', + timestamp: '2019-03-07T05:06:51.000Z', + event: { + module: ['zeek'], + dataset: ['zeek.connection'], + }, + host: { + id: ['37c81253e0fc4c46839c19b981be5177'], + name: ['zeek-franfurt'], + ip: ['207.154.238.205', '10.19.0.5', 'fe80::d82b:9aff:fe0d:1e12'], + }, + source: { ip: ['185.176.26.101'], port: [44059] }, + destination: { ip: ['207.154.238.205'], port: [11568] }, + geo: { region_name: ['New York'], country_iso_code: ['US'] }, + network: { transport: ['tcp'] }, + zeek: { + session_id: ['C8DRTq362Fios6hw16'], + connection: { + local_resp: [false], + local_orig: [false], + missed_bytes: [0], + state: ['REJ'], + history: ['Sr'], + }, + }, + }, + }, + { + _id: '15', + data: [ + { field: '@timestamp', value: ['2019-03-07T00:51:28.000Z'] }, + { field: 'host.name', value: ['suricata-zeek-singapore'] }, + { field: 'source.ip', value: ['192.168.35.240'] }, + { field: 'destination.ip', value: ['192.168.67.3'] }, + ], + ecs: { + _id: '15', + timestamp: '2019-03-07T00:51:28.000Z', + event: { + module: ['zeek'], + dataset: ['zeek.dns'], + }, + host: { + id: ['af3fddf15f1d47979ce817ba0df10c6e'], + name: ['suricata-zeek-singapore'], + ip: ['206.189.35.240', '10.15.0.5', 'fe80::98c7:eff:fe29:4455'], + }, + source: { ip: ['206.189.35.240'], port: [57475] }, + destination: { ip: ['67.207.67.3'], port: [53] }, + geo: { region_name: ['New York'], country_iso_code: ['US'] }, + network: { transport: ['udp'] }, + zeek: { + session_id: ['CyIrMA1L1JtLqdIuol'], + dns: { + AA: [false], + RD: [false], + trans_id: [65252], + RA: [false], + TC: [false], + }, + }, + }, + }, + { + _id: '16', + data: [ + { field: '@timestamp', value: ['2019-03-05T07:00:20.000Z'] }, + { field: 'host.name', value: ['suricata-zeek-singapore'] }, + { field: 'source.ip', value: ['192.168.35.240'] }, + { field: 'destination.ip', value: ['192.168.164.26'] }, + ], + ecs: { + _id: '16', + timestamp: '2019-03-05T07:00:20.000Z', + event: { + module: ['zeek'], + dataset: ['zeek.http'], + }, + host: { + id: ['af3fddf15f1d47979ce817ba0df10c6e'], + name: ['suricata-zeek-singapore'], + ip: ['206.189.35.240', '10.15.0.5', 'fe80::98c7:eff:fe29:4455'], + }, + source: { ip: ['206.189.35.240'], port: [36220] }, + destination: { ip: ['192.241.164.26'], port: [80] }, + geo: { region_name: ['New York'], country_iso_code: ['US'] }, + http: { + version: ['1.1'], + request: { body: { bytes: [0] } }, + response: { status_code: [302], body: { bytes: [154] } }, + }, + zeek: { + session_id: ['CZLkpC22NquQJOpkwe'], + + http: { + resp_mime_types: ['text/html'], + trans_depth: ['3'], + status_msg: ['Moved Temporarily'], + resp_fuids: ['FzeujEPP7GTHmYPsc'], + tags: [], + }, + }, + }, + }, + { + _id: '17', + data: [ + { field: '@timestamp', value: ['2019-02-28T22:36:28.000Z'] }, + { field: 'host.name', value: ['zeek-franfurt'] }, + { field: 'source.ip', value: ['192.168.77.171'] }, + ], + ecs: { + _id: '17', + timestamp: '2019-02-28T22:36:28.000Z', + event: { + module: ['zeek'], + dataset: ['zeek.notice'], + }, + host: { + id: ['37c81253e0fc4c46839c19b981be5177'], + name: ['zeek-franfurt'], + ip: ['207.154.238.205', '10.19.0.5', 'fe80::d82b:9aff:fe0d:1e12'], + }, + source: { ip: ['8.42.77.171'] }, + zeek: { + notice: { + suppress_for: [3600], + msg: ['8.42.77.171 scanned at least 15 unique ports of host 207.154.238.205 in 0m0s'], + note: ['Scan::Port_Scan'], + sub: ['remote'], + dst: ['207.154.238.205'], + dropped: [false], + peer_descr: ['bro'], + }, + }, + }, + }, + { + _id: '18', + data: [ + { field: '@timestamp', value: ['2019-02-22T21:12:13.000Z'] }, + { field: 'host.name', value: ['zeek-sensor-amsterdam'] }, + { field: 'source.ip', value: ['192.168.66.184'] }, + { field: 'destination.ip', value: ['192.168.95.15'] }, + ], + ecs: { + _id: '18', + timestamp: '2019-02-22T21:12:13.000Z', + event: { + module: ['zeek'], + dataset: ['zeek.ssl'], + }, + host: { id: ['2ce8b1e7d69e4a1d9c6bcddc473da9d9'], name: ['zeek-sensor-amsterdam'] }, + source: { ip: ['188.166.66.184'], port: [34514] }, + destination: { ip: ['91.189.95.15'], port: [443] }, + geo: { region_name: ['England'], country_iso_code: ['GB'] }, + zeek: { + session_id: ['CmTxzt2OVXZLkGDaRe'], + ssl: { + cipher: ['TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256'], + established: [false], + resumed: [false], + version: ['TLSv12'], + }, + }, + }, + }, + { + _id: '19', + data: [ + { field: '@timestamp', value: ['2019-03-03T04:26:38.000Z'] }, + { field: 'host.name', value: ['suricata-zeek-singapore'] }, + ], + ecs: { + _id: '19', + timestamp: '2019-03-03T04:26:38.000Z', + event: { + module: ['zeek'], + dataset: ['zeek.files'], + }, + host: { + id: ['af3fddf15f1d47979ce817ba0df10c6e'], + name: ['suricata-zeek-singapore'], + ip: ['206.189.35.240', '10.15.0.5', 'fe80::98c7:eff:fe29:4455'], + }, + zeek: { + session_id: ['Cu0n232QMyvNtzb75j'], + files: { + session_ids: ['Cu0n232QMyvNtzb75j'], + timedout: [false], + local_orig: [false], + tx_host: ['5.101.111.50'], + source: ['HTTP'], + is_orig: [false], + overflow_bytes: [0], + sha1: ['fa5195a5dfacc9d1c68d43600f0e0262cad14dde'], + duration: [0], + depth: [0], + analyzers: ['MD5', 'SHA1'], + mime_type: ['text/plain'], + rx_host: ['206.189.35.240'], + total_bytes: [88722], + fuid: ['FePz1uVEVCZ3I0FQi'], + seen_bytes: [1198], + missing_bytes: [0], + md5: ['f7653f1951693021daa9e6be61226e32'], + }, + }, + }, + }, + { + _id: '20', + data: [ + { field: '@timestamp', value: ['2019-03-13T05:42:11.815Z'] }, + { field: 'event.category', value: ['audit-rule'] }, + { field: 'host.name', value: ['zeek-sanfran'] }, + { field: 'process.args', value: ['gpgconf', '--list-dirs', 'agent-socket'] }, + ], + ecs: { + _id: '20', + timestamp: '2019-03-13T05:42:11.815Z', + event: { + action: ['executed'], + module: ['auditd'], + category: ['audit-rule'], + }, + host: { + id: ['f896741c3b3b44bdb8e351a4ab6d2d7c'], + name: ['zeek-sanfran'], + ip: ['134.209.63.134', '10.46.0.5', 'fe80::a0d9:16ff:fecf:e70b'], + }, + user: { name: ['alice'] }, + process: { + pid: [5402], + name: ['gpgconf'], + ppid: [5401], + args: ['gpgconf', '--list-dirs', 'agent-socket'], + executable: ['/usr/bin/gpgconf'], + title: ['gpgconf --list-dirs agent-socket'], + working_directory: ['/'], + }, + }, + }, + { + _id: '21', + data: [ + { field: '@timestamp', value: ['2019-03-14T22:30:25.527Z'] }, + { field: 'event.category', value: ['user-login'] }, + { field: 'host.name', value: ['zeek-london'] }, + { field: 'source.ip', value: ['192.168.77.171'] }, + { field: 'user.name', value: ['root'] }, + ], + ecs: { + _id: '21', + timestamp: '2019-03-14T22:30:25.527Z', + event: { + action: ['logged-in'], + module: ['auditd'], + category: ['user-login'], + }, + auditd: { + result: ['success'], + session: ['14'], + data: { terminal: ['/dev/pts/0'], op: ['login'] }, + summary: { + actor: { primary: ['alice'], secondary: ['alice'] }, + object: { primary: ['/dev/pts/0'], secondary: ['8.42.77.171'], type: ['user-session'] }, + how: ['/usr/sbin/sshd'], + }, + }, + host: { + id: ['7c21f5ed03b04d0299569d221fe18bbc'], + name: ['zeek-london'], + ip: ['46.101.3.136', '10.16.0.5', 'fe80::4066:42ff:fe19:b3b9'], + }, + source: { ip: ['8.42.77.171'] }, + user: { name: ['root'] }, + process: { + pid: [17471], + executable: ['/usr/sbin/sshd'], + }, + }, + }, + { + _id: '22', + data: [ + { field: '@timestamp', value: ['2019-03-13T03:35:21.614Z'] }, + { field: 'event.category', value: ['user-login'] }, + { field: 'host.name', value: ['suricata-bangalore'] }, + { field: 'user.name', value: ['root'] }, + ], + ecs: { + _id: '22', + timestamp: '2019-03-13T03:35:21.614Z', + event: { + action: ['disposed-credentials'], + module: ['auditd'], + category: ['user-login'], + }, + auditd: { + result: ['success'], + session: ['340'], + data: { acct: ['alice'], terminal: ['ssh'], op: ['PAM:setcred'] }, + summary: { + actor: { primary: ['alice'], secondary: ['alice'] }, + object: { primary: ['ssh'], secondary: ['8.42.77.171'], type: ['user-session'] }, + how: ['/usr/sbin/sshd'], + }, + }, + host: { + id: ['0a63559c1acf4c419d979c4b4d8b83ff'], + name: ['suricata-bangalore'], + ip: ['139.59.11.147', '10.47.0.5', 'fe80::ec0b:1bff:fe29:80bd'], + }, + user: { name: ['root'] }, + process: { + pid: [21202], + executable: ['/usr/sbin/sshd'], + }, + }, + }, + { + _id: '23', + data: [ + { field: '@timestamp', value: ['2019-03-13T03:35:21.614Z'] }, + { field: 'event.category', value: ['user-login'] }, + { field: 'host.name', value: ['suricata-bangalore'] }, + { field: 'user.name', value: ['root'] }, + ], + ecs: { + _id: '23', + timestamp: '2019-03-13T03:35:21.614Z', + event: { + action: ['ended-session'], + module: ['auditd'], + category: ['user-login'], + }, + auditd: { + result: ['success'], + session: ['340'], + data: { acct: ['alice'], terminal: ['ssh'], op: ['PAM:session_close'] }, + summary: { + actor: { primary: ['alice'], secondary: ['alice'] }, + object: { primary: ['ssh'], secondary: ['8.42.77.171'], type: ['user-session'] }, + how: ['/usr/sbin/sshd'], + }, + }, + host: { + id: ['0a63559c1acf4c419d979c4b4d8b83ff'], + name: ['suricata-bangalore'], + ip: ['139.59.11.147', '10.47.0.5', 'fe80::ec0b:1bff:fe29:80bd'], + }, + user: { name: ['root'] }, + process: { + pid: [21202], + executable: ['/usr/sbin/sshd'], + }, + }, + }, + { + _id: '24', + data: [ + { field: '@timestamp', value: ['2019-03-18T23:17:01.645Z'] }, + { field: 'event.category', value: ['user-login'] }, + { field: 'host.name', value: ['zeek-london'] }, + { field: 'user.name', value: ['root'] }, + ], + ecs: { + _id: '24', + timestamp: '2019-03-18T23:17:01.645Z', + event: { + action: ['acquired-credentials'], + module: ['auditd'], + category: ['user-login'], + }, + auditd: { + result: ['success'], + session: ['unset'], + data: { acct: ['root'], terminal: ['cron'], op: ['PAM:setcred'] }, + summary: { + actor: { primary: ['unset'], secondary: ['root'] }, + object: { primary: ['cron'], type: ['user-session'] }, + how: ['/usr/sbin/cron'], + }, + }, + host: { + id: ['7c21f5ed03b04d0299569d221fe18bbc'], + name: ['zeek-london'], + ip: ['46.101.3.136', '10.16.0.5', 'fe80::4066:42ff:fe19:b3b9'], + }, + user: { name: ['root'] }, + process: { + pid: [9592], + executable: ['/usr/sbin/cron'], + }, + }, + }, + { + _id: '25', + data: [ + { field: '@timestamp', value: ['2019-03-19T01:17:01.336Z'] }, + { field: 'event.category', value: ['user-login'] }, + { field: 'host.name', value: ['siem-kibana'] }, + { field: 'user.name', value: ['root'] }, + ], + ecs: { + _id: '25', + timestamp: '2019-03-19T01:17:01.336Z', + event: { + action: ['started-session'], + module: ['auditd'], + category: ['user-login'], + }, + auditd: { + result: ['success'], + session: ['2908'], + data: { acct: ['root'], terminal: ['cron'], op: ['PAM:session_open'] }, + summary: { + actor: { primary: ['root'], secondary: ['root'] }, + object: { primary: ['cron'], type: ['user-session'] }, + how: ['/usr/sbin/cron'], + }, + }, + host: { id: ['aa7ca589f1b8220002f2fc61c64cfbf1'], name: ['siem-kibana'] }, + user: { name: ['root'] }, + process: { + pid: [725], + executable: ['/usr/sbin/cron'], + }, + }, + }, + { + _id: '26', + data: [ + { field: '@timestamp', value: ['2019-03-13T03:34:08.890Z'] }, + { field: 'event.category', value: ['user-login'] }, + { field: 'host.name', value: ['suricata-bangalore'] }, + { field: 'user.name', value: ['alice'] }, + ], + ecs: { + _id: '26', + timestamp: '2019-03-13T03:34:08.890Z', + event: { + action: ['was-authorized'], + module: ['auditd'], + category: ['user-login'], + }, + auditd: { + result: ['success'], + session: ['338'], + data: { terminal: ['/dev/pts/0'] }, + summary: { + actor: { primary: ['root'], secondary: ['alice'] }, + object: { primary: ['/dev/pts/0'], type: ['user-session'] }, + how: ['/sbin/pam_tally2'], + }, + }, + host: { + id: ['0a63559c1acf4c419d979c4b4d8b83ff'], + name: ['suricata-bangalore'], + ip: ['139.59.11.147', '10.47.0.5', 'fe80::ec0b:1bff:fe29:80bd'], + }, + user: { name: ['alice'] }, + process: { + pid: [21170], + executable: ['/sbin/pam_tally2'], + }, + }, + }, + { + _id: '27', + data: [ + { field: '@timestamp', value: ['2019-03-22T19:13:11.026Z'] }, + { field: 'event.action', value: ['connected-to'] }, + { field: 'event.category', value: ['audit-rule'] }, + { field: 'host.name', value: ['zeek-london'] }, + { field: 'destination.ip', value: ['192.168.216.34'] }, + { field: 'user.name', value: ['alice'] }, + ], + ecs: { + _id: '27', + timestamp: '2019-03-22T19:13:11.026Z', + event: { + action: ['connected-to'], + module: ['auditd'], + category: ['audit-rule'], + }, + auditd: { + result: ['success'], + session: ['246'], + summary: { + actor: { primary: ['alice'], secondary: ['alice'] }, + object: { primary: ['192.168.216.34'], secondary: ['80'], type: ['socket'] }, + how: ['/usr/bin/wget'], + }, + }, + host: { + id: ['7c21f5ed03b04d0299569d221fe18bbc'], + name: ['zeek-london'], + ip: ['46.101.3.136', '10.16.0.5', 'fe80::4066:42ff:fe19:b3b9'], + }, + destination: { ip: ['192.168.216.34'], port: [80] }, + user: { name: ['alice'] }, + process: { + pid: [1490], + name: ['wget'], + ppid: [1476], + executable: ['/usr/bin/wget'], + title: ['wget www.example.com'], + }, + }, + }, + { + _id: '28', + data: [ + { field: '@timestamp', value: ['2019-03-26T22:12:18.609Z'] }, + { field: 'event.action', value: ['opened-file'] }, + { field: 'event.category', value: ['audit-rule'] }, + { field: 'host.name', value: ['zeek-london'] }, + { field: 'user.name', value: ['root'] }, + ], + ecs: { + _id: '28', + timestamp: '2019-03-26T22:12:18.609Z', + event: { + action: ['opened-file'], + module: ['auditd'], + category: ['audit-rule'], + }, + auditd: { + result: ['success'], + session: ['242'], + summary: { + actor: { primary: ['unset'], secondary: ['root'] }, + object: { primary: ['/proc/15990/attr/current'], type: ['file'] }, + how: ['/lib/systemd/systemd-journald'], + }, + }, + file: { + path: ['/proc/15990/attr/current'], + device: ['00:00'], + inode: ['27672309'], + uid: ['0'], + owner: ['root'], + gid: ['0'], + group: ['root'], + mode: ['0666'], + }, + host: { + id: ['7c21f5ed03b04d0299569d221fe18bbc'], + name: ['zeek-london'], + ip: ['46.101.3.136', '10.16.0.5', 'fe80::4066:42ff:fe19:b3b9'], + }, + + user: { name: ['root'] }, + process: { + pid: [27244], + name: ['systemd-journal'], + ppid: [1], + executable: ['/lib/systemd/systemd-journald'], + title: ['/lib/systemd/systemd-journald'], + working_directory: ['/'], + }, + }, + }, + { + _id: '29', + data: [ + { field: '@timestamp', value: ['2019-04-08T21:18:57.000Z'] }, + { field: 'event.action', value: ['user_login'] }, + { field: 'event.category', value: null }, + { field: 'host.name', value: ['zeek-london'] }, + { field: 'user.name', value: ['Braden'] }, + ], + ecs: { + _id: '29', + event: { + action: ['user_login'], + dataset: ['login'], + kind: ['event'], + module: ['system'], + outcome: ['failure'], + }, + host: { + id: ['7c21f5ed03b04d0299569d221fe18bbc'], + name: ['zeek-london'], + ip: ['46.101.3.136', '10.16.0.5', 'fe80::4066:42ff:fe19:b3b9'], + }, + source: { + ip: ['128.199.212.120'], + }, + user: { + name: ['Braden'], + }, + process: { + pid: [6278], + }, + }, + }, + { + _id: '30', + data: [ + { field: '@timestamp', value: ['2019-04-08T22:27:14.814Z'] }, + { field: 'event.action', value: ['process_started'] }, + { field: 'event.category', value: null }, + { field: 'host.name', value: ['zeek-london'] }, + { field: 'user.name', value: ['Evan'] }, + ], + ecs: { + _id: '30', + event: { + action: ['process_started'], + dataset: ['login'], + kind: ['event'], + module: ['system'], + outcome: ['failure'], + }, + host: { + id: ['7c21f5ed03b04d0299569d221fe18bbc'], + name: ['zeek-london'], + ip: ['46.101.3.136', '10.16.0.5', 'fe80::4066:42ff:fe19:b3b9'], + }, + source: { + ip: ['128.199.212.120'], + }, + user: { + name: ['Evan'], + }, + process: { + pid: [6278], + }, + }, + }, + { + _id: '31', + data: [ + { field: '@timestamp', value: ['2018-11-05T19:03:25.937Z'] }, + { field: 'message', value: ['I am a log file message'] }, + { field: 'event.severity', value: ['3'] }, + { field: 'event.category', value: ['Access'] }, + { field: 'event.action', value: ['Action'] }, + { field: 'host.name', value: ['apache'] }, + { field: 'source.ip', value: ['192.168.0.1'] }, + { field: 'destination.ip', value: ['192.168.0.3'] }, + { field: 'destination.bytes', value: ['123456'] }, + { field: 'user.name', value: ['john.dee'] }, + ], + ecs: { + _id: '1', + timestamp: '2018-11-05T19:03:25.937Z', + host: { name: ['apache'], ip: ['192.168.0.1'] }, + event: { + id: ['1'], + action: ['Action'], + category: ['Access'], + module: ['nginx'], + severity: [3], + }, + message: ['I am a log file message'], + source: { ip: ['192.168.0.1'], port: [80] }, + destination: { ip: ['192.168.0.3'], port: [6343] }, + user: { id: ['1'], name: ['john.dee'] }, + geo: { region_name: ['xx'], country_iso_code: ['xx'] }, + }, + }, + { + _id: '32', + data: [], + ecs: { + _id: 'BuBP4W0BOpWiDweSoYSg', + timestamp: '2019-10-18T23:59:15.091Z', + threat: { + enrichments: [ + { + indicator: { + provider: ['indicator_provider'], + reference: ['https://example.com'], + }, + matched: { + atomic: ['192.168.1.1'], + field: ['source.ip'], + type: ['ip'], + }, + feed: { + name: ['feed_name'], + }, + }, + ], + }, + }, + }, +]; diff --git a/x-pack/plugins/security_solution/public/common/lib/cell_actions/add_to_timeline.tsx b/x-pack/plugins/security_solution/public/common/lib/cell_actions/add_to_timeline.tsx index 4e944072fefef..54956f6304576 100644 --- a/x-pack/plugins/security_solution/public/common/lib/cell_actions/add_to_timeline.tsx +++ b/x-pack/plugins/security_solution/public/common/lib/cell_actions/add_to_timeline.tsx @@ -12,7 +12,10 @@ import type { TimelineNonEcsData } from '@kbn/timelines-plugin/common/search_str import type { DataProvider } from '@kbn/timelines-plugin/common/types'; import { getPageRowIndex } from '@kbn/timelines-plugin/public'; import { useGetMappedNonEcsValue } from '../../../timelines/components/timeline/body/data_driven_columns'; -import { IS_OPERATOR } from '../../../timelines/components/timeline/data_providers/data_provider'; +import { + EXISTS_OPERATOR, + IS_OPERATOR, +} from '../../../timelines/components/timeline/data_providers/data_provider'; import { escapeDataProviderId } from '../../components/drag_and_drop/helpers'; import { EmptyComponent, useKibanaServices } from './helpers'; @@ -41,23 +44,39 @@ export const getAddToTimelineCellAction = ({ [timelines] ); - const dataProvider: DataProvider[] = useMemo( - () => - value?.map((x) => ({ - and: [], - enabled: true, - id: `${escapeDataProviderId(columnId)}-row-${rowIndex}-col-${columnId}-val-${x}`, - name: x, - excluded: false, - kqlQuery: '', - queryMatch: { - field: columnId, - value: x, - operator: IS_OPERATOR, + const dataProvider: DataProvider[] = useMemo(() => { + const queryIdPrefix = `${escapeDataProviderId(columnId)}-row-${rowIndex}-col-${columnId}`; + if (!value) { + return [ + { + and: [], + enabled: true, + kqlQuery: '', + id: `${queryIdPrefix}`, + name: '', + excluded: true, + queryMatch: { + field: columnId, + value: '', + operator: EXISTS_OPERATOR, + }, }, - })) ?? [], - [columnId, rowIndex, value] - ); + ]; + } + return value.map((x) => ({ + and: [], + enabled: true, + excluded: false, + kqlQuery: '', + id: `${queryIdPrefix}-val-${x}`, + name: x, + queryMatch: { + field: columnId, + value: x, + operator: IS_OPERATOR, + }, + })); + }, [columnId, rowIndex, value]); const addToTimelineProps = useMemo(() => { return { Component, diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_endgame_ecs_data.ts b/x-pack/plugins/security_solution/public/common/mock/mock_endgame_ecs_data.ts index 28be68fb6af63..b7a9e0cd4593a 100644 --- a/x-pack/plugins/security_solution/public/common/mock/mock_endgame_ecs_data.ts +++ b/x-pack/plugins/security_solution/public/common/mock/mock_endgame_ecs_data.ts @@ -7,56 +7,17 @@ import type { Ecs } from '../../../common/ecs'; -export const mockEndgameDnsRequest: Ecs = { - _id: 'S8jPcG0BOpWiDweSou3g', - user: { - id: ['S-1-5-18'], - domain: ['NT AUTHORITY'], - name: ['SYSTEM'], - }, - host: { - os: { - platform: ['windows'], - name: ['Windows'], - version: ['6.1'], - }, - ip: ['10.178.85.222'], - name: ['HD-obe-8bf77f54'], - }, - event: { - module: ['endgame'], - dataset: ['esensor'], - action: ['request_event'], - category: ['network'], - kind: ['event'], - }, - message: [ - 'DNS query is completed for the name %1, type %2, query options %3 with status %4 Results %5 ', - ], - timestamp: '1569555712000', - dns: { - question: { - name: ['update.googleapis.com'], - type: ['A'], - }, - resolved_ip: ['10.100.197.67'], - }, - network: { - protocol: ['dns'], - }, - process: { - pid: [443192], - name: ['GoogleUpdate.exe'], - executable: ['C:\\Program Files (x86)\\Google\\Update\\GoogleUpdate.exe'], - }, - winlog: { - event_id: [3008], - }, - endgame: { - process_name: ['GoogleUpdate.exe'], - pid: [443192], - }, -}; +// these "mocks" are used by browser bundles so they were moved out of the mocks and are +// re-exported here for convenience and internal bwc +export { demoEndgameCreationEvent as mockEndgameCreationEvent } from '../demo_data/endgame_ecs/creation'; +export { demoEndgameDnsRequest as mockEndgameDnsRequest } from '../demo_data/endgame_ecs/dns'; +export { + demoEndgameFileCreateEvent as mockEndgameFileCreateEvent, + demoEndgameFileDeleteEvent as mockEndgameFileDeleteEvent, +} from '../demo_data/endgame_ecs/file_events'; +export { demoEndgameIpv4ConnectionAcceptEvent as mockEndgameIpv4ConnectionAcceptEvent } from '../demo_data/endgame_ecs/ipv4'; +export { demoEndgameTerminationEvent as mockEndgameTerminationEvent } from '../demo_data/endgame_ecs/termination'; +export { demoEndgameUserLogon as mockEndgameUserLogon } from '../demo_data/endgame_ecs/user_logon'; export const mockEndpointNetworkLookupRequestedEvent: Ecs = { host: { @@ -173,39 +134,6 @@ export const mockEndpointNetworkLookupResultEvent: Ecs = { _id: 'skNzOncBPmkOXwyN9VbT', }; -export const mockEndgameFileCreateEvent: Ecs = { - _id: '98jPcG0BOpWiDweSouzg', - user: { - id: ['S-1-5-21-3573271228-3407584681-1597858646-1002'], - domain: ['Anvi-Acer'], - name: ['Arun'], - }, - host: { - os: { - platform: ['windows'], - name: ['Windows'], - version: ['6.1'], - }, - ip: ['10.178.85.222'], - name: ['HD-obe-8bf77f54'], - }, - event: { - module: ['endgame'], - dataset: ['esensor'], - action: ['file_create_event'], - category: ['file'], - kind: ['event'], - }, - timestamp: '1569555712000', - endgame: { - process_name: ['chrome.exe'], - pid: [11620], - file_path: [ - 'C:\\Users\\Arun\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\63d78c21-e593-4484-b7a9-db33cd522ddc.tmp', - ], - }, -}; - export const mockEndpointFileCreationEvent: Ecs = { file: { path: ['C:\\Windows\\TEMP\\E38FD162-B6E6-4799-B52D-F590BACBAE94\\WimProvider.dll'], @@ -259,38 +187,6 @@ export const mockEndpointFileCreationEvent: Ecs = { _id: 'eSdbOncBLJMagDUQ3YFs', }; -export const mockEndgameFileDeleteEvent: Ecs = { - _id: 'OMjPcG0BOpWiDweSeuW9', - user: { - id: ['S-1-5-18'], - domain: ['NT AUTHORITY'], - name: ['SYSTEM'], - }, - host: { - os: { - platform: ['windows'], - name: ['Windows'], - version: ['10.0'], - }, - ip: ['10.134.159.150'], - name: ['HD-v1s-d2118419'], - }, - event: { - module: ['endgame'], - dataset: ['esensor'], - action: ['file_delete_event'], - category: ['file'], - kind: ['event'], - }, - timestamp: '1569555704000', - endgame: { - pid: [1084], - file_name: ['tmp000002f6'], - file_path: ['C:\\Windows\\TEMP\\tmp00000404\\tmp000002f6'], - process_name: ['AmSvc.exe'], - }, -}; - export const mockEndpointFileDeletionEvent: Ecs = { file: { path: ['C:\\Windows\\SoftwareDistribution\\Download\\Install\\AM_Delta_Patch_1.329.2793.0.exe'], @@ -1222,52 +1118,6 @@ export const mockEndpointProcessForkEvent: Ecs = { _id: 'KXomX3cBGrBB52F2S9XY', }; -export const mockEndgameIpv4ConnectionAcceptEvent: Ecs = { - _id: 'LsjPcG0BOpWiDweSCNfu', - user: { - id: ['S-1-5-18'], - domain: ['NT AUTHORITY'], - name: ['SYSTEM'], - }, - host: { - os: { - platform: ['windows'], - name: ['Windows'], - version: ['10.0'], - }, - ip: ['10.43.255.177'], - name: ['HD-gqf-0af7b4fe'], - }, - event: { - module: ['endgame'], - dataset: ['esensor'], - action: ['ipv4_connection_accept_event'], - category: ['network'], - kind: ['event'], - }, - timestamp: '1569555676000', - network: { - community_id: ['1:network-community_id'], - transport: ['tcp'], - }, - process: { - pid: [1084], - name: ['AmSvc.exe'], - executable: ['C:\\Program Files\\Cybereason ActiveProbe\\AmSvc.exe'], - }, - source: { - ip: ['127.0.0.1'], - port: [49306], - }, - destination: { - port: [49305], - ip: ['127.0.0.1'], - }, - endgame: { - pid: [1084], - }, -}; - export const mockEndgameIpv6ConnectionAcceptEvent: Ecs = { _id: '-8SucG0BOpWiDweS0wrq', user: { @@ -1545,54 +1395,6 @@ export const mockEndpointDisconnectReceivedEvent: Ecs = { _id: 'uUN0OncBPmkOXwyNOGPV', }; -export const mockEndgameUserLogon: Ecs = { - _id: 'QsjPcG0BOpWiDweSeuRE', - user: { - id: ['S-1-5-18'], - domain: ['NT AUTHORITY'], - name: ['SYSTEM'], - }, - host: { - os: { - platform: ['windows'], - name: ['Windows'], - version: ['10.0'], - }, - ip: ['10.134.159.150'], - name: ['HD-v1s-d2118419'], - }, - event: { - module: ['endgame'], - dataset: ['esensor'], - action: ['user_logon'], - category: ['authentication'], - type: ['authentication_success'], - kind: ['event'], - }, - message: [ - 'An account was successfully logged on.\r\n\r\nSubject:\r\n\tSecurity ID:\t\tS-1-5-18\r\n\tAccount Name:\t\tWIN-Q3DOP1UKA81$\r\n\tAccount Domain:\t\tWORKGROUP\r\n\tLogon ID:\t\t0x3e7\r\n\r\nLogon Type:\t\t\t5\r\n\r\nNew Logon:\r\n\tSecurity ID:\t\tS-1-5-18\r\n\tAccount Name:\t\tSYSTEM\r\n\tAccount Domain:\t\tNT AUTHORITY\r\n\tLogon ID:\t\t0x3e7\r\n\tLogon GUID:\t\t{00000000-0000-0000-0000-000000000000}\r\n\r\nProcess Information:\r\n\tProcess ID:\t\t0x1b0\r\n\tProcess Name:\t\tC:\\Windows\\System32\\services.exe\r\n\r\nNetwork Information:\r\n\tWorkstation Name:\t\r\n\tSource Network Address:\t-\r\n\tSource Port:\t\t-\r\n\r\nDetailed Authentication Information:\r\n\tLogon Process:\t\tAdvapi \r\n\tAuthentication Package:\tNegotiate\r\n\tTransited Services:\t-\r\n\tPackage Name (NTLM only):\t-\r\n\tKey Length:\t\t0\r\n\r\nThis event is generated when a logon session is created. It is generated on the computer that was accessed.\r\n\r\nThe subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe or Services.exe.\r\n\r\nThe logon type field indicates the kind of logon that occurred. The most common types are 2 (interactive) and 3 (network).\r\n\r\nThe New Logon fields indicate the account for whom the new logon was created, i.e. the account that was logged on.\r\n\r\nThe network fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.\r\n\r\nThe authentication information fields provide detailed information about this specific logon request.\r\n\t- Logon GUID is a unique identifier that can be used to correlate this event with a KDC event.\r\n\t- Transited services indicate which intermediate services have participated in this logon request.\r\n\t- Package name indicates which sub-protocol was used among the NTLM protocols.\r\n\t- Key length indicates the length of the generated session key. This will be 0 if no session key was requested.', - ], - timestamp: '1569555704000', - process: { - pid: [432], - name: ['C:\\Windows\\System32\\services.exe'], - executable: ['C:\\Windows\\System32\\services.exe'], - }, - winlog: { - event_id: [4624], - }, - endgame: { - target_logon_id: ['0x3e7'], - pid: [432], - process_name: ['C:\\Windows\\System32\\services.exe'], - logon_type: [5], - subject_user_name: ['WIN-Q3DOP1UKA81$'], - subject_logon_id: ['0x3e7'], - target_user_name: ['SYSTEM'], - target_domain_name: ['NT AUTHORITY'], - }, -}; - export const mockEndpointSecurityLogOnSuccessEvent: Ecs = { host: { os: { @@ -1853,55 +1655,6 @@ export const mockEndpointSecurityLogOffEvent: Ecs = { _id: 'ZesLQXcBPmkOXwyNdT1a', }; -export const mockEndgameCreationEvent: Ecs = { - _id: 'BcjPcG0BOpWiDweSou3g', - user: { - id: ['S-1-5-21-3573271228-3407584681-1597858646-1002'], - domain: ['Anvi-Acer'], - name: ['Arun'], - }, - host: { - os: { - platform: ['windows'], - name: ['Windows'], - version: ['6.1'], - }, - ip: ['10.178.85.222'], - name: ['HD-obe-8bf77f54'], - }, - event: { - module: ['endgame'], - dataset: ['esensor'], - action: ['creation_event'], - category: ['process'], - type: ['process_start'], - kind: ['event'], - }, - timestamp: '1569555712000', - process: { - hash: { - md5: ['62d06d7235b37895b68de56687895743'], - sha1: ['12563599116157778a22600d2a163d8112aed845'], - sha256: ['d4c97ed46046893141652e2ec0056a698f6445109949d7fcabbce331146889ee'], - }, - pid: [441684], - ppid: [8], - name: ['Microsoft.Photos.exe'], - executable: [ - 'C:\\Program Files\\WindowsApps\\Microsoft.Windows.Photos_2018.18091.17210.0_x64__8wekyb3d8bbwe\\Microsoft.Photos.exe', - ], - args: [ - 'C:\\Program Files\\WindowsApps\\Microsoft.Windows.Photos_2018.18091.17210.0_x64__8wekyb3d8bbwe\\Microsoft.Photos.exe', - '-ServerName:App.AppXzst44mncqdg84v7sv6p7yznqwssy6f7f.mca', - ], - }, - endgame: { - process_name: ['Microsoft.Photos.exe'], - pid: [441684], - parent_process_name: ['svchost.exe'], - }, -}; - export const mockEndpointProcessStartEvent: Ecs = { process: { hash: { @@ -1954,48 +1707,6 @@ export const mockEndpointProcessStartEvent: Ecs = { _id: 't5KSO3cB8l64wN2iQ8V9', }; -export const mockEndgameTerminationEvent: Ecs = { - _id: '2MjPcG0BOpWiDweSoutC', - user: { - id: ['S-1-5-21-3573271228-3407584681-1597858646-1002'], - domain: ['Anvi-Acer'], - name: ['Arun'], - }, - host: { - os: { - platform: ['windows'], - name: ['Windows'], - version: ['6.1'], - }, - ip: ['10.178.85.222'], - name: ['HD-obe-8bf77f54'], - }, - event: { - module: ['endgame'], - dataset: ['esensor'], - action: ['termination_event'], - category: ['process'], - kind: ['event'], - }, - timestamp: '1569555712000', - process: { - hash: { - md5: ['bd4401441a21bf1abce6404f4231db4d'], - sha1: ['797255e72d5ed5c058d4785950eba7abaa057653'], - sha256: ['87976f3430cc99bc939e0694247c0759961a49832b87218f4313d6fc0bc3a776'], - }, - pid: [442384], - ppid: [8], - name: ['RuntimeBroker.exe'], - executable: ['C:\\Windows\\System32\\RuntimeBroker.exe'], - }, - endgame: { - pid: [442384], - process_name: ['RuntimeBroker.exe'], - exit_code: [0], - }, -}; - export const mockEndpointProcessEndEvent: Ecs = { process: { hash: { diff --git a/x-pack/plugins/security_solution/public/common/mock/mock_timeline_data.ts b/x-pack/plugins/security_solution/public/common/mock/mock_timeline_data.ts index bcc024ad057fd..3ba5aab6a6dd8 100644 --- a/x-pack/plugins/security_solution/public/common/mock/mock_timeline_data.ts +++ b/x-pack/plugins/security_solution/public/common/mock/mock_timeline_data.ts @@ -6,1116 +6,11 @@ */ import type { Ecs } from '../../../common/ecs'; -import type { TimelineItem } from '../../../common/search_strategy/timeline'; -export const mockTimelineData: TimelineItem[] = [ - { - _id: '1', - data: [ - { field: '@timestamp', value: ['2018-11-05T19:03:25.937Z'] }, - { field: 'event.severity', value: ['3'] }, - { field: 'event.category', value: ['Access'] }, - { field: 'event.action', value: ['Action'] }, - { field: 'host.name', value: ['apache'] }, - { field: 'source.ip', value: ['192.168.0.1'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - { field: 'user.name', value: ['john.dee'] }, - ], - ecs: { - _id: '1', - timestamp: '2018-11-05T19:03:25.937Z', - host: { name: ['apache'], ip: ['192.168.0.1'] }, - event: { - id: ['1'], - action: ['Action'], - category: ['Access'], - module: ['nginx'], - severity: [3], - }, - source: { ip: ['192.168.0.1'], port: [80] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - user: { id: ['1'], name: ['john.dee'] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '3', - data: [ - { field: '@timestamp', value: ['2018-11-07T19:03:25.937Z'] }, - { field: 'event.severity', value: ['1'] }, - { field: 'event.category', value: ['Access'] }, - { field: 'host.name', value: ['nginx'] }, - { field: 'source.ip', value: ['192.168.0.3'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - { field: 'user.name', value: ['evan.davis'] }, - ], - ecs: { - _id: '3', - timestamp: '2018-11-07T19:03:25.937Z', - host: { name: ['nginx'], ip: ['192.168.0.1'] }, - event: { - id: ['3'], - category: ['Access'], - type: ['HTTP Request'], - module: ['nginx'], - severity: [1], - }, - source: { ip: ['192.168.0.3'], port: [443] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - user: { id: ['3'], name: ['evan.davis'] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '4', - data: [ - { field: '@timestamp', value: ['2018-11-08T19:03:25.937Z'] }, - { field: 'event.severity', value: ['1'] }, - { field: 'event.category', value: ['Attempted Administrator Privilege Gain'] }, - { field: 'host.name', value: ['suricata'] }, - { field: 'source.ip', value: ['192.168.0.3'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - { field: 'user.name', value: ['jenny.jones'] }, - ], - ecs: { - _id: '4', - timestamp: '2018-11-08T19:03:25.937Z', - host: { name: ['suricata'], ip: ['192.168.0.1'] }, - event: { - id: ['4'], - category: ['Attempted Administrator Privilege Gain'], - type: ['Alert'], - module: ['suricata'], - severity: [1], - }, - source: { ip: ['192.168.0.3'], port: [53] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - suricata: { - eve: { - flow_id: [4], - proto: [''], - alert: { - signature: [ - 'ET EXPLOIT NETGEAR WNR2000v5 hidden_lang_avi Stack Overflow (CVE-2016-10174)', - ], - signature_id: [4], - }, - }, - }, - user: { id: ['4'], name: ['jenny.jones'] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '5', - data: [ - { field: '@timestamp', value: ['2018-11-09T19:03:25.937Z'] }, - { field: 'event.severity', value: ['3'] }, - { field: 'event.category', value: ['Access'] }, - { field: 'host.name', value: ['joe.computer'] }, - { field: 'source.ip', value: ['192.168.0.3'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - { field: 'user.name', value: ['becky.davis'] }, - ], - ecs: { - _id: '5', - timestamp: '2018-11-09T19:03:25.937Z', - host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, - event: { - id: ['5'], - category: ['Access'], - type: ['HTTP Request'], - module: ['nginx'], - severity: [3], - }, - source: { ip: ['192.168.0.3'], port: [80] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - user: { id: ['5'], name: ['becky.davis'] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '6', - data: [ - { field: '@timestamp', value: ['2018-11-10T19:03:25.937Z'] }, - { field: 'event.severity', value: ['3'] }, - { field: 'event.category', value: ['Access'] }, - { field: 'host.name', value: ['braden.davis'] }, - { field: 'source.ip', value: ['192.168.0.6'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - ], - ecs: { - _id: '6', - timestamp: '2018-11-10T19:03:25.937Z', - host: { name: ['braden.davis'], ip: ['192.168.0.1'] }, - event: { - id: ['6'], - category: ['Access'], - type: ['HTTP Request'], - module: ['nginx'], - severity: [3], - }, - source: { ip: ['192.168.0.6'], port: [80] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '8', - data: [ - { field: '@timestamp', value: ['2018-11-12T19:03:25.937Z'] }, - { field: 'event.severity', value: ['2'] }, - { field: 'event.category', value: ['Web Application Attack'] }, - { field: 'host.name', value: ['joe.computer'] }, - { field: 'source.ip', value: ['192.168.0.8'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - { field: 'user.name', value: ['jone.doe'] }, - ], - ecs: { - _id: '8', - timestamp: '2018-11-12T19:03:25.937Z', - host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, - event: { - id: ['8'], - category: ['Web Application Attack'], - type: ['Alert'], - module: ['suricata'], - severity: [2], - }, - suricata: { - eve: { - flow_id: [8], - proto: [''], - alert: { - signature: ['ET WEB_SERVER Possible CVE-2014-6271 Attempt in HTTP Cookie'], - signature_id: [8], - }, - }, - }, - source: { ip: ['192.168.0.8'], port: [80] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - user: { id: ['8'], name: ['jone.doe'] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '7', - data: [ - { field: '@timestamp', value: ['2018-11-11T19:03:25.937Z'] }, - { field: 'event.severity', value: ['3'] }, - { field: 'event.category', value: ['Access'] }, - { field: 'host.name', value: ['joe.computer'] }, - { field: 'source.ip', value: ['192.168.0.7'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - { field: 'user.name', value: ['jone.doe'] }, - ], - ecs: { - _id: '7', - timestamp: '2018-11-11T19:03:25.937Z', - host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, - event: { - id: ['7'], - category: ['Access'], - type: ['HTTP Request'], - module: ['apache'], - severity: [3], - }, - source: { ip: ['192.168.0.7'], port: [80] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - user: { id: ['7'], name: ['jone.doe'] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '9', - data: [ - { field: '@timestamp', value: ['2018-11-13T19:03:25.937Z'] }, - { field: 'event.severity', value: ['3'] }, - { field: 'event.category', value: ['Access'] }, - { field: 'host.name', value: ['joe.computer'] }, - { field: 'source.ip', value: ['192.168.0.9'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - { field: 'user.name', value: ['jone.doe'] }, - ], - ecs: { - _id: '9', - timestamp: '2018-11-13T19:03:25.937Z', - host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, - event: { - id: ['9'], - category: ['Access'], - type: ['HTTP Request'], - module: ['nginx'], - severity: [3], - }, - source: { ip: ['192.168.0.9'], port: [80] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - user: { id: ['9'], name: ['jone.doe'] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '10', - data: [ - { field: '@timestamp', value: ['2018-11-14T19:03:25.937Z'] }, - { field: 'event.severity', value: ['3'] }, - { field: 'event.category', value: ['Access'] }, - { field: 'host.name', value: ['joe.computer'] }, - { field: 'source.ip', value: ['192.168.0.10'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - { field: 'user.name', value: ['jone.doe'] }, - ], - ecs: { - _id: '10', - timestamp: '2018-11-14T19:03:25.937Z', - host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, - event: { - id: ['10'], - category: ['Access'], - type: ['HTTP Request'], - module: ['nginx'], - severity: [3], - }, - source: { ip: ['192.168.0.10'], port: [80] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - user: { id: ['10'], name: ['jone.doe'] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '11', - data: [ - { field: '@timestamp', value: ['2018-11-15T19:03:25.937Z'] }, - { field: 'event.severity', value: ['3'] }, - { field: 'event.category', value: ['Access'] }, - { field: 'host.name', value: ['joe.computer'] }, - { field: 'source.ip', value: ['192.168.0.11'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - { field: 'user.name', value: ['jone.doe'] }, - ], - ecs: { - _id: '11', - timestamp: '2018-11-15T19:03:25.937Z', - host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, - event: { - id: ['11'], - category: ['Access'], - type: ['HTTP Request'], - module: ['nginx'], - severity: [3], - }, - source: { ip: ['192.168.0.11'], port: [80] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - user: { id: ['11'], name: ['jone.doe'] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '12', - data: [ - { field: '@timestamp', value: ['2018-11-16T19:03:25.937Z'] }, - { field: 'event.severity', value: ['3'] }, - { field: 'event.category', value: ['Access'] }, - { field: 'host.name', value: ['joe.computer'] }, - { field: 'source.ip', value: ['192.168.0.12'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - { field: 'user.name', value: ['jone.doe'] }, - ], - ecs: { - _id: '12', - timestamp: '2018-11-16T19:03:25.937Z', - host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, - event: { - id: ['12'], - category: ['Access'], - type: ['HTTP Request'], - module: ['nginx'], - severity: [3], - }, - source: { ip: ['192.168.0.12'], port: [80] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - user: { id: ['12'], name: ['jone.doe'] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '2', - data: [ - { field: '@timestamp', value: ['2018-11-06T19:03:25.937Z'] }, - { field: 'event.severity', value: ['3'] }, - { field: 'event.category', value: ['Authentication'] }, - { field: 'host.name', value: ['joe.computer'] }, - { field: 'source.ip', value: ['192.168.0.2'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - { field: 'user.name', value: ['joe.bob'] }, - ], - ecs: { - _id: '2', - timestamp: '2018-11-06T19:03:25.937Z', - host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, - event: { - id: ['2'], - category: ['Authentication'], - type: ['Authentication Success'], - module: ['authlog'], - severity: [3], - }, - source: { ip: ['192.168.0.2'], port: [80] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - user: { id: ['1'], name: ['joe.bob'] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '13', - data: [ - { field: '@timestamp', value: ['2018-13-12T19:03:25.937Z'] }, - { field: 'event.severity', value: ['1'] }, - { field: 'event.category', value: ['Web Application Attack'] }, - { field: 'host.name', value: ['joe.computer'] }, - { field: 'source.ip', value: ['192.168.0.8'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - ], - ecs: { - _id: '13', - timestamp: '2018-13-12T19:03:25.937Z', - host: { name: ['joe.computer'], ip: ['192.168.0.1'] }, - event: { - id: ['13'], - category: ['Web Application Attack'], - type: ['Alert'], - module: ['suricata'], - severity: [1], - }, - suricata: { - eve: { - flow_id: [13], - proto: [''], - alert: { - signature: ['ET WEB_SERVER Possible Attempt in HTTP Cookie'], - signature_id: [13], - }, - }, - }, - source: { ip: ['192.168.0.8'], port: [80] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '14', - data: [ - { field: '@timestamp', value: ['2019-03-07T05:06:51.000Z'] }, - { field: 'host.name', value: ['zeek-franfurt'] }, - { field: 'source.ip', value: ['192.168.26.101'] }, - { field: 'destination.ip', value: ['192.168.238.205'] }, - ], - ecs: { - _id: '14', - timestamp: '2019-03-07T05:06:51.000Z', - event: { - module: ['zeek'], - dataset: ['zeek.connection'], - }, - host: { - id: ['37c81253e0fc4c46839c19b981be5177'], - name: ['zeek-franfurt'], - ip: ['207.154.238.205', '10.19.0.5', 'fe80::d82b:9aff:fe0d:1e12'], - }, - source: { ip: ['185.176.26.101'], port: [44059] }, - destination: { ip: ['207.154.238.205'], port: [11568] }, - geo: { region_name: ['New York'], country_iso_code: ['US'] }, - network: { transport: ['tcp'] }, - zeek: { - session_id: ['C8DRTq362Fios6hw16'], - connection: { - local_resp: [false], - local_orig: [false], - missed_bytes: [0], - state: ['REJ'], - history: ['Sr'], - }, - }, - }, - }, - { - _id: '15', - data: [ - { field: '@timestamp', value: ['2019-03-07T00:51:28.000Z'] }, - { field: 'host.name', value: ['suricata-zeek-singapore'] }, - { field: 'source.ip', value: ['192.168.35.240'] }, - { field: 'destination.ip', value: ['192.168.67.3'] }, - ], - ecs: { - _id: '15', - timestamp: '2019-03-07T00:51:28.000Z', - event: { - module: ['zeek'], - dataset: ['zeek.dns'], - }, - host: { - id: ['af3fddf15f1d47979ce817ba0df10c6e'], - name: ['suricata-zeek-singapore'], - ip: ['206.189.35.240', '10.15.0.5', 'fe80::98c7:eff:fe29:4455'], - }, - source: { ip: ['206.189.35.240'], port: [57475] }, - destination: { ip: ['67.207.67.3'], port: [53] }, - geo: { region_name: ['New York'], country_iso_code: ['US'] }, - network: { transport: ['udp'] }, - zeek: { - session_id: ['CyIrMA1L1JtLqdIuol'], - dns: { - AA: [false], - RD: [false], - trans_id: [65252], - RA: [false], - TC: [false], - }, - }, - }, - }, - { - _id: '16', - data: [ - { field: '@timestamp', value: ['2019-03-05T07:00:20.000Z'] }, - { field: 'host.name', value: ['suricata-zeek-singapore'] }, - { field: 'source.ip', value: ['192.168.35.240'] }, - { field: 'destination.ip', value: ['192.168.164.26'] }, - ], - ecs: { - _id: '16', - timestamp: '2019-03-05T07:00:20.000Z', - event: { - module: ['zeek'], - dataset: ['zeek.http'], - }, - host: { - id: ['af3fddf15f1d47979ce817ba0df10c6e'], - name: ['suricata-zeek-singapore'], - ip: ['206.189.35.240', '10.15.0.5', 'fe80::98c7:eff:fe29:4455'], - }, - source: { ip: ['206.189.35.240'], port: [36220] }, - destination: { ip: ['192.241.164.26'], port: [80] }, - geo: { region_name: ['New York'], country_iso_code: ['US'] }, - http: { - version: ['1.1'], - request: { body: { bytes: [0] } }, - response: { status_code: [302], body: { bytes: [154] } }, - }, - zeek: { - session_id: ['CZLkpC22NquQJOpkwe'], - - http: { - resp_mime_types: ['text/html'], - trans_depth: ['3'], - status_msg: ['Moved Temporarily'], - resp_fuids: ['FzeujEPP7GTHmYPsc'], - tags: [], - }, - }, - }, - }, - { - _id: '17', - data: [ - { field: '@timestamp', value: ['2019-02-28T22:36:28.000Z'] }, - { field: 'host.name', value: ['zeek-franfurt'] }, - { field: 'source.ip', value: ['192.168.77.171'] }, - ], - ecs: { - _id: '17', - timestamp: '2019-02-28T22:36:28.000Z', - event: { - module: ['zeek'], - dataset: ['zeek.notice'], - }, - host: { - id: ['37c81253e0fc4c46839c19b981be5177'], - name: ['zeek-franfurt'], - ip: ['207.154.238.205', '10.19.0.5', 'fe80::d82b:9aff:fe0d:1e12'], - }, - source: { ip: ['8.42.77.171'] }, - zeek: { - notice: { - suppress_for: [3600], - msg: ['8.42.77.171 scanned at least 15 unique ports of host 207.154.238.205 in 0m0s'], - note: ['Scan::Port_Scan'], - sub: ['remote'], - dst: ['207.154.238.205'], - dropped: [false], - peer_descr: ['bro'], - }, - }, - }, - }, - { - _id: '18', - data: [ - { field: '@timestamp', value: ['2019-02-22T21:12:13.000Z'] }, - { field: 'host.name', value: ['zeek-sensor-amsterdam'] }, - { field: 'source.ip', value: ['192.168.66.184'] }, - { field: 'destination.ip', value: ['192.168.95.15'] }, - ], - ecs: { - _id: '18', - timestamp: '2019-02-22T21:12:13.000Z', - event: { - module: ['zeek'], - dataset: ['zeek.ssl'], - }, - host: { id: ['2ce8b1e7d69e4a1d9c6bcddc473da9d9'], name: ['zeek-sensor-amsterdam'] }, - source: { ip: ['188.166.66.184'], port: [34514] }, - destination: { ip: ['91.189.95.15'], port: [443] }, - geo: { region_name: ['England'], country_iso_code: ['GB'] }, - zeek: { - session_id: ['CmTxzt2OVXZLkGDaRe'], - ssl: { - cipher: ['TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256'], - established: [false], - resumed: [false], - version: ['TLSv12'], - }, - }, - }, - }, - { - _id: '19', - data: [ - { field: '@timestamp', value: ['2019-03-03T04:26:38.000Z'] }, - { field: 'host.name', value: ['suricata-zeek-singapore'] }, - ], - ecs: { - _id: '19', - timestamp: '2019-03-03T04:26:38.000Z', - event: { - module: ['zeek'], - dataset: ['zeek.files'], - }, - host: { - id: ['af3fddf15f1d47979ce817ba0df10c6e'], - name: ['suricata-zeek-singapore'], - ip: ['206.189.35.240', '10.15.0.5', 'fe80::98c7:eff:fe29:4455'], - }, - zeek: { - session_id: ['Cu0n232QMyvNtzb75j'], - files: { - session_ids: ['Cu0n232QMyvNtzb75j'], - timedout: [false], - local_orig: [false], - tx_host: ['5.101.111.50'], - source: ['HTTP'], - is_orig: [false], - overflow_bytes: [0], - sha1: ['fa5195a5dfacc9d1c68d43600f0e0262cad14dde'], - duration: [0], - depth: [0], - analyzers: ['MD5', 'SHA1'], - mime_type: ['text/plain'], - rx_host: ['206.189.35.240'], - total_bytes: [88722], - fuid: ['FePz1uVEVCZ3I0FQi'], - seen_bytes: [1198], - missing_bytes: [0], - md5: ['f7653f1951693021daa9e6be61226e32'], - }, - }, - }, - }, - { - _id: '20', - data: [ - { field: '@timestamp', value: ['2019-03-13T05:42:11.815Z'] }, - { field: 'event.category', value: ['audit-rule'] }, - { field: 'host.name', value: ['zeek-sanfran'] }, - { field: 'process.args', value: ['gpgconf', '--list-dirs', 'agent-socket'] }, - ], - ecs: { - _id: '20', - timestamp: '2019-03-13T05:42:11.815Z', - event: { - action: ['executed'], - module: ['auditd'], - category: ['audit-rule'], - }, - host: { - id: ['f896741c3b3b44bdb8e351a4ab6d2d7c'], - name: ['zeek-sanfran'], - ip: ['134.209.63.134', '10.46.0.5', 'fe80::a0d9:16ff:fecf:e70b'], - }, - user: { name: ['alice'] }, - process: { - pid: [5402], - name: ['gpgconf'], - ppid: [5401], - args: ['gpgconf', '--list-dirs', 'agent-socket'], - executable: ['/usr/bin/gpgconf'], - title: ['gpgconf --list-dirs agent-socket'], - working_directory: ['/'], - }, - }, - }, - { - _id: '21', - data: [ - { field: '@timestamp', value: ['2019-03-14T22:30:25.527Z'] }, - { field: 'event.category', value: ['user-login'] }, - { field: 'host.name', value: ['zeek-london'] }, - { field: 'source.ip', value: ['192.168.77.171'] }, - { field: 'user.name', value: ['root'] }, - ], - ecs: { - _id: '21', - timestamp: '2019-03-14T22:30:25.527Z', - event: { - action: ['logged-in'], - module: ['auditd'], - category: ['user-login'], - }, - auditd: { - result: ['success'], - session: ['14'], - data: { terminal: ['/dev/pts/0'], op: ['login'] }, - summary: { - actor: { primary: ['alice'], secondary: ['alice'] }, - object: { primary: ['/dev/pts/0'], secondary: ['8.42.77.171'], type: ['user-session'] }, - how: ['/usr/sbin/sshd'], - }, - }, - host: { - id: ['7c21f5ed03b04d0299569d221fe18bbc'], - name: ['zeek-london'], - ip: ['46.101.3.136', '10.16.0.5', 'fe80::4066:42ff:fe19:b3b9'], - }, - source: { ip: ['8.42.77.171'] }, - user: { name: ['root'] }, - process: { - pid: [17471], - executable: ['/usr/sbin/sshd'], - }, - }, - }, - { - _id: '22', - data: [ - { field: '@timestamp', value: ['2019-03-13T03:35:21.614Z'] }, - { field: 'event.category', value: ['user-login'] }, - { field: 'host.name', value: ['suricata-bangalore'] }, - { field: 'user.name', value: ['root'] }, - ], - ecs: { - _id: '22', - timestamp: '2019-03-13T03:35:21.614Z', - event: { - action: ['disposed-credentials'], - module: ['auditd'], - category: ['user-login'], - }, - auditd: { - result: ['success'], - session: ['340'], - data: { acct: ['alice'], terminal: ['ssh'], op: ['PAM:setcred'] }, - summary: { - actor: { primary: ['alice'], secondary: ['alice'] }, - object: { primary: ['ssh'], secondary: ['8.42.77.171'], type: ['user-session'] }, - how: ['/usr/sbin/sshd'], - }, - }, - host: { - id: ['0a63559c1acf4c419d979c4b4d8b83ff'], - name: ['suricata-bangalore'], - ip: ['139.59.11.147', '10.47.0.5', 'fe80::ec0b:1bff:fe29:80bd'], - }, - user: { name: ['root'] }, - process: { - pid: [21202], - executable: ['/usr/sbin/sshd'], - }, - }, - }, - { - _id: '23', - data: [ - { field: '@timestamp', value: ['2019-03-13T03:35:21.614Z'] }, - { field: 'event.category', value: ['user-login'] }, - { field: 'host.name', value: ['suricata-bangalore'] }, - { field: 'user.name', value: ['root'] }, - ], - ecs: { - _id: '23', - timestamp: '2019-03-13T03:35:21.614Z', - event: { - action: ['ended-session'], - module: ['auditd'], - category: ['user-login'], - }, - auditd: { - result: ['success'], - session: ['340'], - data: { acct: ['alice'], terminal: ['ssh'], op: ['PAM:session_close'] }, - summary: { - actor: { primary: ['alice'], secondary: ['alice'] }, - object: { primary: ['ssh'], secondary: ['8.42.77.171'], type: ['user-session'] }, - how: ['/usr/sbin/sshd'], - }, - }, - host: { - id: ['0a63559c1acf4c419d979c4b4d8b83ff'], - name: ['suricata-bangalore'], - ip: ['139.59.11.147', '10.47.0.5', 'fe80::ec0b:1bff:fe29:80bd'], - }, - user: { name: ['root'] }, - process: { - pid: [21202], - executable: ['/usr/sbin/sshd'], - }, - }, - }, - { - _id: '24', - data: [ - { field: '@timestamp', value: ['2019-03-18T23:17:01.645Z'] }, - { field: 'event.category', value: ['user-login'] }, - { field: 'host.name', value: ['zeek-london'] }, - { field: 'user.name', value: ['root'] }, - ], - ecs: { - _id: '24', - timestamp: '2019-03-18T23:17:01.645Z', - event: { - action: ['acquired-credentials'], - module: ['auditd'], - category: ['user-login'], - }, - auditd: { - result: ['success'], - session: ['unset'], - data: { acct: ['root'], terminal: ['cron'], op: ['PAM:setcred'] }, - summary: { - actor: { primary: ['unset'], secondary: ['root'] }, - object: { primary: ['cron'], type: ['user-session'] }, - how: ['/usr/sbin/cron'], - }, - }, - host: { - id: ['7c21f5ed03b04d0299569d221fe18bbc'], - name: ['zeek-london'], - ip: ['46.101.3.136', '10.16.0.5', 'fe80::4066:42ff:fe19:b3b9'], - }, - user: { name: ['root'] }, - process: { - pid: [9592], - executable: ['/usr/sbin/cron'], - }, - }, - }, - { - _id: '25', - data: [ - { field: '@timestamp', value: ['2019-03-19T01:17:01.336Z'] }, - { field: 'event.category', value: ['user-login'] }, - { field: 'host.name', value: ['siem-kibana'] }, - { field: 'user.name', value: ['root'] }, - ], - ecs: { - _id: '25', - timestamp: '2019-03-19T01:17:01.336Z', - event: { - action: ['started-session'], - module: ['auditd'], - category: ['user-login'], - }, - auditd: { - result: ['success'], - session: ['2908'], - data: { acct: ['root'], terminal: ['cron'], op: ['PAM:session_open'] }, - summary: { - actor: { primary: ['root'], secondary: ['root'] }, - object: { primary: ['cron'], type: ['user-session'] }, - how: ['/usr/sbin/cron'], - }, - }, - host: { id: ['aa7ca589f1b8220002f2fc61c64cfbf1'], name: ['siem-kibana'] }, - user: { name: ['root'] }, - process: { - pid: [725], - executable: ['/usr/sbin/cron'], - }, - }, - }, - { - _id: '26', - data: [ - { field: '@timestamp', value: ['2019-03-13T03:34:08.890Z'] }, - { field: 'event.category', value: ['user-login'] }, - { field: 'host.name', value: ['suricata-bangalore'] }, - { field: 'user.name', value: ['alice'] }, - ], - ecs: { - _id: '26', - timestamp: '2019-03-13T03:34:08.890Z', - event: { - action: ['was-authorized'], - module: ['auditd'], - category: ['user-login'], - }, - auditd: { - result: ['success'], - session: ['338'], - data: { terminal: ['/dev/pts/0'] }, - summary: { - actor: { primary: ['root'], secondary: ['alice'] }, - object: { primary: ['/dev/pts/0'], type: ['user-session'] }, - how: ['/sbin/pam_tally2'], - }, - }, - host: { - id: ['0a63559c1acf4c419d979c4b4d8b83ff'], - name: ['suricata-bangalore'], - ip: ['139.59.11.147', '10.47.0.5', 'fe80::ec0b:1bff:fe29:80bd'], - }, - user: { name: ['alice'] }, - process: { - pid: [21170], - executable: ['/sbin/pam_tally2'], - }, - }, - }, - { - _id: '27', - data: [ - { field: '@timestamp', value: ['2019-03-22T19:13:11.026Z'] }, - { field: 'event.action', value: ['connected-to'] }, - { field: 'event.category', value: ['audit-rule'] }, - { field: 'host.name', value: ['zeek-london'] }, - { field: 'destination.ip', value: ['192.168.216.34'] }, - { field: 'user.name', value: ['alice'] }, - ], - ecs: { - _id: '27', - timestamp: '2019-03-22T19:13:11.026Z', - event: { - action: ['connected-to'], - module: ['auditd'], - category: ['audit-rule'], - }, - auditd: { - result: ['success'], - session: ['246'], - summary: { - actor: { primary: ['alice'], secondary: ['alice'] }, - object: { primary: ['192.168.216.34'], secondary: ['80'], type: ['socket'] }, - how: ['/usr/bin/wget'], - }, - }, - host: { - id: ['7c21f5ed03b04d0299569d221fe18bbc'], - name: ['zeek-london'], - ip: ['46.101.3.136', '10.16.0.5', 'fe80::4066:42ff:fe19:b3b9'], - }, - destination: { ip: ['192.168.216.34'], port: [80] }, - user: { name: ['alice'] }, - process: { - pid: [1490], - name: ['wget'], - ppid: [1476], - executable: ['/usr/bin/wget'], - title: ['wget www.example.com'], - }, - }, - }, - { - _id: '28', - data: [ - { field: '@timestamp', value: ['2019-03-26T22:12:18.609Z'] }, - { field: 'event.action', value: ['opened-file'] }, - { field: 'event.category', value: ['audit-rule'] }, - { field: 'host.name', value: ['zeek-london'] }, - { field: 'user.name', value: ['root'] }, - ], - ecs: { - _id: '28', - timestamp: '2019-03-26T22:12:18.609Z', - event: { - action: ['opened-file'], - module: ['auditd'], - category: ['audit-rule'], - }, - auditd: { - result: ['success'], - session: ['242'], - summary: { - actor: { primary: ['unset'], secondary: ['root'] }, - object: { primary: ['/proc/15990/attr/current'], type: ['file'] }, - how: ['/lib/systemd/systemd-journald'], - }, - }, - file: { - path: ['/proc/15990/attr/current'], - device: ['00:00'], - inode: ['27672309'], - uid: ['0'], - owner: ['root'], - gid: ['0'], - group: ['root'], - mode: ['0666'], - }, - host: { - id: ['7c21f5ed03b04d0299569d221fe18bbc'], - name: ['zeek-london'], - ip: ['46.101.3.136', '10.16.0.5', 'fe80::4066:42ff:fe19:b3b9'], - }, - - user: { name: ['root'] }, - process: { - pid: [27244], - name: ['systemd-journal'], - ppid: [1], - executable: ['/lib/systemd/systemd-journald'], - title: ['/lib/systemd/systemd-journald'], - working_directory: ['/'], - }, - }, - }, - { - _id: '29', - data: [ - { field: '@timestamp', value: ['2019-04-08T21:18:57.000Z'] }, - { field: 'event.action', value: ['user_login'] }, - { field: 'event.category', value: null }, - { field: 'host.name', value: ['zeek-london'] }, - { field: 'user.name', value: ['Braden'] }, - ], - ecs: { - _id: '29', - event: { - action: ['user_login'], - dataset: ['login'], - kind: ['event'], - module: ['system'], - outcome: ['failure'], - }, - host: { - id: ['7c21f5ed03b04d0299569d221fe18bbc'], - name: ['zeek-london'], - ip: ['46.101.3.136', '10.16.0.5', 'fe80::4066:42ff:fe19:b3b9'], - }, - source: { - ip: ['128.199.212.120'], - }, - user: { - name: ['Braden'], - }, - process: { - pid: [6278], - }, - }, - }, - { - _id: '30', - data: [ - { field: '@timestamp', value: ['2019-04-08T22:27:14.814Z'] }, - { field: 'event.action', value: ['process_started'] }, - { field: 'event.category', value: null }, - { field: 'host.name', value: ['zeek-london'] }, - { field: 'user.name', value: ['Evan'] }, - ], - ecs: { - _id: '30', - event: { - action: ['process_started'], - dataset: ['login'], - kind: ['event'], - module: ['system'], - outcome: ['failure'], - }, - host: { - id: ['7c21f5ed03b04d0299569d221fe18bbc'], - name: ['zeek-london'], - ip: ['46.101.3.136', '10.16.0.5', 'fe80::4066:42ff:fe19:b3b9'], - }, - source: { - ip: ['128.199.212.120'], - }, - user: { - name: ['Evan'], - }, - process: { - pid: [6278], - }, - }, - }, - { - _id: '31', - data: [ - { field: '@timestamp', value: ['2018-11-05T19:03:25.937Z'] }, - { field: 'message', value: ['I am a log file message'] }, - { field: 'event.severity', value: ['3'] }, - { field: 'event.category', value: ['Access'] }, - { field: 'event.action', value: ['Action'] }, - { field: 'host.name', value: ['apache'] }, - { field: 'source.ip', value: ['192.168.0.1'] }, - { field: 'destination.ip', value: ['192.168.0.3'] }, - { field: 'destination.bytes', value: ['123456'] }, - { field: 'user.name', value: ['john.dee'] }, - ], - ecs: { - _id: '1', - timestamp: '2018-11-05T19:03:25.937Z', - host: { name: ['apache'], ip: ['192.168.0.1'] }, - event: { - id: ['1'], - action: ['Action'], - category: ['Access'], - module: ['nginx'], - severity: [3], - }, - message: ['I am a log file message'], - source: { ip: ['192.168.0.1'], port: [80] }, - destination: { ip: ['192.168.0.3'], port: [6343] }, - user: { id: ['1'], name: ['john.dee'] }, - geo: { region_name: ['xx'], country_iso_code: ['xx'] }, - }, - }, - { - _id: '32', - data: [], - ecs: { - _id: 'BuBP4W0BOpWiDweSoYSg', - timestamp: '2019-10-18T23:59:15.091Z', - threat: { - enrichments: [ - { - indicator: { - provider: ['indicator_provider'], - reference: ['https://example.com'], - }, - matched: { - atomic: ['192.168.1.1'], - field: ['source.ip'], - type: ['ip'], - }, - feed: { - name: ['feed_name'], - }, - }, - ], - }, - }, - }, -]; +export { demoTimelineData as mockTimelineData } from '../demo_data/timeline'; +export { demoEndpointRegistryModificationEvent as mockEndpointRegistryModificationEvent } from '../demo_data/endpoint/registry_modification_event'; +export { demoEndpointLibraryLoadEvent as mockEndpointLibraryLoadEvent } from '../demo_data/endpoint/library_load_event'; +export { demoEndpointProcessExecutionMalwarePreventionAlert as mockEndpointProcessExecutionMalwarePreventionAlert } from '../demo_data/endpoint/process_execution_malware_prevention_alert'; export const mockFimFileCreatedEvent: Ecs = { _id: 'WuBP4W0BOpWiDweSoYSg', @@ -1329,186 +224,3 @@ export const mockDnsEvent: Ecs = { ip: ['10.9.9.9'], }, }; - -export const mockEndpointProcessExecutionMalwarePreventionAlert: Ecs = { - process: { - hash: { - md5: ['177afc1eb0be88eb9983fb74111260c4'], - sha256: ['3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb'], - sha1: ['f573b85e9beb32121f1949217947b2adc6749e3d'], - }, - entity_id: [ - 'MWQxNWNmOWUtM2RjNy01Yjk3LWY1ODYtNzQzZjdjMjUxOGIyLTY5MjAtMTMyNDg5OTk2OTAuNDgzMzA3NzAw', - ], - executable: [ - 'C:\\Users\\sean\\Downloads\\3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb.exe', - ], - name: [ - 'C:\\Users\\sean\\Downloads\\3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb.exe', - ], - pid: [6920], - args: [ - 'C:\\Users\\sean\\Downloads\\3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb.exe', - ], - }, - host: { - os: { - full: ['Windows Server 2019 Datacenter 1809 (10.0.17763.1518)'], - name: ['Windows'], - version: ['1809 (10.0.17763.1518)'], - platform: ['windows'], - family: ['windows'], - kernel: ['1809 (10.0.17763.1518)'], - }, - mac: ['aa:bb:cc:dd:ee:ff'], - architecture: ['x86_64'], - ip: ['10.1.2.3'], - id: ['d8ad572e-d224-4044-a57d-f5a84c0dfe5d'], - name: ['win2019-endpoint-1'], - }, - file: { - mtime: ['2020-11-04T21:40:51.494Z'], - path: [ - 'C:\\Users\\sean\\Downloads\\3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb.exe', - ], - owner: ['sean'], - hash: { - md5: ['177afc1eb0be88eb9983fb74111260c4'], - sha256: ['3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb'], - sha1: ['f573b85e9beb32121f1949217947b2adc6749e3d'], - }, - name: ['3be13acde2f4dcded4fd8d518a513bfc9882407a6e384ffb17d12710db7d76fb.exe'], - extension: ['exe'], - size: [1604112], - }, - event: { - category: ['malware', 'intrusion_detection', 'process'], - outcome: ['success'], - severity: [73], - code: ['malicious_file'], - action: ['execution'], - id: ['LsuMZVr+sdhvehVM++++Gp2Y'], - kind: ['alert'], - created: ['2020-11-04T21:41:30.533Z'], - module: ['endpoint'], - type: ['info', 'start', 'denied'], - dataset: ['endpoint.alerts'], - }, - agent: { - type: ['endpoint'], - }, - timestamp: '2020-11-04T21:41:30.533Z', - message: ['Malware Prevention Alert'], - _id: '0dA2lXUBn9bLIbfPkY7d', -}; - -export const mockEndpointLibraryLoadEvent: Ecs = { - file: { - path: ['C:\\Windows\\System32\\bcrypt.dll'], - hash: { - md5: ['00439016776de367bad087d739a03797'], - sha1: ['2c4ba5c1482987d50a182bad915f52cd6611ee63'], - sha256: ['e70f5d8f87aab14e3160227d38387889befbe37fa4f8f5adc59eff52804b35fd'], - }, - name: ['bcrypt.dll'], - }, - host: { - os: { - full: ['Windows Server 2019 Datacenter 1809 (10.0.17763.1697)'], - name: ['Windows'], - version: ['1809 (10.0.17763.1697)'], - family: ['windows'], - kernel: ['1809 (10.0.17763.1697)'], - platform: ['windows'], - }, - mac: ['aa:bb:cc:dd:ee:ff'], - name: ['win2019-endpoint-1'], - architecture: ['x86_64'], - ip: ['10.1.2.3'], - id: ['d8ad572e-d224-4044-a57d-f5a84c0dfe5d'], - }, - event: { - category: ['library'], - kind: ['event'], - created: ['2021-02-05T21:27:23.921Z'], - module: ['endpoint'], - action: ['load'], - type: ['start'], - id: ['LzzWB9jjGmCwGMvk++++Da5H'], - dataset: ['endpoint.events.library'], - }, - process: { - name: ['sshd.exe'], - pid: [9644], - entity_id: [ - 'MWQxNWNmOWUtM2RjNy01Yjk3LWY1ODYtNzQzZjdjMjUxOGIyLTk2NDQtMTMyNTcwMzQwNDEuNzgyMTczODAw', - ], - executable: ['C:\\Program Files\\OpenSSH-Win64\\sshd.exe'], - }, - agent: { - type: ['endpoint'], - }, - user: { - name: ['SYSTEM'], - domain: ['NT AUTHORITY'], - }, - message: ['Endpoint DLL load event'], - timestamp: '2021-02-05T21:27:23.921Z', - _id: 'IAUYdHcBGrBB52F2zo8Q', -}; - -export const mockEndpointRegistryModificationEvent: Ecs = { - host: { - os: { - full: ['Windows Server 2019 Datacenter 1809 (10.0.17763.1697)'], - name: ['Windows'], - version: ['1809 (10.0.17763.1697)'], - family: ['windows'], - kernel: ['1809 (10.0.17763.1697)'], - platform: ['windows'], - }, - mac: ['aa:bb:cc:dd:ee:ff'], - name: ['win2019-endpoint-1'], - architecture: ['x86_64'], - ip: ['10.1.2.3'], - id: ['d8ad572e-d224-4044-a57d-f5a84c0dfe5d'], - }, - event: { - category: ['registry'], - kind: ['event'], - created: ['2021-02-04T13:44:31.559Z'], - module: ['endpoint'], - action: ['modification'], - type: ['change'], - id: ['LzzWB9jjGmCwGMvk++++CbOn'], - dataset: ['endpoint.events.registry'], - }, - process: { - name: ['GoogleUpdate.exe'], - pid: [7408], - entity_id: [ - 'MWQxNWNmOWUtM2RjNy01Yjk3LWY1ODYtNzQzZjdjMjUxOGIyLTc0MDgtMTMyNTY5MTk4NDguODY4NTI0ODAw', - ], - executable: ['C:\\Program Files (x86)\\Google\\Update\\GoogleUpdate.exe'], - }, - registry: { - hive: ['HKLM'], - key: [ - 'SOFTWARE\\WOW6432Node\\Google\\Update\\ClientState\\{430FD4D0-B729-4F61-AA34-91526481799D}\\CurrentState', - ], - path: [ - 'HKLM\\SOFTWARE\\WOW6432Node\\Google\\Update\\ClientState\\{430FD4D0-B729-4F61-AA34-91526481799D}\\CurrentState\\StateValue', - ], - value: ['StateValue'], - }, - agent: { - type: ['endpoint'], - }, - user: { - name: ['SYSTEM'], - domain: ['NT AUTHORITY'], - }, - message: ['Endpoint registry event'], - timestamp: '2021-02-04T13:44:31.559Z', - _id: '4cxLbXcBGrBB52F2uOfF', -}; diff --git a/x-pack/plugins/security_solution/public/common/mock/netflow.ts b/x-pack/plugins/security_solution/public/common/mock/netflow.ts index bc7d1c8a0dbd3..055760a2182c7 100644 --- a/x-pack/plugins/security_solution/public/common/mock/netflow.ts +++ b/x-pack/plugins/security_solution/public/common/mock/netflow.ts @@ -5,75 +5,4 @@ * 2.0. */ -import { ONE_MILLISECOND_AS_NANOSECONDS } from '../../timelines/components/formatted_duration/helpers'; -import type { Ecs } from '../../../common/ecs'; - -/** Returns mock data for testing the Netflow component */ -export const getMockNetflowData = (): Ecs => ({ - destination: { - bytes: [40], - geo: { - city_name: ['New York'], - continent_name: ['North America'], - country_iso_code: ['US'], - country_name: ['United States'], - region_name: ['New York'], - }, - ip: ['10.1.2.3'], - packets: [1], - port: [80], - }, - event: { - action: ['network_flow'], - category: ['network_traffic'], - duration: [ONE_MILLISECOND_AS_NANOSECONDS], - end: ['2018-11-12T19:03:25.936Z'], - start: ['2018-11-12T19:03:25.836Z'], - }, - _id: 'abcd', - network: { - bytes: [100], - community_id: ['we.live.in.a'], - direction: ['outgoing'], - packets: [3], - protocol: ['http'], - transport: ['tcp'], - }, - process: { - name: ['rat'], - }, - source: { - bytes: [60], - geo: { - city_name: ['Atlanta'], - continent_name: ['North America'], - country_iso_code: ['US'], - country_name: ['United States'], - region_name: ['Georgia'], - }, - ip: ['192.168.1.2'], - packets: [2], - port: [9987], - }, - timestamp: '2018-11-12T19:03:25.936Z', - tls: { - client_certificate: { - fingerprint: { - sha1: ['tls.client_certificate.fingerprint.sha1-value'], - }, - }, - fingerprints: { - ja3: { - hash: ['tls.fingerprints.ja3.hash-value'], - }, - }, - server_certificate: { - fingerprint: { - sha1: ['tls.server_certificate.fingerprint.sha1-value'], - }, - }, - }, - user: { - name: ['first.last'], - }, -}); +export { getDemoNetflowData as getMockNetflowData } from '../demo_data/netflow'; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx index 6982f75d6d6a7..fe2eabec1ea0b 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/timeline_actions/alert_context_menu.tsx @@ -344,6 +344,15 @@ export const AddExceptionFlyoutWrapper: React.FC return ruleIndices; }, [enrichedAlert, ruleIndices]); + const memoDataViewId = useMemo(() => { + if ( + enrichedAlert != null && + enrichedAlert['kibana.alert.rule.parameters']?.data_view_id != null + ) { + return enrichedAlert['kibana.alert.rule.parameters'].data_view_id; + } + }, [enrichedAlert]); + const isLoading = isLoadingAlertData && isSignalIndexLoading; return ( @@ -351,6 +360,7 @@ export const AddExceptionFlyoutWrapper: React.FC ruleName={ruleName} ruleId={ruleId} ruleIndices={useRuleIndices} + dataViewId={memoDataViewId} exceptionListType={exceptionListType} alertData={enrichedAlert} isAlertDataLoading={isLoading} diff --git a/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/responder_context_menu_item.tsx b/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/responder_context_menu_item.tsx index 6fea341cbc0ee..ccab3a650b605 100644 --- a/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/responder_context_menu_item.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/responder_context_menu_item.tsx @@ -100,7 +100,7 @@ export const ResponderContextMenuItem = memo( > ); diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/helpers.test.ts b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/helpers.test.ts index 3ef94563edc61..deee988052ef2 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/helpers.test.ts +++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/helpers.test.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { DataSourceType } from '../../../pages/detection_engine/rules/types'; import { isNoisy, getTimeframeOptions, @@ -71,6 +72,7 @@ describe('query_preview/helpers', () => { isThreatQueryBarValid: true, index: [], dataViewId: undefined, + dataSourceType: DataSourceType.IndexPatterns, threatIndex: ['threat-*'], threatMapping: [ { entries: [{ field: 'test-field', value: 'test-value', type: 'mapping' }] }, @@ -89,6 +91,7 @@ describe('query_preview/helpers', () => { isThreatQueryBarValid: true, index: ['test-*'], dataViewId: undefined, + dataSourceType: DataSourceType.IndexPatterns, threatIndex: ['threat-*'], threatMapping: [ { entries: [{ field: 'test-field', value: 'test-value', type: 'mapping' }] }, @@ -107,6 +110,7 @@ describe('query_preview/helpers', () => { isThreatQueryBarValid: false, index: ['test-*'], dataViewId: undefined, + dataSourceType: DataSourceType.IndexPatterns, threatIndex: ['threat-*'], threatMapping: [ { entries: [{ field: 'test-field', value: 'test-value', type: 'mapping' }] }, @@ -125,6 +129,7 @@ describe('query_preview/helpers', () => { isThreatQueryBarValid: true, index: ['test-*'], dataViewId: undefined, + dataSourceType: DataSourceType.IndexPatterns, threatIndex: [], threatMapping: [ { entries: [{ field: 'test-field', value: 'test-value', type: 'mapping' }] }, @@ -143,6 +148,7 @@ describe('query_preview/helpers', () => { isThreatQueryBarValid: true, index: ['test-*'], dataViewId: undefined, + dataSourceType: DataSourceType.IndexPatterns, threatIndex: ['threat-*'], threatMapping: [], machineLearningJobId: ['test-ml-job-id'], @@ -159,6 +165,7 @@ describe('query_preview/helpers', () => { isThreatQueryBarValid: true, index: ['test-*'], dataViewId: undefined, + dataSourceType: DataSourceType.IndexPatterns, threatIndex: ['threat-*'], threatMapping: [], machineLearningJobId: [], @@ -175,6 +182,7 @@ describe('query_preview/helpers', () => { isThreatQueryBarValid: true, index: ['test-*'], dataViewId: undefined, + dataSourceType: DataSourceType.IndexPatterns, threatIndex: ['threat-*'], threatMapping: [], machineLearningJobId: [], @@ -191,6 +199,7 @@ describe('query_preview/helpers', () => { isThreatQueryBarValid: true, index: ['test-*'], dataViewId: undefined, + dataSourceType: DataSourceType.IndexPatterns, threatIndex: [], threatMapping: [], machineLearningJobId: [], @@ -207,6 +216,7 @@ describe('query_preview/helpers', () => { isThreatQueryBarValid: true, index: ['test-*'], dataViewId: undefined, + dataSourceType: DataSourceType.IndexPatterns, threatIndex: ['threat-*'], threatMapping: [ { entries: [{ field: 'test-field', value: 'test-value', type: 'mapping' }] }, @@ -225,6 +235,7 @@ describe('query_preview/helpers', () => { isThreatQueryBarValid: true, index: ['test-*'], dataViewId: undefined, + dataSourceType: DataSourceType.IndexPatterns, threatIndex: ['threat-*'], threatMapping: [], machineLearningJobId: [], diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/helpers.ts b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/helpers.ts index a008371e7c127..9ee6628636ad4 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/helpers.ts +++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/helpers.ts @@ -16,6 +16,8 @@ import type { ChartSeriesConfigs } from '../../../../common/components/charts/co import { getQueryFilter } from '../../../../../common/detection_engine/get_query_filter'; import type { FieldValueQueryBar } from '../query_bar'; import type { ESQuery } from '../../../../../common/typed_json'; +import { DataSourceType } from '../../../pages/detection_engine/rules/types'; + /** * Determines whether or not to display noise warning. * Is considered noisy if alerts/hour rate > 1 @@ -165,6 +167,7 @@ export const getIsRulePreviewDisabled = ({ isThreatQueryBarValid, index, dataViewId, + dataSourceType, threatIndex, threatMapping, machineLearningJobId, @@ -176,14 +179,20 @@ export const getIsRulePreviewDisabled = ({ isThreatQueryBarValid: boolean; index: string[]; dataViewId: string | undefined; + dataSourceType: DataSourceType; threatIndex: string[]; threatMapping: ThreatMapping; machineLearningJobId: string[]; queryBar: FieldValueQueryBar; newTermsFields: string[]; }) => { - if (!isQueryBarValid || ((index == null || index.length === 0) && dataViewId == null)) + if ( + !isQueryBarValid || + (dataSourceType === DataSourceType.DataView && !dataViewId) || + (dataSourceType === DataSourceType.IndexPatterns && index.length === 0) + ) { return true; + } if (ruleType === 'threat_match') { if (!isThreatQueryBarValid || !threatIndex.length || !threatMapping) return true; if ( diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/index.test.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/index.test.tsx index bd0cfac44f69d..3b635796edd64 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/index.test.tsx @@ -9,11 +9,15 @@ import React from 'react'; import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; +import type { DataViewBase } from '@kbn/es-query'; +import { fields } from '@kbn/data-plugin/common/mocks'; + import { TestProviders } from '../../../../common/mock'; import type { RulePreviewProps } from '.'; import { RulePreview } from '.'; import { usePreviewRoute } from './use_preview_route'; import { usePreviewHistogram } from './use_preview_histogram'; +import { DataSourceType } from '../../../pages/detection_engine/rules/types'; jest.mock('../../../../common/lib/kibana'); jest.mock('./use_preview_route'); @@ -27,9 +31,17 @@ jest.mock('../../../../common/containers/use_global_time', () => ({ }), })); +const getMockIndexPattern = (): DataViewBase => ({ + fields, + id: '1234', + title: 'logstash-*', +}); + const defaultProps: RulePreviewProps = { ruleType: 'threat_match', index: ['test-*'], + indexPattern: getMockIndexPattern(), + dataSourceType: DataSourceType.IndexPatterns, threatIndex: ['threat-*'], threatMapping: [ { diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/index.tsx index 955e9d5ff3716..3f541344abe5a 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/index.tsx @@ -10,6 +10,7 @@ import dateMath from '@kbn/datemath'; import type { Unit } from '@kbn/datemath'; import type { ThreatMapping, Type } from '@kbn/securitysolution-io-ts-alerting-types'; import styled from 'styled-components'; +import type { DataViewBase } from '@kbn/es-query'; import type { EuiButtonGroupOptionProps, OnTimeChangeProps } from '@elastic/eui'; import { EuiButtonGroup, @@ -39,7 +40,10 @@ import { useStartTransaction } from '../../../../common/lib/apm/use_start_transa import { SINGLE_RULE_ACTIONS } from '../../../../common/lib/apm/user_actions'; import { Form, UseField, useForm, useFormData } from '../../../../shared_imports'; import { ScheduleItem } from '../schedule_item_form'; -import type { AdvancedPreviewForm } from '../../../pages/detection_engine/rules/types'; +import type { + AdvancedPreviewForm, + DataSourceType, +} from '../../../pages/detection_engine/rules/types'; import { schema } from './schema'; const HelpTextComponent = ( @@ -70,9 +74,11 @@ const advancedOptionsDefaultValue = { export interface RulePreviewProps { index: string[]; + indexPattern: DataViewBase; isDisabled: boolean; query: FieldValueQueryBar; dataViewId?: string; + dataSourceType: DataSourceType; ruleType: Type; threatIndex: string[]; threatMapping: ThreatMapping; @@ -97,7 +103,9 @@ const defaultTimeRange: Unit = 'h'; const RulePreviewComponent: React.FC = ({ index, + indexPattern, dataViewId, + dataSourceType, isDisabled, query, ruleType, @@ -197,6 +205,7 @@ const RulePreviewComponent: React.FC = ({ index, isDisabled, dataViewId, + dataSourceType, query, threatIndex, threatQuery, @@ -334,7 +343,7 @@ const RulePreviewComponent: React.FC = ({ previewId={previewId} addNoiseWarning={addNoiseWarning} spaceId={spaceId} - index={index} + indexPattern={indexPattern} advancedOptions={advancedOptions} /> )} diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/preview_histogram.test.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/preview_histogram.test.tsx index 4cbb74f7def21..e9fde44db0b44 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/preview_histogram.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/preview_histogram.test.tsx @@ -9,6 +9,9 @@ import React from 'react'; import { render } from '@testing-library/react'; import moment from 'moment'; +import type { DataViewBase } from '@kbn/es-query'; +import { fields } from '@kbn/data-plugin/common/mocks'; + import { useGlobalTime } from '../../../../common/containers/use_global_time'; import { TestProviders } from '../../../../common/mock'; import { usePreviewHistogram } from './use_preview_histogram'; @@ -21,6 +24,12 @@ jest.mock('../../../../common/containers/use_global_time'); jest.mock('./use_preview_histogram'); jest.mock('../../../../common/utils/normalize_time_range'); +const getMockIndexPattern = (): DataViewBase => ({ + fields, + id: '1234', + title: 'logstash-*', +}); + describe('PreviewHistogram', () => { const mockSetQuery = jest.fn(); @@ -58,7 +67,7 @@ describe('PreviewHistogram', () => { previewId={'test-preview-id'} spaceId={'default'} ruleType={'query'} - index={['']} + indexPattern={getMockIndexPattern()} /> ); @@ -89,7 +98,7 @@ describe('PreviewHistogram', () => { previewId={'test-preview-id'} spaceId={'default'} ruleType={'query'} - index={['']} + indexPattern={getMockIndexPattern()} /> ); @@ -141,7 +150,7 @@ describe('PreviewHistogram', () => { previewId={'test-preview-id'} spaceId={'default'} ruleType={'query'} - index={['']} + indexPattern={getMockIndexPattern()} advancedOptions={{ timeframeStart: moment(start, format), timeframeEnd: moment(end, format), diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/preview_histogram.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/preview_histogram.tsx index f374c4b192bf2..589e11c17016a 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/preview_histogram.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/preview_histogram.tsx @@ -12,6 +12,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiText, EuiSpacer, EuiLoadingChart } from ' import styled from 'styled-components'; import type { Type } from '@kbn/securitysolution-io-ts-alerting-types'; import { useDispatch, useSelector } from 'react-redux'; +import type { DataViewBase } from '@kbn/es-query'; import { eventsViewerSelector } from '../../../../common/components/events_viewer/selectors'; import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; import { useKibana } from '../../../../common/lib/kibana'; @@ -63,7 +64,7 @@ interface PreviewHistogramProps { addNoiseWarning: () => void; spaceId: string; ruleType: Type; - index: string[]; + indexPattern: DataViewBase; advancedOptions?: AdvancedPreviewOptions; } @@ -75,7 +76,7 @@ export const PreviewHistogram = ({ addNoiseWarning, spaceId, ruleType, - index, + indexPattern, advancedOptions, }: PreviewHistogramProps) => { const dispatch = useDispatch(); @@ -99,7 +100,7 @@ export const PreviewHistogram = ({ startDate, endDate, spaceId, - index, + indexPattern, ruleType, }); @@ -118,7 +119,7 @@ export const PreviewHistogram = ({ const { browserFields, - indexPattern, + indexPattern: selectedIndexPattern, runtimeMappings, dataViewId: selectedDataViewId, loading: isLoadingIndexPattern, @@ -225,7 +226,7 @@ export const PreviewHistogram = ({ hasAlertsCrud: false, id: TimelineId.rulePreview, indexNames: [`${DEFAULT_PREVIEW_INDEX}-${spaceId}`], - indexPattern, + indexPattern: selectedIndexPattern, isLive: false, isLoadingIndexPattern, itemsPerPage, diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/use_preview_histogram.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/use_preview_histogram.tsx index facd9a4258e1d..16f57dc402211 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/use_preview_histogram.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/use_preview_histogram.tsx @@ -7,6 +7,7 @@ import { useMemo } from 'react'; import type { Type } from '@kbn/securitysolution-io-ts-alerting-types'; import { getEsQueryConfig } from '@kbn/data-plugin/common'; +import type { DataViewBase } from '@kbn/es-query'; import { useMatrixHistogramCombined } from '../../../../common/containers/matrix_histogram'; import { MatrixHistogramType } from '../../../../../common/search_strategy'; import { convertToBuildEsQuery } from '../../../../common/lib/keury'; @@ -19,8 +20,8 @@ interface PreviewHistogramParams { endDate: string; startDate: string; spaceId: string; - index: string[]; ruleType: Type; + indexPattern: DataViewBase; } export const usePreviewHistogram = ({ @@ -28,17 +29,14 @@ export const usePreviewHistogram = ({ startDate, endDate, spaceId, - index, ruleType, + indexPattern, }: PreviewHistogramParams) => { const { uiSettings } = useKibana().services; const [filterQuery, error] = convertToBuildEsQuery({ config: getEsQueryConfig(uiSettings), - indexPattern: { - fields: [], - title: index == null ? '' : index.join(), - }, + indexPattern, queries: [{ query: `kibana.alert.rule.uuid:${previewId}`, language: 'kuery' }], filters: [], }); diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/use_preview_route.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/use_preview_route.tsx index 94817129fc9d0..d0c543e3c3a31 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/use_preview_route.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/use_preview_route.tsx @@ -14,12 +14,16 @@ import { formatPreviewRule } from '../../../pages/detection_engine/rules/create/ import type { FieldValueThreshold } from '../threshold_input'; import type { RulePreviewLogs } from '../../../../../common/detection_engine/schemas/request'; import type { EqlOptionsSelected } from '../../../../../common/search_strategy'; -import type { AdvancedPreviewOptions } from '../../../pages/detection_engine/rules/types'; +import type { + AdvancedPreviewOptions, + DataSourceType, +} from '../../../pages/detection_engine/rules/types'; interface PreviewRouteParams { isDisabled: boolean; index: string[]; dataViewId?: string; + dataSourceType: DataSourceType; threatIndex: string[]; query: FieldValueQueryBar; threatQuery: FieldValueQueryBar; @@ -38,6 +42,7 @@ interface PreviewRouteParams { export const usePreviewRoute = ({ index, dataViewId, + dataSourceType, isDisabled, query, threatIndex, @@ -107,6 +112,7 @@ export const usePreviewRoute = ({ formatPreviewRule({ index, dataViewId, + dataSourceType, query, ruleType, threatIndex, @@ -126,6 +132,7 @@ export const usePreviewRoute = ({ }, [ index, dataViewId, + dataSourceType, isRequestTriggered, query, rule, diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/index.tsx index 15e0ff4a913b4..d791cafe54b15 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/index.tsx @@ -834,13 +834,16 @@ const StepDefineRuleComponent: FC = ({ { ); }); }); - test('should render "Launch responder"', async () => { + test('should render "Respond"', async () => { await waitFor(() => { expect( wrapper.find('[data-test-subj="endpointResponseActions-action-item"]').first().text() - ).toEqual('Launch responder'); + ).toEqual('Respond'); }); }); }); @@ -366,7 +366,7 @@ describe('take action dropdown', () => { }); }); - describe('should correctly enable/disable the "Launch responder" button', () => { + describe('should correctly enable/disable the "Respond" button', () => { let wrapper: ReactWrapper; let apiMocks: ReturnType; diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts index 1de5085829b45..3e71ee086d2ee 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/helpers.ts @@ -580,6 +580,7 @@ export const formatRule = ( export const formatPreviewRule = ({ index, dataViewId, + dataSourceType, query, threatIndex, threatQuery, @@ -596,6 +597,7 @@ export const formatPreviewRule = ({ }: { index: string[]; dataViewId?: string; + dataSourceType: DataSourceType; threatIndex: string[]; query: FieldValueQueryBar; threatQuery: FieldValueQueryBar; @@ -614,6 +616,7 @@ export const formatPreviewRule = ({ ...stepDefineDefaultValue, index, dataViewId, + dataSourceType, queryBar: query, ruleType, threatIndex, diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_list.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/command_list.tsx index 810b8c6162644..cd26945b6a027 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/command_list.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/command_list.tsx @@ -31,6 +31,7 @@ import { useConsoleStateDispatch } from '../hooks/state_selectors/use_console_st import { COMMON_ARGS, HELP_GROUPS } from '../service/builtin_commands'; import { getCommandNameWithArgs } from '../service/utils'; import { ConsoleCodeBlock } from './console_code_block'; +import { useKibana } from '../../../../common/lib/kibana'; // @ts-expect-error TS2769 const StyledEuiBasicTable = styled(EuiBasicTable)` @@ -74,6 +75,7 @@ export interface CommandListProps { export const CommandList = memo(({ commands, display = 'default' }) => { const getTestId = useTestIdGenerator(useDataTestSubj()); const dispatch = useConsoleStateDispatch(); + const { docLinks } = useKibana().services; const footerMessage = useMemo(() => { return ( @@ -228,21 +230,21 @@ export const CommandList = memo(({ commands, display = 'defaul const calloutItems = [ , , + learnMore: ( + ), @@ -255,17 +257,17 @@ export const CommandList = memo(({ commands, display = 'defaul title={ } > -
    +
      {calloutItems.map((item, index) => (
    • {item}
    • ))} -
+ ); diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.tsx index 6c3c6207b548c..a3ccf282898b7 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/side_panel/side_panel_content_manager.tsx @@ -70,17 +70,9 @@ export const SidePanelContentManager = memo(() => { , - addText: ( - - - - ), }} /> diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/action_log_button.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/action_log_button.tsx index d906a09cc5378..bdfd987af131b 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/action_log_button.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/action_log_button.tsx @@ -30,7 +30,7 @@ export const ActionLogButton = memo((p > {showActionLogFlyout && ( diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/translations.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/translations.tsx index 0fadb24a0fd0c..04255a9ceaf53 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/translations.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_response_actions_list/translations.tsx @@ -92,7 +92,7 @@ export const TABLE_COLUMN_NAMES = Object.freeze({ export const UX_MESSAGES = Object.freeze({ flyoutTitle: (hostname: string) => i18n.translate('xpack.securitySolution.responseActionsList.flyout.title', { - defaultMessage: `Action log : {hostname}`, + defaultMessage: `Actions log : {hostname}`, values: { hostname }, }), pageTitle: i18n.translate('xpack.securitySolution.responseActionsList.list.title', { diff --git a/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_with_show_endpoint_responder.tsx b/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_with_show_endpoint_responder.tsx index 4c16dcbaed2c9..1d8808ca52d76 100644 --- a/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_with_show_endpoint_responder.tsx +++ b/x-pack/plugins/security_solution/public/management/hooks/endpoint/use_with_show_endpoint_responder.tsx @@ -20,7 +20,7 @@ import { OfflineCallout } from '../../components/endpoint_responder/offline_call type ShowEndpointResponseActionsConsole = (endpointMetadata: HostMetadata) => void; const RESPONDER_PAGE_TITLE = i18n.translate('xpack.securitySolution.responder_overlay.pageTitle', { - defaultMessage: 'Responder', + defaultMessage: 'Response console', }); export const useWithShowEndpointResponder = (): ShowEndpointResponseActionsConsole => { diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/index.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/index.tsx index c98f5616b1750..8da9e0e05d075 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/index.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/index.tsx @@ -25,6 +25,3 @@ export const EndpointsContainer = memo(() => { }); EndpointsContainer.displayName = 'EndpointsContainer'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -export { endpointListFleetApisHttpMock } from './mocks'; -export type { EndpointListFleetApisHttpMockInterface } from './mocks'; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/use_endpoint_action_items.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/use_endpoint_action_items.tsx index cad9f0d61ee7e..b3e1ce76480f3 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/use_endpoint_action_items.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/use_endpoint_action_items.tsx @@ -136,7 +136,7 @@ export const useEndpointActionItems = ( children: ( ), toolTipContent: !isResponderCapabilitiesEnabled diff --git a/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/form.test.tsx b/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/form.test.tsx index 9287931ddb11e..43245b340e47c 100644 --- a/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/form.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/view/components/form.test.tsx @@ -92,9 +92,7 @@ describe('When on the host isolation exceptions entry form', () => { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/136165 - // FLAKY: https://github.com/elastic/kibana/issues/136166 - describe.skip('and creating a new exception', () => { + describe('and creating a new exception', () => { beforeEach(async () => { await render(); }); @@ -107,32 +105,35 @@ describe('When on the host isolation exceptions entry form', () => { ).toHaveValue(''); }); - it.each(['not an ip', '100', '900.0.0.1', 'x.x.x.x', '10.0.0'])( + it('should keep submit button disabled if only the name is entered', async () => { + const nameInput = renderResult.getByTestId('hostIsolationExceptions-form-name-input'); + + userEvent.type(nameInput, 'test name'); + userEvent.click(renderResult.getByTestId('hostIsolationExceptions-form-description-input')); + + await waitFor(() => { + expect(submitButtonDisabledState()).toBe(true); + }); + }); + + it.each([['not an ip'], ['100'], ['900.0.0.1'], ['x.x.x.x'], ['10.0.0']])( 'should show validation error when a wrong ip value is entered. Case: "%s"', async (value: string) => { - const nameInput = renderResult.getByTestId('hostIsolationExceptions-form-name-input'); const ipInput = renderResult.getByTestId('hostIsolationExceptions-form-ip-input'); - userEvent.type(nameInput, 'test name'); + userEvent.type(ipInput, value); + userEvent.click(renderResult.getByTestId('hostIsolationExceptions-form-description-input')); await waitFor(() => { + expect(formRowHasError('hostIsolationExceptions-form-ip-input-formRow')).toBe(true); expect(submitButtonDisabledState()).toBe(true); }); - - userEvent.type(ipInput, value); - userEvent.tab(); - - await waitFor(() => - expect(formRowHasError('hostIsolationExceptions-form-ip-input-formRow')).toBe(true) - ); - - await waitFor(() => expect(submitButtonDisabledState()).toBe(true)); } ); - it.each(['192.168.0.1', '10.0.0.1', '100.90.1.1/24', '192.168.200.6/30'])( + it.each([['192.168.0.1'], ['10.0.0.1'], ['100.90.1.1/24'], ['192.168.200.6/30']])( 'should NOT show validation error when a correct ip value is entered. Case: "%s"', - (value: string) => { + async (value: string) => { const ipInput = renderResult.getByTestId('hostIsolationExceptions-form-ip-input'); const nameInput = renderResult.getByTestId('hostIsolationExceptions-form-name-input'); @@ -140,7 +141,10 @@ describe('When on the host isolation exceptions entry form', () => { userEvent.type(ipInput, value); expect(formRowHasError('hostIsolationExceptions-form-ip-input-formRow')).toBe(false); - expect(submitButtonDisabledState()).toBe(false); + + await waitFor(() => { + expect(submitButtonDisabledState()).toBe(false); + }); } ); diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/alerts.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/alerts.tsx index 7183aa8e85d7e..8acf2e42e845b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/alerts.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/alerts.tsx @@ -7,8 +7,7 @@ import React from 'react'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockEndpointProcessExecutionMalwarePreventionAlert } from '../../../../common/mock/mock_timeline_data'; +import { demoEndpointProcessExecutionMalwarePreventionAlert } from '../../../../common/demo_data/endpoint/process_execution_malware_prevention_alert'; import { createEndpointAlertsRowRenderer } from '../../timeline/body/renderers/system/generic_row_renderer'; import { WAS_PREVENTED_FROM_EXECUTING_A_MALICIOUS_PROCESS } from '../../timeline/body/renderers/system/translations'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; @@ -25,7 +24,7 @@ const AlertsExampleComponent: React.FC = () => { return ( <> {alertsRowRenderer.renderRow({ - data: mockEndpointProcessExecutionMalwarePreventionAlert, + data: demoEndpointProcessExecutionMalwarePreventionAlert, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd.tsx index d85f0537fe720..40272e89bf789 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd.tsx @@ -7,8 +7,7 @@ import React from 'react'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockTimelineData } from '../../../../common/mock/mock_timeline_data'; +import { demoTimelineData } from '../../../../common/demo_data/timeline'; import { createGenericAuditRowRenderer } from '../../timeline/body/renderers/auditd/generic_row_renderer'; import { CONNECTED_USING } from '../../timeline/body/renderers/auditd/translations'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; @@ -22,7 +21,7 @@ const AuditdExampleComponent: React.FC = () => { return ( <> {auditdRowRenderer.renderRow({ - data: mockTimelineData[26].ecs, + data: demoTimelineData[26].ecs, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd_file.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd_file.tsx index b55e667a6e43f..b5a5cc70e0dc0 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd_file.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/auditd_file.tsx @@ -7,8 +7,7 @@ import React from 'react'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockTimelineData } from '../../../../common/mock/mock_timeline_data'; +import { demoTimelineData } from '../../../../common/demo_data/timeline'; import { createGenericFileRowRenderer } from '../../timeline/body/renderers/auditd/generic_row_renderer'; import { OPENED_FILE, USING } from '../../timeline/body/renderers/auditd/translations'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; @@ -22,7 +21,7 @@ const AuditdFileExampleComponent: React.FC = () => { return ( <> {auditdFileRowRenderer.renderRow({ - data: mockTimelineData[27].ecs, + data: demoTimelineData[27].ecs, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/library.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/library.tsx index c45555f9c31ac..db1727661d15d 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/library.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/library.tsx @@ -7,8 +7,7 @@ import React from 'react'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockEndpointLibraryLoadEvent } from '../../../../common/mock/mock_timeline_data'; +import { demoEndpointLibraryLoadEvent } from '../../../../common/demo_data/endpoint/library_load_event'; import { createEndpointLibraryRowRenderer } from '../../timeline/body/renderers/system/generic_row_renderer'; import { LOADED_LIBRARY } from '../../timeline/body/renderers/system/translations'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; @@ -22,7 +21,7 @@ const LibraryExampleComponent: React.FC = () => { return ( <> {libraryRowRenderer.renderRow({ - data: mockEndpointLibraryLoadEvent, + data: demoEndpointLibraryLoadEvent, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/netflow.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/netflow.tsx index 06321441a34d7..553bf4874dac0 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/netflow.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/netflow.tsx @@ -7,15 +7,14 @@ import React from 'react'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { getMockNetflowData } from '../../../../common/mock/netflow'; +import { getDemoNetflowData } from '../../../../common/demo_data/netflow'; import { netflowRowRenderer } from '../../timeline/body/renderers/netflow/netflow_row_renderer'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; const NetflowExampleComponent: React.FC = () => ( <> {netflowRowRenderer.renderRow({ - data: getMockNetflowData(), + data: getDemoNetflowData(), isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/registry.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/registry.tsx index f4d39a6870e80..093abf2d1aa63 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/registry.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/registry.tsx @@ -7,8 +7,7 @@ import React from 'react'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockEndpointRegistryModificationEvent } from '../../../../common/mock/mock_timeline_data'; +import { demoEndpointRegistryModificationEvent } from '../../../../common/demo_data/endpoint/registry_modification_event'; import { createEndpointRegistryRowRenderer } from '../../timeline/body/renderers/system/generic_row_renderer'; import { MODIFIED_REGISTRY_KEY } from '../../timeline/body/renderers/system/translations'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; @@ -22,7 +21,7 @@ const RegistryExampleComponent: React.FC = () => { return ( <> {registryRowRenderer.renderRow({ - data: mockEndpointRegistryModificationEvent, + data: demoEndpointRegistryModificationEvent, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/suricata.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/suricata.tsx index 613f6c632ad0c..b385de92859e8 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/suricata.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/suricata.tsx @@ -7,15 +7,14 @@ import React from 'react'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockTimelineData } from '../../../../common/mock/mock_timeline_data'; +import { demoTimelineData } from '../../../../common/demo_data/timeline'; import { suricataRowRenderer } from '../../timeline/body/renderers/suricata/suricata_row_renderer'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; const SuricataExampleComponent: React.FC = () => ( <> {suricataRowRenderer.renderRow({ - data: mockTimelineData[2].ecs, + data: demoTimelineData[2].ecs, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system.tsx index 2018f46865219..bdf3e33af8426 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system.tsx @@ -9,8 +9,7 @@ import React from 'react'; import { TERMINATED_PROCESS } from '../../timeline/body/renderers/system/translations'; import { createGenericSystemRowRenderer } from '../../timeline/body/renderers/system/generic_row_renderer'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockEndgameTerminationEvent } from '../../../../common/mock/mock_endgame_ecs_data'; +import { demoEndgameTerminationEvent } from '../../../../common/demo_data/endgame_ecs/termination'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; const SystemExampleComponent: React.FC = () => { @@ -22,7 +21,7 @@ const SystemExampleComponent: React.FC = () => { return ( <> {systemRowRenderer.renderRow({ - data: mockEndgameTerminationEvent, + data: demoEndgameTerminationEvent, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_dns.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_dns.tsx index aba609a8e5385..7f64a2faa66a7 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_dns.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_dns.tsx @@ -8,8 +8,7 @@ import React from 'react'; import { createDnsRowRenderer } from '../../timeline/body/renderers/system/generic_row_renderer'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockEndgameDnsRequest } from '../../../../common/mock/mock_endgame_ecs_data'; +import { demoEndgameDnsRequest } from '../../../../common/demo_data/endgame_ecs/dns'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; const SystemDnsExampleComponent: React.FC = () => { @@ -18,7 +17,7 @@ const SystemDnsExampleComponent: React.FC = () => { return ( <> {systemDnsRowRenderer.renderRow({ - data: mockEndgameDnsRequest, + data: demoEndgameDnsRequest, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_endgame_process.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_endgame_process.tsx index c7c369c01ed1f..d8c3ee2964a61 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_endgame_process.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_endgame_process.tsx @@ -8,8 +8,7 @@ import React from 'react'; import { createEndgameProcessRowRenderer } from '../../timeline/body/renderers/system/generic_row_renderer'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockEndgameCreationEvent } from '../../../../common/mock/mock_endgame_ecs_data'; +import { demoEndgameCreationEvent } from '../../../../common/demo_data/endgame_ecs/creation'; import { PROCESS_STARTED } from '../../timeline/body/renderers/system/translations'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; @@ -22,7 +21,7 @@ const SystemEndgameProcessExampleComponent: React.FC = () => { return ( <> {systemEndgameProcessRowRenderer.renderRow({ - data: mockEndgameCreationEvent, + data: demoEndgameCreationEvent, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_file.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_file.tsx index 72903035b2e12..0e24e7228ff3f 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_file.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_file.tsx @@ -7,8 +7,7 @@ import React from 'react'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockEndgameFileDeleteEvent } from '../../../../common/mock/mock_endgame_ecs_data'; +import { demoEndgameFileDeleteEvent } from '../../../../common/demo_data/endgame_ecs/file_events'; import { createGenericFileRowRenderer } from '../../timeline/body/renderers/system/generic_row_renderer'; import { DELETED_FILE } from '../../timeline/body/renderers/system/translations'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; @@ -22,7 +21,7 @@ const SystemFileExampleComponent: React.FC = () => { return ( <> {systemFileRowRenderer.renderRow({ - data: mockEndgameFileDeleteEvent, + data: demoEndgameFileDeleteEvent, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_fim.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_fim.tsx index 74a02902fb78a..9890b3b2f0c18 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_fim.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_fim.tsx @@ -7,8 +7,7 @@ import React from 'react'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockEndgameFileCreateEvent } from '../../../../common/mock/mock_endgame_ecs_data'; +import { demoEndgameFileCreateEvent } from '../../../../common/demo_data/endgame_ecs/file_events'; import { createFimRowRenderer } from '../../timeline/body/renderers/system/generic_row_renderer'; import { CREATED_FILE } from '../../timeline/body/renderers/system/translations'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; @@ -22,7 +21,7 @@ const SystemFimExampleComponent: React.FC = () => { return ( <> {systemFimRowRenderer.renderRow({ - data: mockEndgameFileCreateEvent, + data: demoEndgameFileCreateEvent, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_security_event.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_security_event.tsx index aecf23ff08346..d5380d34f3a0b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_security_event.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_security_event.tsx @@ -8,8 +8,7 @@ import React from 'react'; import { createSecurityEventRowRenderer } from '../../timeline/body/renderers/system/generic_row_renderer'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockEndgameUserLogon } from '../../../../common/mock/mock_endgame_ecs_data'; +import { demoEndgameUserLogon } from '../../../../common/demo_data/endgame_ecs/user_logon'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; const SystemSecurityEventExampleComponent: React.FC = () => { @@ -20,7 +19,7 @@ const SystemSecurityEventExampleComponent: React.FC = () => { return ( <> {systemSecurityEventRowRenderer.renderRow({ - data: mockEndgameUserLogon, + data: demoEndgameUserLogon, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_socket.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_socket.tsx index 015a571ae6f5b..5e57336e827ee 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_socket.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/system_socket.tsx @@ -9,8 +9,7 @@ import React from 'react'; import { ACCEPTED_A_CONNECTION_VIA } from '../../timeline/body/renderers/system/translations'; import { createSocketRowRenderer } from '../../timeline/body/renderers/system/generic_row_renderer'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockEndgameIpv4ConnectionAcceptEvent } from '../../../../common/mock/mock_endgame_ecs_data'; +import { demoEndgameIpv4ConnectionAcceptEvent } from '../../../../common/demo_data/endgame_ecs/ipv4'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; const SystemSocketExampleComponent: React.FC = () => { @@ -21,7 +20,7 @@ const SystemSocketExampleComponent: React.FC = () => { return ( <> {systemSocketRowRenderer.renderRow({ - data: mockEndgameIpv4ConnectionAcceptEvent, + data: demoEndgameIpv4ConnectionAcceptEvent, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/threat_match.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/threat_match.tsx index ba3ca74147f29..3c96fd22fc6ed 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/threat_match.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/threat_match.tsx @@ -7,15 +7,14 @@ import React from 'react'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockTimelineData } from '../../../../common/mock/mock_timeline_data'; +import { demoTimelineData } from '../../../../common/demo_data/timeline'; import { threatMatchRowRenderer } from '../../timeline/body/renderers/cti/threat_match_row_renderer'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; const ThreatMatchExampleComponent: React.FC = () => ( <> {threatMatchRowRenderer.renderRow({ - data: mockTimelineData[31].ecs, + data: demoTimelineData[31].ecs, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/zeek.tsx b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/zeek.tsx index ab8cab5e3d697..714faad3b815d 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/zeek.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/row_renderers_browser/examples/zeek.tsx @@ -7,15 +7,14 @@ import React from 'react'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -import { mockTimelineData } from '../../../../common/mock/mock_timeline_data'; +import { demoTimelineData } from '../../../../common/demo_data/timeline'; import { zeekRowRenderer } from '../../timeline/body/renderers/zeek/zeek_row_renderer'; import { ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID } from '../constants'; const ZeekExampleComponent: React.FC = () => ( <> {zeekRowRenderer.renderRow({ - data: mockTimelineData[13].ecs, + data: demoTimelineData[13].ecs, isDraggable: false, timelineId: ROW_RENDERER_BROWSER_EXAMPLE_TIMELINE_ID, })} diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/__snapshots__/expandable_host.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/__snapshots__/expandable_host.test.tsx.snap deleted file mode 100644 index 8f14c778cff20..0000000000000 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/__snapshots__/expandable_host.test.tsx.snap +++ /dev/null @@ -1,341 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Expandable Host Component ExpandableHostDetails: rendering it should render the HostOverview of the ExpandableHostDetails 1`] = ` -.c3 { - color: #535966; -} - -.c2 { - word-break: break-word; -} - -.c2 dt { - font-size: 12px !important; -} - -.c2 dd { - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; -} - -.c2 dd > div { - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; -} - -.c1 { - position: relative; -} - -.c1 .euiButtonIcon { - position: absolute; - right: 12px; - top: 6px; - z-index: 2; -} - -.c0 { - width: 100%; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.c0 > * { - max-width: 100%; -} - -.c0 .inspectButtonComponent { - pointer-events: none; - opacity: 0; - -webkit-transition: opacity 250ms ease; - transition: opacity 250ms ease; -} - -.c0:hover .inspectButtonComponent { - pointer-events: auto; - opacity: 1; -} - -.c4 { - padding: 12px; - background: rgba(250,251,253,0.9); - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; - z-index: 1000; -} - -.c5 { - height: 100%; -} - -
-
-
-
-
- Host ID -
-
- - — - -
-
- First seen -
-
- -
-
- Last seen -
-
- -
-
-
-
-
-
- IP addresses -
-
- - — - -
-
- MAC addresses -
-
- - — - -
-
- Platform -
-
- - — - -
-
-
-
-
-
- Operating system -
-
- - — - -
-
- Family -
-
- - — - -
-
- Version -
-
- - — - -
-
- Architecture -
-
- - — - -
-
-
-
-
-
- Cloud provider -
-
- - — - -
-
- Region -
-
- - — - -
-
- Instance ID -
-
- - — - -
-
- Machine type -
-
- - — - -
-
-
- -
-
-`; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/expandable_host.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/expandable_host.test.tsx index 945f8bd8b9b52..ecdb41639c5fd 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/expandable_host.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/expandable_host.test.tsx @@ -6,13 +6,43 @@ */ import { mount } from 'enzyme'; +import { waitFor } from '@testing-library/react'; import React from 'react'; import '../../../../common/mock/match_media'; import { mockGlobalState, TestProviders } from '../../../../common/mock'; import { ExpandableHostDetails } from './expandable_host'; +import { mockAnomalies } from '../../../../common/components/ml/mock'; +import type { Anomalies } from '../../../../common/components/ml/types'; +import { hasMlUserPermissions } from '../../../../../common/machine_learning/has_ml_user_permissions'; +const mockDispatch = jest.fn(); +jest.mock('../../../../../common/machine_learning/has_ml_user_permissions'); +jest.mock('react-redux', () => { + const original = jest.requireActual('react-redux'); + + return { + ...original, + useDispatch: () => mockDispatch, + }; +}); +jest.mock('../../../../common/components/ml/anomaly/anomaly_table_provider', () => ({ + AnomalyTableProvider: ({ + children, + }: { + children: (args: { + anomaliesData: Anomalies; + isLoadingAnomaliesData: boolean; + }) => React.ReactNode; + }) => children({ anomaliesData: mockAnomalies, isLoadingAnomaliesData: false }), +})); describe('Expandable Host Component', () => { + beforeAll(() => { + (hasMlUserPermissions as jest.Mock).mockReturnValue(true); + }); + beforeEach(() => { + jest.clearAllMocks(); + }); const mockProps = { contextID: 'text-context', hostName: 'testHostName', @@ -26,7 +56,7 @@ describe('Expandable Host Component', () => { ); - expect(wrapper.find('ExpandableHostDetails').render()).toMatchSnapshot(); + expect(wrapper.find('[data-test-subj="host-overview"]').exists()).toBe(true); }); test('it should render the HostOverview of the ExpandableHostDetails with the correct indices', () => { @@ -40,5 +70,28 @@ describe('Expandable Host Component', () => { mockGlobalState.sourcerer.sourcererScopes.default.selectedPatterns ); }); + + test('it should set date range to anomaly date range', async () => { + const wrapper = mount( + + + + ); + wrapper.find('[data-test-subj="anomaly-score-popover"]').first().simulate('click'); + await waitFor(() => { + wrapper + .find('button[data-test-subj="anomaly-description-narrow-range-link"]') + .first() + .simulate('click'); + }); + expect(mockDispatch).toHaveBeenCalledWith({ + type: 'x-pack/security_solution/local/inputs/SET_ABSOLUTE_RANGE_DATE_PICKER', + payload: { + id: 'global', + from: '2019-06-15T06:00:00.000Z', + to: '2019-06-17T06:00:00.000Z', + }, + }); + }); }); }); diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/expandable_host.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/expandable_host.tsx index b8009a376bb88..1adeb1304dd2b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/expandable_host.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/expandable_host.tsx @@ -5,10 +5,11 @@ * 2.0. */ -import React from 'react'; +import React, { useCallback } from 'react'; import styled from 'styled-components'; import { i18n } from '@kbn/i18n'; import { EuiTitle } from '@elastic/eui'; +import { useDispatch } from 'react-redux'; import { HostDetailsLink } from '../../../../common/components/links'; import { useGlobalTime } from '../../../../common/containers/use_global_time'; import { useSourcererDataView } from '../../../../common/containers/sourcerer'; @@ -65,6 +66,7 @@ export const ExpandableHostDetails = ({ (i.e. extraneous endpoint data is retrieved from the backend leading to endpoint data not being returned) */ const { selectedPatterns } = useSourcererDataView(); + const dispatch = useDispatch(); const [loading, { hostDetails: hostOverview }] = useHostDetails({ endDate: to, @@ -72,6 +74,19 @@ export const ExpandableHostDetails = ({ indexNames: selectedPatterns, startDate: from, }); + const narrowDateRange = useCallback( + (score, interval) => { + const fromTo = scoreIntervalToDateTime(score, interval); + dispatch( + setAbsoluteRangeDatePicker({ + id: 'global', + from: fromTo.from, + to: fromTo.to, + }) + ); + }, + [dispatch] + ); return ( { - const fromTo = scoreIntervalToDateTime(score, interval); - setAbsoluteRangeDatePicker({ - id: 'global', - from: fromTo.from, - to: fromTo.to, - }); - }} + narrowDateRange={narrowDateRange} hostName={hostName} /> )} diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/user_details/expandable_user.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/user_details/expandable_user.test.tsx new file mode 100644 index 0000000000000..f375209527e5d --- /dev/null +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/user_details/expandable_user.test.tsx @@ -0,0 +1,98 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { mount } from 'enzyme'; +import { waitFor } from '@testing-library/react'; +import React from 'react'; + +import '../../../../common/mock/match_media'; +import { mockGlobalState, TestProviders } from '../../../../common/mock'; +import { ExpandableUserDetails } from './expandable_user'; +import { mockAnomalies } from '../../../../common/components/ml/mock'; +import type { Anomalies } from '../../../../common/components/ml/types'; +import { hasMlUserPermissions } from '../../../../../common/machine_learning/has_ml_user_permissions'; +const mockDispatch = jest.fn(); +jest.mock('../../../../../common/machine_learning/has_ml_user_permissions'); +jest.mock('react-redux', () => { + const original = jest.requireActual('react-redux'); + + return { + ...original, + useDispatch: () => mockDispatch, + }; +}); +jest.mock('../../../../common/components/ml/anomaly/anomaly_table_provider', () => ({ + AnomalyTableProvider: ({ + children, + }: { + children: (args: { + anomaliesData: Anomalies; + isLoadingAnomaliesData: boolean; + }) => React.ReactNode; + }) => children({ anomaliesData: mockAnomalies, isLoadingAnomaliesData: false }), +})); + +describe('Expandable Host Component', () => { + beforeAll(() => { + (hasMlUserPermissions as jest.Mock).mockReturnValue(true); + }); + beforeEach(() => { + jest.clearAllMocks(); + }); + const mockProps = { + contextID: 'text-context', + userName: 'testUserName', + isDraggable: true, + }; + + describe('ExpandableUserDetails: rendering', () => { + test('it should render the UserOverview of the ExpandableUserDetails', () => { + const wrapper = mount( + + + + ); + + expect(wrapper.find('[data-test-subj="user-overview"]').exists()).toBe(true); + }); + + test('it should render the UserOverview of the ExpandableUserDetails with the correct indices', () => { + const wrapper = mount( + + + + ); + + expect(wrapper.find('UserOverview').prop('indexPatterns')).toStrictEqual( + mockGlobalState.sourcerer.sourcererScopes.default.selectedPatterns + ); + }); + + test('it should set date range to anomaly date range', async () => { + const wrapper = mount( + + + + ); + wrapper.find('[data-test-subj="anomaly-score-popover"]').first().simulate('click'); + await waitFor(() => { + wrapper + .find('button[data-test-subj="anomaly-description-narrow-range-link"]') + .first() + .simulate('click'); + }); + expect(mockDispatch).toHaveBeenCalledWith({ + type: 'x-pack/security_solution/local/inputs/SET_ABSOLUTE_RANGE_DATE_PICKER', + payload: { + id: 'global', + from: '2019-06-15T06:00:00.000Z', + to: '2019-06-17T06:00:00.000Z', + }, + }); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/user_details/expandable_user.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/user_details/expandable_user.tsx index f1f32802845b0..cbfb7439c83fb 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/user_details/expandable_user.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/user_details/expandable_user.tsx @@ -8,7 +8,8 @@ import { EuiTitle } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import styled from 'styled-components'; -import React from 'react'; +import React, { useCallback } from 'react'; +import { useDispatch } from 'react-redux'; import { UserDetailsLink } from '../../../../common/components/links'; import { UserOverview } from '../../../../overview/components/user_overview'; import { useUserDetails } from '../../../../users/containers/users/details'; @@ -57,6 +58,7 @@ export const ExpandableUserDetails = ({ }: ExpandableUserProps & { contextID: string; isDraggable?: boolean }) => { const { to, from, isInitializing } = useGlobalTime(); const { selectedPatterns } = useSourcererDataView(); + const dispatch = useDispatch(); const [loading, { userDetails }] = useUserDetails({ endDate: to, @@ -66,6 +68,20 @@ export const ExpandableUserDetails = ({ skip: isInitializing, }); + const narrowDateRange = useCallback( + (score, interval) => { + const fromTo = scoreIntervalToDateTime(score, interval); + dispatch( + setAbsoluteRangeDatePicker({ + id: 'global', + from: fromTo.from, + to: fromTo.to, + }) + ); + }, + [dispatch] + ); + return ( { - const fromTo = scoreIntervalToDateTime(score, interval); - setAbsoluteRangeDatePicker({ - id: 'global', - from: fromTo.from, - to: fromTo.to, - }); - }} + narrowDateRange={narrowDateRange} indexPatterns={selectedPatterns} /> )} diff --git a/x-pack/plugins/security_solution/server/endpoint/mocks.ts b/x-pack/plugins/security_solution/server/endpoint/mocks.ts index 01759c01df53b..8b9623b51b24c 100644 --- a/x-pack/plugins/security_solution/server/endpoint/mocks.ts +++ b/x-pack/plugins/security_solution/server/endpoint/mocks.ts @@ -45,7 +45,7 @@ import { createEndpointMetadataServiceTestContextMock } from './services/metadat import type { EndpointAuthz } from '../../common/endpoint/types/authz'; import { EndpointFleetServicesFactory } from './services/fleet'; import { createLicenseServiceMock } from '../../common/license/mocks'; -import { createFeatureUsageServiceMock } from './services/feature_usage'; +import { createFeatureUsageServiceMock } from './services/feature_usage/mocks'; /** * Creates a mocked EndpointAppContext. diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/metadata.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/metadata/metadata.test.ts index 5746e1e93f9bb..6eb04c9833e27 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/metadata/metadata.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/metadata/metadata.test.ts @@ -62,7 +62,7 @@ import { EndpointHostNotFoundError } from '../../services/metadata'; import { FleetAgentGenerator } from '../../../../common/endpoint/data_generators/fleet_agent_generator'; import { createMockAgentClient, createMockPackageService } from '@kbn/fleet-plugin/server/mocks'; import type { TransformGetTransformStatsResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { getEndpointAuthzInitialStateMock } from '../../../../common/endpoint/service/authz'; +import { getEndpointAuthzInitialStateMock } from '../../../../common/endpoint/service/authz/mocks'; class IndexNotFoundException extends Error { meta: { body: { error: { type: string } } }; diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts b/x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts index b4fcee14a1804..44f897d8883cc 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts @@ -23,14 +23,14 @@ export const registerResolverRoutes = async ( startServices: StartServicesAccessor, config: ConfigType ) => { - const [, { ruleRegistry }] = await startServices(); + const [, { ruleRegistry, licensing }] = await startServices(); router.post( { path: '/api/endpoint/resolver/tree', validate: validateTree, options: { authRequired: true }, }, - handleTree(ruleRegistry, config) + handleTree(ruleRegistry, config, licensing) ); router.post( diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/handler.ts b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/handler.ts index 8084dd26fc9ec..b4931da5ae16d 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/handler.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/tree/handler.ts @@ -5,23 +5,37 @@ * 2.0. */ +import { firstValueFrom } from 'rxjs'; + import type { RequestHandler } from '@kbn/core/server'; import type { TypeOf } from '@kbn/config-schema'; import type { RuleRegistryPluginStartContract } from '@kbn/rule-registry-plugin/server'; -import type { validateTree } from '../../../../../common/endpoint/schema/resolver'; +import type { LicensingPluginStart } from '@kbn/licensing-plugin/server'; import type { ConfigType } from '../../../../config'; + +import type { validateTree } from '../../../../../common/endpoint/schema/resolver'; +import { featureUsageService } from '../../../services/feature_usage'; import { Fetcher } from './utils/fetch'; export function handleTree( ruleRegistry: RuleRegistryPluginStartContract, - config: ConfigType + config: ConfigType, + licensing: LicensingPluginStart ): RequestHandler> { return async (context, req, res) => { const client = (await context.core).elasticsearch.client; const { experimentalFeatures: { insightsRelatedAlertsByProcessAncestry }, } = config; - const alertsClient = insightsRelatedAlertsByProcessAncestry + const license = await firstValueFrom(licensing.license$); + const hasAccessToInsightsRelatedByProcessAncestry = + insightsRelatedAlertsByProcessAncestry && license.hasAtLeast('platinum'); + + if (hasAccessToInsightsRelatedByProcessAncestry) { + featureUsageService.notifyUsage('ALERTS_BY_PROCESS_ANCESTRY'); + } + + const alertsClient = hasAccessToInsightsRelatedByProcessAncestry ? await ruleRegistry.getRacClientWithRequest(req) : undefined; const fetcher = new Fetcher(client, alertsClient); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/index.ts b/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/index.ts index d65ea404f298d..5c880f67847ed 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/index.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/index.ts @@ -7,7 +7,5 @@ import { FeatureUsageService } from './service'; export type { FeatureKeys } from './service'; -// eslint-disable-next-line @kbn/imports/no_boundary_crossing -export { createFeatureUsageServiceMock, createMockPolicyData } from './mocks'; export const featureUsageService = new FeatureUsageService(); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/service.ts b/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/service.ts index 7b9edee253c87..46c75cd6f73eb 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/service.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/feature_usage/service.ts @@ -21,6 +21,7 @@ const FEATURES = { KILL_PROCESS: 'Kill process', SUSPEND_PROCESS: 'Suspend process', RUNNING_PROCESSES: 'Get running processes', + ALERTS_BY_PROCESS_ANCESTRY: 'Get related alerts by process ancestry', } as const; export type FeatureKeys = keyof typeof FEATURES; diff --git a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts b/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts index c93b8035aea8f..0c6611acb77e0 100644 --- a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts +++ b/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts @@ -43,7 +43,7 @@ import { Manifest } from '../endpoint/lib/artifacts'; import type { NewPackagePolicy } from '@kbn/fleet-plugin/common/types/models'; import type { ManifestSchema } from '../../common/endpoint/schema/manifest'; import type { DeletePackagePoliciesResponse } from '@kbn/fleet-plugin/common'; -import { createMockPolicyData } from '../endpoint/services/feature_usage'; +import { createMockPolicyData } from '../endpoint/services/feature_usage/mocks'; import { ALL_ENDPOINT_ARTIFACT_LIST_IDS } from '../../common/endpoint/service/artifacts/constants'; describe('ingest_integration tests ', () => { 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 0ac0a67a761ef..282759546197f 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 @@ -32,7 +32,7 @@ import type { SecuritySolutionRequestHandlerContext, } from '../../../../types'; -import { getEndpointAuthzInitialStateMock } from '../../../../../common/endpoint/service/authz'; +import { getEndpointAuthzInitialStateMock } from '../../../../../common/endpoint/service/authz/mocks'; import type { EndpointAuthz } from '../../../../../common/endpoint/types/authz'; export const createMockClients = () => { diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/bulk_actions/rule_params_modifier.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/bulk_actions/rule_params_modifier.test.ts index e83fc53c20cf5..c3b4fe0f20134 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rules/bulk_actions/rule_params_modifier.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rules/bulk_actions/rule_params_modifier.test.ts @@ -50,8 +50,7 @@ describe('ruleParamsModifier', () => { expect(editedRuleParams).toHaveProperty('version', ruleParamsMock.version + 1); }); - // FLAKY: https://github.com/elastic/kibana/issues/138409 - describe.skip('index_patterns', () => { + describe('index_patterns', () => { test('should add new index pattern to rule', () => { const editedRuleParams = ruleParamsModifier(ruleParamsMock, [ { diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json index ae6b48d5d4cec..e31e2c0dd8257 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -2,6 +2,15 @@ "properties": { "actions": { "properties": { + "has_errors": { + "type": "boolean" + }, + "error_messages": { + "type": "array", + "items": { + "type": "text" + } + }, "alert_history_connector_enabled": { "type": "boolean", "_meta": { @@ -261,6 +270,15 @@ }, "alerts": { "properties": { + "has_errors": { + "type": "boolean" + }, + "error_messages": { + "type": "array", + "items": { + "type": "text" + } + }, "count_total": { "type": "long" }, diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/eql/helpers.test.ts b/x-pack/plugins/timelines/server/search_strategy/timeline/eql/helpers.test.ts index 76aba9b9c62cc..fadc295a51a59 100644 --- a/x-pack/plugins/timelines/server/search_strategy/timeline/eql/helpers.test.ts +++ b/x-pack/plugins/timelines/server/search_strategy/timeline/eql/helpers.test.ts @@ -282,6 +282,9 @@ describe('Search Strategy EQL helper', () => { "family": Array [ "windows", ], + "name": Array [ + "Windows", + ], }, }, "message": Array [ @@ -412,6 +415,9 @@ describe('Search Strategy EQL helper', () => { "family": Array [ "windows", ], + "name": Array [ + "Windows", + ], }, }, "message": Array [ @@ -549,6 +555,9 @@ describe('Search Strategy EQL helper', () => { "family": Array [ "windows", ], + "name": Array [ + "Windows", + ], }, }, "message": Array [ @@ -675,6 +684,9 @@ describe('Search Strategy EQL helper', () => { "family": Array [ "windows", ], + "name": Array [ + "Windows", + ], }, }, "message": Array [ diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/constants.ts b/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/constants.ts index fe07732e4731d..b795e921f07cd 100644 --- a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/constants.ts +++ b/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/constants.ts @@ -130,6 +130,7 @@ export const TIMELINE_EVENTS_FIELDS = [ 'file.Ext.code_signature.trusted', 'file.hash.sha256', 'host.os.family', + 'host.os.name', 'host.id', 'host.ip', 'registry.key', diff --git a/x-pack/plugins/transform/public/app/common/validators.test.ts b/x-pack/plugins/transform/public/app/common/validators.test.ts index f48039052d203..324ce7f8255e1 100644 --- a/x-pack/plugins/transform/public/app/common/validators.test.ts +++ b/x-pack/plugins/transform/public/app/common/validators.test.ts @@ -7,6 +7,7 @@ import { continuousModeDelayValidator, + jsonStringValidator, parseDuration, retentionPolicyMaxAgeValidator, transformFrequencyValidator, @@ -137,3 +138,28 @@ describe('transformFrequencyValidator', () => { expect(transformFrequencyValidator('2h')).toBe(false); }); }); + +describe('jsonStringValidator', () => { + it('should return false for non-string input', () => { + expect(jsonStringValidator(false)).toBe(false); + expect(jsonStringValidator(undefined)).toBe(false); + expect(jsonStringValidator(null)).toBe(false); + expect(jsonStringValidator(0)).toBe(false); + expect(jsonStringValidator({})).toBe(false); + }); + + it('should return whether string is parsable as valid json', () => { + expect( + jsonStringValidator(`{ + "must": [], + "must_not": [], + "should": [] + }`) + ).toBe(true); + expect( + jsonStringValidator(`{ + "must":, + }`) + ).toBe(false); + }); +}); diff --git a/x-pack/plugins/transform/public/app/common/validators.ts b/x-pack/plugins/transform/public/app/common/validators.ts index 065a6b4d1c0ca..9f92df3cdcabc 100644 --- a/x-pack/plugins/transform/public/app/common/validators.ts +++ b/x-pack/plugins/transform/public/app/common/validators.ts @@ -127,3 +127,20 @@ export const transformFrequencyValidator = (value: string): boolean => { export function transformSettingsMaxPageSearchSizeValidator(value: number): boolean { return value >= 10 && value <= 10000; } + +/** + * Validates whether string input can be parsed as a valid JSON + * @param value User input value. + */ +export function jsonStringValidator(value: unknown): boolean { + if (typeof value !== 'string') return false; + + try { + return !!JSON.parse(value); + } catch (e) { + // eslint-disable-next-line no-console + console.error(`JSON is invalid.\n${e}`); + return false; + } + return true; +} diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/__snapshots__/agg_label_form.test.tsx.snap b/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/__snapshots__/agg_label_form.test.tsx.snap index 10258f53aa25b..3eabb1a573f8b 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/__snapshots__/agg_label_form.test.tsx.snap +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/aggregation_list/__snapshots__/agg_label_form.test.tsx.snap @@ -26,7 +26,7 @@ exports[`Transform: Date histogram aggregation 1`] = ` button={ = ({ size="s" iconType="pencil" onClick={() => setPopoverVisibility(!isPopoverVisible)} - data-test-subj="transformAggregationEntryEditButton" + data-test-subj={`transformAggregationEntryEditButton_${item.aggName}`} /> } isOpen={isPopoverVisible} diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/editor_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/editor_form.tsx index d8d81d11b4f60..59ded1217f4d6 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/editor_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/editor_form.tsx @@ -6,13 +6,15 @@ */ import React from 'react'; -import { EuiSpacer } from '@elastic/eui'; +import { EuiCallOut, EuiSpacer } from '@elastic/eui'; import { CodeEditor } from '@kbn/kibana-react-plugin/public'; +import { FormattedMessage } from '@kbn/i18n-react'; import { FilterAggConfigEditor } from '../types'; export const FilterEditorForm: FilterAggConfigEditor['aggTypeConfig']['FilterAggFormComponent'] = ({ config, onChange, + isValid, }) => { return ( <> @@ -36,6 +38,17 @@ export const FilterEditorForm: FilterAggConfigEditor['aggTypeConfig']['FilterAgg }} value={config || ''} /> + {isValid === false ? ( + <> + + + + + + ) : null} ); }; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx index 55ecc18863aa5..841fdf1104346 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx @@ -25,7 +25,7 @@ export function getSupportedFilterAggs( fieldName: string, dataView: DataView, runtimeMappings?: RuntimeMappings -): FilterAggType[] { +): FilterAggType[] | undefined { const dataViewField = dataView.fields.getByName(fieldName); if (dataViewField !== undefined) { @@ -39,7 +39,10 @@ export function getSupportedFilterAggs( ]; } - throw new Error(`The field ${fieldName} does not exist in the index or runtime fields`); + // Some aggs like filter boolean might have fields that don't exist + // but we still support it as JSON + // eslint-disable-next-line no-console + console.error(`The field ${fieldName} does not exist in the index or runtime fields`); } /** @@ -67,45 +70,52 @@ export const FilterAggForm: PivotAggsConfigFilter['AggFormComponent'] = ({ const filterAggTypeConfig = aggConfig?.aggTypeConfig; const filterAgg = aggConfig?.filterAgg ?? ''; - + const isValid = filterAggTypeConfig?.isValid ? filterAggTypeConfig?.isValid() : undefined; return ( <> - - - + + + } + > + - } - > - - - - } - > - ({ text: v, value: v })) - )} - value={filterAgg} - onChange={(e) => { - // have to reset aggTypeConfig of filterAgg change - const filterAggUpdate = e.target.value as FilterAggType; - onChange({ - filterAgg: filterAggUpdate, - aggTypeConfig: getFilterAggTypeConfig(filterAggUpdate), - }); - }} - data-test-subj="transformFilterAggTypeSelector" - /> - + + + } + > + ({ text: v, value: v })) + )} + value={filterAgg} + onChange={(e) => { + // have to reset aggTypeConfig of filterAgg change + const filterAggUpdate = e.target.value as FilterAggType; + onChange({ + filterAgg: filterAggUpdate, + aggTypeConfig: getFilterAggTypeConfig(filterAggUpdate), + }); + }} + data-test-subj="transformFilterAggTypeSelector" + /> + + ) : null} {filterAgg !== '' && filterAggTypeConfig?.FilterAggFormComponent && ( )} diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/config.ts b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/config.ts index 543dff6d5cfe4..7003373bb25d7 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/config.ts +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/config.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { jsonStringValidator } from '../../../../../../common/validators'; import { isPivotAggsConfigWithUiSupport, PivotAggsConfigBase, @@ -188,6 +189,9 @@ export function getFilterAggTypeConfig( null, 2 ), + isValid() { + return jsonStringValidator(this.filterAggConfig); + }, getEsAggConfig(fieldName) { return JSON.parse(this.filterAggConfig!); }, @@ -199,6 +203,9 @@ export function getFilterAggTypeConfig( getEsAggConfig() { return this.filterAggConfig !== undefined ? JSON.parse(this.filterAggConfig!) : {}; }, + isValid() { + return jsonStringValidator(this.filterAggConfig); + }, }; } } diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/types.ts b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/types.ts index 6fce1e487a5fd..f7fcf18f76b36 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/types.ts +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/types.ts @@ -18,6 +18,8 @@ type FilterAggForm = FC<{ onChange: (arg: Partial<{ config: Partial }>) => void; /** Selected field for the aggregation */ selectedField?: string; + /** Whether the configuration is valid */ + isValid?: boolean; }>; interface FilterAggTypeConfig { diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index bd439267fb8a8..82ada1663827e 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -5799,7 +5799,6 @@ "unifiedSearch.filter.filterBar.labelErrorText": "Erreur", "unifiedSearch.filter.filterBar.labelWarningInfo": "Le champ {fieldName} n'existe pas dans la vue en cours.", "unifiedSearch.filter.filterBar.labelWarningText": "Avertissement", - "unifiedSearch.filter.filterBar.moreFilterActionsMessage": "Filtre : {innerText}. Sélectionner pour plus d’actions de filtrage.", "unifiedSearch.filter.filterBar.negatedFilterPrefix": "NON ", "unifiedSearch.filter.filterBar.pinFilterButtonLabel": "Épingler dans toutes les applications", "unifiedSearch.filter.filterBar.pinnedFilterPrefix": "Épinglé", @@ -31356,8 +31355,6 @@ "xpack.watcher.models.watchHistoryItem.idPropertyMissingBadRequestMessage": "L'argument JSON doit contenir une propriété {id}", "xpack.watcher.models.watchHistoryItem.watchHistoryItemJsonPropertyMissingBadRequestMessage": "L'argument JSON doit contenir une propriété {watchHistoryItemJson}", "xpack.watcher.models.watchHistoryItem.watchIdPropertyMissingBadRequestMessage": "L'argument JSON doit contenir une propriété {watchId}", - "xpack.watcher.models.watchStatus.idPropertyMissingBadRequestMessage": "L'argument JSON doit contenir une propriété {id}", - "xpack.watcher.models.watchStatus.watchStatusJsonPropertyMissingBadRequestMessage": "L'argument JSON doit contenir une propriété {watchStatusJson}", "xpack.watcher.models.webhookAction.selectMessageText": "Envoyer une requête à un service Web.", "xpack.watcher.models.webhookAction.simulateButtonLabel": "Envoyer la requête", "xpack.watcher.models.webhookAction.simulateFailMessage": "Impossible d'envoyer la requête vers {fullPath}.", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 1ed18a64287a6..f0b52ae8beea7 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -5796,7 +5796,6 @@ "unifiedSearch.filter.filterBar.labelErrorText": "エラー", "unifiedSearch.filter.filterBar.labelWarningInfo": "フィールド{fieldName}は現在のビューに存在しません", "unifiedSearch.filter.filterBar.labelWarningText": "警告", - "unifiedSearch.filter.filterBar.moreFilterActionsMessage": "フィルター:{innerText}。他のフィルターアクションを使用するには選択してください。", "unifiedSearch.filter.filterBar.negatedFilterPrefix": "NOT ", "unifiedSearch.filter.filterBar.pinFilterButtonLabel": "すべてのアプリにピン付け", "unifiedSearch.filter.filterBar.pinnedFilterPrefix": "ピン付け済み", @@ -31432,8 +31431,6 @@ "xpack.watcher.models.watchHistoryItem.idPropertyMissingBadRequestMessage": "json 引数には {id} プロパティが含まれている必要があります", "xpack.watcher.models.watchHistoryItem.watchHistoryItemJsonPropertyMissingBadRequestMessage": "json 引数には {watchHistoryItemJson} プロパティが含まれている必要があります", "xpack.watcher.models.watchHistoryItem.watchIdPropertyMissingBadRequestMessage": "json 引数には {watchId} プロパティが含まれている必要があります", - "xpack.watcher.models.watchStatus.idPropertyMissingBadRequestMessage": "json 引数には {id} プロパティが含まれている必要があります", - "xpack.watcher.models.watchStatus.watchStatusJsonPropertyMissingBadRequestMessage": "json 引数には {watchStatusJson} プロパティが含まれている必要があります", "xpack.watcher.models.webhookAction.selectMessageText": "Web サービスにリクエストを送信してください。", "xpack.watcher.models.webhookAction.simulateButtonLabel": "リクエストの送信", "xpack.watcher.models.webhookAction.simulateFailMessage": "{fullPath} へのリクエストの送信に失敗しました。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 69af29fea4b0a..f90be8e7f1deb 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -5802,7 +5802,6 @@ "unifiedSearch.filter.filterBar.labelErrorText": "错误", "unifiedSearch.filter.filterBar.labelWarningInfo": "当前视图中不存在字段 {fieldName}", "unifiedSearch.filter.filterBar.labelWarningText": "警告", - "unifiedSearch.filter.filterBar.moreFilterActionsMessage": "筛选:{innerText}。选择以获取更多筛选操作。", "unifiedSearch.filter.filterBar.negatedFilterPrefix": "非 ", "unifiedSearch.filter.filterBar.pinFilterButtonLabel": "在所有应用上固定", "unifiedSearch.filter.filterBar.pinnedFilterPrefix": "已置顶", @@ -31461,8 +31460,6 @@ "xpack.watcher.models.watchHistoryItem.idPropertyMissingBadRequestMessage": "JSON 参数必须包含 {id} 属性", "xpack.watcher.models.watchHistoryItem.watchHistoryItemJsonPropertyMissingBadRequestMessage": "JSON 参数必须包含 {watchHistoryItemJson} 属性", "xpack.watcher.models.watchHistoryItem.watchIdPropertyMissingBadRequestMessage": "JSON 参数必须包含 {watchId} 属性", - "xpack.watcher.models.watchStatus.idPropertyMissingBadRequestMessage": "JSON 参数必须包含 {id} 属性", - "xpack.watcher.models.watchStatus.watchStatusJsonPropertyMissingBadRequestMessage": "JSON 参数必须包含 {watchStatusJson} 属性", "xpack.watcher.models.webhookAction.selectMessageText": "将请求发送到 Web 服务。", "xpack.watcher.models.webhookAction.simulateButtonLabel": "发送请求", "xpack.watcher.models.webhookAction.simulateFailMessage": "无法将请求发送至 {fullPath}", diff --git a/x-pack/plugins/triggers_actions_ui/server/data/routes/fields.ts b/x-pack/plugins/triggers_actions_ui/server/data/routes/fields.ts index e2e9b5967305d..e2c4302afe352 100644 --- a/x-pack/plugins/triggers_actions_ui/server/data/routes/fields.ts +++ b/x-pack/plugins/triggers_actions_ui/server/data/routes/fields.ts @@ -138,4 +138,5 @@ const normalizedFieldTypes: Record = { float: 'number', half_float: 'number', scaled_float: 'number', + unsigned_long: 'number', }; diff --git a/x-pack/plugins/watcher/common/lib/get_moment/get_moment.test.js b/x-pack/plugins/watcher/common/lib/get_moment/get_moment.test.ts similarity index 72% rename from x-pack/plugins/watcher/common/lib/get_moment/get_moment.test.js rename to x-pack/plugins/watcher/common/lib/get_moment/get_moment.test.ts index 332e36dead5c9..1128587cb045d 100644 --- a/x-pack/plugins/watcher/common/lib/get_moment/get_moment.test.js +++ b/x-pack/plugins/watcher/common/lib/get_moment/get_moment.test.ts @@ -12,18 +12,11 @@ describe('get_moment', () => { it(`returns a moment object when passed a date`, () => { const moment = getMoment('2017-03-30T14:53:08.121Z'); - expect(moment.constructor.name).toBe('Moment'); + expect(moment?.constructor.name).toBe('Moment'); }); it(`returns null when passed falsy`, () => { - const results = [ - getMoment(false), - getMoment(0), - getMoment(''), - getMoment(null), - getMoment(undefined), - getMoment(NaN), - ]; + const results = [getMoment(''), getMoment(null), getMoment(undefined)]; results.forEach((result) => { expect(result).toBe(null); diff --git a/x-pack/plugins/watcher/common/lib/get_moment/get_moment.js b/x-pack/plugins/watcher/common/lib/get_moment/get_moment.ts similarity index 87% rename from x-pack/plugins/watcher/common/lib/get_moment/get_moment.js rename to x-pack/plugins/watcher/common/lib/get_moment/get_moment.ts index 66472187cd78c..e3f17d5fbfa9f 100644 --- a/x-pack/plugins/watcher/common/lib/get_moment/get_moment.js +++ b/x-pack/plugins/watcher/common/lib/get_moment/get_moment.ts @@ -7,7 +7,7 @@ import moment from 'moment'; -export function getMoment(date) { +export function getMoment(date?: string | null) { if (!date) { return null; } diff --git a/x-pack/plugins/watcher/server/models/action_status_model/index.js b/x-pack/plugins/watcher/common/lib/get_moment/index.ts similarity index 81% rename from x-pack/plugins/watcher/server/models/action_status_model/index.js rename to x-pack/plugins/watcher/common/lib/get_moment/index.ts index 18ceabb0c1dc8..5c352d754d6ed 100644 --- a/x-pack/plugins/watcher/server/models/action_status_model/index.js +++ b/x-pack/plugins/watcher/common/lib/get_moment/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export { ActionStatusModel } from './action_status_model'; +export { getMoment } from './get_moment'; diff --git a/x-pack/plugins/watcher/common/types/index.ts b/x-pack/plugins/watcher/common/types/index.ts new file mode 100644 index 0000000000000..e3aa1f883698b --- /dev/null +++ b/x-pack/plugins/watcher/common/types/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. + */ + +export type { + ActionStatusModelEs, + ServerActionStatusModel, + ClientActionStatusModel, + WatchStatusModelEs, + ServerWatchStatusModel, + ClientWatchStatusModel, +} from './status_types'; diff --git a/x-pack/plugins/watcher/common/types/status_types.ts b/x-pack/plugins/watcher/common/types/status_types.ts new file mode 100644 index 0000000000000..14e8260e703db --- /dev/null +++ b/x-pack/plugins/watcher/common/types/status_types.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 { Moment } from 'moment'; +import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; + +import { ACTION_STATES, WATCH_STATES, WATCH_STATE_COMMENTS } from '../constants'; + +export interface ActionStatusModelEs { + id: string; + actionStatusJson: estypes.WatcherActionStatus; + errors?: any; // TODO: Type this more strictly. + lastCheckedRawFormat?: string; // Date e.g. '2017-03-01T20:55:49.679Z' +} + +export interface ServerActionStatusModel { + id: string; + actionStatusJson: estypes.WatcherActionStatus; + errors: any; // TODO: Type this more strictly. + lastCheckedRawFormat?: string; // Date e.g. '2017-03-01T20:55:49.679Z' + lastExecutionRawFormat?: string; // Date e.g. '2017-03-01T20:55:49.679Z' + isLastExecutionSuccessful?: boolean; + lastExecutionReason?: string; + lastAcknowledged: Moment | null; + lastExecution: Moment | null; + lastThrottled: Moment | null; + lastSuccessfulExecution: Moment | null; +} + +export interface ClientActionStatusModel { + id: string; + lastAcknowledged: Moment | null; + lastThrottled: Moment | null; + lastExecution: Moment | null; + isLastExecutionSuccessful?: boolean; + lastExecutionReason?: string; + lastSuccessfulExecution: Moment | null; + state: keyof typeof ACTION_STATES; + isAckable: boolean; +} + +interface SerializedWatchStatus extends estypes.WatcherActivationStatus { + // Inherited from estypes.WatcherActivationStatus: + // - actions: WatcherActions // Record + // - state: WatcherActivationState // { active, timestamp } + // - version: VersionNumber + last_checked?: string; // Timestamp TODO: Update ES JS client types with this. + last_met_condition?: string; // Timestamp TODO: Update ES JS client types with this. +} + +export interface WatchStatusModelEs { + id: string; + watchStatusJson: SerializedWatchStatus; + state?: estypes.WatcherExecutionStatus; // e.g. 'execution_not_needed' or 'failed' + watchErrors?: { + actions?: Record; // TODO: Type this more strictly. + }; +} + +export interface ServerWatchStatusModel { + id: string; + watchState?: estypes.WatcherExecutionStatus; // e.g. 'execution_not_needed' or 'failed' + watchStatusJson: SerializedWatchStatus; + watchErrors?: WatchStatusModelEs['watchErrors']; + isActive: boolean; + lastChecked: Moment | null; + lastMetCondition: Moment | null; + actionStatuses?: ServerActionStatusModel[]; +} + +export interface ClientWatchStatusModel { + id: string; + isActive: boolean; + lastChecked: Moment | null; + lastMetCondition: Moment | null; + state: keyof typeof WATCH_STATES; + comment: keyof typeof WATCH_STATE_COMMENTS; + lastFired?: Moment | null; + actionStatuses: ClientActionStatusModel[]; +} diff --git a/x-pack/plugins/watcher/public/application/models/action_status/action_status.js b/x-pack/plugins/watcher/public/application/models/action_status/action_status.js index 734e0cf7bdf17..f60b92dc1ab1b 100644 --- a/x-pack/plugins/watcher/public/application/models/action_status/action_status.js +++ b/x-pack/plugins/watcher/public/application/models/action_status/action_status.js @@ -16,7 +16,7 @@ export class ActionStatus { this.lastAcknowledged = getMoment(get(props, 'lastAcknowledged')); this.lastThrottled = getMoment(get(props, 'lastThrottled')); this.lastExecution = getMoment(get(props, 'lastExecution')); - this.lastExecutionSuccessful = get(props, 'lastExecutionSuccessful'); + this.isLastExecutionSuccessful = get(props, 'isLastExecutionSuccessful'); this.lastExecutionReason = get(props, 'lastExecutionReason'); this.lastSuccessfulExecution = getMoment(get(props, 'lastSuccessfulExecution')); diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_accordion.tsx b/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_accordion.tsx index 69fa65ab48645..f162941461ce8 100644 --- a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_accordion.tsx +++ b/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_accordion.tsx @@ -244,7 +244,7 @@ export const WatchActionsAccordion: React.FunctionComponent = ({ (actionItem: ActionType) => actionItem.id === action.id ); - if (actionStatus && actionStatus.lastExecutionSuccessful === false) { + if (actionStatus && actionStatus.isLastExecutionSuccessful === false) { const message = actionStatus.lastExecutionReason || action.simulateFailMessage; return toasts.addDanger(message); } diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.js b/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.js deleted file mode 100644 index e4ef87ab07dd6..0000000000000 --- a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.js +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { get } from 'lodash'; -import { badRequest } from '@hapi/boom'; -import { i18n } from '@kbn/i18n'; - -import { getMoment } from '../../../common/lib/get_moment'; -import { ACTION_STATES } from '../../../common/constants'; - -export class ActionStatusModel { - constructor(props) { - this.id = props.id; - this.actionStatusJson = props.actionStatusJson; - this.errors = props.errors; - this.lastCheckedRawFormat = props.lastCheckedRawFormat; - - this.lastExecutionRawFormat = get(this.actionStatusJson, 'last_execution.timestamp'); - this.lastAcknowledged = getMoment(get(this.actionStatusJson, 'ack.timestamp')); - this.lastExecution = getMoment(get(this.actionStatusJson, 'last_execution.timestamp')); - this.lastExecutionSuccessful = get(this.actionStatusJson, 'last_execution.successful'); - this.lastExecutionReason = get(this.actionStatusJson, 'last_execution.reason'); - this.lastThrottled = getMoment(get(this.actionStatusJson, 'last_throttle.timestamp')); - this.lastSuccessfulExecution = getMoment( - get(this.actionStatusJson, 'last_successful_execution.timestamp') - ); - } - - get state() { - const actionStatusJson = this.actionStatusJson; - const ackState = actionStatusJson.ack.state; - - if ( - this.lastExecutionSuccessful === false && - this.lastCheckedRawFormat === this.lastExecutionRawFormat - ) { - return ACTION_STATES.ERROR; - } - - if (this.errors) { - return ACTION_STATES.CONFIG_ERROR; - } - - if (ackState === 'awaits_successful_execution') { - return ACTION_STATES.OK; - } - - if (ackState === 'acked' && this.lastAcknowledged >= this.lastExecution) { - return ACTION_STATES.ACKNOWLEDGED; - } - - // A user could potentially land in this state if running on multiple nodes and timing is off - if (ackState === 'acked' && this.lastAcknowledged < this.lastExecution) { - return ACTION_STATES.ERROR; - } - - if (ackState === 'ackable' && this.lastThrottled >= this.lastExecution) { - return ACTION_STATES.THROTTLED; - } - - if (ackState === 'ackable' && this.lastSuccessfulExecution >= this.lastExecution) { - return ACTION_STATES.FIRING; - } - - if (ackState === 'ackable' && this.lastSuccessfulExecution < this.lastExecution) { - return ACTION_STATES.ERROR; - } - - // At this point, we cannot determine the action status so mark it as "unknown". - // We should never get to this point in the code. If we do, it means we are - // missing an action status and the logic to determine it. - return ACTION_STATES.UNKNOWN; - } - - get isAckable() { - if (this.state === ACTION_STATES.THROTTLED || this.state === ACTION_STATES.FIRING) { - return true; - } - - return false; - } - - // generate object to send to kibana - get downstreamJson() { - const json = { - id: this.id, - state: this.state, - isAckable: this.isAckable, - lastAcknowledged: this.lastAcknowledged, - lastThrottled: this.lastThrottled, - lastExecution: this.lastExecution, - lastExecutionSuccessful: this.lastExecutionSuccessful, - lastExecutionReason: this.lastExecutionReason, - lastSuccessfulExecution: this.lastSuccessfulExecution, - }; - - return json; - } - - // generate object from elasticsearch response - static fromUpstreamJson(json) { - const missingPropertyError = (missingProperty) => - i18n.translate( - 'xpack.watcher.models.actionStatus.actionStatusJsonPropertyMissingBadRequestMessage', - { - defaultMessage: 'JSON argument must contain an "{missingProperty}" property', - values: { missingProperty }, - } - ); - - if (!json.id) { - throw badRequest(missingPropertyError('id')); - } - - if (!json.actionStatusJson) { - throw badRequest(missingPropertyError('actionStatusJson')); - } - - return new ActionStatusModel(json); - } - - /* - json.actionStatusJson should have the following structure: - { - "ack": { - "timestamp": "2017-03-01T20:56:58.442Z", - "state": "acked" - }, - "last_execution": { - "timestamp": "2017-03-01T20:55:49.679Z", - "successful": true - }, - "last_successful_execution": { - "timestamp": "2017-03-01T20:55:49.679Z", - "successful": true - } - } - */ -} diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.state.test.ts b/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.state.test.ts new file mode 100644 index 0000000000000..d5ee596461b0e --- /dev/null +++ b/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.state.test.ts @@ -0,0 +1,319 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { mergeWith, isObject } from 'lodash'; + +import { ACTION_STATES } from '../../../common/constants'; +import { ActionStatusModelEs } from '../../../common/types'; +import { buildServerActionStatusModel, buildClientActionStatusModel } from './action_status_model'; + +// Treat all nested properties of type as optional. +type DeepPartial = T extends object + ? { + [P in keyof T]?: DeepPartial; + } + : T; + +const createModelWithActions = ( + customActionStatusJson?: DeepPartial, + hasErrors: boolean = false +) => { + // Set srcValue to {} to define an empty property. + const mergeFn = (destValue: any, srcValue: any) => { + if (isObject(srcValue) && Object.keys(srcValue).length === 0) { + return {}; + } + // Default merge behavior. + return undefined; + }; + + const actionStatusJson = mergeWith( + { + ack: { + timestamp: '2017-03-01T20:56:58.442Z', + state: 'acked', + }, + last_successful_execution: { + timestamp: '2017-03-01T20:55:49.679Z', + successful: true, + }, + last_execution: { + timestamp: '2017-03-01T20:55:49.679Z', + successful: true, + reason: 'reasons', + }, + last_throttle: { + timestamp: '2017-03-01T20:55:49.679Z', + reason: 'reasons', + }, + }, + customActionStatusJson, + mergeFn + ); + + const serverActionStatusModel = buildServerActionStatusModel({ + id: 'my-action', + lastCheckedRawFormat: '2017-03-01T20:55:49.679Z', + actionStatusJson, + errors: hasErrors ? { foo: 'bar' } : undefined, + }); + + return buildClientActionStatusModel(serverActionStatusModel); +}; + +// NOTE: It's easier to test states through ActionStatusModel instead of +// testing individual util functions because they require mocked timestamps +// to be Moment instances, whereas ActionStatusModel only requires strings. +describe('ActionStatusModel states', () => { + describe('ACTION_STATES.CONFIG_ERROR', () => { + it('is set when there are errors', () => { + const clientActionStatusModel = createModelWithActions(undefined, true); + expect(clientActionStatusModel.state).toBe(ACTION_STATES.CONFIG_ERROR); + }); + }); + + describe(`ACTION_STATES.ERROR`, () => { + it('is set when isLastExecutionSuccessful is equal to false and it is the most recent execution', () => { + const clientActionStatusModel = createModelWithActions({ + last_execution: { + successful: false, + }, + }); + expect(clientActionStatusModel.state).toBe(ACTION_STATES.ERROR); + }); + + it('is set when action is acked and lastAcknowledged is less than lastExecution', () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'acked', + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_execution: { + timestamp: '2017-03-02T00:00:00.000Z', + successful: true, + reason: 'reasons', + }, + }); + + expect(clientActionStatusModel.state).toBe(ACTION_STATES.ERROR); + }); + + it('is set when action is ackable and lastSuccessfulExecution is less than lastExecution', () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'ackable', + }, + last_successful_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_execution: { + timestamp: '2017-03-02T00:00:00.000Z', + }, + last_throttle: {}, + }); + expect(clientActionStatusModel.state).toBe(ACTION_STATES.ERROR); + }); + + it(`isn't ackable`, () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'ackable', + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_successful_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_execution: { + timestamp: '2017-03-02T00:00:00.000Z', + }, + last_throttle: {}, + }); + + expect(clientActionStatusModel.state).toBe(ACTION_STATES.ERROR); + expect(clientActionStatusModel.isAckable).toBe(false); + }); + }); + + describe(`ACTION_STATES.OK`, () => { + it('is set when state is awaits_successful_execution', () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'awaits_successful_execution', + }, + }); + expect(clientActionStatusModel.state).toBe(ACTION_STATES.OK); + }); + + it(`isn't ackable`, () => { + const clientActionStatusModel = createModelWithActions({ + ack: { state: 'awaits_successful_execution' }, + }); + + expect(clientActionStatusModel.state).toBe(ACTION_STATES.OK); + expect(clientActionStatusModel.isAckable).toBe(false); + }); + }); + + describe(`ACTION_STATES.ACKNOWLEDGED`, () => { + it(`is set when lastAcknowledged is equal to lastExecution`, () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'acked', + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + }); + expect(clientActionStatusModel.state).toBe(ACTION_STATES.ACKNOWLEDGED); + }); + + it(`is set when lastAcknowledged is greater than lastExecution`, () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'acked', + timestamp: '2017-03-02T00:00:00.000Z', + }, + last_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + }); + expect(clientActionStatusModel.state).toBe(ACTION_STATES.ACKNOWLEDGED); + }); + + it(`isn't ackable`, () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'acked', + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + }); + + expect(clientActionStatusModel.state).toBe(ACTION_STATES.ACKNOWLEDGED); + expect(clientActionStatusModel.isAckable).toBe(false); + }); + }); + + describe(`ACTION_STATES.THROTTLED`, () => { + it(`is set when lastThrottled is equal to lastExecution`, () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'ackable', + }, + last_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_throttle: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + }); + expect(clientActionStatusModel.state).toBe(ACTION_STATES.THROTTLED); + }); + + it(`is set when lastThrottled is greater than lastExecution`, () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'ackable', + }, + last_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_throttle: { + timestamp: '2017-03-02T00:00:00.000Z', + }, + }); + expect(clientActionStatusModel.state).toBe(ACTION_STATES.THROTTLED); + }); + + it(`is ackable`, () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'ackable', + }, + last_throttle: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + }); + + expect(clientActionStatusModel.state).toBe(ACTION_STATES.THROTTLED); + expect(clientActionStatusModel.isAckable).toBe(true); + }); + }); + + describe(`ACTION_STATES.FIRING`, () => { + it(`is set when lastSuccessfulExecution is equal to lastExecution`, () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'ackable', + }, + last_successful_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_throttle: {}, + }); + expect(clientActionStatusModel.state).toBe(ACTION_STATES.FIRING); + }); + + it(`is set when lastSuccessfulExecution is greater than lastExecution`, () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'ackable', + }, + last_successful_execution: { + timestamp: '2017-03-02T00:00:00.000Z', + }, + last_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_throttle: {}, + }); + expect(clientActionStatusModel.state).toBe(ACTION_STATES.FIRING); + }); + + it(`is ackable`, () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + state: 'ackable', + }, + last_successful_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_execution: { + timestamp: '2017-03-01T00:00:00.000Z', + }, + last_throttle: {}, + }); + + expect(clientActionStatusModel.state).toBe(ACTION_STATES.FIRING); + expect(clientActionStatusModel.isAckable).toBe(true); + }); + }); + + describe(`ACTION_STATES.UNKNOWN`, () => { + it(`is set if it can't determine the state`, () => { + const clientActionStatusModel = createModelWithActions({ + ack: { + // @ts-ignore + state: 'foo', + }, + last_successful_execution: { + successful: true, + }, + }); + expect(clientActionStatusModel.state).toBe(ACTION_STATES.UNKNOWN); + }); + }); +}); diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.test.js b/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.test.js deleted file mode 100644 index 08cd9e62093a8..0000000000000 --- a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.test.js +++ /dev/null @@ -1,359 +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 moment from 'moment'; - -import { ACTION_STATES } from '../../../common/constants'; -import { ActionStatusModel } from './action_status_model'; - -describe('ActionStatusModel', () => { - describe('fromUpstreamJson factory method', () => { - let upstreamJson; - beforeEach(() => { - upstreamJson = { - id: 'my-action', - actionStatusJson: { - ack: { - timestamp: '2017-03-01T20:56:58.442Z', - state: 'acked', - }, - last_execution: { - timestamp: '2017-03-01T20:55:49.679Z', - successful: true, - reason: 'reasons', - }, - last_throttle: { - timestamp: '2017-03-01T20:55:49.679Z', - }, - last_successful_execution: { - timestamp: '2017-03-01T20:55:49.679Z', - successful: true, - }, - }, - }; - }); - - it(`throws an error if no 'id' property in json`, () => { - delete upstreamJson.id; - expect(() => { - ActionStatusModel.fromUpstreamJson(upstreamJson); - }).toThrow('JSON argument must contain an "id" property'); - }); - - it(`throws an error if no 'actionStatusJson' property in json`, () => { - delete upstreamJson.actionStatusJson; - expect(() => { - ActionStatusModel.fromUpstreamJson(upstreamJson); - }).toThrow('JSON argument must contain an "actionStatusJson" property'); - }); - - it('returns correct ActionStatus instance', () => { - const actionStatus = ActionStatusModel.fromUpstreamJson({ - ...upstreamJson, - errors: { foo: 'bar' }, - }); - - expect(actionStatus.id).toBe(upstreamJson.id); - expect(actionStatus.lastAcknowledged).toEqual( - moment(upstreamJson.actionStatusJson.ack.timestamp) - ); - expect(actionStatus.lastExecution).toEqual( - moment(upstreamJson.actionStatusJson.last_execution.timestamp) - ); - expect(actionStatus.lastExecutionSuccessful).toEqual( - upstreamJson.actionStatusJson.last_execution.successful - ); - expect(actionStatus.lastExecutionReason).toBe( - upstreamJson.actionStatusJson.last_execution.reason - ); - expect(actionStatus.lastThrottled).toEqual( - moment(upstreamJson.actionStatusJson.last_throttle.timestamp) - ); - expect(actionStatus.lastSuccessfulExecution).toEqual( - moment(upstreamJson.actionStatusJson.last_successful_execution.timestamp) - ); - expect(actionStatus.errors).toEqual({ foo: 'bar' }); - }); - }); - - describe('state getter method', () => { - let upstreamJson; - beforeEach(() => { - upstreamJson = { - id: 'my-action', - lastCheckedRawFormat: '2017-03-01T20:55:49.679Z', - actionStatusJson: { - ack: { - timestamp: '2017-03-01T20:56:58.442Z', - state: 'acked', - }, - last_execution: { - timestamp: '2017-03-01T20:55:49.679Z', - successful: true, - reason: 'reasons', - }, - last_throttle: { - timestamp: '2017-03-01T20:55:49.679Z', - }, - last_successful_execution: { - timestamp: '2017-03-01T20:55:49.679Z', - successful: true, - }, - }, - }; - }); - - describe(`correctly calculates ACTION_STATES.ERROR`, () => { - it('lastExecutionSuccessful is equal to false and it is the most recent execution', () => { - upstreamJson.actionStatusJson.last_execution.successful = false; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - expect(actionStatus.state).toBe(ACTION_STATES.ERROR); - }); - - it('action is acked and lastAcknowledged is less than lastExecution', () => { - const actionStatus = ActionStatusModel.fromUpstreamJson({ - ...upstreamJson, - actionStatusJson: { - ack: { - state: 'acked', - timestamp: '2017-03-01T00:00:00.000Z', - }, - last_execution: { - timestamp: '2017-03-02T00:00:00.000Z', - }, - }, - }); - expect(actionStatus.state).toBe(ACTION_STATES.ERROR); - }); - - it('action is ackable and lastSuccessfulExecution is less than lastExecution', () => { - delete upstreamJson.actionStatusJson.last_throttle; - upstreamJson.actionStatusJson.ack.state = 'ackable'; - upstreamJson.actionStatusJson.last_successful_execution.timestamp = - '2017-03-01T00:00:00.000Z'; - upstreamJson.actionStatusJson.last_execution.timestamp = '2017-03-02T00:00:00.000Z'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.ERROR); - }); - }); - - it('correctly calculates ACTION_STATES.CONFIG_ERROR', () => { - const actionStatus = ActionStatusModel.fromUpstreamJson({ - ...upstreamJson, - errors: { foo: 'bar' }, - }); - expect(actionStatus.state).toBe(ACTION_STATES.CONFIG_ERROR); - }); - - it(`correctly calculates ACTION_STATES.OK`, () => { - upstreamJson.actionStatusJson.ack.state = 'awaits_successful_execution'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.OK); - }); - - describe(`correctly calculates ACTION_STATES.ACKNOWLEDGED`, () => { - it(`when lastAcknowledged is equal to lastExecution`, () => { - upstreamJson.actionStatusJson.ack.state = 'acked'; - upstreamJson.actionStatusJson.ack.timestamp = '2017-03-01T00:00:00.000Z'; - upstreamJson.actionStatusJson.last_execution.timestamp = '2017-03-01T00:00:00.000Z'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.ACKNOWLEDGED); - }); - - it(`when lastAcknowledged is greater than lastExecution`, () => { - upstreamJson.actionStatusJson.ack.state = 'acked'; - upstreamJson.actionStatusJson.ack.timestamp = '2017-03-02T00:00:00.000Z'; - upstreamJson.actionStatusJson.last_execution.timestamp = '2017-03-01T00:00:00.000Z'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.ACKNOWLEDGED); - }); - }); - - describe(`correctly calculates ACTION_STATES.THROTTLED`, () => { - it(`when lastThrottled is equal to lastExecution`, () => { - upstreamJson.actionStatusJson.ack.state = 'ackable'; - upstreamJson.actionStatusJson.last_throttle.timestamp = '2017-03-01T00:00:00.000Z'; - upstreamJson.actionStatusJson.last_execution.timestamp = '2017-03-01T00:00:00.000Z'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.THROTTLED); - }); - - it(`when lastThrottled is greater than lastExecution`, () => { - upstreamJson.actionStatusJson.ack.state = 'ackable'; - upstreamJson.actionStatusJson.last_throttle.timestamp = '2017-03-02T00:00:00.000Z'; - upstreamJson.actionStatusJson.last_execution.timestamp = '2017-03-01T00:00:00.000Z'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.THROTTLED); - }); - }); - - describe(`correctly calculates ACTION_STATES.FIRING`, () => { - it(`when lastSuccessfulExecution is equal to lastExecution`, () => { - delete upstreamJson.actionStatusJson.last_throttle; - upstreamJson.actionStatusJson.ack.state = 'ackable'; - upstreamJson.actionStatusJson.last_successful_execution.timestamp = - '2017-03-01T00:00:00.000Z'; - upstreamJson.actionStatusJson.last_execution.timestamp = '2017-03-01T00:00:00.000Z'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.FIRING); - }); - - it(`when lastSuccessfulExecution is greater than lastExecution`, () => { - delete upstreamJson.actionStatusJson.last_throttle; - upstreamJson.actionStatusJson.ack.state = 'ackable'; - upstreamJson.actionStatusJson.last_successful_execution.timestamp = - '2017-03-02T00:00:00.000Z'; - upstreamJson.actionStatusJson.last_execution.timestamp = '2017-03-01T00:00:00.000Z'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.FIRING); - }); - }); - - it(`correctly calculates ACTION_STATES.UNKNOWN if it can not determine state`, () => { - upstreamJson = { - id: 'my-action', - actionStatusJson: { - ack: { state: 'foo' }, - last_successful_execution: { successful: true }, - }, - }; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.UNKNOWN); - }); - }); - - describe('isAckable getter method', () => { - let upstreamJson; - beforeEach(() => { - upstreamJson = { - id: 'my-action', - actionStatusJson: { - ack: { - timestamp: '2017-03-01T20:56:58.442Z', - state: 'acked', - }, - last_execution: { - timestamp: '2017-03-01T20:55:49.679Z', - successful: true, - reason: 'reasons', - }, - last_throttle: { - timestamp: '2017-03-01T20:55:49.679Z', - }, - last_successful_execution: { - timestamp: '2017-03-01T20:55:49.679Z', - successful: true, - }, - }, - }; - }); - - it(`correctly calculated isAckable when in ACTION_STATES.OK`, () => { - upstreamJson.actionStatusJson.ack.state = 'awaits_successful_execution'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.OK); - expect(actionStatus.isAckable).toBe(false); - }); - - it(`correctly calculated isAckable when in ACTION_STATES.ACKNOWLEDGED`, () => { - upstreamJson.actionStatusJson.ack.state = 'acked'; - upstreamJson.actionStatusJson.ack.timestamp = '2017-03-01T00:00:00.000Z'; - upstreamJson.actionStatusJson.last_execution.timestamp = '2017-03-01T00:00:00.000Z'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.ACKNOWLEDGED); - expect(actionStatus.isAckable).toBe(false); - }); - - it(`correctly calculated isAckable when in ACTION_STATES.THROTTLED`, () => { - upstreamJson.actionStatusJson.ack.state = 'ackable'; - upstreamJson.actionStatusJson.last_throttle.timestamp = '2017-03-01T00:00:00.000Z'; - upstreamJson.actionStatusJson.last_execution.timestamp = '2017-03-01T00:00:00.000Z'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.THROTTLED); - expect(actionStatus.isAckable).toBe(true); - }); - - it(`correctly calculated isAckable when in ACTION_STATES.FIRING`, () => { - delete upstreamJson.actionStatusJson.last_throttle; - upstreamJson.actionStatusJson.ack.state = 'ackable'; - upstreamJson.actionStatusJson.last_successful_execution.timestamp = - '2017-03-01T00:00:00.000Z'; - upstreamJson.actionStatusJson.last_execution.timestamp = '2017-03-01T00:00:00.000Z'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.FIRING); - expect(actionStatus.isAckable).toBe(true); - }); - - it(`correctly calculated isAckable when in ACTION_STATES.ERROR`, () => { - delete upstreamJson.actionStatusJson.last_throttle; - upstreamJson.actionStatusJson.ack.state = 'ackable'; - upstreamJson.actionStatusJson.last_successful_execution.timestamp = - '2017-03-01T00:00:00.000Z'; - upstreamJson.actionStatusJson.last_execution.timestamp = '2017-03-02T00:00:00.000Z'; - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - expect(actionStatus.state).toBe(ACTION_STATES.ERROR); - expect(actionStatus.isAckable).toBe(false); - }); - }); - - describe('downstreamJson getter method', () => { - let upstreamJson; - beforeEach(() => { - upstreamJson = { - id: 'my-action', - actionStatusJson: { - ack: { - timestamp: '2017-03-01T20:56:58.442Z', - state: 'acked', - }, - last_execution: { - timestamp: '2017-03-01T20:55:49.679Z', - successful: true, - reason: 'reasons', - }, - last_throttle: { - timestamp: '2017-03-01T20:55:49.679Z', - }, - last_successful_execution: { - timestamp: '2017-03-01T20:55:49.679Z', - successful: true, - }, - }, - }; - }); - - it('returns correct JSON for client', () => { - const actionStatus = ActionStatusModel.fromUpstreamJson(upstreamJson); - - const json = actionStatus.downstreamJson; - - expect(json.id).toBe(actionStatus.id); - expect(json.state).toBe(actionStatus.state); - expect(json.isAckable).toBe(actionStatus.isAckable); - expect(json.lastAcknowledged).toBe(actionStatus.lastAcknowledged); - expect(json.lastThrottled).toBe(actionStatus.lastThrottled); - expect(json.lastExecution).toBe(actionStatus.lastExecution); - expect(json.lastExecutionSuccessful).toBe(actionStatus.lastExecutionSuccessful); - expect(json.lastExecutionReason).toBe(actionStatus.lastExecutionReason); - expect(json.lastSuccessfulExecution).toBe(actionStatus.lastSuccessfulExecution); - }); - }); -}); diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.test.ts b/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.test.ts new file mode 100644 index 0000000000000..1d61385c46dd5 --- /dev/null +++ b/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.test.ts @@ -0,0 +1,142 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 moment from 'moment'; + +import { ACTION_STATES } from '../../../common/constants'; +import { ActionStatusModelEs } from '../../../common/types'; +import { buildServerActionStatusModel, buildClientActionStatusModel } from './action_status_model'; + +describe('ActionStatusModel', () => { + describe('buildServerActionStatusModel', () => { + let upstreamJson: ActionStatusModelEs; + beforeEach(() => { + upstreamJson = { + id: 'my-action', + lastCheckedRawFormat: '2017-03-01T20:55:49.679Z', + actionStatusJson: { + ack: { + timestamp: '2017-03-01T20:56:58.442Z', + state: 'acked', + }, + last_execution: { + timestamp: '2017-03-01T20:55:49.679Z', + successful: true, + reason: 'reasons', + }, + last_throttle: { + timestamp: '2017-03-01T20:55:49.679Z', + reason: 'reasons', + }, + last_successful_execution: { + timestamp: '2017-03-01T20:55:49.679Z', + successful: true, + }, + }, + }; + }); + + // TODO: Remove once all consumers and upstream dependencies are converted to TS. + it(`throws an error if no 'id' property in json`, () => { + expect(() => { + // @ts-ignore + buildServerActionStatusModel({}); + }).toThrow('JSON argument must contain an "id" property'); + }); + + // TODO: Remove once all consumers and upstream dependencies are converted to TS. + it(`throws an error if no 'actionStatusJson' property in json`, () => { + expect(() => { + // @ts-ignore + buildServerActionStatusModel({ id: 'test' }); + }).toThrow('JSON argument must contain an "actionStatusJson" property'); + }); + + it('returns correct ActionStatus instance', () => { + const serverActionStatusModel = buildServerActionStatusModel({ + ...upstreamJson, + errors: { foo: 'bar' }, + }); + + expect(serverActionStatusModel.id).toBe(upstreamJson.id); + expect(serverActionStatusModel.lastAcknowledged).toEqual( + moment(upstreamJson.actionStatusJson.ack.timestamp) + ); + expect(serverActionStatusModel.lastExecution).toEqual( + moment(upstreamJson.actionStatusJson.last_execution?.timestamp) + ); + expect(serverActionStatusModel.isLastExecutionSuccessful).toEqual( + upstreamJson.actionStatusJson.last_execution?.successful + ); + expect(serverActionStatusModel.lastExecutionReason).toBe( + upstreamJson.actionStatusJson.last_execution?.reason + ); + expect(serverActionStatusModel.lastThrottled).toEqual( + moment(upstreamJson.actionStatusJson.last_throttle?.timestamp) + ); + expect(serverActionStatusModel.lastSuccessfulExecution).toEqual( + moment(upstreamJson.actionStatusJson.last_successful_execution?.timestamp) + ); + expect(serverActionStatusModel.errors).toEqual({ foo: 'bar' }); + }); + }); + + describe('buildClientActionStatusModel', () => { + let upstreamJson: ActionStatusModelEs; + beforeEach(() => { + upstreamJson = { + id: 'my-action', + lastCheckedRawFormat: '2017-03-01T20:55:49.679Z', + actionStatusJson: { + ack: { + timestamp: '2017-03-01T20:56:58.442Z', + state: 'acked', + }, + last_execution: { + timestamp: '2017-03-01T20:55:49.679Z', + successful: true, + reason: 'reasons', + }, + last_throttle: { + timestamp: '2017-03-01T20:55:49.679Z', + reason: 'reasons', + }, + last_successful_execution: { + timestamp: '2017-03-01T20:55:49.679Z', + successful: true, + }, + }, + }; + }); + + it('returns correct JSON for client', () => { + const serverActionStatusModel = buildServerActionStatusModel(upstreamJson); + const clientActionStatusModel = buildClientActionStatusModel(serverActionStatusModel); + + // These properties should be transcribed 1:1. + expect(clientActionStatusModel.id).toBe(serverActionStatusModel.id); + expect(clientActionStatusModel.lastAcknowledged).toBe( + serverActionStatusModel.lastAcknowledged + ); + expect(clientActionStatusModel.lastThrottled).toBe(serverActionStatusModel.lastThrottled); + expect(clientActionStatusModel.lastExecution).toBe(serverActionStatusModel.lastExecution); + expect(clientActionStatusModel.isLastExecutionSuccessful).toBe( + serverActionStatusModel.isLastExecutionSuccessful + ); + expect(clientActionStatusModel.lastExecutionReason).toBe( + serverActionStatusModel.lastExecutionReason + ); + expect(clientActionStatusModel.lastSuccessfulExecution).toBe( + serverActionStatusModel.lastSuccessfulExecution + ); + + // These properties are derived when clientActionStatusModel is created. + expect(clientActionStatusModel.state).toBe(ACTION_STATES.ACKNOWLEDGED); + expect(clientActionStatusModel.isAckable).toBe(false); + }); + }); +}); diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.ts b/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.ts new file mode 100644 index 0000000000000..da337e4b17748 --- /dev/null +++ b/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.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 { badRequest } from '@hapi/boom'; +import { i18n } from '@kbn/i18n'; + +import { ActionStatusModelEs, ServerActionStatusModel } from '../../../common/types'; +import { getMoment } from '../../../common/lib/get_moment'; +import { deriveState, deriveIsAckable } from './action_status_model_utils'; + +export const buildServerActionStatusModel = ( + actionStatusModelEs: ActionStatusModelEs +): ServerActionStatusModel => { + const { id, actionStatusJson, errors, lastCheckedRawFormat } = actionStatusModelEs; + + const missingPropertyError = (missingProperty: string) => + i18n.translate( + 'xpack.watcher.models.actionStatus.actionStatusJsonPropertyMissingBadRequestMessage', + { + defaultMessage: 'JSON argument must contain an "{missingProperty}" property', + values: { missingProperty }, + } + ); + + // TODO: Remove once all consumers and upstream dependencies are converted to TS. + if (!id) { + throw badRequest(missingPropertyError('id')); + } + + // TODO: Remove once all consumers and upstream dependencies are converted to TS. + if (!actionStatusJson) { + throw badRequest(missingPropertyError('actionStatusJson')); + } + + return { + id, + actionStatusJson, + errors, + lastCheckedRawFormat, + lastExecutionRawFormat: actionStatusJson.last_execution?.timestamp, + lastAcknowledged: getMoment(actionStatusJson.ack.timestamp), + lastExecution: getMoment(actionStatusJson.last_execution?.timestamp), + isLastExecutionSuccessful: actionStatusJson.last_execution?.successful, + lastExecutionReason: actionStatusJson.last_execution?.reason, + lastThrottled: getMoment(actionStatusJson.last_throttle?.timestamp), + lastSuccessfulExecution: getMoment(actionStatusJson.last_successful_execution?.timestamp), + }; +}; + +export const buildClientActionStatusModel = (serverActionStatusModel: ServerActionStatusModel) => { + const { + id, + lastAcknowledged, + lastThrottled, + lastExecution, + isLastExecutionSuccessful, + lastExecutionReason, + lastSuccessfulExecution, + } = serverActionStatusModel; + const state = deriveState(serverActionStatusModel); + const isAckable = deriveIsAckable(state); + + return { + id, + lastAcknowledged, + lastThrottled, + lastExecution, + isLastExecutionSuccessful, + lastExecutionReason, + lastSuccessfulExecution, + state, + isAckable, + }; +}; diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model_utils.ts b/x-pack/plugins/watcher/server/models/action_status_model/action_status_model_utils.ts new file mode 100644 index 0000000000000..5c6089132d680 --- /dev/null +++ b/x-pack/plugins/watcher/server/models/action_status_model/action_status_model_utils.ts @@ -0,0 +1,82 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ACTION_STATES } from '../../../common/constants'; +import { ServerActionStatusModel } from '../../../common/types'; + +export const deriveState = (serverActionStatusModel: ServerActionStatusModel) => { + const { + actionStatusJson, + isLastExecutionSuccessful, + lastCheckedRawFormat, + lastExecutionRawFormat, + errors, + lastAcknowledged, + lastExecution, + lastThrottled, + lastSuccessfulExecution, + } = serverActionStatusModel; + const ackState = actionStatusJson.ack.state; + + if (isLastExecutionSuccessful === false && lastCheckedRawFormat === lastExecutionRawFormat) { + return ACTION_STATES.ERROR; + } + + if (errors) { + return ACTION_STATES.CONFIG_ERROR; + } + + if (ackState === 'awaits_successful_execution') { + return ACTION_STATES.OK; + } + + if (lastExecution) { + // Might be null + if (lastAcknowledged) { + // Might be null + if (ackState === 'acked' && lastAcknowledged >= lastExecution) { + return ACTION_STATES.ACKNOWLEDGED; + } + + // A user could potentially land in this state if running on multiple nodes and timing is off + if (ackState === 'acked' && lastAcknowledged < lastExecution) { + return ACTION_STATES.ERROR; + } + } + + if (lastThrottled) { + // Might be null + if (ackState === 'ackable' && lastThrottled >= lastExecution) { + return ACTION_STATES.THROTTLED; + } + } + + if (lastSuccessfulExecution) { + // Might be null + if (ackState === 'ackable' && lastSuccessfulExecution >= lastExecution) { + return ACTION_STATES.FIRING; + } + + if (ackState === 'ackable' && lastSuccessfulExecution < lastExecution) { + return ACTION_STATES.ERROR; + } + } + } + + // At this point, we cannot determine the action status so mark it as "unknown". + // We should never get to this point in the code. If we do, it means we are + // missing an action status and the logic to determine it. + return ACTION_STATES.UNKNOWN; +}; + +export const deriveIsAckable = (state: keyof typeof ACTION_STATES) => { + if (state === ACTION_STATES.THROTTLED || state === ACTION_STATES.FIRING) { + return true; + } + + return false; +}; diff --git a/x-pack/plugins/watcher/server/models/action_status_model/index.ts b/x-pack/plugins/watcher/server/models/action_status_model/index.ts new file mode 100644 index 0000000000000..5fe626031b901 --- /dev/null +++ b/x-pack/plugins/watcher/server/models/action_status_model/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { buildServerActionStatusModel, buildClientActionStatusModel } from './action_status_model'; diff --git a/x-pack/plugins/watcher/server/models/watch/base_watch.js b/x-pack/plugins/watcher/server/models/watch/base_watch.js index 053b03e7f3931..3a2d09486cf8c 100644 --- a/x-pack/plugins/watcher/server/models/watch/base_watch.js +++ b/x-pack/plugins/watcher/server/models/watch/base_watch.js @@ -10,7 +10,7 @@ import { badRequest } from '@hapi/boom'; import { i18n } from '@kbn/i18n'; import { Action } from '../../../common/models/action'; -import { WatchStatusModel } from '../watch_status_model'; +import { buildServerWatchStatusModel, buildClientWatchStatusModel } from '../watch_status_model'; import { WatchErrors } from '../watch_errors'; export class BaseWatch { @@ -60,7 +60,7 @@ export class BaseWatch { name: this.name, type: this.type, isSystemWatch: this.isSystemWatch, - watchStatus: this.watchStatus ? this.watchStatus.downstreamJson : undefined, + watchStatus: this.watchStatus ? buildClientWatchStatusModel(this.watchStatus) : undefined, watchErrors: this.watchErrors ? this.watchErrors.downstreamJson : undefined, actions: map(this.actions, (action) => action.downstreamJson), }; @@ -138,7 +138,7 @@ export class BaseWatch { const watchErrors = WatchErrors.fromUpstreamJson(this.getWatchErrors(actions)); - const watchStatus = WatchStatusModel.fromUpstreamJson({ + const watchStatus = buildServerWatchStatusModel({ id, watchStatusJson, watchErrors, diff --git a/x-pack/plugins/watcher/server/models/watch/base_watch.test.js b/x-pack/plugins/watcher/server/models/watch/base_watch.test.js index 17ad6c5afb986..18837e6fc860c 100644 --- a/x-pack/plugins/watcher/server/models/watch/base_watch.test.js +++ b/x-pack/plugins/watcher/server/models/watch/base_watch.test.js @@ -5,6 +5,7 @@ * 2.0. */ +import { buildClientWatchStatusModel } from '../watch_status_model'; import { BaseWatch } from './base_watch'; describe('BaseWatch', () => { @@ -160,7 +161,7 @@ describe('BaseWatch', () => { name: props.name, type: props.type, isSystemWatch: false, - watchStatus: props.watchStatus.downstreamJson, + watchStatus: buildClientWatchStatusModel(props.watchStatus), watchErrors: props.watchErrors.downstreamJson, actions: props.actions.map((a) => a.downstreamJson), }; diff --git a/x-pack/plugins/watcher/server/models/watch/json_watch.test.js b/x-pack/plugins/watcher/server/models/watch/json_watch.test.js index 4ddc4faf7a511..397bfddb095ab 100644 --- a/x-pack/plugins/watcher/server/models/watch/json_watch.test.js +++ b/x-pack/plugins/watcher/server/models/watch/json_watch.test.js @@ -80,7 +80,7 @@ describe('JsonWatch', () => { beforeEach(() => { upstreamJson = { id: 'id', - watchStatusJson: {}, + watchStatusJson: { state: { active: true } }, watchJson: { trigger: 'trigger', input: 'input', diff --git a/x-pack/plugins/watcher/server/models/watch/monitoring_watch.test.js b/x-pack/plugins/watcher/server/models/watch/monitoring_watch.test.js index 0e31588279184..e642dab5a4d0c 100644 --- a/x-pack/plugins/watcher/server/models/watch/monitoring_watch.test.js +++ b/x-pack/plugins/watcher/server/models/watch/monitoring_watch.test.js @@ -89,7 +89,7 @@ describe('MonitoringWatch', () => { const actual = MonitoringWatch.fromUpstreamJson({ id: 'id', watchJson: {}, - watchStatusJson: {}, + watchStatusJson: { state: { active: true } }, }); const expected = { diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/threshold_watch.test.js b/x-pack/plugins/watcher/server/models/watch/threshold_watch/threshold_watch.test.js index f56d6624a8546..f581135b4decc 100644 --- a/x-pack/plugins/watcher/server/models/watch/threshold_watch/threshold_watch.test.js +++ b/x-pack/plugins/watcher/server/models/watch/threshold_watch/threshold_watch.test.js @@ -137,7 +137,7 @@ describe('ThresholdWatch', () => { beforeEach(() => { upstreamJson = { id: 'id', - watchStatusJson: {}, + watchStatusJson: { state: { active: true } }, watchJson: { foo: { bar: 'baz' }, metadata: { diff --git a/x-pack/plugins/watcher/server/models/watch/watch.test.js b/x-pack/plugins/watcher/server/models/watch/watch.test.js index 09cfeda338f37..999a3d3006e34 100644 --- a/x-pack/plugins/watcher/server/models/watch/watch.test.js +++ b/x-pack/plugins/watcher/server/models/watch/watch.test.js @@ -57,7 +57,7 @@ describe('Watch', () => { it('JsonWatch to be used when type is WATCH_TYPES.JSON', () => { const config = { id: 'id', - watchStatusJson: {}, + watchStatusJson: { state: { active: true } }, watchJson: { metadata: { xpack: { type: WATCH_TYPES.JSON } } }, }; expect(Watch.fromUpstreamJson(config)).toEqual(JsonWatch.fromUpstreamJson(config)); @@ -66,7 +66,7 @@ describe('Watch', () => { it('ThresholdWatch to be used when type is WATCH_TYPES.THRESHOLD', () => { const config = { id: 'id', - watchStatusJson: {}, + watchStatusJson: { state: { active: true } }, watchJson: { metadata: { watcherui: {}, xpack: { type: WATCH_TYPES.THRESHOLD } } }, }; expect(Watch.fromUpstreamJson(config)).toEqual(ThresholdWatch.fromUpstreamJson(config)); @@ -75,7 +75,7 @@ describe('Watch', () => { it('MonitoringWatch to be used when type is WATCH_TYPES.MONITORING', () => { const config = { id: 'id', - watchStatusJson: {}, + watchStatusJson: { state: { active: true } }, watchJson: { metadata: { xpack: { type: WATCH_TYPES.MONITORING } } }, }; expect(Watch.fromUpstreamJson(config)).toEqual(MonitoringWatch.fromUpstreamJson(config)); diff --git a/x-pack/plugins/watcher/server/models/watch_history_item/watch_history_item.js b/x-pack/plugins/watcher/server/models/watch_history_item/watch_history_item.js index a343dcfe72907..d1ddc12df2682 100644 --- a/x-pack/plugins/watcher/server/models/watch_history_item/watch_history_item.js +++ b/x-pack/plugins/watcher/server/models/watch_history_item/watch_history_item.js @@ -10,7 +10,7 @@ import { get, cloneDeep } from 'lodash'; import { i18n } from '@kbn/i18n'; import { getMoment } from '../../../common/lib/get_moment'; -import { WatchStatusModel } from '../watch_status_model'; +import { buildServerWatchStatusModel, buildClientWatchStatusModel } from '../watch_status_model'; export class WatchHistoryItem { constructor(props) { @@ -24,7 +24,7 @@ export class WatchHistoryItem { const watchStatusJson = get(this.watchHistoryItemJson, 'status'); const state = get(this.watchHistoryItemJson, 'state'); - this.watchStatus = WatchStatusModel.fromUpstreamJson({ + this.watchStatus = buildServerWatchStatusModel({ id: this.watchId, watchStatusJson, state, @@ -37,7 +37,7 @@ export class WatchHistoryItem { watchId: this.watchId, details: this.includeDetails ? this.details : null, startTime: this.startTime.toISOString(), - watchStatus: this.watchStatus.downstreamJson, + watchStatus: buildClientWatchStatusModel(this.watchStatus), }; } diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/index.ts b/x-pack/plugins/watcher/server/models/watch_status_model/index.ts new file mode 100644 index 0000000000000..e38fa42aeaeb8 --- /dev/null +++ b/x-pack/plugins/watcher/server/models/watch_status_model/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { buildServerWatchStatusModel, buildClientWatchStatusModel } from './watch_status_model'; diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.js b/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.js deleted file mode 100644 index c0b38c429a1f6..0000000000000 --- a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.js +++ /dev/null @@ -1,203 +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 { get, map, forEach, maxBy } from 'lodash'; -import { badRequest } from '@hapi/boom'; -import { i18n } from '@kbn/i18n'; - -import { ACTION_STATES, WATCH_STATES, WATCH_STATE_COMMENTS } from '../../../common/constants'; -import { getMoment } from '../../../common/lib/get_moment'; -import { ActionStatusModel } from '../action_status_model'; - -function getActionStatusTotals(watchStatus) { - const result = {}; - - forEach(ACTION_STATES, (state) => { - result[state] = 0; - }); - forEach(watchStatus.actionStatuses, (actionStatus) => { - result[actionStatus.state] = result[actionStatus.state] + 1; - }); - - return result; -} - -const WATCH_STATE_FAILED = 'failed'; - -export class WatchStatusModel { - constructor(props) { - this.id = props.id; - this.watchState = props.state; - this.watchStatusJson = props.watchStatusJson; - this.watchErrors = props.watchErrors || {}; - - this.isActive = Boolean(get(this.watchStatusJson, 'state.active')); - this.lastChecked = getMoment(get(this.watchStatusJson, 'last_checked')); - this.lastMetCondition = getMoment(get(this.watchStatusJson, 'last_met_condition')); - - const actionStatusesJson = get(this.watchStatusJson, 'actions', {}); - this.actionStatuses = map(actionStatusesJson, (actionStatusJson, id) => { - const json = { - id, - actionStatusJson, - errors: this.watchErrors.actions && this.watchErrors.actions[id], - lastCheckedRawFormat: get(this.watchStatusJson, 'last_checked'), - }; - return ActionStatusModel.fromUpstreamJson(json); - }); - } - - get state() { - if (!this.isActive) { - return WATCH_STATES.DISABLED; - } - - if (this.watchState === WATCH_STATE_FAILED) { - return WATCH_STATES.ERROR; - } - - const totals = getActionStatusTotals(this); - - if (totals[ACTION_STATES.ERROR] > 0) { - return WATCH_STATES.ERROR; - } - - if (totals[ACTION_STATES.CONFIG_ERROR] > 0) { - return WATCH_STATES.CONFIG_ERROR; - } - - const firingTotal = - totals[ACTION_STATES.FIRING] + - totals[ACTION_STATES.ACKNOWLEDGED] + - totals[ACTION_STATES.THROTTLED]; - - if (firingTotal > 0) { - return WATCH_STATES.FIRING; - } - - return WATCH_STATES.OK; - } - - get comment() { - const totals = getActionStatusTotals(this); - const totalActions = this.actionStatuses.length; - let result = WATCH_STATE_COMMENTS.OK; - - if (totals[ACTION_STATES.THROTTLED] > 0 && totals[ACTION_STATES.THROTTLED] < totalActions) { - result = WATCH_STATE_COMMENTS.PARTIALLY_THROTTLED; - } - - if (totals[ACTION_STATES.THROTTLED] > 0 && totals[ACTION_STATES.THROTTLED] === totalActions) { - result = WATCH_STATE_COMMENTS.THROTTLED; - } - - if ( - totals[ACTION_STATES.ACKNOWLEDGED] > 0 && - totals[ACTION_STATES.ACKNOWLEDGED] < totalActions - ) { - result = WATCH_STATE_COMMENTS.PARTIALLY_ACKNOWLEDGED; - } - - if ( - totals[ACTION_STATES.ACKNOWLEDGED] > 0 && - totals[ACTION_STATES.ACKNOWLEDGED] === totalActions - ) { - result = WATCH_STATE_COMMENTS.ACKNOWLEDGED; - } - - if (totals[ACTION_STATES.ERROR] > 0) { - result = WATCH_STATE_COMMENTS.FAILING; - } - - if (!this.isActive) { - result = WATCH_STATE_COMMENTS.OK; - } - - return result; - } - - get lastFired() { - const actionStatus = maxBy(this.actionStatuses, 'lastExecution'); - if (actionStatus) { - return actionStatus.lastExecution; - } - } - - // generate object to send to kibana - get downstreamJson() { - const json = { - id: this.id, - state: this.state, - comment: this.comment, - isActive: this.isActive, - lastChecked: this.lastChecked, - lastMetCondition: this.lastMetCondition, - lastFired: this.lastFired, - actionStatuses: map(this.actionStatuses, (actionStatus) => actionStatus.downstreamJson), - }; - - return json; - } - - // generate object from elasticsearch response - static fromUpstreamJson(json) { - if (!json.id) { - throw badRequest( - i18n.translate('xpack.watcher.models.watchStatus.idPropertyMissingBadRequestMessage', { - defaultMessage: 'JSON argument must contain an {id} property', - values: { - id: 'id', - }, - }) - ); - } - if (!json.watchStatusJson) { - throw badRequest( - i18n.translate( - 'xpack.watcher.models.watchStatus.watchStatusJsonPropertyMissingBadRequestMessage', - { - defaultMessage: 'JSON argument must contain a {watchStatusJson} property', - values: { - watchStatusJson: 'watchStatusJson', - }, - } - ) - ); - } - - return new WatchStatusModel(json); - } - - /* - json.watchStatusJson should have the following structure: - { - "state": { - "active": true, - "timestamp": "2017-03-01T19:05:49.400Z" - }, - "actions": { - "log-me-something": { - "ack": { - "timestamp": "2017-03-01T20:56:58.442Z", - "state": "acked" - }, - "last_execution": { - "timestamp": "2017-03-01T20:55:49.679Z", - "successful": true - }, - "last_successful_execution": { - "timestamp": "2017-03-01T20:55:49.679Z", - "successful": true - } - } - }, - "version": 15, - "last_checked": "2017-03-02T14:25:31.139Z", - "last_met_condition": "2017-03-02T14:25:31.139Z" - } - */ -} diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.test.js b/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.test.js deleted file mode 100644 index 5dbb3a58d2740..0000000000000 --- a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.test.js +++ /dev/null @@ -1,313 +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 moment from 'moment'; - -import { ACTION_STATES, WATCH_STATES, WATCH_STATE_COMMENTS } from '../../../common/constants'; -import { WatchStatusModel } from './watch_status_model'; - -describe('WatchStatusModel', () => { - describe('fromUpstreamJson factory method', () => { - let upstreamJson; - beforeEach(() => { - upstreamJson = { - id: 'my-watch', - watchStatusJson: { - state: { - active: true, - }, - last_checked: '2017-03-02T14:25:31.139Z', - last_met_condition: '2017-07-05T14:25:31.139Z', - actions: { - foo: {}, - bar: {}, - }, - }, - }; - }); - - it(`throws an error if no 'id' property in json`, () => { - delete upstreamJson.id; - expect(() => { - WatchStatusModel.fromUpstreamJson(upstreamJson); - }).toThrow(/must contain an id property/i); - }); - - it(`throws an error if no 'watchStatusJson' property in json`, () => { - delete upstreamJson.watchStatusJson; - expect(() => { - WatchStatusModel.fromUpstreamJson(upstreamJson); - }).toThrow(/must contain a watchStatusJson property/i); - }); - - it('returns correct WatchStatus instance', () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - - expect(watchStatus.id).toBe(upstreamJson.id); - expect(watchStatus.watchStatusJson).toEqual(upstreamJson.watchStatusJson); - expect(watchStatus.isActive).toEqual(true); - expect(watchStatus.lastChecked).toEqual(moment(upstreamJson.watchStatusJson.last_checked)); - expect(watchStatus.lastMetCondition).toEqual( - moment(upstreamJson.watchStatusJson.last_met_condition) - ); - expect(watchStatus.actionStatuses.length).toBe(2); - - expect(watchStatus.actionStatuses[0].constructor.name).toBe('ActionStatusModel'); - expect(watchStatus.actionStatuses[1].constructor.name).toBe('ActionStatusModel'); - }); - }); - - describe('lastFired getter method', () => { - let upstreamJson; - beforeEach(() => { - upstreamJson = { - id: 'my-watch', - watchStatusJson: { - actions: { - foo: { - last_execution: { - timestamp: '2017-07-05T00:00:00.000Z', - }, - }, - bar: { - last_execution: { - timestamp: '2025-07-05T00:00:00.000Z', - }, - }, - baz: {}, - }, - }, - }; - }); - - it(`returns the latest lastExecution from it's actions`, () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - expect(watchStatus.lastFired).toEqual( - moment(upstreamJson.watchStatusJson.actions.bar.last_execution.timestamp) - ); - }); - }); - - describe('comment getter method', () => { - let upstreamJson; - beforeEach(() => { - upstreamJson = { - id: 'my-watch', - watchStatusJson: { - state: { - active: true, - }, - }, - }; - }); - - it(`correctly calculates WATCH_STATE_COMMENTS.OK there are no actions`, () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - watchStatus.isActive = true; - expect(watchStatus.comment).toBe(WATCH_STATE_COMMENTS.OK); - }); - - it(`correctly calculates WATCH_STATE_COMMENTS.PARTIALLY_THROTTLED`, () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - - watchStatus.actionStatuses = [ - { state: ACTION_STATES.THROTTLED }, - { state: ACTION_STATES.FIRING }, - { state: ACTION_STATES.OK }, - ]; - - expect(watchStatus.comment).toBe(WATCH_STATE_COMMENTS.PARTIALLY_THROTTLED); - }); - - it(`correctly calculates WATCH_STATE_COMMENTS.THROTTLED`, () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - - watchStatus.actionStatuses = [ - { state: ACTION_STATES.THROTTLED }, - { state: ACTION_STATES.THROTTLED }, - { state: ACTION_STATES.THROTTLED }, - ]; - - expect(watchStatus.comment).toBe(WATCH_STATE_COMMENTS.THROTTLED); - }); - - it(`correctly calculates WATCH_STATE_COMMENTS.PARTIALLY_ACKNOWLEDGED`, () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - - watchStatus.actionStatuses = [ - { state: ACTION_STATES.ACKNOWLEDGED }, - { state: ACTION_STATES.OK }, - { state: ACTION_STATES.THROTTLED }, - { state: ACTION_STATES.FIRING }, - ]; - - expect(watchStatus.comment).toBe(WATCH_STATE_COMMENTS.PARTIALLY_ACKNOWLEDGED); - }); - - it(`correctly calculates WATCH_STATE_COMMENTS.ACKNOWLEDGED`, () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - - watchStatus.actionStatuses = [ - { state: ACTION_STATES.ACKNOWLEDGED }, - { state: ACTION_STATES.ACKNOWLEDGED }, - { state: ACTION_STATES.ACKNOWLEDGED }, - ]; - - expect(watchStatus.comment).toBe(WATCH_STATE_COMMENTS.ACKNOWLEDGED); - }); - - it(`correctly calculates WATCH_STATE_COMMENTS.FAILING`, () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - - watchStatus.actionStatuses = [ - { state: ACTION_STATES.OK }, - { state: ACTION_STATES.ACKNOWLEDGED }, - { state: ACTION_STATES.THROTTLED }, - { state: ACTION_STATES.FIRING }, - { state: ACTION_STATES.ERROR }, - ]; - - expect(watchStatus.comment).toBe(WATCH_STATE_COMMENTS.FAILING); - }); - - it(`correctly calculates WATCH_STATE_COMMENTS.OK when watch is inactive`, () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - watchStatus.isActive = false; - - watchStatus.actionStatuses = [ - { state: ACTION_STATES.OK }, - { state: ACTION_STATES.ACKNOWLEDGED }, - { state: ACTION_STATES.THROTTLED }, - { state: ACTION_STATES.FIRING }, - { state: ACTION_STATES.ERROR }, - ]; - - expect(watchStatus.comment).toBe(WATCH_STATE_COMMENTS.OK); - }); - }); - - describe('state getter method', () => { - let upstreamJson; - beforeEach(() => { - upstreamJson = { - id: 'my-watch', - watchStatusJson: { - state: { - active: true, - }, - }, - }; - }); - - it(`correctly calculates WATCH_STATES.OK there are no actions`, () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - watchStatus.isActive = true; - expect(watchStatus.state).toBe(WATCH_STATES.OK); - }); - - it(`correctly calculates WATCH_STATES.FIRING`, () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - - watchStatus.actionStatuses = [{ state: ACTION_STATES.OK }, { state: ACTION_STATES.FIRING }]; - expect(watchStatus.state).toBe(WATCH_STATES.FIRING); - - watchStatus.actionStatuses = [ - { state: ACTION_STATES.OK }, - { state: ACTION_STATES.FIRING }, - { state: ACTION_STATES.THROTTLED }, - ]; - expect(watchStatus.state).toBe(WATCH_STATES.FIRING); - - watchStatus.actionStatuses = [ - { state: ACTION_STATES.OK }, - { state: ACTION_STATES.FIRING }, - { state: ACTION_STATES.THROTTLED }, - { state: ACTION_STATES.ACKNOWLEDGED }, - ]; - expect(watchStatus.state).toBe(WATCH_STATES.FIRING); - }); - - it(`correctly calculates WATCH_STATES.ERROR`, () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - - watchStatus.actionStatuses = [ - { state: ACTION_STATES.OK }, - { state: ACTION_STATES.FIRING }, - { state: ACTION_STATES.THROTTLED }, - { state: ACTION_STATES.ACKNOWLEDGED }, - { state: ACTION_STATES.ERROR }, - ]; - - expect(watchStatus.state).toBe(WATCH_STATES.ERROR); - }); - - it('correctly calculates WATCH_STATE.CONFIG_ERROR', () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - - watchStatus.actionStatuses = [ - { state: ACTION_STATES.OK }, - { state: ACTION_STATES.CONFIG_ERROR }, - ]; - - expect(watchStatus.state).toBe(WATCH_STATES.CONFIG_ERROR); - }); - - it(`correctly calculates WATCH_STATES.DISABLED when watch is inactive`, () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - watchStatus.isActive = false; - - watchStatus.actionStatuses = [ - { state: ACTION_STATES.OK }, - { state: ACTION_STATES.FIRING }, - { state: ACTION_STATES.THROTTLED }, - { state: ACTION_STATES.ACKNOWLEDGED }, - { state: ACTION_STATES.ERROR }, - ]; - - expect(watchStatus.state).toBe(WATCH_STATES.DISABLED); - }); - }); - - describe('downstreamJson getter method', () => { - let upstreamJson; - beforeEach(() => { - upstreamJson = { - id: 'my-watch', - watchStatusJson: { - state: { - active: true, - }, - last_checked: '2017-03-02T14:25:31.139Z', - last_met_condition: '2017-07-05T14:25:31.139Z', - actions: { - foo: {}, - bar: {}, - }, - }, - }; - }); - - it('returns correct downstream JSON object', () => { - const watchStatus = WatchStatusModel.fromUpstreamJson(upstreamJson); - watchStatus.actionStatuses = [ - { id: 'foo', state: ACTION_STATES.OK }, - { id: 'bar', state: ACTION_STATES.OK }, - ]; - - const actual = watchStatus.downstreamJson; - - expect(actual.id).toBe(watchStatus.id); - expect(actual.state).toBe(watchStatus.state); - expect(actual.comment).toBe(watchStatus.comment); - expect(actual.isActive).toBe(watchStatus.isActive); - expect(actual.lastChecked).toBe(watchStatus.lastChecked); - expect(actual.lastMetCondition).toBe(watchStatus.lastMetCondition); - expect(actual.lastFired).toBe(watchStatus.lastFired); - expect(actual.actionStatuses.length).toBe(2); - }); - }); -}); diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.test.ts b/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.test.ts new file mode 100644 index 0000000000000..2c7ba197cfdfb --- /dev/null +++ b/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.test.ts @@ -0,0 +1,145 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 moment from 'moment'; + +import { WatchStatusModelEs } from '../../../common/types'; +import { WATCH_STATES, WATCH_STATE_COMMENTS } from '../../../common/constants'; +import { buildServerWatchStatusModel, buildClientWatchStatusModel } from './watch_status_model'; + +const upstreamJson: WatchStatusModelEs = { + id: 'my-watch', + watchStatusJson: { + version: 1, + state: { + active: true, + timestamp: '2017-03-02T14:25:31.139Z', + }, + last_checked: '2017-03-02T14:25:31.139Z', + last_met_condition: '2017-07-05T14:25:31.139Z', + actions: { + foo: { + ack: { + timestamp: '2015-05-26T18:21:08.630Z', + state: 'awaits_successful_execution', + }, + last_execution: { + timestamp: '2017-07-05T00:00:00.000Z', + successful: true, + }, + }, + bar: { + ack: { + timestamp: '2015-05-26T18:21:08.630Z', + state: 'awaits_successful_execution', + }, + last_execution: { + timestamp: '2017-07-05T00:00:00.000Z', + successful: true, + }, + }, + }, + }, +}; + +describe('WatchStatusModel', () => { + describe('buildServerWatchStatusModel', () => { + // TODO: Remove once all consumers and upstream dependencies are converted to TS. + it(`throws an error if no 'id' property in json`, () => { + expect(() => { + // @ts-ignore + buildServerWatchStatusModel({}); + }).toThrow(/must contain an id property/i); + }); + + // TODO: Remove once all consumers and upstream dependencies are converted to TS. + it(`throws an error if no 'watchStatusJson' property in json`, () => { + expect(() => { + // @ts-ignore + buildServerWatchStatusModel({ id: 'test ' }); + }).toThrow(/must contain a watchStatusJson property/i); + }); + + it('returns correct object for use by Kibana server', () => { + const serverWatchStatusModel = buildServerWatchStatusModel(upstreamJson); + + expect(serverWatchStatusModel.id).toBe(upstreamJson.id); + expect(serverWatchStatusModel.watchStatusJson).toEqual(upstreamJson.watchStatusJson); + expect(serverWatchStatusModel.isActive).toEqual(true); + expect(serverWatchStatusModel.lastChecked).toEqual( + moment(upstreamJson.watchStatusJson.last_checked) + ); + expect(serverWatchStatusModel.lastMetCondition).toEqual( + moment(upstreamJson.watchStatusJson.last_met_condition) + ); + + expect(serverWatchStatusModel.actionStatuses!.length).toBe(2); + + expect(serverWatchStatusModel.actionStatuses![0]).toMatchObject({ + id: 'foo', + actionStatusJson: { + ack: { + state: 'awaits_successful_execution', + timestamp: '2015-05-26T18:21:08.630Z', + }, + last_execution: { + successful: true, + timestamp: '2017-07-05T00:00:00.000Z', + }, + }, + errors: undefined, + isLastExecutionSuccessful: true, + lastExecutionReason: undefined, + lastThrottled: null, + lastSuccessfulExecution: null, + lastExecutionRawFormat: '2017-07-05T00:00:00.000Z', + lastCheckedRawFormat: '2017-03-02T14:25:31.139Z', + lastAcknowledged: moment('2015-05-26T18:21:08.630Z'), + lastExecution: moment('2017-07-05T00:00:00.000Z'), + }); + + expect(serverWatchStatusModel.actionStatuses![1]).toMatchObject({ + id: 'bar', + actionStatusJson: { + ack: { + state: 'awaits_successful_execution', + timestamp: '2015-05-26T18:21:08.630Z', + }, + last_execution: { + successful: true, + timestamp: '2017-07-05T00:00:00.000Z', + }, + }, + errors: undefined, + isLastExecutionSuccessful: true, + lastExecutionReason: undefined, + lastThrottled: null, + lastSuccessfulExecution: null, + lastExecutionRawFormat: '2017-07-05T00:00:00.000Z', + lastCheckedRawFormat: '2017-03-02T14:25:31.139Z', + lastAcknowledged: moment('2015-05-26T18:21:08.630Z'), + lastExecution: moment('2017-07-05T00:00:00.000Z'), + }); + }); + }); + + describe('buildClientWatchStatusModel', () => { + it('returns correct object for use by Kibana client', () => { + const serverWatchStatusModel = buildServerWatchStatusModel(upstreamJson); + const clientWatchStatusModel = buildClientWatchStatusModel(serverWatchStatusModel); + expect(serverWatchStatusModel.id).toBe(clientWatchStatusModel.id); + expect(serverWatchStatusModel.isActive).toBe(clientWatchStatusModel.isActive); + expect(serverWatchStatusModel.lastChecked).toBe(clientWatchStatusModel.lastChecked); + expect(serverWatchStatusModel.lastMetCondition).toBe(clientWatchStatusModel.lastMetCondition); + expect(clientWatchStatusModel.state).toBe(WATCH_STATES.OK); + expect(clientWatchStatusModel.comment).toBe(WATCH_STATE_COMMENTS.OK); + expect( + clientWatchStatusModel.actionStatuses && clientWatchStatusModel.actionStatuses.length + ).toBe(2); + }); + }); +}); diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.ts b/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.ts new file mode 100644 index 0000000000000..0ef86a3a5eec9 --- /dev/null +++ b/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.ts @@ -0,0 +1,86 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { badRequest } from '@hapi/boom'; +import { i18n } from '@kbn/i18n'; + +import { + WatchStatusModelEs, + ServerWatchStatusModel, + ClientWatchStatusModel, +} from '../../../common/types'; +import { getMoment } from '../../../common/lib/get_moment'; +import { buildServerActionStatusModel, buildClientActionStatusModel } from '../action_status_model'; +import { deriveState, deriveComment, deriveLastFired } from './watch_status_model_utils'; + +export const buildServerWatchStatusModel = ( + watchStatusModelEs: WatchStatusModelEs +): ServerWatchStatusModel => { + const { id, watchStatusJson, state, watchErrors } = watchStatusModelEs; + + // TODO: Remove once all consumers and upstream dependencies are converted to TS. + if (!id) { + throw badRequest( + i18n.translate('xpack.watcher.models.watchStatus.idPropertyMissingBadRequestMessage', { + defaultMessage: 'JSON argument must contain an id property', + }) + ); + } + + // TODO: Remove once all consumers and upstream dependencies are converted to TS. + if (!watchStatusJson) { + throw badRequest( + i18n.translate( + 'xpack.watcher.models.watchStatus.watchStatusJsonPropertyMissingBadRequestMessage', + { + defaultMessage: 'JSON argument must contain a watchStatusJson property', + } + ) + ); + } + + const actionStatuses = Object.keys(watchStatusJson.actions ?? {}).map((actionStatusId) => { + const actionStatusJson = watchStatusJson.actions![actionStatusId]; + return buildServerActionStatusModel({ + id: actionStatusId, + actionStatusJson, + errors: watchErrors?.actions && watchErrors.actions[actionStatusId], + lastCheckedRawFormat: watchStatusJson.last_checked, + }); + }); + + return { + id, + watchState: state, + watchStatusJson, + watchErrors: watchErrors ?? {}, + isActive: Boolean(watchStatusJson.state.active), + lastChecked: getMoment(watchStatusJson.last_checked), + lastMetCondition: getMoment(watchStatusJson.last_met_condition), + actionStatuses, + }; +}; + +export const buildClientWatchStatusModel = ( + serverWatchStatusModel: ServerWatchStatusModel +): ClientWatchStatusModel => { + const { id, isActive, watchState, lastChecked, lastMetCondition, actionStatuses } = + serverWatchStatusModel; + const clientActionStatuses = + actionStatuses?.map((actionStatus) => buildClientActionStatusModel(actionStatus)) ?? []; + + return { + id, + isActive, + lastChecked, + lastMetCondition, + state: deriveState(isActive, watchState, clientActionStatuses), + comment: deriveComment(isActive, clientActionStatuses), + lastFired: deriveLastFired(clientActionStatuses), + actionStatuses: clientActionStatuses, + }; +}; diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.test.ts b/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.test.ts new file mode 100644 index 0000000000000..e66a592951d90 --- /dev/null +++ b/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.test.ts @@ -0,0 +1,183 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 moment from 'moment'; + +import { ACTION_STATES, WATCH_STATES, WATCH_STATE_COMMENTS } from '../../../common/constants'; +import { ClientActionStatusModel } from '../../../common/types'; +import { deriveState, deriveComment, deriveLastFired } from './watch_status_model_utils'; + +const mockActionStatus = (opts: Partial): ClientActionStatusModel => ({ + state: ACTION_STATES.OK, + id: 'no-id', + isAckable: false, + lastAcknowledged: null, + lastThrottled: null, + lastExecution: null, + isLastExecutionSuccessful: true, + lastExecutionReason: '', + lastSuccessfulExecution: null, + ...opts, +}); + +describe('WatchStatusModel utils', () => { + describe('deriveLastFired', () => { + it(`is the latest lastExecution from the client action statuses`, () => { + const actionStatuses = [ + mockActionStatus({ lastExecution: moment('2017-07-05T00:00:00.000Z') }), + mockActionStatus({ lastExecution: moment('2015-05-26T18:21:08.630Z') }), + ]; + expect(deriveLastFired(actionStatuses)).toEqual(moment('2017-07-05T00:00:00.000Z')); + }); + }); + + describe('deriveComment', () => { + it(`is OK when there are no actions`, () => { + const isActive = true; + expect(deriveComment(isActive, [])).toBe(WATCH_STATE_COMMENTS.OK); + }); + + it(`is PARTIALLY_THROTTLED when some action states are throttled and others aren't`, () => { + const isActive = true; + const actionStatuses = [ + mockActionStatus({ state: ACTION_STATES.THROTTLED }), + mockActionStatus({ state: ACTION_STATES.FIRING }), + mockActionStatus({ state: ACTION_STATES.OK }), + ]; + expect(deriveComment(isActive, actionStatuses)).toBe( + WATCH_STATE_COMMENTS.PARTIALLY_THROTTLED + ); + }); + + it(`is THROTTLED when all action states are throttled`, () => { + const isActive = true; + const actionStatuses = [ + mockActionStatus({ state: ACTION_STATES.THROTTLED }), + mockActionStatus({ state: ACTION_STATES.THROTTLED }), + mockActionStatus({ state: ACTION_STATES.THROTTLED }), + ]; + expect(deriveComment(isActive, actionStatuses)).toBe(WATCH_STATE_COMMENTS.THROTTLED); + }); + + it(`is PARTIALLY_ACKNOWLEDGED when some action states are acknowledged and others arne't`, () => { + const isActive = true; + const actionStatuses = [ + mockActionStatus({ state: ACTION_STATES.ACKNOWLEDGED }), + mockActionStatus({ state: ACTION_STATES.OK }), + mockActionStatus({ state: ACTION_STATES.THROTTLED }), + mockActionStatus({ state: ACTION_STATES.FIRING }), + ]; + expect(deriveComment(isActive, actionStatuses)).toBe( + WATCH_STATE_COMMENTS.PARTIALLY_ACKNOWLEDGED + ); + }); + + it(`is ACKNOWLEDGED when all action states are acknowledged`, () => { + const isActive = true; + const actionStatuses = [ + mockActionStatus({ state: ACTION_STATES.ACKNOWLEDGED }), + mockActionStatus({ state: ACTION_STATES.ACKNOWLEDGED }), + mockActionStatus({ state: ACTION_STATES.ACKNOWLEDGED }), + ]; + expect(deriveComment(isActive, actionStatuses)).toBe(WATCH_STATE_COMMENTS.ACKNOWLEDGED); + }); + + it(`is FAILING when one action state is failing`, () => { + const isActive = true; + const actionStatuses = [ + mockActionStatus({ state: ACTION_STATES.OK }), + mockActionStatus({ state: ACTION_STATES.ACKNOWLEDGED }), + mockActionStatus({ state: ACTION_STATES.THROTTLED }), + mockActionStatus({ state: ACTION_STATES.FIRING }), + mockActionStatus({ state: ACTION_STATES.ERROR }), + ]; + expect(deriveComment(isActive, actionStatuses)).toBe(WATCH_STATE_COMMENTS.FAILING); + }); + + it(`is OK when watch is inactive`, () => { + const isActive = false; + const actionStatuses = [ + mockActionStatus({ state: ACTION_STATES.OK }), + mockActionStatus({ state: ACTION_STATES.ACKNOWLEDGED }), + mockActionStatus({ state: ACTION_STATES.THROTTLED }), + mockActionStatus({ state: ACTION_STATES.FIRING }), + mockActionStatus({ state: ACTION_STATES.ERROR }), + ]; + expect(deriveComment(isActive, actionStatuses)).toBe(WATCH_STATE_COMMENTS.OK); + }); + }); + + describe('deriveState', () => { + it(`is OK there are no actions`, () => { + const isActive = true; + const watchState = 'awaits_execution'; + expect(deriveState(isActive, watchState, [])).toBe(WATCH_STATES.OK); + }); + + it(`is FIRING when at least one action state is firing`, () => { + const isActive = true; + const watchState = 'awaits_execution'; + let actionStatuses = [ + mockActionStatus({ state: ACTION_STATES.OK }), + mockActionStatus({ state: ACTION_STATES.FIRING }), + ]; + expect(deriveState(isActive, watchState, actionStatuses)).toBe(WATCH_STATES.FIRING); + + actionStatuses = [ + mockActionStatus({ state: ACTION_STATES.OK }), + mockActionStatus({ state: ACTION_STATES.FIRING }), + mockActionStatus({ state: ACTION_STATES.THROTTLED }), + ]; + expect(deriveState(isActive, watchState, actionStatuses)).toBe(WATCH_STATES.FIRING); + + actionStatuses = [ + mockActionStatus({ state: ACTION_STATES.OK }), + mockActionStatus({ state: ACTION_STATES.FIRING }), + mockActionStatus({ state: ACTION_STATES.THROTTLED }), + mockActionStatus({ state: ACTION_STATES.ACKNOWLEDGED }), + ]; + expect(deriveState(isActive, watchState, actionStatuses)).toBe(WATCH_STATES.FIRING); + }); + + it(`is ERROR when at least one action state is error`, () => { + const isActive = true; + const watchState = 'awaits_execution'; + const actionStatuses = [ + mockActionStatus({ state: ACTION_STATES.OK }), + mockActionStatus({ state: ACTION_STATES.FIRING }), + mockActionStatus({ state: ACTION_STATES.THROTTLED }), + mockActionStatus({ state: ACTION_STATES.ACKNOWLEDGED }), + mockActionStatus({ state: ACTION_STATES.ERROR }), + mockActionStatus({ state: ACTION_STATES.CONFIG_ERROR }), + ]; + expect(deriveState(isActive, watchState, actionStatuses)).toBe(WATCH_STATES.ERROR); + }); + + it('is CONFIG_ERROR when at least one action state is config error', () => { + const isActive = true; + const watchState = 'awaits_execution'; + const actionStatuses = [ + mockActionStatus({ state: ACTION_STATES.OK }), + mockActionStatus({ state: ACTION_STATES.CONFIG_ERROR }), + ]; + expect(deriveState(isActive, watchState, actionStatuses)).toBe(WATCH_STATES.CONFIG_ERROR); + }); + + it(`is DISABLED when watch is inactive`, () => { + const isActive = false; + const watchState = 'awaits_execution'; + const actionStatuses = [ + mockActionStatus({ state: ACTION_STATES.OK }), + mockActionStatus({ state: ACTION_STATES.FIRING }), + mockActionStatus({ state: ACTION_STATES.THROTTLED }), + mockActionStatus({ state: ACTION_STATES.ACKNOWLEDGED }), + mockActionStatus({ state: ACTION_STATES.ERROR }), + ]; + expect(deriveState(isActive, watchState, actionStatuses)).toBe(WATCH_STATES.DISABLED); + }); + }); +}); diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.ts b/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.ts new file mode 100644 index 0000000000000..7beff6e91e8fd --- /dev/null +++ b/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.ts @@ -0,0 +1,109 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor 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 { forEach, maxBy } from 'lodash'; +import { ACTION_STATES, WATCH_STATES, WATCH_STATE_COMMENTS } from '../../../common/constants'; +import { ServerWatchStatusModel, ClientWatchStatusModel } from '../../../common/types'; + +// Export for unit tests. +export const deriveActionStatusTotals = ( + actionStatuses?: ClientWatchStatusModel['actionStatuses'] +) => { + const result: { [key: string]: number } = {}; + + forEach(ACTION_STATES, (state: keyof typeof ACTION_STATES) => { + result[state] = 0; + }); + + if (actionStatuses) { + actionStatuses.forEach((actionStatus) => { + result[actionStatus.state] = result[actionStatus.state] + 1; + }); + } + + return result; +}; + +export const deriveLastFired = (actionStatuses: ClientWatchStatusModel['actionStatuses']) => { + const actionStatus = maxBy(actionStatuses, 'lastExecution'); + if (actionStatus) { + return actionStatus.lastExecution; + } +}; + +export const deriveState = ( + isActive: ServerWatchStatusModel['isActive'], + watchState: ServerWatchStatusModel['watchState'], + actionStatuses: ClientWatchStatusModel['actionStatuses'] +) => { + if (!isActive) { + return WATCH_STATES.DISABLED; + } + + if (watchState === 'failed') { + return WATCH_STATES.ERROR; + } + + const totals = deriveActionStatusTotals(actionStatuses); + + if (totals[ACTION_STATES.ERROR] > 0) { + return WATCH_STATES.ERROR; + } + + if (totals[ACTION_STATES.CONFIG_ERROR] > 0) { + return WATCH_STATES.CONFIG_ERROR; + } + + const firingTotal = + totals[ACTION_STATES.FIRING] + + totals[ACTION_STATES.ACKNOWLEDGED] + + totals[ACTION_STATES.THROTTLED]; + + if (firingTotal > 0) { + return WATCH_STATES.FIRING; + } + + return WATCH_STATES.OK; +}; + +export const deriveComment = ( + isActive: ServerWatchStatusModel['isActive'], + actionStatuses: ClientWatchStatusModel['actionStatuses'] +) => { + const totals = deriveActionStatusTotals(actionStatuses); + const totalActions = actionStatuses ? actionStatuses.length : 0; + let result = WATCH_STATE_COMMENTS.OK; + + if (totals[ACTION_STATES.THROTTLED] > 0 && totals[ACTION_STATES.THROTTLED] < totalActions) { + result = WATCH_STATE_COMMENTS.PARTIALLY_THROTTLED; + } + + if (totals[ACTION_STATES.THROTTLED] > 0 && totals[ACTION_STATES.THROTTLED] === totalActions) { + result = WATCH_STATE_COMMENTS.THROTTLED; + } + + if (totals[ACTION_STATES.ACKNOWLEDGED] > 0 && totals[ACTION_STATES.ACKNOWLEDGED] < totalActions) { + result = WATCH_STATE_COMMENTS.PARTIALLY_ACKNOWLEDGED; + } + + if ( + totals[ACTION_STATES.ACKNOWLEDGED] > 0 && + totals[ACTION_STATES.ACKNOWLEDGED] === totalActions + ) { + result = WATCH_STATE_COMMENTS.ACKNOWLEDGED; + } + + if (totals[ACTION_STATES.ERROR] > 0) { + result = WATCH_STATE_COMMENTS.FAILING; + } + + if (!isActive) { + result = WATCH_STATE_COMMENTS.OK; + } + + return result; +}; diff --git a/x-pack/plugins/watcher/server/routes/api/watch/action/register_acknowledge_route.ts b/x-pack/plugins/watcher/server/routes/api/watch/action/register_acknowledge_route.ts index 2facea38a4317..60c466d53fa88 100644 --- a/x-pack/plugins/watcher/server/routes/api/watch/action/register_acknowledge_route.ts +++ b/x-pack/plugins/watcher/server/routes/api/watch/action/register_acknowledge_route.ts @@ -8,8 +8,11 @@ import { schema } from '@kbn/config-schema'; import { get } from 'lodash'; import { IScopedClusterClient } from '@kbn/core/server'; -// @ts-ignore -import { WatchStatusModel } from '../../../../models/watch_status_model'; + +import { + buildServerWatchStatusModel, + buildClientWatchStatusModel, +} from '../../../../models/watch_status_model'; import { RouteDependencies } from '../../../../types'; const paramsSchema = schema.object({ @@ -48,9 +51,9 @@ export function registerAcknowledgeRoute({ watchStatusJson, }; - const watchStatus = WatchStatusModel.fromUpstreamJson(json); + const watchStatus = buildServerWatchStatusModel(json); return response.ok({ - body: { watchStatus: watchStatus.downstreamJson }, + body: { watchStatus: buildClientWatchStatusModel(watchStatus) }, }); } catch (e) { if (e?.statusCode === 404 && e.meta?.body?.error) { diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_activate_route.ts b/x-pack/plugins/watcher/server/routes/api/watch/register_activate_route.ts index bde5e1f88a68b..54a135d2ff895 100644 --- a/x-pack/plugins/watcher/server/routes/api/watch/register_activate_route.ts +++ b/x-pack/plugins/watcher/server/routes/api/watch/register_activate_route.ts @@ -8,9 +8,12 @@ import { schema } from '@kbn/config-schema'; import { IScopedClusterClient } from '@kbn/core/server'; import { get } from 'lodash'; + import { RouteDependencies } from '../../../types'; -// @ts-ignore -import { WatchStatusModel } from '../../../models/watch_status_model'; +import { + buildServerWatchStatusModel, + buildClientWatchStatusModel, +} from '../../../models/watch_status_model'; function activateWatch(dataClient: IScopedClusterClient, watchId: string) { return dataClient.asCurrentUser.watcher.activateWatch({ @@ -46,10 +49,10 @@ export function registerActivateRoute({ watchStatusJson, }; - const watchStatus = WatchStatusModel.fromUpstreamJson(json); + const watchStatus = buildServerWatchStatusModel(json); return response.ok({ body: { - watchStatus: watchStatus.downstreamJson, + watchStatus: buildClientWatchStatusModel(watchStatus), }, }); } catch (e) { diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_deactivate_route.ts b/x-pack/plugins/watcher/server/routes/api/watch/register_deactivate_route.ts index 21bb73e2b6067..e5565bc4ee7af 100644 --- a/x-pack/plugins/watcher/server/routes/api/watch/register_deactivate_route.ts +++ b/x-pack/plugins/watcher/server/routes/api/watch/register_deactivate_route.ts @@ -9,8 +9,10 @@ import { schema } from '@kbn/config-schema'; import { IScopedClusterClient } from '@kbn/core/server'; import { get } from 'lodash'; import { RouteDependencies } from '../../../types'; -// @ts-ignore -import { WatchStatusModel } from '../../../models/watch_status_model'; +import { + buildServerWatchStatusModel, + buildClientWatchStatusModel, +} from '../../../models/watch_status_model'; const paramsSchema = schema.object({ watchId: schema.string(), @@ -46,10 +48,10 @@ export function registerDeactivateRoute({ watchStatusJson, }; - const watchStatus = WatchStatusModel.fromUpstreamJson(json); + const watchStatus = buildServerWatchStatusModel(json); return response.ok({ body: { - watchStatus: watchStatus.downstreamJson, + watchStatus: buildClientWatchStatusModel(watchStatus), }, }); } catch (e) { diff --git a/x-pack/test/alerting_api_integration/common/lib/es_test_index_tool.ts b/x-pack/test/alerting_api_integration/common/lib/es_test_index_tool.ts index 524709e6c02a7..f66ad0bcd46e1 100644 --- a/x-pack/test/alerting_api_integration/common/lib/es_test_index_tool.ts +++ b/x-pack/test/alerting_api_integration/common/lib/es_test_index_tool.ts @@ -50,6 +50,9 @@ export class ESTestIndexTool { testedValue: { type: 'long', }, + testedValueUnsigned: { + type: 'unsigned_long', + }, group: { type: 'keyword', }, diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/builtin_action_types/email.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/builtin_action_types/email.ts index 22d46b3918932..cf31d6111c349 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/actions/builtin_action_types/email.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/actions/builtin_action_types/email.ts @@ -89,6 +89,33 @@ export default function emailTest({ getService }: FtrProviderContext) { ); }); }); + + describe('export, import, then execute email connector', () => { + afterEach(() => objectRemover.removeAll()); + + it('successfully executes with no auth', async () => { + const from = `bob@${EmailDomainAllowed}`; + const conn = await createConnector(from, false); + expect(conn.status).to.be(200); + const { id } = conn.body; + + const text = await exportConnector(id); + + const { body } = await importConnector(text); + const importId = body.successResults[0].id; + + const to = EmailDomainsAllowed.map((domain) => `jeb@${domain}`).sort(); + const cc = EmailDomainsAllowed.map((domain) => `jim@${domain}`).sort(); + const bcc = EmailDomainsAllowed.map((domain) => `joe@${domain}`).sort(); + const ccNames = cc.map((email) => `Jimmy Jack <${email}>`); + const run = await runConnector(importId, to, ccNames, bcc); + + expect(run.status).to.be(200); + + const { status } = run.body || {}; + expect(status).to.be('ok'); + }); + }); }); /* returns the following `body`, for the special email __json service: @@ -111,23 +138,29 @@ export default function emailTest({ getService }: FtrProviderContext) { ... } */ - async function createConnector(from: string): Promise<{ status: number; body: any }> { + async function createConnector( + from: string, + hasAuth: boolean = true + ): Promise<{ status: number; body: any }> { + const connector: any = { + name: `An email connector from ${__filename}`, + connector_type_id: '.email', + config: { + service: '__json', + from, + hasAuth, + }, + }; + if (hasAuth) { + connector.secrets = { + user: 'bob', + password: 'changeme', + }; + } const { status, body } = await supertest .post('/api/actions/connector') .set('kbn-xsrf', 'foo') - .send({ - name: `An email connector from ${__filename}`, - connector_type_id: '.email', - config: { - service: '__json', - from, - hasAuth: true, - }, - secrets: { - user: 'bob', - password: 'changeme', - }, - }); + .send(connector); if (status === 200) { objectRemover.add('default', body.id, 'connector', 'actions'); @@ -151,6 +184,30 @@ export default function emailTest({ getService }: FtrProviderContext) { return { status, body }; } + + async function exportConnector(id: string) { + const { text } = await supertest + .post(`/api/saved_objects/_export`) + .send({ + objects: [ + { + id, + type: 'action', + }, + ], + includeReferencesDeep: true, + }) + .set('kbn-xsrf', 'true'); + return text; + } + + async function importConnector(text: any) { + return await supertest + .post('/api/saved_objects/_import') + .query({ overwrite: true }) + .attach('file', Buffer.from(text), 'actions.ndjson') + .set('kbn-xsrf', 'true'); + } } function addressesFromMessage(message: any, which: 'to' | 'cc' | 'bcc'): string[] { diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/builtin_alert_types/index_threshold/alert.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/builtin_alert_types/index_threshold/alert.ts index d24db787c5fdd..afa9032ea3419 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/builtin_alert_types/index_threshold/alert.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/builtin_alert_types/index_threshold/alert.ts @@ -265,6 +265,45 @@ export default function ruleTests({ getService }: FtrProviderContext) { expect(inGroup2).to.be.greaterThan(0); }); + it('runs correctly: max grouped on unsigned long', async () => { + await createRule({ + name: 'never fire', + aggType: 'max', + aggField: 'testedValueUnsigned', + groupBy: 'top', + termField: 'group', + termSize: 2, + thresholdComparator: '<', + threshold: [Number.MAX_SAFE_INTEGER], + }); + + await createRule({ + name: 'always fire', + aggType: 'max', + aggField: 'testedValueUnsigned', + groupBy: 'top', + termField: 'group', + termSize: 2, // two actions will fire each interval + thresholdComparator: '>=', + threshold: [Number.MAX_SAFE_INTEGER], + }); + + // create some more documents in the first group + await createEsDocumentsInGroups(1); + + const docs = await waitForDocs(4); + + for (const doc of docs) { + const { name, message } = doc._source.params; + + expect(name).to.be('always fire'); + + const messagePattern = + /alert 'always fire' is active for group \'group-\d\':\n\n- Value: \d+\n- Conditions Met: max\(testedValueUnsigned\) is greater than or equal to \d+ over 15s\n- Timestamp: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/; + expect(message).to.match(messagePattern); + } + }); + it('runs correctly: min grouped', async () => { await createRule({ name: 'never fire', diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/builtin_alert_types/index_threshold/create_test_data.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/builtin_alert_types/index_threshold/create_test_data.ts index 80438a856e8ac..32f1322d12d4d 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/builtin_alert_types/index_threshold/create_test_data.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/builtin_alert_types/index_threshold/create_test_data.ts @@ -65,6 +65,7 @@ async function createEsDocument( date: new Date(epochMillis).toISOString(), date_epoch_millis: epochMillis, testedValue, + testedValueUnsigned: '18446744073709551615', group, '@timestamp': new Date(epochMillis).toISOString(), }; diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/bulk_edit.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/bulk_edit.ts index 783ec5a9d1628..adbc7650b08b2 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/bulk_edit.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/bulk_edit.ts @@ -356,12 +356,13 @@ export default function createUpdateTests({ getService }: FtrProviderContext) { ], }; - const bulkEditResponse = await retry.try(async () => - supertest - .post(`${getUrlPrefix(Spaces.space1.id)}/internal/alerting/rules/_bulk_edit`) - .set('kbn-xsrf', 'foo') - .send(payload) - .expect(200) + const bulkEditResponse = await retry.try( + async () => + await supertest + .post(`${getUrlPrefix(Spaces.space1.id)}/internal/alerting/rules/_bulk_edit`) + .set('kbn-xsrf', 'foo') + .send(payload) + .expect(200) ); // after applying bulk edit action monitoring still available diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/get_action_error_log.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/get_action_error_log.ts index 58c81f80f8092..19c2270d07880 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/get_action_error_log.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/get_action_error_log.ts @@ -26,8 +26,7 @@ export default function createGetActionErrorLogTests({ getService }: FtrProvider const dateStart = new Date(Date.now() - 600000).toISOString(); - // Failing: See https://github.com/elastic/kibana/issues/137004 - describe.skip('getActionErrorLog', () => { + describe('getActionErrorLog', () => { const objectRemover = new ObjectRemover(supertest); beforeEach(async () => { @@ -126,7 +125,7 @@ export default function createGetActionErrorLogTests({ getService }: FtrProvider .post(`${getUrlPrefix(Spaces.space1.id)}/api/actions/connector`) .set('kbn-xsrf', 'foo') .send({ - name: 'connector that throws', + name: 'throws_1', connector_type_id: 'test.throw', config: {}, secrets: {}, @@ -138,7 +137,7 @@ export default function createGetActionErrorLogTests({ getService }: FtrProvider .post(`${getUrlPrefix(Spaces.space1.id)}/api/actions/connector`) .set('kbn-xsrf', 'foo') .send({ - name: 'connector that throws', + name: 'throws_2', connector_type_id: 'test.throw', config: {}, secrets: {}, @@ -152,6 +151,7 @@ export default function createGetActionErrorLogTests({ getService }: FtrProvider .send( getTestRuleData({ rule_type_id: 'test.cumulative-firing', + schedule: { interval: '5s' }, actions: [ { id: createdConnector1.id, @@ -183,7 +183,7 @@ export default function createGetActionErrorLogTests({ getService }: FtrProvider const filteredResponse = await supertest.get( `${getUrlPrefix(Spaces.space1.id)}/internal/alerting/rule/${ createdRule.id - }/_action_error_log?filter=message:"${createdConnector1.id}"&date_start=${dateStart}` + }/_action_error_log?filter=message:"throws_1"&date_start=${dateStart}` ); expect(filteredResponse.body.totalErrors).to.eql(1); diff --git a/x-pack/test/api_integration/apis/aiops/explain_log_rate_spikes.ts b/x-pack/test/api_integration/apis/aiops/explain_log_rate_spikes.ts index 9261dc8b1bea9..00d3bc38a563e 100644 --- a/x-pack/test/api_integration/apis/aiops/explain_log_rate_spikes.ts +++ b/x-pack/test/api_integration/apis/aiops/explain_log_rate_spikes.ts @@ -12,7 +12,7 @@ import expect from '@kbn/expect'; import type { ApiExplainLogRateSpikes } from '@kbn/aiops-plugin/common/api'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import type { FtrProviderContext } from '../../ftr_provider_context'; import { parseStream } from './parse_stream'; diff --git a/x-pack/test/api_integration/apis/aiops/index.ts b/x-pack/test/api_integration/apis/aiops/index.ts index 24a0391cf4877..f311f35a51f87 100644 --- a/x-pack/test/api_integration/apis/aiops/index.ts +++ b/x-pack/test/api_integration/apis/aiops/index.ts @@ -7,7 +7,7 @@ import { AIOPS_ENABLED } from '@kbn/aiops-plugin/common'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import type { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('AIOps', function () { diff --git a/x-pack/test/api_integration/apis/monitoring_collection/index.ts b/x-pack/test/api_integration/apis/monitoring_collection/index.ts index e89bd44963c03..092cd93a480a7 100644 --- a/x-pack/test/api_integration/apis/monitoring_collection/index.ts +++ b/x-pack/test/api_integration/apis/monitoring_collection/index.ts @@ -8,7 +8,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { - describe('Monitoring Collection', function taskManagerSuite() { + describe('Monitoring Collection', () => { loadTestFile(require.resolve('./prometheus')); }); } diff --git a/x-pack/test/api_integration/apis/monitoring_collection/prometheus.ts b/x-pack/test/api_integration/apis/monitoring_collection/prometheus.ts index 0ac13dda92cb5..7820ab80b5847 100644 --- a/x-pack/test/api_integration/apis/monitoring_collection/prometheus.ts +++ b/x-pack/test/api_integration/apis/monitoring_collection/prometheus.ts @@ -11,7 +11,9 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - describe('Prometheus endpoint', () => { + describe('Prometheus endpoint', function () { + this.tags(['skipCloud']); + it('returns prometheus scraped metrics', async () => { await supertest.post('/api/generate_otel_metrics').set('kbn-xsrf', 'foo').expect(200); const response = await supertest.get('/api/monitoring_collection/v1/prometheus').expect(200); diff --git a/x-pack/test/api_integration_basic/apis/aiops/index.ts b/x-pack/test/api_integration_basic/apis/aiops/index.ts index d3748f0afe299..b1b42e6f3c46f 100644 --- a/x-pack/test/api_integration_basic/apis/aiops/index.ts +++ b/x-pack/test/api_integration_basic/apis/aiops/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { FtrProviderContext } from '../../ftr_provider_context'; +import type { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('aiops basic license', function () { diff --git a/x-pack/test/api_integration_basic/apis/aiops/permissions.ts b/x-pack/test/api_integration_basic/apis/aiops/permissions.ts index 25b8366be98ba..0d79f610bcac0 100644 --- a/x-pack/test/api_integration_basic/apis/aiops/permissions.ts +++ b/x-pack/test/api_integration_basic/apis/aiops/permissions.ts @@ -12,7 +12,7 @@ import expect from '@kbn/expect'; import type { ApiExplainLogRateSpikes } from '@kbn/aiops-plugin/common/api'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import type { FtrProviderContext } from '../../ftr_provider_context'; export default ({ getService }: FtrProviderContext) => { const supertest = getService('supertest'); diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/delete.ts b/x-pack/test/fleet_api_integration/apis/package_policy/delete.ts index 1f7377ba189ba..e95fbc9ad3dfd 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/delete.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/delete.ts @@ -12,143 +12,276 @@ export default function (providerContext: FtrProviderContext) { const { getService } = providerContext; const supertest = getService('supertest'); - // use function () {} and not () => {} here - // because `this` has to point to the Mocha context - // see https://mochajs.org/#arrow-functions - - describe('Package Policy - delete', async function () { + describe('Package Policy - delete', () => { skipIfNoDockerRegistry(providerContext); - let agentPolicy: any; - let packagePolicy: any; - before(async () => { - await getService('esArchiver').load('x-pack/test/functional/es_archives/empty_kibana'); - await getService('esArchiver').load( - 'x-pack/test/functional/es_archives/fleet/empty_fleet_server' - ); - }); - before(async function () { - let agentPolicyResponse = await supertest - .post(`/api/fleet/agent_policies`) - .set('kbn-xsrf', 'xxxx') - .send({ - name: 'Test policy', - namespace: 'default', - is_managed: false, - }); - - // if one already exists, re-use that - if (agentPolicyResponse.body.statusCode === 409) { - const errorRegex = /^agent policy \'(?[\w,\-]+)\' already exists/i; - const result = errorRegex.exec(agentPolicyResponse.body.message); - if (result?.groups?.id) { - agentPolicyResponse = await supertest - .put(`/api/fleet/agent_policies/${result.groups.id}`) - .set('kbn-xsrf', 'xxxx') - .send({ - name: 'Test policy', - namespace: 'default', - is_managed: false, - force: true, - }); + describe('Delete one', () => { + let agentPolicy: any; + let packagePolicy: any; + before(async () => { + await getService('esArchiver').load('x-pack/test/functional/es_archives/empty_kibana'); + await getService('esArchiver').load( + 'x-pack/test/functional/es_archives/fleet/empty_fleet_server' + ); + }); + beforeEach(async () => { + let agentPolicyResponse = await supertest + .post(`/api/fleet/agent_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'Test policy', + namespace: 'default', + is_managed: false, + }); + + // if one already exists, re-use that + if (agentPolicyResponse.body.statusCode === 409) { + const errorRegex = /^agent policy \'(?[\w,\-]+)\' already exists/i; + const result = errorRegex.exec(agentPolicyResponse.body.message); + if (result?.groups?.id) { + agentPolicyResponse = await supertest + .put(`/api/fleet/agent_policies/${result.groups.id}`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'Test policy', + namespace: 'default', + is_managed: false, + force: true, + }); + } } - } - agentPolicy = agentPolicyResponse.body.item; - - const { body: packagePolicyResponse } = await supertest - .post(`/api/fleet/package_policies`) - .set('kbn-xsrf', 'xxxx') - .send({ - name: 'filetest-1', - description: '', - namespace: 'default', - policy_id: agentPolicy.id, - enabled: true, - output_id: '', - inputs: [], - package: { - name: 'filetest', - title: 'For File Tests', - version: '0.1.0', - }, - }); - packagePolicy = packagePolicyResponse.item; - }); + agentPolicy = agentPolicyResponse.body.item; - after(async function () { - await supertest - .post(`/api/fleet/agent_policies/delete`) - .set('kbn-xsrf', 'xxxx') - .send({ agentPolicyId: agentPolicy.id }); + const { body: packagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + id: 'filetest-1', + name: 'filetest-1', + description: '', + namespace: 'default', + policy_id: agentPolicy.id, + enabled: true, + output_id: '', + inputs: [], + package: { + name: 'filetest', + title: 'For File Tests', + version: '0.1.0', + }, + }); - await supertest - .post(`/api/fleet/package_policies/delete`) - .set('kbn-xsrf', 'xxxx') - .send({ force: true, packagePolicyIds: [packagePolicy.id] }); - }); - after(async () => { - await getService('esArchiver').unload('x-pack/test/functional/es_archives/empty_kibana'); - await getService('esArchiver').unload( - 'x-pack/test/functional/es_archives/fleet/empty_fleet_server' - ); - }); + packagePolicy = packagePolicyResponse.item; + }); + + afterEach(async () => { + await supertest + .post(`/api/fleet/agent_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ agentPolicyId: agentPolicy.id }); + + await supertest + .post(`/api/fleet/package_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ force: true, packagePolicyIds: [packagePolicy.id] }); + }); + after(async () => { + await getService('esArchiver').unload('x-pack/test/functional/es_archives/empty_kibana'); + await getService('esArchiver').unload( + 'x-pack/test/functional/es_archives/fleet/empty_fleet_server' + ); + }); + + it('should fail on hosted agent policies', async () => { + // update existing policy to hosted + await supertest + .put(`/api/fleet/agent_policies/${agentPolicy.id}`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: agentPolicy.name, + namespace: agentPolicy.namespace, + is_managed: true, + }) + .expect(200); + + // try to delete + const { body: result } = await supertest + .delete(`/api/fleet/package_policies/${packagePolicy.id}`) + .set('kbn-xsrf', 'xxxx') + .expect(400); + + expect(result.message).to.contain('Cannot remove integrations of hosted agent policy'); + + // same, but with force + await supertest + .delete(`/api/fleet/package_policies/${packagePolicy.id}?force=true`) + .set('kbn-xsrf', 'xxxx') + .expect(200); + + // revert existing policy to regular + await supertest + .put(`/api/fleet/agent_policies/${agentPolicy.id}`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: agentPolicy.name, + namespace: agentPolicy.namespace, + is_managed: false, + force: true, + }) + .expect(200); + }); - it('should fail on hosted agent policies', async function () { - // update existing policy to hosted - await supertest - .put(`/api/fleet/agent_policies/${agentPolicy.id}`) - .set('kbn-xsrf', 'xxxx') - .send({ - name: agentPolicy.name, - namespace: agentPolicy.namespace, - is_managed: true, - }) - .expect(200); - - // try to delete - const { body: results } = await supertest - .post(`/api/fleet/package_policies/delete`) - .set('kbn-xsrf', 'xxxx') - .send({ packagePolicyIds: [packagePolicy.id] }) - .expect(200); - - // delete always succeeds (returns 200) with Array<{success: boolean}> - expect(Array.isArray(results)); - expect(results.length).to.be(1); - expect(results[0].success).to.be(false); - expect(results[0].body.message).to.contain( - 'Cannot remove integrations of hosted agent policy' - ); - - // same, but with force - const { body: resultsWithForce } = await supertest - .post(`/api/fleet/package_policies/delete`) - .set('kbn-xsrf', 'xxxx') - .send({ force: true, packagePolicyIds: [packagePolicy.id] }) - .expect(200); - - // delete always succeeds (returns 200) with Array<{success: boolean}> - expect(Array.isArray(resultsWithForce)); - expect(resultsWithForce.length).to.be(1); - expect(resultsWithForce[0].success).to.be(true); - - // revert existing policy to regular - await supertest - .put(`/api/fleet/agent_policies/${agentPolicy.id}`) - .set('kbn-xsrf', 'xxxx') - .send({ - name: agentPolicy.name, - namespace: agentPolicy.namespace, - is_managed: false, - force: true, - }) - .expect(200); + it('should work for regular policies', async function () { + await supertest + .delete(`/api/fleet/package_policies/${packagePolicy.id}`) + .set('kbn-xsrf', 'xxxx') + .expect(200); + }); + + it('should work if the package policy is already deleted', async function () { + await supertest + .delete(`/api/fleet/package_policies/${packagePolicy.id}`) + .set('kbn-xsrf', 'xxxx') + .expect(200); + await supertest + .delete(`/api/fleet/package_policies/${packagePolicy.id}`) + .set('kbn-xsrf', 'xxxx') + .expect(200); + }); }); + describe('Delete bulk', () => { + let agentPolicy: any; + let packagePolicy: any; + before(async () => { + await getService('esArchiver').load('x-pack/test/functional/es_archives/empty_kibana'); + await getService('esArchiver').load( + 'x-pack/test/functional/es_archives/fleet/empty_fleet_server' + ); + }); + before(async function () { + let agentPolicyResponse = await supertest + .post(`/api/fleet/agent_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'Test policy', + namespace: 'default', + is_managed: false, + }); + + // if one already exists, re-use that + if (agentPolicyResponse.body.statusCode === 409) { + const errorRegex = /^agent policy \'(?[\w,\-]+)\' already exists/i; + const result = errorRegex.exec(agentPolicyResponse.body.message); + if (result?.groups?.id) { + agentPolicyResponse = await supertest + .put(`/api/fleet/agent_policies/${result.groups.id}`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'Test policy', + namespace: 'default', + is_managed: false, + force: true, + }); + } + } + agentPolicy = agentPolicyResponse.body.item; + + const { body: packagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'filetest-1', + description: '', + namespace: 'default', + policy_id: agentPolicy.id, + enabled: true, + output_id: '', + inputs: [], + package: { + name: 'filetest', + title: 'For File Tests', + version: '0.1.0', + }, + }); + packagePolicy = packagePolicyResponse.item; + }); + + after(async function () { + await supertest + .post(`/api/fleet/agent_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ agentPolicyId: agentPolicy.id }); + + await supertest + .post(`/api/fleet/package_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ force: true, packagePolicyIds: [packagePolicy.id] }); + }); + after(async () => { + await getService('esArchiver').unload('x-pack/test/functional/es_archives/empty_kibana'); + await getService('esArchiver').unload( + 'x-pack/test/functional/es_archives/fleet/empty_fleet_server' + ); + }); + + it('should fail on hosted agent policies', async function () { + // update existing policy to hosted + await supertest + .put(`/api/fleet/agent_policies/${agentPolicy.id}`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: agentPolicy.name, + namespace: agentPolicy.namespace, + is_managed: true, + }) + .expect(200); + + // try to delete + const { body: results } = await supertest + .post(`/api/fleet/package_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ packagePolicyIds: [packagePolicy.id] }) + .expect(200); + + // delete always succeeds (returns 200) with Array<{success: boolean}> + expect(Array.isArray(results)); + expect(results.length).to.be(1); + expect(results[0].success).to.be(false); + expect(results[0].body.message).to.contain( + 'Cannot remove integrations of hosted agent policy' + ); + + // same, but with force + const { body: resultsWithForce } = await supertest + .post(`/api/fleet/package_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ force: true, packagePolicyIds: [packagePolicy.id] }) + .expect(200); + + // delete always succeeds (returns 200) with Array<{success: boolean}> + expect(Array.isArray(resultsWithForce)); + expect(resultsWithForce.length).to.be(1); + expect(resultsWithForce[0].success).to.be(true); + + // revert existing policy to regular + await supertest + .put(`/api/fleet/agent_policies/${agentPolicy.id}`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: agentPolicy.name, + namespace: agentPolicy.namespace, + is_managed: false, + force: true, + }) + .expect(200); + }); - it('should work for regular policies', async function () { - await supertest - .post(`/api/fleet/package_policies/delete`) - .set('kbn-xsrf', 'xxxx') - .send({ packagePolicyIds: [packagePolicy.id] }); + it('should work for regular policies', async function () { + await supertest + .post(`/api/fleet/package_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ packagePolicyIds: [packagePolicy.id] }) + .expect(200); + }); }); }); } diff --git a/x-pack/test/functional/apps/aiops/config.ts b/x-pack/test/functional/apps/aiops/config.ts new file mode 100644 index 0000000000000..214d3712ecbf9 --- /dev/null +++ b/x-pack/test/functional/apps/aiops/config.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + junit: { + reportName: 'Chrome X-Pack UI Functional Tests - aiops', + }, + }; +} diff --git a/x-pack/test/functional/apps/aiops/explain_log_rate_spikes.ts b/x-pack/test/functional/apps/aiops/explain_log_rate_spikes.ts new file mode 100644 index 0000000000000..63a538db09ea2 --- /dev/null +++ b/x-pack/test/functional/apps/aiops/explain_log_rate_spikes.ts @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FtrProviderContext } from '../../ftr_provider_context'; +import type { TestData } from './types'; +import { farequoteDataViewTestData } from './test_data'; + +export default function ({ getPageObject, getService }: FtrProviderContext) { + const headerPage = getPageObject('header'); + const esArchiver = getService('esArchiver'); + const aiops = getService('aiops'); + + // aiops / Explain Log Rate Spikes lives in the ML UI so we need some related services. + const ml = getService('ml'); + + function runTests(testData: TestData) { + it(`${testData.suiteTitle} loads the source data in explain log rate spikes`, async () => { + await ml.testExecution.logTestStep( + `${testData.suiteTitle} loads the saved search selection page` + ); + await aiops.explainLogRateSpikes.navigateToIndexPatternSelection(); + + await ml.testExecution.logTestStep( + `${testData.suiteTitle} loads the explain log rate spikes page` + ); + await ml.jobSourceSelection.selectSourceForExplainLogRateSpikes( + testData.sourceIndexOrSavedSearch + ); + }); + + it(`${testData.suiteTitle} displays index details`, async () => { + await ml.testExecution.logTestStep(`${testData.suiteTitle} displays the time range step`); + await aiops.explainLogRateSpikes.assertTimeRangeSelectorSectionExists(); + + await ml.testExecution.logTestStep(`${testData.suiteTitle} loads data for full time range`); + await aiops.explainLogRateSpikes.clickUseFullDataButton( + testData.expected.totalDocCountFormatted + ); + await headerPage.waitUntilLoadingHasFinished(); + + await ml.testExecution.logTestStep( + `${testData.suiteTitle} displays elements in the doc count panel correctly` + ); + await aiops.explainLogRateSpikes.assertTotalDocCountHeaderExist(); + await aiops.explainLogRateSpikes.assertTotalDocCountChartExist(); + + await ml.testExecution.logTestStep( + `${testData.suiteTitle} displays elements in the page correctly` + ); + + await aiops.explainLogRateSpikes.assertSearchPanelExist(); + + await ml.testExecution.logTestStep('displays empty prompt'); + await aiops.explainLogRateSpikes.assertNoWindowParametersEmptyPromptExist(); + }); + } + + describe('explain log rate spikes', function () { + this.tags(['aiops']); + before(async () => { + await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/farequote'); + + await ml.testResources.createIndexPatternIfNeeded('ft_farequote', '@timestamp'); + await ml.testResources.setKibanaTimeZoneToUTC(); + + await ml.securityUI.loginAsMlPowerUser(); + }); + + after(async () => { + await ml.testResources.deleteIndexPatternByTitle('ft_farequote'); + }); + + describe('with farequote', function () { + // Run tests on full farequote index. + it(`${farequoteDataViewTestData.suiteTitle} loads the explain log rate spikes page`, async () => { + // Start navigation from the base of the ML app. + await ml.navigation.navigateToMl(); + }); + + runTests(farequoteDataViewTestData); + }); + }); +} diff --git a/x-pack/test/functional/apps/aiops/index.ts b/x-pack/test/functional/apps/aiops/index.ts new file mode 100644 index 0000000000000..88dea0b1d3e7e --- /dev/null +++ b/x-pack/test/functional/apps/aiops/index.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService, loadTestFile }: FtrProviderContext) { + const esArchiver = getService('esArchiver'); + + // aiops / Explain Log Rate Spikes lives in the ML UI so we need some related services. + const ml = getService('ml'); + + describe('aiops', function () { + this.tags(['skipFirefox', 'aiops']); + + before(async () => { + await ml.securityCommon.createMlRoles(); + await ml.securityCommon.createMlUsers(); + }); + + after(async () => { + // NOTE: Logout needs to happen before anything else to avoid flaky behavior + await ml.securityUI.logout(); + + await ml.securityCommon.cleanMlUsers(); + await ml.securityCommon.cleanMlRoles(); + + await esArchiver.unload('x-pack/test/functional/es_archives/ml/farequote'); + + await ml.testResources.resetKibanaTimeZone(); + }); + + loadTestFile(require.resolve('./explain_log_rate_spikes')); + }); +} diff --git a/x-pack/test/functional/apps/aiops/test_data.ts b/x-pack/test/functional/apps/aiops/test_data.ts new file mode 100644 index 0000000000000..8b9e332f86706 --- /dev/null +++ b/x-pack/test/functional/apps/aiops/test_data.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { TestData } from './types'; + +export const farequoteDataViewTestData: TestData = { + suiteTitle: 'farequote index pattern', + isSavedSearch: false, + sourceIndexOrSavedSearch: 'ft_farequote', + expected: { + totalDocCountFormatted: '86,274', + }, +}; diff --git a/x-pack/test/functional/apps/aiops/types.ts b/x-pack/test/functional/apps/aiops/types.ts new file mode 100644 index 0000000000000..2f58ef0ff754e --- /dev/null +++ b/x-pack/test/functional/apps/aiops/types.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export interface TestData { + suiteTitle: string; + isSavedSearch?: boolean; + sourceIndexOrSavedSearch: string; + rowsPerPage?: 10 | 25 | 50; + expected: { + totalDocCountFormatted: string; + }; +} diff --git a/x-pack/test/functional/apps/security/user_email.ts b/x-pack/test/functional/apps/security/user_email.ts index 44c375bdab10d..fd33d6fca4d8a 100644 --- a/x-pack/test/functional/apps/security/user_email.ts +++ b/x-pack/test/functional/apps/security/user_email.ts @@ -13,13 +13,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['security', 'settings', 'common', 'accountSetting']); const log = getService('log'); const security = getService('security'); - const kibanaServer = getService('kibanaServer'); describe('useremail', function () { before(async () => { - await kibanaServer.importExport.load( - 'x-pack/test/functional/fixtures/kbn_archiver/security/discover' - ); await security.testUser.setRoles(['cluster_security_manager']); await PageObjects.settings.navigateTo(); await PageObjects.security.clickElasticsearchUsers(); @@ -62,9 +58,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { after(async function () { // NOTE: Logout needs to happen before anything else to avoid flaky behavior await PageObjects.security.forceLogout(); - await kibanaServer.importExport.unload( - 'x-pack/test/functional/fixtures/kbn_archiver/security/discover' - ); await security.testUser.restoreDefaults(); }); }); diff --git a/x-pack/test/functional/apps/transform/cloning.ts b/x-pack/test/functional/apps/transform/cloning.ts index 46f398b7842c9..7cd7902b0396b 100644 --- a/x-pack/test/functional/apps/transform/cloning.ts +++ b/x-pack/test/functional/apps/transform/cloning.ts @@ -88,6 +88,86 @@ function getTransformConfigWithRuntimeMappings(): TransformPivotConfig { }; } +function getTransformConfigWithBoolFilterAgg(): TransformPivotConfig { + const date = Date.now(); + + return { + id: `ec_cloning_filter_agg_${date}`, + source: { + index: ['ft_ecommerce'], + }, + // @ts-ignore Boolean filter doesn't have to have field + pivot: { + group_by: { + category: { + terms: { + field: 'category.keyword', + }, + }, + }, + aggregations: { + 'products.base_price.avg': { + avg: { + field: 'products.base_price', + }, + }, + Saturday: { + filter: { + term: { + day_of_week: 'Saturday', + }, + }, + aggs: { + 'saturday.products.base_price.max': { + max: { + field: 'products.base_price', + }, + }, + }, + }, + FEMALE: { + filter: { + bool: { + must: [], + must_not: [], + should: [], + }, + }, + aggs: { + 'female.products.base_price.sum': { + sum: { + field: 'products.base_price', + }, + }, + }, + }, + user_exists: { + filter: { + exists: { + field: 'user', + }, + }, + aggs: { + 'user_exists.order_date.min': { + min: { + field: 'order_date', + }, + }, + }, + }, + }, + }, + description: 'ecommerce batch transform with filter aggregations', + frequency: '3s', + retention_policy: { time: { field: 'order_date', max_age: '3d' } }, + settings: { + max_page_search_size: 250, + num_failure_retries: 5, + }, + dest: { index: `user-ec_2_${date}` }, + }; +} + export default function ({ getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const transform = getService('transform'); @@ -95,6 +175,8 @@ export default function ({ getService }: FtrProviderContext) { describe('cloning', function () { const transformConfigWithPivot = getTransformConfig(); const transformConfigWithRuntimeMapping = getTransformConfigWithRuntimeMappings(); + const transformConfigWithBoolFilterAgg = getTransformConfigWithBoolFilterAgg(); + const transformConfigWithLatest = getLatestTransformConfig('cloning'); before(async () => { @@ -108,10 +190,15 @@ export default function ({ getService }: FtrProviderContext) { transformConfigWithRuntimeMapping.id, transformConfigWithRuntimeMapping ); + await transform.api.createAndRunTransform( + transformConfigWithBoolFilterAgg.id, + transformConfigWithBoolFilterAgg + ); await transform.api.createAndRunTransform( transformConfigWithLatest.id, transformConfigWithLatest ); + await transform.testResources.setKibanaTimeZoneToUTC(); await transform.securityUI.loginAsTransformPowerUser(); @@ -208,6 +295,59 @@ export default function ({ getService }: FtrProviderContext) { ), }, }, + { + type: 'pivot' as const, + suiteTitle: 'clone transform with filter agg', + originalConfig: transformConfigWithBoolFilterAgg, + transformId: `clone_${transformConfigWithBoolFilterAgg.id}`, + transformDescription: `a cloned transform with filter agg`, + get destinationIndex(): string { + return `user-${this.transformId}`; + }, + expected: { + runtimeMappingsEditorValueArr: [''], + aggs: { + index: 0, + label: 'products.base_price.avg', + }, + editableAggregations: [ + 'products.base_price.avg', + // term filter + 'Saturday', + 'saturday.products.base_price.max', + // boolean filter + 'FEMALE', + 'female.products.base_price.sum', + // exist filter + 'user_exists', + 'user_exists.order_date.min', + ], + indexPreview: { + columns: 10, + rows: 5, + }, + groupBy: { + index: 0, + label: 'category', + }, + transformPreview: { + column: 0, + values: [ + `Men's Accessories`, + `Men's Clothing`, + `Men's Shoes`, + `Women's Accessories`, + `Women's Clothing`, + ], + }, + retentionPolicySwitchEnabled: true, + retentionPolicyField: 'order_date', + retentionPolicyMaxAge: '3d', + numFailureRetries: getNumFailureRetriesStr( + transformConfigWithBoolFilterAgg.settings?.num_failure_retries + ), + }, + }, { type: 'latest' as const, suiteTitle: 'clone transform with latest function', @@ -308,6 +448,14 @@ export default function ({ getService }: FtrProviderContext) { testData.expected.aggs.index, testData.expected.aggs.label ); + if ( + Array.isArray(testData.expected.editableAggregations) && + testData.expected.editableAggregations?.length > 0 + ) { + for (const aggName of testData.expected.editableAggregations) { + await transform.wizard.assertAggregationEntryEditPopoverValid(aggName); + } + } } else if (isLatestTransform(testData.originalConfig)) { await transform.testExecution.logTestStep('should show pre-filler unique keys'); await transform.wizard.assertUniqueKeysInputValue( diff --git a/x-pack/test/functional/page_objects/lens_page.ts b/x-pack/test/functional/page_objects/lens_page.ts index 33d48321cfb8a..2d9eff8fefd9c 100644 --- a/x-pack/test/functional/page_objects/lens_page.ts +++ b/x-pack/test/functional/page_objects/lens_page.ts @@ -70,7 +70,7 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont async assertExpectedText(selector: string, test: (value?: string) => boolean) { let actualText: string | undefined; - await retry.waitForWithTimeout('assertExpectedText', 1000, async () => { + await retry.waitForWithTimeout('assertExpectedText', 5000, async () => { actualText = await find.byCssSelector(selector).then((el) => el.getVisibleText()); return test(actualText); }); diff --git a/x-pack/test/functional/services/aiops/explain_log_rate_spikes.ts b/x-pack/test/functional/services/aiops/explain_log_rate_spikes.ts new file mode 100644 index 0000000000000..41a205f43d66f --- /dev/null +++ b/x-pack/test/functional/services/aiops/explain_log_rate_spikes.ts @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; + +import type { FtrProviderContext } from '../../ftr_provider_context'; + +export function ExplainLogRateSpikesProvider({ getService }: FtrProviderContext) { + const testSubjects = getService('testSubjects'); + const retry = getService('retry'); + + return { + async assertTimeRangeSelectorSectionExists() { + await testSubjects.existOrFail('aiopsTimeRangeSelectorSection'); + }, + + async assertTotalDocumentCount(expectedFormattedTotalDocCount: string) { + await retry.tryForTime(5000, async () => { + const docCount = await testSubjects.getVisibleText('aiopsTotalDocCount'); + expect(docCount).to.eql( + expectedFormattedTotalDocCount, + `Expected total document count to be '${expectedFormattedTotalDocCount}' (got '${docCount}')` + ); + }); + }, + + async clickUseFullDataButton(expectedFormattedTotalDocCount: string) { + await retry.tryForTime(30 * 1000, async () => { + await testSubjects.clickWhenNotDisabled('aiopsExplainLogRatesSpikeButtonUseFullData'); + await testSubjects.clickWhenNotDisabled('superDatePickerApplyTimeButton'); + await this.assertTotalDocumentCount(expectedFormattedTotalDocCount); + }); + }, + + async assertTotalDocCountHeaderExist() { + await retry.tryForTime(5000, async () => { + await testSubjects.existOrFail(`aiopsTotalDocCountHeader`); + }); + }, + + async assertTotalDocCountChartExist() { + await retry.tryForTime(5000, async () => { + await testSubjects.existOrFail(`aiopsDocumentCountChart`); + }); + }, + + async assertSearchPanelExist() { + await testSubjects.existOrFail(`aiopsSearchPanel`); + }, + + async assertNoWindowParametersEmptyPromptExist() { + await testSubjects.existOrFail(`aiopsNoWindowParametersEmptyPrompt`); + }, + + async navigateToIndexPatternSelection() { + await testSubjects.click('mlMainTab explainLogRateSpikes'); + await testSubjects.existOrFail('mlPageSourceSelection'); + }, + }; +} diff --git a/x-pack/test/functional/services/aiops/index.ts b/x-pack/test/functional/services/aiops/index.ts new file mode 100644 index 0000000000000..e8a1b13cd6ad2 --- /dev/null +++ b/x-pack/test/functional/services/aiops/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FtrProviderContext } from '../../ftr_provider_context'; + +import { ExplainLogRateSpikesProvider } from './explain_log_rate_spikes'; + +export function AiopsProvider(context: FtrProviderContext) { + const explainLogRateSpikes = ExplainLogRateSpikesProvider(context); + + return { + explainLogRateSpikes, + }; +} diff --git a/x-pack/test/functional/services/index.ts b/x-pack/test/functional/services/index.ts index 62e8ab1ac464d..7c09843efd9c1 100644 --- a/x-pack/test/functional/services/index.ts +++ b/x-pack/test/functional/services/index.ts @@ -70,6 +70,7 @@ import { SearchSessionsService } from './search_sessions'; import { ObservabilityProvider } from './observability'; import { CompareImagesProvider } from './compare_images'; import { CasesServiceProvider } from './cases'; +import { AiopsProvider } from './aiops'; // define the name and providers for services that should be // available to your tests. If you don't specify anything here @@ -130,4 +131,5 @@ export const services = { observability: ObservabilityProvider, compareImages: CompareImagesProvider, cases: CasesServiceProvider, + aiops: AiopsProvider, }; diff --git a/x-pack/test/functional/services/ml/job_source_selection.ts b/x-pack/test/functional/services/ml/job_source_selection.ts index e215f9b857435..9fa51b01516a5 100644 --- a/x-pack/test/functional/services/ml/job_source_selection.ts +++ b/x-pack/test/functional/services/ml/job_source_selection.ts @@ -42,5 +42,9 @@ export function MachineLearningJobSourceSelectionProvider({ getService }: FtrPro async selectSourceForIndexBasedDataVisualizer(sourceName: string) { await this.selectSource(sourceName, 'dataVisualizerIndexPage'); }, + + async selectSourceForExplainLogRateSpikes(sourceName: string) { + await this.selectSource(sourceName, 'aiopsExplainLogRateSpikesPage'); + }, }; } diff --git a/x-pack/test/functional/services/transform/wizard.ts b/x-pack/test/functional/services/transform/wizard.ts index a19986f2504b8..f59e95d334a3f 100644 --- a/x-pack/test/functional/services/transform/wizard.ts +++ b/x-pack/test/functional/services/transform/wizard.ts @@ -19,6 +19,7 @@ export type HistogramCharts = Array<{ export function TransformWizardProvider({ getService, getPageObjects }: FtrProviderContext) { const aceEditor = getService('aceEditor'); + const browser = getService('browser'); const canvasElement = getService('canvasElement'); const log = getService('log'); const testSubjects = getService('testSubjects'); @@ -1049,5 +1050,23 @@ export function TransformWizardProvider({ getService, getPageObjects }: FtrProvi await this.assertProgressbarExists(); }); }, + + async assertAggregationEntryEditPopoverValid(aggName: string) { + await retry.tryForTime(5000, async () => { + await testSubjects.click(`transformAggregationEntryEditButton_${aggName}`); + + await testSubjects.existOrFail(`transformAggPopoverForm_${aggName}`); + const isApplyAggChangeEnabled = await testSubjects.isEnabled( + `~transformAggPopoverForm_${aggName} > ~transformApplyAggChanges` + ); + + expect(isApplyAggChangeEnabled).to.eql( + true, + 'Expected Transform aggregation entry `Apply` to be enabled' + ); + // escape popover + await browser.pressKeys(browser.keys.ESCAPE); + }); + }, }; } diff --git a/x-pack/test/security_functional/fixtures/common/test_endpoints/kibana.json b/x-pack/test/security_functional/fixtures/common/test_endpoints/kibana.json index 71af8e99d3940..6546325cb2d68 100644 --- a/x-pack/test/security_functional/fixtures/common/test_endpoints/kibana.json +++ b/x-pack/test/security_functional/fixtures/common/test_endpoints/kibana.json @@ -3,6 +3,7 @@ "owner": { "name": "Platform Security", "githubTeam": "kibana-security" }, "version": "8.0.0", "kibanaVersion": "kibana", + "requiredPlugins":["security"], "server": true, "ui": true } diff --git a/x-pack/test/security_functional/fixtures/common/test_endpoints/public/plugin.tsx b/x-pack/test/security_functional/fixtures/common/test_endpoints/public/plugin.tsx index 3cb36e7c1fe78..85918b250dc62 100644 --- a/x-pack/test/security_functional/fixtures/common/test_endpoints/public/plugin.tsx +++ b/x-pack/test/security_functional/fixtures/common/test_endpoints/public/plugin.tsx @@ -10,9 +10,14 @@ import ReactDOM from 'react-dom'; import React from 'react'; import { debounce, filter, first } from 'rxjs/operators'; import { timer } from 'rxjs'; +import { SecurityPluginStart } from '@kbn/security-plugin/public'; -export class TestEndpointsPlugin implements Plugin { - public setup(core: CoreSetup) { +export interface PluginStartDependencies { + security: SecurityPluginStart; +} + +export class TestEndpointsPlugin implements Plugin { + public setup(core: CoreSetup) { // Prevent auto-logout on server `401` errors. core.http.anonymousPaths.register('/authentication/app'); @@ -39,6 +44,39 @@ export class TestEndpointsPlugin implements Plugin { return () => ReactDOM.unmountComponentAtNode(element); }, }); + + core.application.register({ + id: 'user_profiles_app', + title: 'User Profiles app', + async mount({ element }) { + const [, { security }] = await core.getStartServices(); + + const [currentUserProfile, otherUserProfiles] = await Promise.all([ + security.userProfiles.getCurrent({ dataPath: '*' }), + security.userProfiles.bulkGet({ + uids: new Set(new URLSearchParams(location.search).getAll('uid')), + dataPath: '*', + }), + ]); + + ReactDOM.render( +
+
+ {currentUserProfile?.user.username}:{JSON.stringify(currentUserProfile?.data)} +
+ {otherUserProfiles.map((userProfile) => ( +
+ {userProfile.user.username}:{JSON.stringify(userProfile.data)} +
+ ))} +
, + element + ); + return () => ReactDOM.unmountComponentAtNode(element); + }, + }); } public start() {} public stop() {} diff --git a/x-pack/test/security_functional/tests/user_profiles/client_side_apis.ts b/x-pack/test/security_functional/tests/user_profiles/client_side_apis.ts new file mode 100644 index 0000000000000..0e1fb7879d81a --- /dev/null +++ b/x-pack/test/security_functional/tests/user_profiles/client_side_apis.ts @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { parse as parseCookie } from 'tough-cookie'; +import { adminTestUser } from '@kbn/test'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects(['security', 'common']); + const testSubjects = getService('testSubjects'); + const supertestWithoutAuth = getService('supertestWithoutAuth'); + const security = getService('security'); + const retry = getService('retry'); + + describe('User Profiles client side APIs', function () { + const userProfileUids: string[] = []; + before(async () => { + // 1. Create test users + await Promise.all( + ['one', 'two', 'three'].map((userPrefix) => + security.user.create(`user_${userPrefix}`, { + password: 'changeme', + roles: [`role_${userPrefix}`], + }) + ) + ); + + // 2. Activate user profiles and update data. + for (const userPrefix of ['one', 'two', 'three']) { + const response = await supertestWithoutAuth + .post('/internal/security/login') + .set('kbn-xsrf', 'xxx') + .send({ + providerType: 'basic', + providerName: 'basic', + currentURL: '/', + params: { username: `user_${userPrefix}`, password: 'changeme' }, + }) + .expect(200); + + const cookie = parseCookie(response.headers['set-cookie'][0])!.cookieString(); + await supertestWithoutAuth + .post('/internal/security/user_profile/_data') + .set('kbn-xsrf', 'xxx') + .set('Cookie', cookie) + .send({ some: `data-${userPrefix}` }) + .expect(200); + + const { body: profile } = await supertestWithoutAuth + .get('/internal/security/user_profile') + .set('Cookie', cookie) + .expect(200); + + userProfileUids.push(profile.uid); + } + }); + + after(async () => { + await Promise.all( + ['one', 'two', 'three'].map((userPrefix) => security.user.delete(`user_${userPrefix}`)) + ); + }); + + beforeEach(async () => { + await PageObjects.security.loginPage.login(undefined, undefined, { expectSuccess: true }); + }); + + afterEach(async () => { + // NOTE: Logout needs to happen before anything else to avoid flaky behavior + await PageObjects.security.forceLogout(); + }); + + it('can retrieve own user profile and user profiles for other users', async () => { + await PageObjects.common.navigateToUrlWithBrowserHistory( + 'user_profiles_app', + '', + `?${userProfileUids.map((uid) => `uid=${uid}`).join('&')}`, + { ensureCurrentUrl: true, shouldLoginIfPrompted: false } + ); + + await retry.try(async () => { + const currentUserProfileText = await testSubjects.getVisibleText( + 'testEndpointsUserProfilesAppCurrentUserProfile' + ); + expect(currentUserProfileText).to.equal(`${adminTestUser.username}:{}`); + + for (const userPrefix of ['one', 'two', 'three']) { + const userProfileText = await testSubjects.getVisibleText( + `testEndpointsUserProfilesAppUserProfile_user_${userPrefix}` + ); + expect(userProfileText).to.equal(`user_${userPrefix}:{"some":"data-${userPrefix}"}`); + } + }); + }); + }); +} diff --git a/x-pack/test/security_functional/tests/user_profiles/index.ts b/x-pack/test/security_functional/tests/user_profiles/index.ts new file mode 100644 index 0000000000000..85c74150dd3bd --- /dev/null +++ b/x-pack/test/security_functional/tests/user_profiles/index.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('security app - user profiles', function () { + loadTestFile(require.resolve('./client_side_apis')); + }); +} diff --git a/x-pack/test/security_functional/user_profiles.config.ts b/x-pack/test/security_functional/user_profiles.config.ts new file mode 100644 index 0000000000000..f9bed9ce380df --- /dev/null +++ b/x-pack/test/security_functional/user_profiles.config.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { resolve } from 'path'; +import { FtrConfigProviderContext } from '@kbn/test'; +import { services } from '../functional/services'; +import { pageObjects } from '../functional/page_objects'; + +// the default export of config files must be a config provider +// that returns an object with the projects config values +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const xPackKibanaFunctionalConfig = await readConfigFile( + require.resolve('../functional/config.base.js') + ); + + const testEndpointsPlugin = resolve(__dirname, './fixtures/common/test_endpoints'); + + return { + testFiles: [resolve(__dirname, './tests/user_profiles')], + + services, + pageObjects, + + servers: xPackKibanaFunctionalConfig.get('servers'), + esTestCluster: xPackKibanaFunctionalConfig.get('esTestCluster'), + + kbnTestServer: { + ...xPackKibanaFunctionalConfig.get('kbnTestServer'), + serverArgs: [ + ...xPackKibanaFunctionalConfig.get('kbnTestServer.serverArgs'), + `--plugin-path=${testEndpointsPlugin}`, + ], + }, + apps: { + ...xPackKibanaFunctionalConfig.get('apps'), + user_profiles_app: { pathname: '/app/user_profiles_app' }, + }, + + junit: { + reportName: 'Chrome X-Pack Security Functional Tests (User Profiles)', + }, + }; +} diff --git a/x-pack/test/spaces_api_integration/security_and_spaces/apis/copy_to_space.ts b/x-pack/test/spaces_api_integration/security_and_spaces/apis/copy_to_space.ts index 48b8b0e114af2..81018230f4e07 100644 --- a/x-pack/test/spaces_api_integration/security_and_spaces/apis/copy_to_space.ts +++ b/x-pack/test/spaces_api_integration/security_and_spaces/apis/copy_to_space.ts @@ -29,7 +29,8 @@ export default function copyToSpaceSpacesAndSecuritySuite({ getService }: FtrPro createMultiNamespaceTestCases, } = copyToSpaceTestSuiteFactory(es, esArchiver, supertestWithoutAuth); - describe('copy to spaces', () => { + // Failing: See https://github.com/elastic/kibana/issues/86544 + describe.skip('copy to spaces', () => { [ { spaceId: SPACES.DEFAULT.spaceId, diff --git a/yarn.lock b/yarn.lock index ed1c990ccdbd3..d9a9902bbc4d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1239,6 +1239,36 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@cbor-extract/cbor-extract-darwin-arm64@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.0.0.tgz#cf0667e4c22111c9d45e16c29964892b12460a76" + integrity sha512-jebtLrruvsBbGMsUn0QxZW/8Z7caS9OkszVKZ64WTWajUkyohmolUdKL2nbfaTyyi3ABJrxVNM4YO1pvMsNI1g== + +"@cbor-extract/cbor-extract-darwin-x64@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.0.0.tgz#7bc01e7911b97eee4c78ae074bd3108f2ff208c3" + integrity sha512-LGYjdlyqANBqCDzBujCqXpPcK70rvaQgw98/aquzBuEmK0KXS7i579CoVG1yS/eb3bMqiVPevBri45jbR6Tlsg== + +"@cbor-extract/cbor-extract-linux-arm64@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.0.0.tgz#e40608afed5f373091560fa9dcd19c7f52f510b0" + integrity sha512-c1rbQcSF01yVgbG60zEfHNsUkXiEEQRNdYqm5qpqEAkLx4gA6DDU91IQbalkqXfwDuQzcMovOc1TC3uJJIi2OQ== + +"@cbor-extract/cbor-extract-linux-arm@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.0.0.tgz#f52a7580fb23e305370e66ae9ff136de3729c4b8" + integrity sha512-cOGHEIif5rPbpix6qhpuatrZzm6HeC5rT0nXt8ynLTc7PzfXmovswD9x6d9h5NcHswkV5y3PbkNbpel/tLADYg== + +"@cbor-extract/cbor-extract-linux-x64@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.0.0.tgz#8c936b8a93f915bf3c2459d5b4b78d244bda0f26" + integrity sha512-WYeE1b5WGf9pbbQH3qeNBXq710gGsuVFUiP148RY8In+2pCp/fxjBpe701ngam9/fF5D+gJs8B1i5wv/PN7JZA== + +"@cbor-extract/cbor-extract-win32-x64@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.0.0.tgz#4d4ad91527a8313c3db1e2167a8821dfae9d6211" + integrity sha512-XqVuJEnE0jpl/RkuSp04FF2UE73gY52Y4nZaIE6j9GAeSH2cHYU5CCd4TaVMDi2M18ZpZv7XhL/k+nneQzyJpQ== + "@cnakazawa/watch@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" @@ -11148,6 +11178,27 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +cbor-extract@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/cbor-extract/-/cbor-extract-2.0.2.tgz#8e45339627fb8b47071e8e71138c630019125939" + integrity sha512-QoLGEgPff03ad/L66P91ci5Zmf7Woq8bh4H5XT3+D5annlrPH5ObHf2Yvo53eDQaDkQtF9tJwMKSWANGXDmwUA== + dependencies: + node-gyp-build-optional-packages "5.0.3" + optionalDependencies: + "@cbor-extract/cbor-extract-darwin-arm64" "2.0.0" + "@cbor-extract/cbor-extract-darwin-x64" "2.0.0" + "@cbor-extract/cbor-extract-linux-arm" "2.0.0" + "@cbor-extract/cbor-extract-linux-arm64" "2.0.0" + "@cbor-extract/cbor-extract-linux-x64" "2.0.0" + "@cbor-extract/cbor-extract-win32-x64" "2.0.0" + +cbor-x@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/cbor-x/-/cbor-x-1.3.3.tgz#5ba0f6d3f6720ea5ba38804e583c020bccf2f762" + integrity sha512-y3V8GlypWM01t3NtYvXmDehuU3bt4q3tewCrvj5EMfUYT6v9HjRu4NHYH3EgbzJCOaZFroAhzci9PHvIIDuOEQ== + optionalDependencies: + cbor-extract "^2.0.2" + ccount@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" @@ -12490,6 +12541,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g== +cuid@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/cuid/-/cuid-2.1.8.tgz#cbb88f954171e0d5747606c0139fb65c5101eac0" + integrity sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg== + cwise-compiler@^1.0.0, cwise-compiler@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/cwise-compiler/-/cwise-compiler-1.1.3.tgz#f4d667410e850d3a313a7d2db7b1e505bb034cc5" @@ -21106,6 +21162,11 @@ node-forge@^1, node-forge@^1.2.1, node-forge@^1.3.1: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== +node-gyp-build-optional-packages@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17" + integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA== + node-gyp-build@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739"